diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 75f552fe195..1f945da1682 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -191,6 +191,9 @@ class PurchaseOrder(BuyingController): self.set_has_unit_price_items() self.flags.allow_zero_qty = self.has_unit_price_items + if self.is_subcontracted: + self.status_updater[0]["source_field"] = "fg_item_qty" + def validate(self): super().validate() diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index b16c95722a6..4ec5e739143 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -119,7 +119,7 @@ status_map = { ["Pending", "eval:self.status != 'Stopped' and self.per_ordered == 0 and self.docstatus == 1"], [ "Ordered", - "eval:self.status != 'Stopped' and self.per_ordered == 100 and self.docstatus == 1 and self.material_request_type in ['Purchase', 'Manufacture']", + "eval:self.status != 'Stopped' and self.per_ordered == 100 and self.docstatus == 1 and self.material_request_type in ['Purchase', 'Manufacture', 'Subcontracting']", ], [ "Transferred", @@ -511,13 +511,6 @@ class StatusUpdater(Document): if d.doctype != args["source_dt"]: continue - if ( - d.get("material_request") - and frappe.db.get_value("Material Request", d.material_request, "material_request_type") - == "Subcontracting" - ): - args.update({"source_field": "fg_item_qty"}) - self._update_modified(args, update_modified) # updates qty in the child table diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js index d6e36dd21e6..f885318e1f7 100644 --- a/erpnext/stock/doctype/material_request/material_request_list.js +++ b/erpnext/stock/doctype/material_request/material_request_list.js @@ -26,7 +26,7 @@ frappe.listview_settings["Material Request"] = { ) { return [__("Partially Received"), "yellow", "per_ordered,<,100"]; } else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) < 100) { - return [__("Partially ordered"), "yellow", "per_ordered,<,100"]; + return [__("Partially Ordered"), "yellow", "per_ordered,<,100"]; } else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) == 100) { if ( doc.material_request_type == "Purchase" && @@ -36,7 +36,7 @@ frappe.listview_settings["Material Request"] = { return [__("Partially Received"), "yellow", "per_received,<,100"]; } else if (doc.material_request_type == "Purchase" && flt(doc.per_received, precision) == 100) { return [__("Received"), "green", "per_received,=,100"]; - } else if (["Purchase", "Manufacture"].includes(doc.material_request_type)) { + } else if (["Purchase", "Manufacture", "Subcontracting"].includes(doc.material_request_type)) { return [__("Ordered"), "green", "per_ordered,=,100"]; } else if (doc.material_request_type == "Material Transfer") { return [__("Transferred"), "green", "per_ordered,=,100"]; diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py index 4965ba1586d..0e8b41f2a7d 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py @@ -89,23 +89,6 @@ class SubcontractingOrder(SubcontractingController): transaction_date: DF.Date # end: auto-generated types - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.status_updater = [ - { - "source_dt": "Subcontracting Order Item", - "target_dt": "Material Request Item", - "join_field": "material_request_item", - "target_field": "ordered_qty", - "target_parent_dt": "Material Request", - "target_parent_field": "per_ordered", - "target_ref_field": "stock_qty", - "source_field": "qty", - "percent_join_field": "material_request", - } - ] - def onload(self): self.set_onload( "over_transfer_allowance", @@ -140,13 +123,11 @@ class SubcontractingOrder(SubcontractingController): self.reset_default_field_value("set_warehouse", "items", "warehouse") def on_submit(self): - self.update_prevdoc_status() self.update_status() self.update_subcontracted_quantity_in_po() self.reserve_raw_materials() def on_cancel(self): - self.update_prevdoc_status() self.update_status() self.update_subcontracted_quantity_in_po(cancel=True)