Skip to content

Commit 1d0cd68

Browse files
authored
Merge pull request #50399 from aerele/support-52332
2 parents 7baf6ec + 55f531b commit 1d0cd68

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

erpnext/stock/doctype/material_request/material_request.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,21 @@ class MaterialRequest(BuyingController):
8383
work_order: DF.Link | None
8484
# end: auto-generated types
8585

86+
def __init__(self, *args, **kwargs):
87+
super().__init__(*args, **kwargs)
88+
self.status_updater = [
89+
{
90+
"source_dt": "Material Request Item",
91+
"target_dt": "Sales Order Item",
92+
"target_field": "ordered_qty",
93+
"target_parent_dt": "Sales Order",
94+
"target_parent_field": "",
95+
"join_field": "sales_order_item",
96+
"target_ref_field": "stock_qty",
97+
"source_field": "stock_qty",
98+
}
99+
]
100+
86101
def check_if_already_pulled(self):
87102
pass
88103

@@ -206,10 +221,10 @@ def set_title(self):
206221
def on_submit(self):
207222
self.update_requested_qty_in_production_plan()
208223
self.update_requested_qty()
209-
if self.material_request_type == "Purchase" and frappe.db.exists(
210-
"Budget", {"applicable_on_material_request": 1, "docstatus": 1}
211-
):
212-
self.validate_budget()
224+
if self.material_request_type == "Purchase":
225+
self.update_prevdoc_status()
226+
if frappe.db.exists("Budget", {"applicable_on_material_request": 1, "docstatus": 1}):
227+
self.validate_budget()
213228

214229
def before_save(self):
215230
self.set_status(update=True)

erpnext/stock/doctype/material_request/test_material_request.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,18 @@ def test_manufacture_type_status_over_wo(self):
933933
self.assertEqual(mr.per_ordered, 100)
934934
self.assertEqual(mr.status, "Ordered")
935935

936+
def test_material_request_qty_over_sales_order_limit(self):
937+
from erpnext.controllers.status_updater import OverAllowanceError
938+
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
939+
940+
so = make_sales_order()
941+
mr = make_material_request(qty=100, do_not_submit=True)
942+
mr.items[0].sales_order = so.name
943+
mr.items[0].sales_order_item = so.items[0].name
944+
mr.save()
945+
946+
self.assertRaises(OverAllowanceError, mr.submit)
947+
936948

937949
def get_in_transit_warehouse(company):
938950
if not frappe.db.exists("Warehouse Type", "Transit"):

0 commit comments

Comments
 (0)