Skip to content

Commit

Permalink
fix: don't set from warehouse for purchase material request (#37132)
Browse files Browse the repository at this point in the history
  • Loading branch information
rohitwaghchaure committed Sep 18, 2023
1 parent 8ef548f commit e62b783
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,15 @@ frappe.ui.form.on("Material Request Plan Item", {
}
})
}
},

material_request_type(frm, cdt, cdn) {
let row = locals[cdt][cdn];

if (row.from_warehouse &&
row.material_request_type !== "Material Transfer") {
frappe.model.set_value(cdt, cdn, 'from_warehouse', '');
}
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ def validate(self):
self._rename_temporary_references()
validate_uom_is_integer(self, "stock_uom", "planned_qty")
self.validate_sales_orders()
self.validate_material_request_type()

def validate_material_request_type(self):
for row in self.get("mr_items"):
if row.from_warehouse and row.material_request_type != "Material Transfer":
row.from_warehouse = ""

@frappe.whitelist()
def validate_sales_orders(self, sales_order=None):
Expand Down Expand Up @@ -749,7 +755,9 @@ def make_material_request(self):
"items",
{
"item_code": item.item_code,
"from_warehouse": item.from_warehouse,
"from_warehouse": item.from_warehouse
if material_request_type == "Material Transfer"
else None,
"qty": item.quantity,
"schedule_date": schedule_date,
"warehouse": item.warehouse,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1087,6 +1087,41 @@ def test_resered_qty_for_production_plan_for_material_requests_with_multi_UOM(se
)
self.assertEqual(reserved_qty_after_mr, before_qty)

def test_from_warehouse_for_purchase_material_request(self):
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
from erpnext.stock.utils import get_or_make_bin

create_item("RM-TEST-123 For Purchase", valuation_rate=100)
bin_name = get_or_make_bin("RM-TEST-123 For Purchase", "_Test Warehouse - _TC")
t_warehouse = create_warehouse("_Test Store - _TC")
make_stock_entry(
item_code="Raw Material Item 1",
qty=5,
rate=100,
target=t_warehouse,
)

plan = create_production_plan(item_code="Test Production Item 1", do_not_save=1)
mr_items = get_items_for_material_requests(
plan.as_dict(), warehouses=[{"warehouse": t_warehouse}]
)

for d in mr_items:
plan.append("mr_items", d)

plan.save()

for row in plan.mr_items:
if row.material_request_type == "Material Transfer":
self.assertEqual(row.from_warehouse, t_warehouse)

row.material_request_type = "Purchase"

plan.save()

for row in plan.mr_items:
self.assertFalse(row.from_warehouse)

def test_skip_available_qty_for_sub_assembly_items(self):
from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom

Expand Down

0 comments on commit e62b783

Please sign in to comment.