From 5f861756a2d035aff85eff7b60ba2719375c90a0 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 23 May 2018 19:37:06 +0530 Subject: [PATCH] Item Default fixes --- erpnext/accounts/doctype/sales_invoice/pos.py | 4 ++-- erpnext/controllers/buying_controller.py | 3 ++- erpnext/manufacturing/doctype/bom/bom.py | 8 ++++---- .../production_plan/production_plan.py | 20 ++++++++++++------- erpnext/stock/doctype/item/item.py | 4 ++-- .../stock/doctype/packed_item/packed_item.py | 6 ++++-- .../stock/doctype/stock_entry/stock_entry.py | 4 ++-- 7 files changed, 29 insertions(+), 20 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py index ad1344759a..3a4737481f 100755 --- a/erpnext/accounts/doctype/sales_invoice/pos.py +++ b/erpnext/accounts/doctype/sales_invoice/pos.py @@ -168,9 +168,9 @@ def get_items_list(pos_profile, company): i.has_serial_no, i.is_stock_item, i.brand, i.stock_uom, i.image, id.expense_account, id.selling_cost_center, id.default_warehouse from - `tabItem` i, `tabItem Default` id + `tabItem` i LEFT JOIN `tabItem Default` id ON id.parent = i.name where - id.parent = i.name and i.disabled = 0 and i.has_variants = 0 and i.is_sales_item = 1 + i.disabled = 0 and i.has_variants = 0 and i.is_sales_item = 1 and id.company = %s {cond} """.format(cond=cond), tuple(args_list), as_dict=1) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 13baf6ff78..83fe46a7bf 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -217,7 +217,8 @@ class BuyingController(StockController): raw_materials_cost = 0 items = list(set([d.item_code for d in bom_items])) item_wh = frappe._dict(frappe.db.sql("""select i.item_code, id.default_warehouse - from `tabItem` i, `tabItem Default` id where id.company=%s and i.name in ({0})""" + from `tabItem` i, `tabItem Default` id + where id.parent=i.name and id.company=%s and i.name in ({0})""" .format(", ".join(["%s"] * len(items))), [self.company] + items)) for bom_item in bom_items: diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index bbf8f71a36..c09d989ac3 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -549,14 +549,14 @@ def get_bom_items_as_dict(bom, company, qty=1, fetch_exploded=1, fetch_scrap_ite item_default.buying_cost_center as cost_center {select_columns} from - `tab{table}` bom_item, `tabBOM` bom, `tabItem` item, `tabItem Default` item_default + `tab{table}` bom_item + JOIN `tabBOM` bom ON bom_item.parent = bom.name + JOIN `tabItem` item ON item.name = bom_item.item_code + LEFT JOIN `tabItem Default` item_default ON item_default.parent = item.name where bom_item.docstatus < 2 - and item_default.parent = item.name and item_default.company = %(company)s and bom.name = %(bom)s - and bom_item.parent = bom.name - and item.name = bom_item.item_code and is_stock_item = 1 {where_conditions} group by item_code, stock_uom diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index 006e542e4d..4b2ae543eb 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -295,10 +295,13 @@ class ProductionPlan(Document): bei.description, bei.stock_uom, item.min_order_qty, bei.source_warehouse, item.default_material_request_type, item.min_order_qty, item_default.default_warehouse from - `tabBOM Explosion Item` bei, `tabBOM` bom, `tabItem` item, `tabItem Default` item_default + `tabBOM Explosion Item` bei + JOIN `tabBOM` bom ON bom.name = bei.parent + JOIN `tabItem` item ON item.name = bei.item_code + LEFT JOIN `tabItem Default` item_default ON item_default.parent = item.name where - bom.name = bei.parent and item.name = bei.item_code and bei.docstatus < 2 - and item_default.parent = item.name and item_default.company=%s + bei.docstatus < 2 + and item_default.company=%s and bom.name=%s and item.is_stock_item in (1, {0}) group by bei.item_code, bei.stock_uom""".format(self.include_non_stock_items), (self.company, data.bom_no), as_dict=1): @@ -320,11 +323,14 @@ class ProductionPlan(Document): bom_item.stock_uom as stock_uom, item.min_order_qty as min_order_qty, item_default.default_warehouse FROM - `tabBOM Item` bom_item, `tabBOM` bom, tabItem item, `tabItem Default` item_default + `tabBOM Item` bom_item + JOIN `tabBOM` bom ON bom.name = bom_item.parent + JOIN tabItem item ON bom_item.item_code = item.name + LEFT JOIN `tabItem Default` item_default ON item.name = item_default.parent where - bom.name = bom_item.parent and bom.name = %(bom)s - and bom_item.docstatus < 2 and bom_item.item_code = item.name - and item.name = item_default.parent and item_default.company = %(company)s + bom.name = %(bom)s + and bom_item.docstatus < 2 + and item_default.company = %(company)s and item.is_stock_item in (1, {0}) group by bom_item.item_code""".format(self.include_non_stock_items),{ 'bom': bom_no, diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 64d7c2386f..8e4a4cab9a 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -892,9 +892,9 @@ def get_item_defaults(item, company): i.item_name, i.description, i.stock_uom, i.name, i.is_stock_item, i.item_code, i.item_group, id.expense_account, id.buying_cost_center, id.default_warehouse, id.selling_cost_center, id.default_supplier from - `tabItem` i, `tabItem Default` id + `tabItem` i LEFT JOIN `tabItem Default` id ON i.name = id.parent where - i.name = id.parent and i.name = %s and id.company = %s + i.name = %s and id.company = %s ''', (item, company), as_dict=1) if item_defaults: return item_defaults[0] diff --git a/erpnext/stock/doctype/packed_item/packed_item.py b/erpnext/stock/doctype/packed_item/packed_item.py index 7ca5ead20e..04b4761f38 100644 --- a/erpnext/stock/doctype/packed_item/packed_item.py +++ b/erpnext/stock/doctype/packed_item/packed_item.py @@ -19,8 +19,10 @@ def get_product_bundle_items(item_code): where t2.new_item_code=%s and t1.parent = t2.name order by t1.idx""", item_code, as_dict=1) def get_packing_item_details(item, company): - return frappe.db.sql("""select i.item_name, i.description, i.stock_uom, id.default_warehouse - from `tabItem` i, `tabItem Default` id where id.parent=i.name and i.name = %s and id.company""", + return frappe.db.sql(""" + select i.item_name, i.description, i.stock_uom, id.default_warehouse + from `tabItem` i LEFT JOIN `tabItem Default` id ON id.parent=i.name + where i.name = %s and id.company""", (item, company), as_dict = 1)[0] def get_bin_qty(item, warehouse): diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index c3b9843aaf..13b6ce5616 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -566,8 +566,8 @@ class StockEntry(StockController): item = frappe.db.sql("""select i.stock_uom, i.description, i.image, i.item_name, i.item_group, i.has_batch_no, i.sample_quantity, i.has_serial_no, id.expense_account, id.buying_cost_center - from `tabItem` i, `tabItem Default` id - where i.name=%s and i.name=id.parent and id.company=%s + from `tabItem` i LEFT JOIN `tabItem Default` id ON i.name=id.parent + where i.name=%s and id.company=%s and i.disabled=0 and (i.end_of_life is null or i.end_of_life='0000-00-00' or i.end_of_life > %s)""", (args.get('item_code'), self.company, nowdate()), as_dict = 1)