Merge pull request #50399 from aerele/support-52332

This commit is contained in:
Mihir Kandoi
2025-11-11 10:09:57 +05:30
committed by GitHub
2 changed files with 31 additions and 4 deletions

View File

@@ -83,6 +83,21 @@ class MaterialRequest(BuyingController):
work_order: DF.Link | None
# end: auto-generated types
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.status_updater = [
{
"source_dt": "Material Request Item",
"target_dt": "Sales Order Item",
"target_field": "ordered_qty",
"target_parent_dt": "Sales Order",
"target_parent_field": "",
"join_field": "sales_order_item",
"target_ref_field": "stock_qty",
"source_field": "stock_qty",
}
]
def check_if_already_pulled(self):
pass
@@ -206,10 +221,10 @@ class MaterialRequest(BuyingController):
def on_submit(self):
self.update_requested_qty_in_production_plan()
self.update_requested_qty()
if self.material_request_type == "Purchase" and frappe.db.exists(
"Budget", {"applicable_on_material_request": 1, "docstatus": 1}
):
self.validate_budget()
if self.material_request_type == "Purchase":
self.update_prevdoc_status()
if frappe.db.exists("Budget", {"applicable_on_material_request": 1, "docstatus": 1}):
self.validate_budget()
def before_save(self):
self.set_status(update=True)

View File

@@ -933,6 +933,18 @@ class TestMaterialRequest(IntegrationTestCase):
self.assertEqual(mr.per_ordered, 100)
self.assertEqual(mr.status, "Ordered")
def test_material_request_qty_over_sales_order_limit(self):
from erpnext.controllers.status_updater import OverAllowanceError
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
so = make_sales_order()
mr = make_material_request(qty=100, do_not_submit=True)
mr.items[0].sales_order = so.name
mr.items[0].sales_order_item = so.items[0].name
mr.save()
self.assertRaises(OverAllowanceError, mr.submit)
def get_in_transit_warehouse(company):
if not frappe.db.exists("Warehouse Type", "Transit"):