From 6a8b7eeffecba15e8a664449b6d92f5a8aa8d2cf Mon Sep 17 00:00:00 2001 From: aaronmenezes Date: Tue, 8 Feb 2022 19:25:49 +0530 Subject: [PATCH] fix: Reserved for Production calculation considered closed work orders --- .../doctype/work_order/test_work_order.py | 13 +++++++++++++ erpnext/stock/doctype/bin/bin.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index a399edda707..a38e04a5c75 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -201,6 +201,19 @@ class TestWorkOrder(ERPNextTestCase): self.assertEqual(cint(bin1_on_end_production.reserved_qty_for_production), cint(bin1_on_start_production.reserved_qty_for_production)) + def test_reserved_qty_for_production(self): + self.bin1_at_start = get_bin(self.item, self.warehouse) + self.bin1_at_start.update_reserved_qty_for_production() + self.test_reserved_qty_for_production_submit() + self.test_reserved_qty_for_production_cancel() + self.test_close_work_order() + self.wo_order = make_wo_order_test_record(item="_Test FG Item", qty=2, + source_warehouse=self.warehouse) + self.bin1_on_submit = get_bin(self.item, self.warehouse) + bin1_on_end_production = get_bin(self.item, self.warehouse) + self.assertEqual(cint(bin1_on_end_production.reserved_qty_for_production), + cint(self.bin1_at_start.reserved_qty_for_production) + 2) + def test_backflush_qty_for_overpduction_manufacture(self): cancel_stock_entry = [] allow_overproduction("overproduction_percentage_for_work_order", 30) diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py index c34e9d05cef..6bf94339edc 100644 --- a/erpnext/stock/doctype/bin/bin.py +++ b/erpnext/stock/doctype/bin/bin.py @@ -52,7 +52,7 @@ class Bin(Document): & (wo_item.parent == wo.name) & (wo.docstatus == 1) & (wo_item.source_warehouse == self.warehouse) - & (wo.status.notin(["Stopped", "Completed"])) + & (wo.status.notin(["Stopped", "Completed", "Closed"])) & ((wo_item.required_qty > wo_item.transferred_qty) | (wo_item.required_qty > wo_item.consumed_qty)) )