From 65dc3505c405b4fe8c237bcb55c38d8cef6bf684 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 31 Dec 2024 12:53:30 +0530 Subject: [PATCH 1/3] fix: Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246 --- .../controllers/subcontracting_controller.py | 10 +++++++ erpnext/patches.txt | 1 + .../patches/set_sc_conversion_factor.py | 26 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index 51840d49989..190dcc294bb 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -103,6 +103,16 @@ class SubcontractingController(StockController): _("Row {0}: Item {1} must be a subcontracted item.").format(item.idx, item.item_name) ) + if ( + not item.sc_conversion_factor + ): # this condition will only be true if user has recently updated from develop branch + service_item_qty = frappe.get_value( + "Subcontracting Order Service Item", + filters={"purchase_order_item": item.purchase_order_item, "parent": self.name}, + fieldname=["qty"], + ) + item.sc_conversion_factor = service_item_qty / item.qty + if ( self.doctype not in "Subcontracting Receipt" and item.qty diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 9b4dd738d84..1e99c50700d 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -394,3 +394,4 @@ erpnext.patches.v14_0.update_stock_uom_in_work_order_item erpnext.patches.v15_0.enable_allow_existing_serial_no erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts erpnext.patches.v15_0.refactor_closing_stock_balance #5 +erpnext.subcontracting.doctype.subcontracting_order.patches.set_sc_conversion_factor \ No newline at end of file diff --git a/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py b/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py new file mode 100644 index 00000000000..1b23c9565bf --- /dev/null +++ b/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py @@ -0,0 +1,26 @@ +import frappe + + +def execute(): + # Calculate and set sc_conversion_factor for draft Subcontracting Orders if value is 0 + + subcontracting_order_items = frappe.get_all( + "Subcontracting Order Item", + filters={"docstatus": 0, "sc_conversion_factor": 0}, + fields=["name", "parent", "purchase_order_item", "qty"], + ) + for subcontracting_order_item in subcontracting_order_items: + service_item_qty = frappe.get_value( + "Subcontracting Order Service Item", + filters={ + "purchase_order_item": subcontracting_order_item.purchase_order_item, + "parent": subcontracting_order_item.parent, + }, + fieldname=["qty"], + ) + frappe.set_value( + "Subcontracting Order Item", + subcontracting_order_item.name, + "sc_conversion_factor", + service_item_qty / subcontracting_order_item.qty, + ) From 575fb43f9cd5852b37f1a3fe17db3206df596608 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 31 Dec 2024 20:33:05 +0530 Subject: [PATCH 2/3] fix: Fixed logic in if condition causing tests to fail --- erpnext/controllers/subcontracting_controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index 190dcc294bb..84a65160135 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -104,7 +104,7 @@ class SubcontractingController(StockController): ) if ( - not item.sc_conversion_factor + self.doctype == "Subcontracting Order" and not item.sc_conversion_factor ): # this condition will only be true if user has recently updated from develop branch service_item_qty = frappe.get_value( "Subcontracting Order Service Item", From d1d01482dfb006a956e010f0e27b322632072804 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Wed, 1 Jan 2025 13:49:49 +0530 Subject: [PATCH 3/3] fix: Removed patch as instructed by mentor --- erpnext/patches.txt | 3 +-- .../patches/set_sc_conversion_factor.py | 26 ------------------- 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 1e99c50700d..5fe116657fa 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -393,5 +393,4 @@ erpnext.patches.v15_0.set_is_exchange_gain_loss_in_payment_entry_deductions erpnext.patches.v14_0.update_stock_uom_in_work_order_item erpnext.patches.v15_0.enable_allow_existing_serial_no erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts -erpnext.patches.v15_0.refactor_closing_stock_balance #5 -erpnext.subcontracting.doctype.subcontracting_order.patches.set_sc_conversion_factor \ No newline at end of file +erpnext.patches.v15_0.refactor_closing_stock_balance #5 \ No newline at end of file diff --git a/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py b/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py deleted file mode 100644 index 1b23c9565bf..00000000000 --- a/erpnext/subcontracting/doctype/subcontracting_order/patches/set_sc_conversion_factor.py +++ /dev/null @@ -1,26 +0,0 @@ -import frappe - - -def execute(): - # Calculate and set sc_conversion_factor for draft Subcontracting Orders if value is 0 - - subcontracting_order_items = frappe.get_all( - "Subcontracting Order Item", - filters={"docstatus": 0, "sc_conversion_factor": 0}, - fields=["name", "parent", "purchase_order_item", "qty"], - ) - for subcontracting_order_item in subcontracting_order_items: - service_item_qty = frappe.get_value( - "Subcontracting Order Service Item", - filters={ - "purchase_order_item": subcontracting_order_item.purchase_order_item, - "parent": subcontracting_order_item.parent, - }, - fieldname=["qty"], - ) - frappe.set_value( - "Subcontracting Order Item", - subcontracting_order_item.name, - "sc_conversion_factor", - service_item_qty / subcontracting_order_item.qty, - )