[tests] fixes to stock entry
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.py b/erpnext/manufacturing/doctype/production_order/test_production_order.py
index a9975c1..8a0dbe1 100644
--- a/erpnext/manufacturing/doctype/production_order/test_production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.py
@@ -54,4 +54,4 @@
self.assertRaises(StockOverProductionError, s.submit)
-test_records = frappe.get_test_records('Production Order')
\ No newline at end of file
+test_records = frappe.get_test_records('Production Order')
diff --git a/erpnext/stock/doctype/item/test_records.json b/erpnext/stock/doctype/item/test_records.json
index 531f1a7..eb0d7c9 100644
--- a/erpnext/stock/doctype/item/test_records.json
+++ b/erpnext/stock/doctype/item/test_records.json
@@ -83,7 +83,7 @@
"tax_type": "_Test Account Excise Duty - _TC"
}
],
- "stock_uom": "_Test UOM"
+ "stock_uom": "_Test UOM 1"
},
{
"default_warehouse": "_Test Warehouse - _TC",
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index fb4493a..5562e5a 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -479,23 +479,34 @@
self.production_order = None
if self.bom_no:
- if self.purpose in ["Material Issue", "Material Transfer", "Manufacture", "Repack",
- "Subcontract"]:
- if self.production_order and self.purpose == "Material Transfer":
- item_dict = self.get_pending_raw_materials(pro_obj)
+ if self.purpose in ("Material Issue", "Material Transfer", "Manufacture",
+ "Repack", "Subcontract"):
+
+ if self.production_order:
+ # production: stores -> wip
+ if self.purpose == "Material Transfer":
+ item_dict = self.get_pending_raw_materials(pro_obj)
+ for item in item_dict.values():
+ item["to_warehouse"] = pro_obj.wip_warehouse
+
+ # production: wip -> finished goods
+ elif self.purpose == "Manufacture":
+ item_dict = self.get_bom_raw_materials(self.fg_completed_qty)
+ for item in item_dict.values():
+ item["from_warehouse"] = pro_obj.wip_warehouse
+
+ else:
+ frappe.throw(_("Stock Entry against Production Order must be for 'Material Transfer' or 'Manufacture'"))
else:
if not self.fg_completed_qty:
frappe.throw(_("Manufacturing Quantity is mandatory"))
item_dict = self.get_bom_raw_materials(self.fg_completed_qty)
- for item in item_dict.values():
- if pro_obj:
- item["from_warehouse"] = pro_obj.wip_warehouse
- item["to_warehouse"] = ""
# add raw materials to Stock Entry Detail table
self.add_to_stock_entry_detail(item_dict)
- if self.bom_no:
+ # add finished goods item
+ if self.purpose in ("Manufacture", "Repack"):
if self.production_order:
item_code = pro_obj.production_item
to_warehouse = pro_obj.fg_warehouse
@@ -529,6 +540,7 @@
for item in item_dict.values():
item.from_warehouse = item.default_warehouse
+ item.to_warehouse = ""
return item_dict
@@ -585,8 +597,8 @@
for d in item_dict:
se_child = self.append('mtn_details')
- se_child.s_warehouse = item_dict[d].get("from_warehouse", self.from_warehouse)
- se_child.t_warehouse = item_dict[d].get("to_warehouse", self.to_warehouse)
+ se_child.s_warehouse = item_dict[d].get("from_warehouse")
+ se_child.t_warehouse = item_dict[d].get("to_warehouse")
se_child.item_code = cstr(d)
se_child.item_name = item_dict[d]["item_name"]
se_child.description = item_dict[d]["description"]
@@ -596,6 +608,11 @@
se_child.expense_account = item_dict[d]["expense_account"] or expense_account
se_child.cost_center = item_dict[d]["cost_center"] or cost_center
+ if se_child.s_warehouse==None:
+ se_child.s_warehouse = self.from_warehouse
+ if se_child.t_warehouse==None:
+ se_child.t_warehouse = self.to_warehouse
+
# in stock uom
se_child.transfer_qty = flt(item_dict[d]["qty"])
se_child.conversion_factor = 1.00