From 66544bfa109bd65763cc682211fed2ae00affec3 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 31 Dec 2024 12:53:30 +0530 Subject: [PATCH] fix: Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246 (cherry picked from commit 65dc3505c405b4fe8c237bcb55c38d8cef6bf684) # Conflicts: # erpnext/patches.txt --- .../controllers/subcontracting_controller.py | 10 +++++++ erpnext/patches.txt | 5 ++++ .../patches/set_sc_conversion_factor.py | 26 +++++++++++++++++++ 3 files changed, 41 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 75cb5516348..5a8fa03d814 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 7e03ef9394c..075a1f4b8a7 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -386,3 +386,8 @@ erpnext.patches.v14_0.update_stock_uom_in_work_order_item erpnext.patches.v15_0.set_is_exchange_gain_loss_in_payment_entry_deductions erpnext.patches.v15_0.enable_allow_existing_serial_no erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts +<<<<<<< HEAD +======= +erpnext.patches.v15_0.refactor_closing_stock_balance #5 +erpnext.subcontracting.doctype.subcontracting_order.patches.set_sc_conversion_factor +>>>>>>> 65dc3505c4 (fix: Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246) 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, + )