diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index 180ab3ae3bb..5406d722b3f 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -1145,6 +1145,52 @@ class TestMaterialRequest(ERPNextTestSuite): se.save() se.submit() + def test_mr_status_for_mixed_direct_and_transit_transfer(self): + material_request = make_material_request( + material_request_type="Material Transfer", + item_code="_Test Item Home Desktop 100", + qty=5, + ) + + in_transit_wh = get_in_transit_warehouse(material_request.company) + + # Make stock available + self._insert_stock_entry(20.0, 20.0) + + # Direct Transfer for 3 Qty + direct_transfer = make_stock_entry(material_request.name) + direct_transfer.items[0].update( + { + "qty": 3, + "transfer_qty": 3, + "s_warehouse": "_Test Warehouse 1 - _TC", + } + ) + direct_transfer.save() + direct_transfer.submit() + + # In Transit Transfer for remaining 2 Qty + transit_transfer = make_in_transit_stock_entry(material_request.name, in_transit_wh) + transit_transfer.items[0].update( + { + "qty": 2, + "s_warehouse": "_Test Warehouse 1 - _TC", + } + ) + transit_transfer.save() + transit_transfer.submit() + + # Complete End Transit + end_transit = make_stock_in_entry(transit_transfer.name) + end_transit.save() + end_transit.submit() + + material_request.reload() + + self.assertEqual(material_request.per_ordered, 100) + self.assertEqual(material_request.status, "Transferred") + self.assertEqual(material_request.transfer_status, "Completed") + def get_in_transit_warehouse(company): if not frappe.db.exists("Warehouse Type", "Transit"):