mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-13 15:27:12 +00:00
fix: Reserved for Production calculation considered closed work orders
(cherry picked from commit 6a8b7eeffe)
# Conflicts:
# erpnext/stock/doctype/bin/bin.py
This commit is contained in:
committed by
mergify-bot
parent
a3f1844311
commit
bc80f34d92
@@ -198,6 +198,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)
|
||||
|
||||
@@ -31,6 +31,7 @@ class Bin(Document):
|
||||
def update_reserved_qty_for_production(self):
|
||||
'''Update qty reserved for production from Production Item tables
|
||||
in open work orders'''
|
||||
<<<<<<< HEAD
|
||||
self.reserved_qty_for_production = frappe.db.sql('''
|
||||
SELECT
|
||||
SUM(CASE WHEN ifnull(skip_transfer, 0) = 0 THEN
|
||||
@@ -47,6 +48,30 @@ class Bin(Document):
|
||||
and pro.status not in ("Stopped", "Completed")
|
||||
and (item.required_qty > item.transferred_qty or item.required_qty > item.consumed_qty)
|
||||
''', (self.item_code, self.warehouse))[0][0]
|
||||
=======
|
||||
|
||||
wo = frappe.qb.DocType("Work Order")
|
||||
wo_item = frappe.qb.DocType("Work Order Item")
|
||||
|
||||
self.reserved_qty_for_production = (
|
||||
frappe.qb
|
||||
.from_(wo)
|
||||
.from_(wo_item)
|
||||
.select(Sum(Case()
|
||||
.when(wo.skip_transfer == 0, wo_item.required_qty - wo_item.transferred_qty)
|
||||
.else_(wo_item.required_qty - wo_item.consumed_qty))
|
||||
)
|
||||
.where(
|
||||
(wo_item.item_code == self.item_code)
|
||||
& (wo_item.parent == wo.name)
|
||||
& (wo.docstatus == 1)
|
||||
& (wo_item.source_warehouse == self.warehouse)
|
||||
& (wo.status.notin(["Stopped", "Completed", "Closed"]))
|
||||
& ((wo_item.required_qty > wo_item.transferred_qty)
|
||||
| (wo_item.required_qty > wo_item.consumed_qty))
|
||||
)
|
||||
).run()[0][0] or 0.0
|
||||
>>>>>>> 6a8b7eeffe (fix: Reserved for Production calculation considered closed work orders)
|
||||
|
||||
self.set_projected_qty()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user