From d32b6a8d323dcdc55aa169dc771f918d9201e929 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 23 Oct 2013 14:03:46 +0530 Subject: [PATCH 1/3] [fix] production order transfer raw material to fetch all necessary data --- stock/doctype/stock_entry/stock_entry.js | 9 ++++- stock/doctype/stock_entry/stock_entry.py | 33 ++++++++++++++----- .../stock_entry_detail/stock_entry_detail.txt | 8 ++++- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index 7301bd5b1a..b471256dd9 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -144,11 +144,18 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({ }, production_order: function() { + var me = this; this.toggle_enable_bom(); return this.frm.call({ method: "get_production_order_details", - args: {production_order: this.frm.doc.production_order} + args: {production_order: this.frm.doc.production_order}, + callback: function(r) { + if (!r.exc) { + if (me.frm.doc.purpose == "Material Transfer" && !me.frm.doc.to_warehouse) + me.frm.set_value("to_warehouse", r.message["wip_warehouse"]); + } + } }); }, diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index e4fa9d9a63..56808a4f01 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -472,11 +472,12 @@ class DocType(StockController): if self.doc.purpose=="Material Receipt": self.doc.from_warehouse = "" - item = webnotes.conn.sql("""select item, description, uom from `tabBOM` - where name=%s""", (self.doc.bom_no,), as_dict=1) + item = webnotes.conn.sql("""select name, item_name, description, uom + from `tabItem` where name=%s""", (self.doc.bom_no), as_dict=1) self.add_to_stock_entry_detail({ item[0]["item"] : { "qty": self.doc.fg_completed_qty, + "item_name": item[0].item_name, "description": item[0]["description"], "stock_uom": item[0]["uom"], "from_warehouse": "" @@ -484,7 +485,6 @@ class DocType(StockController): }, bom_no=self.doc.bom_no) self.get_stock_and_rate() - def get_bom_raw_materials(self, qty): """ @@ -503,9 +503,12 @@ class DocType(StockController): else: item_dict[item.item_code] = { "qty": flt(item.qty), + "item_name": item.item_name, "description": item.description, "stock_uom": item.stock_uom, - "from_warehouse": item.default_warehouse + "from_warehouse": item.default_warehouse, + "expense_account": item.purchase_account, + "cost_center": item.cost_center } if self.doc.use_multi_level_bom: @@ -515,7 +518,10 @@ class DocType(StockController): ifnull(sum(fb.qty_consumed_per_unit),0)*%s as qty, fb.description, fb.stock_uom, - it.default_warehouse + it.item_name, + it.default_warehouse, + it.purchase_account, + it.cost_center from `tabBOM Explosion Item` fb,`tabItem` it where @@ -532,10 +538,13 @@ class DocType(StockController): # get only BOM items fl_bom_sa_items = sql("""select `tabItem`.item_code, + `tabItem`.item_name, ifnull(sum(`tabBOM Item`.qty_consumed_per_unit), 0) *%s as qty, `tabItem`.description, `tabItem`.stock_uom, - `tabItem`.default_warehouse + `tabItem`.default_warehouse, + `tabItem`.purchase_account, + `tabItem`.cost_center from `tabBOM Item`, `tabItem` where @@ -599,16 +608,21 @@ class DocType(StockController): return issued_item_qty def add_to_stock_entry_detail(self, item_dict, bom_no=None): + idx = 1 for d in item_dict: se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail', self.doclist) + se_child.idx = idx se_child.s_warehouse = item_dict[d].get("from_warehouse", self.doc.from_warehouse) se_child.t_warehouse = item_dict[d].get("to_warehouse", self.doc.to_warehouse) se_child.item_code = cstr(d) + se_child.item_name = item_dict[d]["item_name"] se_child.description = item_dict[d]["description"] se_child.uom = item_dict[d]["stock_uom"] se_child.stock_uom = item_dict[d]["stock_uom"] se_child.qty = flt(item_dict[d]["qty"]) + se_child.expense_account = item_dict[d]["expense_account"] + se_child.cost_center = item_dict[d]["cost_center"] # in stock uom se_child.transfer_qty = flt(item_dict[d]["qty"]) @@ -617,6 +631,9 @@ class DocType(StockController): # to be assigned for finished item se_child.bom_no = bom_no + # increment idx by 1 + idx += 1 + def get_cust_values(self): """fetches customer details""" if self.doc.delivery_note_no: @@ -682,8 +699,8 @@ class DocType(StockController): @webnotes.whitelist() def get_production_order_details(production_order): result = webnotes.conn.sql("""select bom_no, - ifnull(qty, 0) - ifnull(produced_qty, 0) as fg_completed_qty, use_multi_level_bom - from `tabProduction Order` where name = %s""", production_order, as_dict=1) + ifnull(qty, 0) - ifnull(produced_qty, 0) as fg_completed_qty, use_multi_level_bom, + wip_warehouse from `tabProduction Order` where name = %s""", production_order, as_dict=1) return result and result[0] or {} def query_sales_return_doc(doctype, txt, searchfield, start, page_len, filters): diff --git a/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt index b766250670..4721747965 100644 --- a/stock/doctype/stock_entry_detail/stock_entry_detail.txt +++ b/stock/doctype/stock_entry_detail/stock_entry_detail.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-29 18:22:12", "docstatus": 0, - "modified": "2013-10-15 14:58:09", + "modified": "2013-10-23 13:46:52", "modified_by": "Administrator", "owner": "Administrator" }, @@ -65,6 +65,12 @@ "reqd": 1, "search_index": 1 }, + { + "doctype": "DocField", + "fieldname": "item_name", + "fieldtype": "Data", + "label": "Item Name" + }, { "doctype": "DocField", "fieldname": "description", From 2cdeb3bb7a344ac428d7ee6d09a9d794939bf2f3 Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 23 Oct 2013 14:46:07 +0530 Subject: [PATCH 2/3] [fix] [minor] if difference account blank then fetch from company --- stock/doctype/stock_entry/stock_entry.py | 6 ++++-- stock/doctype/stock_entry_detail/stock_entry_detail.txt | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 56808a4f01..39c5b4db90 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -621,8 +621,10 @@ class DocType(StockController): se_child.uom = item_dict[d]["stock_uom"] se_child.stock_uom = item_dict[d]["stock_uom"] se_child.qty = flt(item_dict[d]["qty"]) - se_child.expense_account = item_dict[d]["expense_account"] - se_child.cost_center = item_dict[d]["cost_center"] + se_child.expense_account = item_dict[d]["expense_account"] or \ + webnotes.conn.get_value("Company", self.doc.company, "default_expense_account") + se_child.cost_center = item_dict[d]["cost_center"] or \ + webnotes.conn.get_value("Company", self.doc.company, "cost_center") # in stock uom se_child.transfer_qty = flt(item_dict[d]["qty"]) diff --git a/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt index 4721747965..5218c1a4ed 100644 --- a/stock/doctype/stock_entry_detail/stock_entry_detail.txt +++ b/stock/doctype/stock_entry_detail/stock_entry_detail.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-29 18:22:12", "docstatus": 0, - "modified": "2013-10-23 13:46:52", + "modified": "2013-10-23 14:35:46", "modified_by": "Administrator", "owner": "Administrator" }, @@ -69,7 +69,9 @@ "doctype": "DocField", "fieldname": "item_name", "fieldtype": "Data", - "label": "Item Name" + "label": "Item Name", + "print_hide": 1, + "read_only": 1 }, { "doctype": "DocField", From 97e55710dadbc259e1ee948329f4a8f55ee6ca0b Mon Sep 17 00:00:00 2001 From: Akhilesh Darjee Date: Wed, 23 Oct 2013 15:22:22 +0530 Subject: [PATCH 3/3] [fix] [minor] get_items function fix --- stock/doctype/stock_entry/stock_entry.py | 9 +++++---- stock/page/stock_home/stock_home.js | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index 39c5b4db90..7ec2ba32bd 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -609,6 +609,9 @@ class DocType(StockController): def add_to_stock_entry_detail(self, item_dict, bom_no=None): idx = 1 + expense_account, cost_center = webnotes.conn.get_values("Company", self.doc.company, \ + ["default_expense_account", "cost_center"])[0] + for d in item_dict: se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail', self.doclist) @@ -621,10 +624,8 @@ class DocType(StockController): se_child.uom = item_dict[d]["stock_uom"] se_child.stock_uom = item_dict[d]["stock_uom"] se_child.qty = flt(item_dict[d]["qty"]) - se_child.expense_account = item_dict[d]["expense_account"] or \ - webnotes.conn.get_value("Company", self.doc.company, "default_expense_account") - se_child.cost_center = item_dict[d]["cost_center"] or \ - webnotes.conn.get_value("Company", self.doc.company, "cost_center") + se_child.expense_account = item_dict[d]["expense_account"] or expense_account + se_child.cost_center = item_dict[d]["cost_center"] or cost_center # in stock uom se_child.transfer_qty = flt(item_dict[d]["qty"]) diff --git a/stock/page/stock_home/stock_home.js b/stock/page/stock_home/stock_home.js index 713fe28296..ecfc6fe571 100644 --- a/stock/page/stock_home/stock_home.js +++ b/stock/page/stock_home/stock_home.js @@ -81,7 +81,7 @@ wn.module_page["Stock"] = [ }, { "doctype":"Item Price", - "label": wn._("Price List"), + "label": wn._("Item Price"), "description": wn._("Multiple Item prices.") }, {