From be154a469fb2b0955f43fffc2365be6b20a43b65 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 14 Apr 2025 12:36:59 +0530 Subject: [PATCH] fix: consider per_ordered instead of per_billed when creating PO from MR (cherry picked from commit 5a524854de5d68ccf67313530dfb8faeab2d2128) # Conflicts: # erpnext/stock/doctype/material_request/material_request.js --- .../material_request/material_request.js | 19 +++++++++++++++++-- .../material_request/material_request.py | 4 ++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 83b63e225b3..86a4333eb65 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -107,6 +107,7 @@ frappe.ui.form.on("Material Request", { if (flt(frm.doc.per_received, precision) < 100) { frm.add_custom_button(__("Stop"), () => frm.events.update_status(frm, "Stopped")); +<<<<<<< HEAD if (frm.doc.material_request_type === "Purchase") { frm.add_custom_button( @@ -115,6 +116,8 @@ frappe.ui.form.on("Material Request", { __("Create") ); } +======= +>>>>>>> 5a524854de (fix: consider per_ordered instead of per_billed when creating PO from MR) } if (flt(frm.doc.per_ordered, precision) < 100) { @@ -158,14 +161,18 @@ frappe.ui.form.on("Material Request", { } if (frm.doc.material_request_type === "Purchase") { + frm.add_custom_button( + __("Purchase Order"), + () => frm.events.make_purchase_order(frm), + __("Create") + ); + frm.add_custom_button( __("Request for Quotation"), () => frm.events.make_request_for_quotation(frm), __("Create") ); - } - if (frm.doc.material_request_type === "Purchase") { frm.add_custom_button( __("Supplier Quotation"), () => frm.events.make_supplier_quotation(frm), @@ -181,6 +188,14 @@ frappe.ui.form.on("Material Request", { ); } + if (frm.doc.material_request_type === "Subcontracting") { + frm.add_custom_button( + __("Subcontracted Purchase Order"), + () => frm.events.make_purchase_order(frm), + __("Create") + ); + } + frm.page.set_inner_btn_group_as_primary(__("Create")); } } diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 59634cb9f7c..a5f1467cced 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -379,7 +379,7 @@ def set_missing_values(source, target_doc): def update_item(obj, target, source_parent): target.conversion_factor = obj.conversion_factor - qty = obj.received_qty or obj.ordered_qty + qty = obj.ordered_qty or obj.received_qty target.qty = flt(flt(obj.stock_qty) - flt(qty)) / target.conversion_factor target.stock_qty = target.qty * target.conversion_factor if getdate(target.schedule_date) < getdate(nowdate()): @@ -432,7 +432,7 @@ def make_purchase_order(source_name, target_doc=None, args=None): filtered_items = args.get("filtered_children", []) child_filter = d.name in filtered_items if filtered_items else True - qty = d.received_qty or d.ordered_qty + qty = d.ordered_qty or d.received_qty return qty < d.stock_qty and child_filter