diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 498542036e3..9f7df80b9c4 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -411,12 +411,6 @@ frappe.ui.form.on("Material Request", { }, make_purchase_order: function (frm) { -<<<<<<< HEAD - frappe.model.open_mapped_doc({ - method: "erpnext.stock.doctype.material_request.material_request.make_purchase_order", - frm: frm, - run_link_triggers: true, -======= frappe.call({ method: "erpnext.stock.doctype.material_request.mapper.get_item_default_suppliers", args: { @@ -440,7 +434,6 @@ frappe.ui.form.on("Material Request", { run_link_triggers: true, }); }, ->>>>>>> e8df7b4a90 (feat: select a supplier per item when creating Purchase Orders from Material Request) }); }, diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index 933c74e5750..d0edfa1bd4b 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -1189,107 +1189,6 @@ class TestMaterialRequest(ERPNextTestSuite): self.assertEqual(material_request.status, "Transferred") self.assertEqual(material_request.transfer_status, "Completed") -<<<<<<< HEAD -======= - def test_check_modified_date_detects_concurrent_modification(self): - """check_modified_date must raise when the in-memory doc is stale vs the DB modified - timestamp. Covers the converted get_value + get_datetime comparison that replaced the - raw MariaDB-only TIMEDIFF (which errors on Postgres); update_status() runs this guard.""" - from frappe.utils import add_to_date, get_datetime - - mr = make_material_request(qty=10) - - fresh = frappe.get_doc("Material Request", mr.name) - # modified matches the DB row -> guard passes. - fresh.check_modified_date() - - # Stale in-memory modified -> concurrent-modification guard must fire. - fresh.modified = add_to_date(get_datetime(fresh.modified), seconds=-120) - with self.assertRaises(frappe.ValidationError) as cm: - fresh.check_modified_date() - self.assertIn("has been modified", str(cm.exception)) - - def test_validate_qty_against_so_blocks_over_request(self): - """validate_qty_against_so must block requesting more than the Sales Order qty, net of - already-indented submitted MRs. Covers the converted Sales Order Item and Material Request - Item SUM queries. (The guard is currently not wired into validate(), so call it directly.)""" - from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order - - item_code = "_Test Item" - so = make_sales_order(item_code=item_code, qty=10) # submitted -> SO Item stock_qty 10 - - def _mr_against_so(qty): - mr = frappe.new_doc("Material Request") - mr.material_request_type = "Purchase" - mr.company = "_Test Company" - mr.append( - "items", - { - "item_code": item_code, - "qty": qty, - "uom": "_Test UOM", - "conversion_factor": 1, - "schedule_date": today(), - "warehouse": "_Test Warehouse - _TC", - "sales_order": so.name, - }, - ) - return mr - - # An already-submitted MR consuming 6 of the SO's 10. - mr1 = _mr_against_so(6) - mr1.insert() - mr1.submit() - - # A new request for 5 more -> already_indented 6 + 5 = 11 > 10 -> must throw. - over = _mr_against_so(5) - over.insert() - with self.assertRaises(frappe.ValidationError) as cm: - over.validate_qty_against_so() - self.assertIn("maximum", str(cm.exception)) - - # Exactly within the remaining 4 -> 6 + 4 = 10, not greater -> no throw. - over.items[0].qty = 4 - over.validate_qty_against_so() - - def test_get_material_requests_based_on_supplier(self): - """The supplier-based Material Request picker must run on every engine. - - It deduplicated requests with SELECT DISTINCT while ordering by an item - column that is not in the select list; PostgreSQL rejects that, so the - picker has to group and order by an aggregate instead. - """ - from erpnext.stock.doctype.material_request.material_request import ( - get_material_requests_based_on_supplier, - ) - - item = create_item("_Test MR Default Supplier Item") - item.set("item_defaults", []) - item.append( - "item_defaults", - { - "company": "_Test Company", - "default_warehouse": "_Test Warehouse - _TC", - "default_supplier": "_Test Supplier", - }, - ) - item.save() - - mr1 = make_material_request(item_code=item.name, qty=5) - mr2 = make_material_request(item_code=item.name, qty=7) - - result = get_material_requests_based_on_supplier( - doctype="Material Request", - txt="", - searchfield="name", - start=0, - page_len=20, - filters={"supplier": "_Test Supplier", "company": "_Test Company"}, - ) - returned = {row["name"] for row in result} - self.assertIn(mr1.name, returned) - self.assertIn(mr2.name, returned) - def test_get_item_default_suppliers(self): from erpnext.stock.doctype.material_request.mapper import get_item_default_suppliers @@ -1428,7 +1327,6 @@ def make_material_request_for_items(item_codes, **args): return mr ->>>>>>> 65be201ed6 (test: supplier selection when creating Purchase Orders from Material Request) def get_in_transit_warehouse(company): if not frappe.db.exists("Warehouse Type", "Transit"):