From 38667ab8daabe3a3a377b0fad874cbfc7cec4194 Mon Sep 17 00:00:00 2001 From: Manas Solanki Date: Wed, 16 May 2018 16:55:23 +0530 Subject: [PATCH] return defaults according to the company --- .../buying/doctype/purchase_order/purchase_order.py | 2 +- erpnext/selling/doctype/sales_order/sales_order.py | 6 +++--- erpnext/stock/doctype/item/item.py | 9 +++++++-- erpnext/stock/doctype/stock_entry/stock_entry.py | 10 +++++----- erpnext/stock/get_item_details.py | 6 +++--- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 26864933ad..daca56a010 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -377,7 +377,7 @@ def make_purchase_invoice(source_name, target_doc=None): item = get_item_defaults(target.item_code, source_parent.company) target.cost_center = frappe.db.get_value("Project", obj.project, "cost_center") \ - or item.buying_cost_center \ + or item.get("buying_cost_center") \ or frappe.db.get_value("Item Group", item.item_group, "default_cost_center") doc = get_mapped_doc("Purchase Order", source_name, { diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 690ffa858f..7fe61c99e5 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -499,7 +499,7 @@ def make_delivery_note(source_name, target_doc=None): if item: target.cost_center = frappe.db.get_value("Project", source_parent.project, "cost_center") \ - or item.selling_cost_center \ + or item.get("selling_cost_center") \ or frappe.db.get_value("Item Group", item.item_group, "default_cost_center") target_doc = get_mapped_doc("Sales Order", source_name, { @@ -559,8 +559,8 @@ def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False): if source_parent.project: target.cost_center = frappe.db.get_value("Project", source_parent.project, "cost_center") if not target.cost_center and target.item_code: - item = get_item_defaults(target.item_code, source_parent.company) - target.cost_center = item.selling_cost_center \ + item = get_item_defaults(target.item_code, target.company) + target.cost_center = item.get("selling_cost_center") \ or frappe.db.get_value("Item Group", item.item_group, "default_cost_center") doclist = get_mapped_doc("Sales Order", source_name, { diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index e32f76bf0c..068b913682 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -887,7 +887,7 @@ def check_stock_uom_with_bin(item, stock_uom): _("Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM.").format(item)) def get_item_defaults(item, company): - return frappe.db.sql(''' + item_defaults = frappe.db.sql(''' select 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 @@ -895,4 +895,9 @@ def get_item_defaults(item, company): `tabItem` i, `tabItem Default` id where i.name = id.parent and i.name = %s and id.company = %s - ''', (item, company), as_dict=1) \ No newline at end of file + ''', (item, company), as_dict=1) + if item_defaults: + return item_defaults[0] + else: + return frappe.db.get_value("Item", item, ["name", "item_name", "description", "stock_uom", + "is_stock_item", "item_code", "item_group"], as_dict=1) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 5a6384aa73..849a294be5 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -721,7 +721,7 @@ class StockEntry(StockController): if not self.work_order and not to_warehouse: # in case of BOM - to_warehouse = item.default_warehouse + to_warehouse = item.get("default_warehouse") self.add_to_stock_entry_detail({ item.name: { @@ -731,8 +731,8 @@ class StockEntry(StockController): "item_name": item.item_name, "description": item.description, "stock_uom": item.stock_uom, - "expense_account": item.expense_account, - "cost_center": item.buying_cost_center, + "expense_account": item.get("expense_account"), + "cost_center": item.get("buying_cost_center"), } }, bom_no = self.bom_no) @@ -807,8 +807,8 @@ class StockEntry(StockController): "item_name": item.item_name, "description": item.description, "stock_uom": item_account_details.stock_uom, - "expense_account": item_account_details.expense_account, - "cost_center": item_account_details.buying_cost_center, + "expense_account": item_account_details.get("expense_account"), + "cost_center": item_account_details.get("buying_cost_center"), } }) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 52decced49..562ac68808 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -300,12 +300,12 @@ def get_basic_details(args, item): def get_default_income_account(args, item): - return (item.income_account + return (item.get("income_account") or args.income_account or frappe.db.get_value("Item Group", item.item_group, "default_income_account")) def get_default_expense_account(args, item): - return (item.expense_account + return (item.get("expense_account") or args.expense_account or frappe.db.get_value("Item Group", item.item_group, "default_expense_account")) @@ -319,7 +319,7 @@ def get_default_deferred_revenue_account(args, item): def get_default_cost_center(args, item): return (frappe.db.get_value("Project", args.get("project"), "cost_center") - or (item.selling_cost_center if args.get("customer") else item.buying_cost_center) + or (item.get("selling_cost_center") if args.get("customer") else item.get("buying_cost_center")) or frappe.db.get_value("Item Group", item.item_group, "default_cost_center") or args.get("cost_center"))