From 1504ff8b6c299a10ca7e4af263561a83bb6d3d9c Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Fri, 25 Aug 2023 20:18:30 +0530 Subject: [PATCH] fix: ignore scrap items while distribute additional cost --- .../controllers/subcontracting_controller.py | 19 ++++++++++++------- .../subcontracting_receipt.js | 7 ++++++- .../subcontracting_receipt.py | 7 ++----- .../subcontracting_receipt_item.json | 8 ++++++-- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index 837969728b..913c80b26a 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -895,19 +895,24 @@ class SubcontractingController(StockController): if self.total_additional_costs: if self.distribute_additional_costs_based_on == "Amount": - total_amt = sum(flt(item.amount) for item in self.get("items")) + total_amt = sum( + flt(item.amount) for item in self.get("items") if not item.get("is_scrap_item") + ) for item in self.items: - item.additional_cost_per_qty = ( - (item.amount * self.total_additional_costs) / total_amt - ) / item.qty + if not item.get("is_scrap_item"): + item.additional_cost_per_qty = ( + (item.amount * self.total_additional_costs) / total_amt + ) / item.qty else: - total_qty = sum(flt(item.qty) for item in self.get("items")) + total_qty = sum(flt(item.qty) for item in self.get("items") if not item.get("is_scrap_item")) additional_cost_per_qty = self.total_additional_costs / total_qty for item in self.items: - item.additional_cost_per_qty = additional_cost_per_qty + if not item.get("is_scrap_item"): + item.additional_cost_per_qty = additional_cost_per_qty else: for item in self.items: - item.additional_cost_per_qty = 0 + if not item.get("is_scrap_item"): + item.additional_cost_per_qty = 0 @frappe.whitelist() def get_current_stock(self): diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js index 1a20f0ccf5..8edbd4af08 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js @@ -201,12 +201,17 @@ frappe.ui.form.on('Subcontracting Receipt', { frappe.ui.form.on('Landed Cost Taxes and Charges', { amount: function (frm, cdt, cdn) { + set_missing_values(frm); frm.events.set_base_amount(frm, cdt, cdn); }, expense_account: function (frm, cdt, cdn) { frm.events.set_account_currency(frm, cdt, cdn); - } + }, + + additional_costs_remove: function(frm) { + set_missing_values(frm); + } }); frappe.ui.form.on('Subcontracting Receipt Item', { diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index 09db66f97a..b28292f0a4 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -169,12 +169,12 @@ class SubcontractingReceipt(SubcontractingController): "item_name": scrap_item.item_name, "qty": qty, "stock_uom": scrap_item.stock_uom, - "recalculate_rate": 1, + "recalculate_rate": 0, "rate": scrap_item.rate, "rm_cost_per_qty": 0, "service_cost_per_qty": 0, "additional_cost_per_qty": 0, - "scrap_cost_per_qty": scrap_item.rate, + "scrap_cost_per_qty": 0, "amount": qty * scrap_item.rate, "warehouse": self.set_warehouse, "rejected_warehouse": self.rejected_warehouse, @@ -244,9 +244,6 @@ class SubcontractingReceipt(SubcontractingController): scrap_cost_map = {} for item in self.get("items") or []: if item.is_scrap_item: - if item.recalculate_rate: - item.rate = flt(item.scrap_cost_per_qty) + flt(item.additional_cost_per_qty) - item.amount = flt(item.qty) * flt(item.rate) if item.reference_name in scrap_cost_map: diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json index b333627b4a..c036390ba3 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json +++ b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json @@ -237,6 +237,7 @@ }, { "default": "0", + "depends_on": "eval: !doc.is_scrap_item", "fieldname": "additional_cost_per_qty", "fieldtype": "Currency", "label": "Additional Cost Per Qty", @@ -476,9 +477,11 @@ }, { "default": "1", + "depends_on": "eval: !doc.is_scrap_item", "fieldname": "recalculate_rate", "fieldtype": "Check", - "label": "Recalculate Rate" + "label": "Recalculate Rate", + "read_only_depends_on": "eval: doc.is_scrap_item" }, { "fieldname": "serial_and_batch_bundle", @@ -508,6 +511,7 @@ }, { "default": "0", + "depends_on": "eval: !doc.is_scrap_item", "fieldname": "scrap_cost_per_qty", "fieldtype": "Float", "label": "Scrap Cost Per Qty", @@ -527,7 +531,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2023-08-25 15:42:36.923833", + "modified": "2023-08-25 20:09:03.069417", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Receipt Item",