diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js index 9d788f0809d..4ed73805314 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js @@ -235,9 +235,11 @@ erpnext.buying.SubcontractingOrderController = class SubcontractingOrderControll } has_unsupplied_items() { - return this.frm.doc["supplied_items"].some( - (item) => item.required_qty > item.supplied_qty - item.returned_qty - ); + let over_transfer_allowance = this.frm.doc.__onload.over_transfer_allowance; + return this.frm.doc["supplied_items"].some((item) => { + let required_qty = item.required_qty + (item.required_qty * over_transfer_allowance) / 100; + return required_qty > item.supplied_qty - item.returned_qty; + }); } make_subcontracting_receipt() { diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py index 4d3441a6da2..e36a4be75c2 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py @@ -99,6 +99,12 @@ class SubcontractingOrder(SubcontractingController): } ] + def onload(self): + self.set_onload( + "over_transfer_allowance", + frappe.db.get_single_value("Buying Settings", "over_transfer_allowance"), + ) + def before_validate(self): super().before_validate()