test(job_card): cover the completion qty split guard

This commit is contained in:
Mihir Kandoi
2026-08-01 14:05:22 +05:30
parent e042d09975
commit 2c131d5819
2 changed files with 16 additions and 3 deletions

View File

@@ -1708,9 +1708,7 @@ class JobCard(Document):
return
precision = self.precision("total_completed_qty")
accounted_qty = (
flt(kwargs.qty) + flt(kwargs.pending_qty) + flt(kwargs.process_loss_qty)
)
accounted_qty = flt(kwargs.qty) + flt(kwargs.pending_qty) + flt(kwargs.process_loss_qty)
if flt(accounted_qty, precision) == flt(kwargs.for_quantity, precision):
return

View File

@@ -2228,6 +2228,21 @@ class TestJobCardLogic(ERPNextTestSuite):
frappe.ValidationError, jc.validate_complete_job_card_qty, frappe._dict(pending_qty=10)
)
def test_completion_qty_split_must_add_up(self):
jc = frappe.new_doc("Job Card")
jc.for_quantity = 5
# 3 completed + 2 pending + 0 lost == 5 to manufacture -> passes
jc.validate_complete_job_card_qty(
frappe._dict(for_quantity=5, qty=3, pending_qty=2, process_loss_qty=0)
)
self.assertRaises(
frappe.ValidationError,
jc.validate_complete_job_card_qty,
frappe._dict(for_quantity=3, qty=3, pending_qty=2, process_loss_qty=0),
)
def test_completed_qty_must_reconcile_with_for_quantity(self):
jc = frappe.new_doc("Job Card")
jc.for_quantity = 10