Merge pull request #52591 from aerele/backport-52527

fix(stock): correct warehouse mapping for material issue (backport #52527)
This commit is contained in:
Kavin
2026-02-10 15:33:53 +05:30
committed by GitHub
2 changed files with 30 additions and 2 deletions

View File

@@ -706,6 +706,9 @@ def make_stock_entry(source_name, target_doc=None):
target.purpose = source.material_request_type
target.from_warehouse = source.set_from_warehouse
target.to_warehouse = source.set_warehouse
if source.material_request_type == "Material Issue":
target.from_warehouse = source.set_warehouse
target.to_warehouse = None
if source.job_card:
target.purpose = "Material Transfer for Manufacture"

View File

@@ -902,15 +902,27 @@ class TestMaterialRequest(FrappeTestCase):
import json
from erpnext.stock.doctype.pick_list.pick_list import create_stock_entry
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
mr = make_material_request(material_request_type="Material Transfer")
new_item = create_item("_Test Pick List Item", is_stock_item=1)
item_code = new_item.name
make_stock_entry(
item_code=item_code,
target="_Test Warehouse - _TC",
qty=10,
do_not_save=False,
do_not_submit=False,
)
mr = make_material_request(item_code=item_code, material_request_type="Material Transfer")
pl = create_pick_list(mr.name)
pl.save()
pl.locations[0].qty = 5
pl.locations[0].stock_qty = 5
pl.submit()
to_warehouse = create_warehouse("Test To Warehouse")
to_warehouse = create_warehouse("_Test Warehouse - _TC")
se_data = create_stock_entry(json.dumps(pl.as_dict()))
se = frappe.get_doc(se_data)
@@ -970,6 +982,19 @@ class TestMaterialRequest(FrappeTestCase):
self.assertRaises(frappe.ValidationError, end_transit_2.submit)
def test_make_stock_entry_material_issue_warehouse_mapping(self):
"""Test to ensure while making stock entry from material request of type Material Issue, warehouse is mapped correctly"""
mr = make_material_request(material_request_type="Material Issue", do_not_submit=True)
mr.set_warehouse = "_Test Warehouse - _TC"
mr.save()
mr.submit()
se = make_stock_entry(mr.name)
self.assertEqual(se.from_warehouse, "_Test Warehouse - _TC")
self.assertIsNone(se.to_warehouse)
se.save()
se.submit()
def get_in_transit_warehouse(company):
if not frappe.db.exists("Warehouse Type", "Transit"):