mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-12 14:11:46 +00:00
fix: sync process loss percentage when fg qty changes (#57063)
This commit is contained in:
@@ -138,7 +138,7 @@ class BaseManufactureStockEntry(BaseStockEntry):
|
||||
self.doc.process_loss_qty = flt(
|
||||
(flt(self.doc.fg_completed_qty) * flt(self.doc.process_loss_percentage)) / 100
|
||||
)
|
||||
elif self.doc.process_loss_qty and not self.doc.process_loss_percentage:
|
||||
elif self.doc.process_loss_qty and self.doc.fg_completed_qty:
|
||||
self.doc.process_loss_percentage = flt(
|
||||
(flt(self.doc.process_loss_qty) / flt(self.doc.fg_completed_qty)) * 100
|
||||
)
|
||||
|
||||
@@ -1407,7 +1407,7 @@ class StockEntry(StockController, SubcontractingInwardController):
|
||||
self.process_loss_qty = flt(
|
||||
(flt(self.fg_completed_qty) * flt(self.process_loss_percentage)) / 100
|
||||
)
|
||||
elif self.process_loss_qty and not self.process_loss_percentage:
|
||||
elif self.process_loss_qty and self.fg_completed_qty:
|
||||
self.process_loss_percentage = flt(
|
||||
(flt(self.process_loss_qty) / flt(self.fg_completed_qty)) * 100
|
||||
)
|
||||
|
||||
@@ -3414,6 +3414,28 @@ class TestStockEntryCoverage(ERPNextTestSuite):
|
||||
frappe.db.set_value("Work Order", wo.name, "produced_qty", wo.qty)
|
||||
self.assertNotIn(wo.name, pending_work_orders())
|
||||
|
||||
def test_process_loss_percentage_resyncs_from_qty(self):
|
||||
# changing fg qty recomputes process_loss_qty and process_loss_percentage
|
||||
se = frappe.new_doc("Stock Entry")
|
||||
se.purpose = "Manufacture"
|
||||
se.fg_completed_qty = 200
|
||||
se.process_loss_qty = 100
|
||||
se.process_loss_percentage = 80
|
||||
|
||||
se.set_process_loss_qty()
|
||||
|
||||
self.assertEqual(se.process_loss_percentage, 50)
|
||||
|
||||
def test_process_loss_qty_derived_from_percentage_when_qty_blank(self):
|
||||
se = frappe.new_doc("Stock Entry")
|
||||
se.purpose = "Manufacture"
|
||||
se.fg_completed_qty = 200
|
||||
se.process_loss_percentage = 25
|
||||
|
||||
se.set_process_loss_qty()
|
||||
|
||||
self.assertEqual(se.process_loss_qty, 50)
|
||||
|
||||
|
||||
def make_serialized_item(self, **args):
|
||||
args = frappe._dict(args)
|
||||
|
||||
Reference in New Issue
Block a user