Merge pull request #35478 from rohitwaghchaure/fixed-lead-time-calculation-in-work-order
fix: incorrect transferred qty in the job card
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py
index a7d0b29..fcaa3fd 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/job_card.py
@@ -653,23 +653,19 @@
exc=JobCardOverTransferError,
)
- job_card_items_transferred_qty = _get_job_card_items_transferred_qty(ste_doc)
+ job_card_items_transferred_qty = _get_job_card_items_transferred_qty(ste_doc) or {}
+ allow_excess = frappe.db.get_single_value("Manufacturing Settings", "job_card_excess_transfer")
- if job_card_items_transferred_qty:
- allow_excess = frappe.db.get_single_value("Manufacturing Settings", "job_card_excess_transfer")
+ for row in ste_doc.items:
+ if not row.job_card_item:
+ continue
- for row in ste_doc.items:
- if not row.job_card_item:
- continue
+ transferred_qty = flt(job_card_items_transferred_qty.get(row.job_card_item, 0.0))
- transferred_qty = flt(job_card_items_transferred_qty.get(row.job_card_item))
+ if not allow_excess:
+ _validate_over_transfer(row, transferred_qty)
- if not allow_excess:
- _validate_over_transfer(row, transferred_qty)
-
- frappe.db.set_value(
- "Job Card Item", row.job_card_item, "transferred_qty", flt(transferred_qty)
- )
+ frappe.db.set_value("Job Card Item", row.job_card_item, "transferred_qty", flt(transferred_qty))
def set_transferred_qty(self, update_status=False):
"Set total FG Qty in Job Card for which RM was transferred."
diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py
index 61766a6..22177f4 100644
--- a/erpnext/manufacturing/doctype/job_card/test_job_card.py
+++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py
@@ -342,6 +342,12 @@
job_card.reload()
self.assertEqual(job_card.transferred_qty, 2)
+ transfer_entry_2.cancel()
+ transfer_entry.cancel()
+
+ job_card.reload()
+ self.assertEqual(job_card.transferred_qty, 0.0)
+
def test_job_card_material_transfer_correctness(self):
"""
1. Test if only current Job Card Items are pulled in a Stock Entry against a Job Card