mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 16:34:46 +00:00
test: disassembly for scrap / secondary item
(cherry picked from commit a6d41151ff)
This commit is contained in:
@@ -2503,7 +2503,8 @@ class TestWorkOrder(FrappeTestCase):
|
|||||||
def test_disassembly_with_multiple_manufacture_entries(self):
|
def test_disassembly_with_multiple_manufacture_entries(self):
|
||||||
"""
|
"""
|
||||||
Test that disassembly does not create duplicate items when manufacturing
|
Test that disassembly does not create duplicate items when manufacturing
|
||||||
is done in multiple batches (multiple manufacture stock entries).
|
is done in multiple batches (multiple manufacture stock entries), including
|
||||||
|
secondary/scrap items.
|
||||||
|
|
||||||
Scenario:
|
Scenario:
|
||||||
1. Create Work Order for 10 units
|
1. Create Work Order for 10 units
|
||||||
@@ -2512,11 +2513,19 @@ class TestWorkOrder(FrappeTestCase):
|
|||||||
4. Create Disassembly for 4 units
|
4. Create Disassembly for 4 units
|
||||||
5. Verify no duplicate items in the disassembly stock entry
|
5. Verify no duplicate items in the disassembly stock entry
|
||||||
"""
|
"""
|
||||||
# Create RM and FG item
|
# Create RM, scrap and FG item
|
||||||
raw_item1 = make_item("Test Raw for Multi Batch Disassembly 1", {"is_stock_item": 1}).name
|
raw_item1 = make_item("Test Raw for Multi Batch Disassembly 1", {"is_stock_item": 1}).name
|
||||||
raw_item2 = make_item("Test Raw for Multi Batch Disassembly 2", {"is_stock_item": 1}).name
|
raw_item2 = make_item("Test Raw for Multi Batch Disassembly 2", {"is_stock_item": 1}).name
|
||||||
|
scrap_item = make_item("Test Scrap for Multi Batch Disassembly", {"is_stock_item": 1}).name
|
||||||
fg_item = make_item("Test FG for Multi Batch Disassembly", {"is_stock_item": 1}).name
|
fg_item = make_item("Test FG for Multi Batch Disassembly", {"is_stock_item": 1}).name
|
||||||
bom = make_bom(item=fg_item, quantity=1, raw_materials=[raw_item1, raw_item2], rm_qty=2)
|
bom = make_bom(
|
||||||
|
item=fg_item,
|
||||||
|
quantity=1,
|
||||||
|
raw_materials=[raw_item1, raw_item2],
|
||||||
|
rm_qty=2,
|
||||||
|
scrap_items=[scrap_item],
|
||||||
|
scrap_qty=10,
|
||||||
|
)
|
||||||
|
|
||||||
# Create WO
|
# Create WO
|
||||||
wo = make_wo_order_test_record(production_item=fg_item, qty=10, bom_no=bom.name, status="Not Started")
|
wo = make_wo_order_test_record(production_item=fg_item, qty=10, bom_no=bom.name, status="Not Started")
|
||||||
@@ -2591,7 +2600,7 @@ class TestWorkOrder(FrappeTestCase):
|
|||||||
f"Found duplicate items in disassembly stock entry: {duplicates}",
|
f"Found duplicate items in disassembly stock entry: {duplicates}",
|
||||||
)
|
)
|
||||||
|
|
||||||
expected_items = 3 # FG item + 2 raw materials
|
expected_items = 4 # FG item + 2 raw materials + 1 scrap item
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(stock_entry.items),
|
len(stock_entry.items),
|
||||||
expected_items,
|
expected_items,
|
||||||
@@ -2602,6 +2611,15 @@ class TestWorkOrder(FrappeTestCase):
|
|||||||
fg_item_row = next((i for i in stock_entry.items if i.item_code == fg_item), None)
|
fg_item_row = next((i for i in stock_entry.items if i.item_code == fg_item), None)
|
||||||
self.assertEqual(fg_item_row.qty, disassemble_qty)
|
self.assertEqual(fg_item_row.qty, disassemble_qty)
|
||||||
|
|
||||||
|
# Secondary/Scrap item: should be taken from scrap warehouse in disassembly
|
||||||
|
scrap_row = next((i for i in stock_entry.items if i.item_code == scrap_item), None)
|
||||||
|
self.assertIsNotNone(scrap_row)
|
||||||
|
self.assertEqual(scrap_row.type, "Scrap")
|
||||||
|
self.assertTrue(scrap_row.s_warehouse)
|
||||||
|
self.assertFalse(scrap_row.t_warehouse)
|
||||||
|
self.assertEqual(scrap_row.s_warehouse, wo.scrap_warehouse)
|
||||||
|
self.assertEqual(scrap_row.qty, 40)
|
||||||
|
|
||||||
# RM quantities
|
# RM quantities
|
||||||
for bom_item in bom.items:
|
for bom_item in bom.items:
|
||||||
expected_qty = (bom_item.qty / bom.quantity) * disassemble_qty
|
expected_qty = (bom_item.qty / bom.quantity) * disassemble_qty
|
||||||
|
|||||||
Reference in New Issue
Block a user