fix: don't set from warehouse for purchase material request (#37132) (cherry picked from commit e62b783f340844783352030de422c6be14b3ddfc) Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
parent
dd24a1b36e
commit
195de14810
@ -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', '');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -40,6 +40,12 @@ class ProductionPlan(Document):
|
|||||||
self._rename_temporary_references()
|
self._rename_temporary_references()
|
||||||
validate_uom_is_integer(self, "stock_uom", "planned_qty")
|
validate_uom_is_integer(self, "stock_uom", "planned_qty")
|
||||||
self.validate_sales_orders()
|
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()
|
@frappe.whitelist()
|
||||||
def validate_sales_orders(self, sales_order=None):
|
def validate_sales_orders(self, sales_order=None):
|
||||||
@ -750,7 +756,9 @@ class ProductionPlan(Document):
|
|||||||
"items",
|
"items",
|
||||||
{
|
{
|
||||||
"item_code": item.item_code,
|
"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,
|
"qty": item.quantity,
|
||||||
"schedule_date": schedule_date,
|
"schedule_date": schedule_date,
|
||||||
"warehouse": item.warehouse,
|
"warehouse": item.warehouse,
|
||||||
|
@ -1098,6 +1098,41 @@ class TestProductionPlan(FrappeTestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(reserved_qty_after_mr, before_qty)
|
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):
|
def test_skip_available_qty_for_sub_assembly_items(self):
|
||||||
from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
|
from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user