From 2f5587ab253f3a5c96629cd31de5347c9c9db631 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 31 Jul 2015 15:20:16 +0530 Subject: [PATCH] [fix] uom conversion factor in stock entry, #3734 --- erpnext/stock/doctype/stock_entry/stock_entry.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 6af6af9b40..44880e1a7b 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -93,7 +93,7 @@ class StockEntry(StockController): frappe.throw(_("{0} is not a stock Item").format(item.item_code)) item_details = self.get_item_details(frappe._dict({"item_code": item.item_code, - "company": self.company, "project_name": self.project_name})) + "company": self.company, "project_name": self.project_name, "uom": item.uom})) for f in ("uom", "stock_uom", "description", "item_name", "expense_account", "cost_center", "conversion_factor"): @@ -444,20 +444,27 @@ class StockEntry(StockController): 'actual_qty' : 0, 'incoming_rate' : 0 } - for d in [["Account", "expense_account", "default_expense_account"], + for d in [["Account", "expense_account", "default_expense_account"], ["Cost Center", "cost_center", "cost_center"]]: company = frappe.db.get_value(d[0], ret.get(d[1]), "company") if not ret[d[1]] or (company and self.company != company): ret[d[1]] = frappe.db.get_value("Company", self.company, d[2]) if d[2] else None - + + # update uom + ret.update(self.get_uom_details(args)) + if not ret["expense_account"]: ret["expense_account"] = frappe.db.get_value("Company", self.company, "stock_adjustment_account") - + stock_and_rate = args.get('warehouse') and self.get_warehouse_details(args) or {} ret.update(stock_and_rate) + return ret def get_uom_details(self, args): + """Returns dict `{"conversion_factor": [value], "transfer_qty": qty * [value]}` + + :param args: dict with `item_code`, `uom` and `qty`""" conversion_factor = get_conversion_factor(args.get("item_code"), args.get("uom")).get("conversion_factor") if not conversion_factor: