mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-11 21:51:48 +00:00
fix: link the item and spell out the unit in the supplier dialog errors
A bare item code left the buyer to find the item themselves, and a bare number gave no clue what the limit was counted in. Both messages now link the item and state the pending quantity in bold with its UOM.
This commit is contained in:
@@ -207,20 +207,24 @@ def get_item_default_suppliers(source_name: str, filtered_children: str | list |
|
||||
def make_purchase_orders_by_supplier(source_name: str, item_suppliers: str | list) -> list[str]:
|
||||
"""Create one draft Purchase Order per supplier for the given Material Request items."""
|
||||
item_suppliers = frappe.parse_json(item_suppliers)
|
||||
pending_qty = {
|
||||
d["material_request_item"]: d["pending_qty"] for d in get_item_default_suppliers(source_name)
|
||||
pending_items = {
|
||||
d["material_request_item"]: frappe._dict(d) for d in get_item_default_suppliers(source_name)
|
||||
}
|
||||
|
||||
items_by_supplier = {}
|
||||
for row in item_suppliers:
|
||||
row = frappe._dict(row)
|
||||
if not row.supplier:
|
||||
frappe.throw(_("Select a Supplier for Item {0}").format(frappe.bold(row.item_code)))
|
||||
pending = pending_items.get(row.material_request_item) or frappe._dict()
|
||||
item_link = get_link_to_form("Item", row.item_code)
|
||||
|
||||
if flt(row.qty) <= 0 or flt(row.qty) > flt(pending_qty.get(row.material_request_item)):
|
||||
if not row.supplier:
|
||||
frappe.throw(_("Select a Supplier for Item {0}").format(item_link))
|
||||
|
||||
if flt(row.qty) <= 0 or flt(row.qty) > flt(pending.pending_qty):
|
||||
pending_qty = frappe.format_value(flt(pending.pending_qty), "Float")
|
||||
frappe.throw(
|
||||
_("Quantity for Item {0} must be greater than zero and cannot exceed {1}").format(
|
||||
frappe.bold(row.item_code), flt(pending_qty.get(row.material_request_item))
|
||||
item_link, frappe.bold(f"{pending_qty} {pending.uom or ''}".strip())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -517,7 +517,11 @@ frappe.ui.form.on("Material Request", {
|
||||
|
||||
const missing_supplier = item_suppliers.find((row) => !row.supplier);
|
||||
if (missing_supplier) {
|
||||
frappe.throw(__("Select a Supplier for Item {0}", [missing_supplier.item_code]));
|
||||
frappe.throw(
|
||||
__("Select a Supplier for Item {0}", [
|
||||
frappe.utils.get_form_link("Item", missing_supplier.item_code, true),
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
const invalid_qty = item_suppliers.find(
|
||||
@@ -526,8 +530,8 @@ frappe.ui.form.on("Material Request", {
|
||||
if (invalid_qty) {
|
||||
frappe.throw(
|
||||
__("Quantity for Item {0} must be greater than zero and cannot exceed {1}", [
|
||||
invalid_qty.item_code,
|
||||
format_number(invalid_qty.pending_qty),
|
||||
frappe.utils.get_form_link("Item", invalid_qty.item_code, true),
|
||||
`<b>${format_number(invalid_qty.pending_qty)} ${invalid_qty.uom}</b>`,
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user