diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py index 2bf32048aaf..d598ee24b51 100644 --- a/erpnext/manufacturing/doctype/production_order/production_order.py +++ b/erpnext/manufacturing/doctype/production_order/production_order.py @@ -478,10 +478,12 @@ def make_stock_entry(production_order_id, purpose, qty=None): if production_order.source_warehouse: stock_entry.from_warehouse = production_order.source_warehouse stock_entry.to_warehouse = production_order.wip_warehouse + stock_entry.project = production_order.project else: stock_entry.from_warehouse = production_order.wip_warehouse stock_entry.to_warehouse = production_order.fg_warehouse additional_costs = get_additional_costs(production_order, fg_qty=stock_entry.fg_completed_qty) + stock_entry.project = frappe.db.get_value("Stock Entry",{"production_order": production_order_id,"purpose": "Material Transfer for Manufacture"}, "project") stock_entry.set("additional_costs", additional_costs) stock_entry.get_items() diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py index acb3ab8f1b4..fd28b547a98 100644 --- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py +++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.py @@ -249,6 +249,7 @@ class ProductionPlanningTool(Document): "wip_warehouse" : "", "fg_warehouse" : d.warehouse, "status" : "Draft", + "project" : frappe.db.get_value("Sales Order", d.sales_order, "project") } """ Club similar BOM and item for processing in case of Sales Orders """ diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 90315c7ee0f..c2d1abe25c3 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -232,6 +232,17 @@ class StockEntry(StockController): frappe.bold(d.transfer_qty)), NegativeStockError, title=_('Insufficient Stock')) + def set_serial_nos(self, production_order): + previous_se = frappe.db.get_value("Stock Entry", {"production_order": production_order, + "purpose": "Material Transfer for Manufacture"}, "name") + + for d in self.get('items'): + transferred_serial_no = frappe.db.get_value("Stock Entry Detail",{"parent": previous_se, + "item_code": d.item_code}, "serial_no") + + if transferred_serial_no: + d.serial_no = transferred_serial_no + def get_stock_and_rate(self): self.set_transfer_qty() self.set_actual_qty() @@ -551,6 +562,9 @@ class StockEntry(StockController): item["to_warehouse"] = self.to_warehouse if self.purpose=="Subcontract" else "" self.add_to_stock_entry_detail(item_dict) + # fetch the serial_no of the first stock entry for the second stock entry + if self.production_order and self.purpose == "Manufacture": + self.set_serial_nos(self.production_order) # add finished goods item if self.purpose in ("Manufacture", "Repack"):