mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-12 03:15:07 +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):
|
||||
"""
|
||||
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:
|
||||
1. Create Work Order for 10 units
|
||||
@@ -2512,11 +2513,19 @@ class TestWorkOrder(FrappeTestCase):
|
||||
4. Create Disassembly for 4 units
|
||||
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_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
|
||||
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
|
||||
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}",
|
||||
)
|
||||
|
||||
expected_items = 3 # FG item + 2 raw materials
|
||||
expected_items = 4 # FG item + 2 raw materials + 1 scrap item
|
||||
self.assertEqual(
|
||||
len(stock_entry.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)
|
||||
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
|
||||
for bom_item in bom.items:
|
||||
expected_qty = (bom_item.qty / bom.quantity) * disassemble_qty
|
||||
|
||||
Reference in New Issue
Block a user