diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index 7effd0ea7ba..6c7944d46b3 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -645,6 +645,46 @@ class TestPickList(IntegrationTestCase): if dn_item.item_code == "_Test Item 2": self.assertEqual(dn_item.qty, 2) + def test_picklist_reserved_qty_validation(self): + from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order + + warehouse = "_Test Warehouse - _TC" + test_stock_item = "_Test Stock Item" + + # Ensure stock item exists + if not frappe.db.exists("Item", test_stock_item): + create_item( + item_code=test_stock_item, + is_stock_item=1, + ) + + # Add initial stock qty + make_stock_entry(item_code=test_stock_item, to_warehouse=warehouse, qty=15) + + # Create SO for 10 qty + sales_order_1 = make_sales_order(item_code=test_stock_item, warehouse=warehouse, qty=10) + + # Create and Submit picklist for SO + picklist_1 = create_pick_list(sales_order_1.name) + picklist_1.submit() + + # Create DN for 5 qty + dn = create_delivery_note(picklist_1.name) + dn.items[0].qty = 5 + dn.save() + dn.submit() + + # Verify partly delivered state + picklist_1.reload() + self.assertEqual(picklist_1.status, "Partly Delivered") + + # Create another SO (10 qty) + sales_order_2 = make_sales_order(item_code=test_stock_item, warehouse=warehouse, qty=10) + + # Expected pick qty = 5 + picklist_2 = create_pick_list(sales_order_2.name) + self.assertEqual(picklist_2.locations[0].qty, 5) + def test_picklist_with_multi_uom(self): warehouse = "_Test Warehouse - _TC" item = make_item(properties={"uoms": [dict(uom="Box", conversion_factor=24)]}).name