From 3706a9b4dcc593676b8f99b19aa833c8e620421e Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Tue, 15 Nov 2022 14:30:13 +0530 Subject: [PATCH 1/3] Revert "fix: set `received_qty` before_validate SCR" This reverts commit c447dfaa9cbc59ed0e5a269eded3600d5acb0d3a. --- .../doctype/subcontracting_receipt/subcontracting_receipt.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index c7f592b4d9..bce53608be 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -58,7 +58,6 @@ class SubcontractingReceipt(SubcontractingController): def before_validate(self): super(SubcontractingReceipt, self).before_validate() self.set_items_bom() - self.set_received_qty() self.set_items_cost_center() self.set_items_expense_account() @@ -213,10 +212,6 @@ class SubcontractingReceipt(SubcontractingController): "bom", ) - def set_received_qty(self): - for item in self.items: - item.received_qty = flt(item.qty) + flt(item.rejected_qty) - def set_items_cost_center(self): if self.company: cost_center = frappe.get_cached_value("Company", self.company, "cost_center") From 01f56c621cb3d502c85518c0749705c00d2efc41 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Tue, 15 Nov 2022 14:32:16 +0530 Subject: [PATCH 2/3] Revert "fix: get `consumed_qty` based on `received_qty` in SCR" This reverts commit 70c9b8dc50d77f7bbc3da7f7341c3e6432902a0d. --- .../controllers/subcontracting_controller.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index 7819fa586c..8d67e300a3 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -100,7 +100,7 @@ class SubcontractingController(StockController): and self._doc_before_save ): for row in self._doc_before_save.get("items"): - item_dict[row.name] = (row.item_code, row.received_qty or row.qty) + item_dict[row.name] = (row.item_code, row.qty) return item_dict @@ -118,9 +118,7 @@ class SubcontractingController(StockController): for row in self.items: self.__reference_name.append(row.name) - if (row.name not in item_dict) or (row.item_code, row.received_qty or row.qty) != item_dict[ - row.name - ]: + if (row.name not in item_dict) or (row.item_code, row.qty) != item_dict[row.name]: self.__changed_name.append(row.name) if item_dict.get(row.name): @@ -463,13 +461,12 @@ class SubcontractingController(StockController): def __get_qty_based_on_material_transfer(self, item_row, transfer_item): key = (item_row.item_code, item_row.get(self.subcontract_data.order_field)) - item_qty = item_row.received_qty or item_row.qty - if self.qty_to_be_received.get(key) == item_qty: + if self.qty_to_be_received == item_row.qty: return transfer_item.qty if self.qty_to_be_received: - qty = (flt(item_qty) * flt(transfer_item.qty)) / flt(self.qty_to_be_received.get(key, 0)) + qty = (flt(item_row.qty) * flt(transfer_item.qty)) / flt(self.qty_to_be_received.get(key, 0)) transfer_item.item_details.required_qty = transfer_item.qty if transfer_item.serial_no or frappe.get_cached_value( @@ -494,11 +491,7 @@ class SubcontractingController(StockController): for bom_item in self.__get_materials_from_bom( row.item_code, row.bom, row.get("include_exploded_items") ): - qty = ( - flt(bom_item.qty_consumed_per_unit) - * flt(row.received_qty or row.qty) - * row.conversion_factor - ) + qty = flt(bom_item.qty_consumed_per_unit) * flt(row.qty) * row.conversion_factor bom_item.main_item_code = row.item_code self.__update_reserve_warehouse(bom_item, row) self.__set_alternative_item(bom_item) From 369db4eacc567f2f93b4f4752823f92dd21ab6e2 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Tue, 15 Nov 2022 14:39:43 +0530 Subject: [PATCH 3/3] test: fix test cases for supplied-items `consumed_qty` --- .../test_subcontracting_receipt.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py index ca72ddfce8..72ed4d4e2e 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py @@ -515,17 +515,18 @@ class TestSubcontractingReceipt(FrappeTestCase): scr.items[0].rejected_qty = 3 scr.save() - # consumed_qty should be ((received_qty) * (transfered_qty / qty)) = ((5 + 3) * (20 / 10)) = 16 - self.assertEqual(scr.supplied_items[0].consumed_qty, 16) + # consumed_qty should be (accepted_qty * (transfered_qty / qty)) = (5 * (20 / 10)) = 10 + self.assertEqual(scr.supplied_items[0].consumed_qty, 10) # Set Backflush Based On as "BOM" set_backflush_based_on("BOM") + scr.items[0].qty = 6 # Accepted Qty scr.items[0].rejected_qty = 4 scr.save() - # consumed_qty should be ((received_qty) * (qty_consumed_per_unit)) = ((5 + 4) * (1)) = 9 - self.assertEqual(scr.supplied_items[0].consumed_qty, 9) + # consumed_qty should be (accepted_qty * qty_consumed_per_unit) = (6 * 1) = 6 + self.assertEqual(scr.supplied_items[0].consumed_qty, 6) def make_return_subcontracting_receipt(**args):