From 2d056aee3d919b7a2f51f6ec4f23597491f7b6e1 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 6 Aug 2026 20:48:42 +0530 Subject: [PATCH] fix: round production plan mr_items quantity to field precision The stock-UOM qty is rounded in _accumulate_so_items, but the purchase UOM conversion divided it by the conversion factor without re-rounding, storing values like 5738748.300863984 in mr_items.quantity. The raw value flowed into Material Request qty and the raw materials CSV, and make_material_request compares quantity to requested_qty with exact float equality, so any rounding downstream left dust quantities. (cherry picked from commit ffc515f04618caf294892f579be4091682266cea) --- .../doctype/production_plan/services/material_request.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/manufacturing/doctype/production_plan/services/material_request.py b/erpnext/manufacturing/doctype/production_plan/services/material_request.py index c9073d5e648..ac689ba0a3f 100644 --- a/erpnext/manufacturing/doctype/production_plan/services/material_request.py +++ b/erpnext/manufacturing/doctype/production_plan/services/material_request.py @@ -559,10 +559,11 @@ def _material_request_item_row( or row.get("default_warehouse") or item_group_defaults.get("default_warehouse") ) + precision = frappe.get_precision("Material Request Plan Item", "quantity") return { "item_code": row.item_code, "item_name": row.item_name, - "quantity": required_qty / conversion_factor, + "quantity": flt(required_qty / conversion_factor, precision), "conversion_factor": conversion_factor, "required_bom_qty": row.get("qty"), "stock_uom": row.get("stock_uom"), @@ -639,7 +640,7 @@ def _add_remaining_purchase_request(item, new_mr_items, required_qty, consider_m if frappe.db.get_value("UOM", purchase_uom, "must_be_whole_number"): required_qty = ceil(required_qty) - item["quantity"] = required_qty / item.get("conversion_factor") + item["quantity"] = flt(required_qty / item.get("conversion_factor"), precision) new_mr_items.append(item)