From ca2b361a3e4c36731676e4b1063ad6fe50f94336 Mon Sep 17 00:00:00 2001 From: SowmyaArunachalam Date: Wed, 17 Dec 2025 13:01:09 +0530 Subject: [PATCH] fix(material-request): get remaining qty on partial transaction with product bundle (cherry picked from commit 6ade609dd6c395a66a39abd1c96661ea0c0687ec) # Conflicts: # erpnext/selling/doctype/sales_order/sales_order.py # erpnext/stock/doctype/material_request_item/material_request_item.json --- .../doctype/sales_order/sales_order.py | 17 ++++++- .../material_request_item.json | 51 +++++++++++++++++++ .../material_request_item.py | 1 + 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 8be426fa1a5..575ae7cc334 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -831,10 +831,22 @@ def get_requested_item_qty(sales_order): for d in frappe.db.get_all( "Material Request Item", filters={"docstatus": 1, "sales_order": sales_order}, +<<<<<<< HEAD fields=["sales_order_item", "sum(qty) as qty", "sum(received_qty) as received_qty"], group_by="sales_order_item", +======= + fields=[ + "sales_order_item", + "packed_item", + {"SUM": "qty", "as": "qty"}, + {"SUM": "received_qty", "as": "received_qty"}, + ], + group_by="sales_order_item, packed_item", +>>>>>>> 6ade609dd6 (fix(material-request): get remaining qty on partial transaction with product bundle) ): - result[d.sales_order_item] = frappe._dict({"qty": d.qty, "received_qty": d.received_qty}) + result[d.sales_order_item or d.packed_item] = frappe._dict( + {"qty": d.qty, "received_qty": d.received_qty} + ) return result @@ -892,7 +904,8 @@ def make_material_request(source_name, target_doc=None): "Sales Order": {"doctype": "Material Request", "validation": {"docstatus": ["=", 1]}}, "Packed Item": { "doctype": "Material Request Item", - "field_map": {"parent": "sales_order", "uom": "stock_uom"}, + "field_map": {"parent": "sales_order", "uom": "stock_uom", "name": "packed_item"}, + "condition": lambda item: get_remaining_qty(item) > 0, "postprocess": update_item, }, "Sales Order Item": { diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.json b/erpnext/stock/doctype/material_request_item/material_request_item.json index c705d59beee..49d8b5b09c2 100644 --- a/erpnext/stock/doctype/material_request_item/material_request_item.json +++ b/erpnext/stock/doctype/material_request_item/material_request_item.json @@ -55,6 +55,7 @@ "lead_time_date", "sales_order", "sales_order_item", + "packed_item", "col_break4", "production_plan", "material_request_plan_item", @@ -485,6 +486,56 @@ "options": "currency", "print_hide": 1, "read_only": 1 +<<<<<<< HEAD +======= + }, + { + "fieldname": "item_reorder_section", + "fieldtype": "Section Break", + "label": "Item Reorder" + }, + { + "fieldname": "column_break_fdjh", + "fieldtype": "Column Break" + }, + { + "fieldname": "reorder_level", + "fieldtype": "Float", + "label": "Reorder Level", + "read_only": 1 + }, + { + "fieldname": "reorder_qty", + "fieldtype": "Float", + "label": "Reorder Qty", + "read_only": 1 + }, + { + "description": "If the reorder check is set at the Group warehouse level, the available quantity becomes the sum of the projected quantities of all its child warehouses.", + "fieldname": "projected_on_hand", + "fieldtype": "Float", + "label": "Projected On Hand", + "read_only": 1 + }, + { + "fieldname": "picked_qty", + "fieldtype": "Float", + "hidden": 1, + "label": "Picked Qty", + "no_copy": 1, + "non_negative": 1, + "read_only": 1 + }, + { + "fieldname": "packed_item", + "fieldtype": "Data", + "hidden": 1, + "label": "Packed Item", + "no_copy": 1, + "print_hide": 1, + "read_only": 1, + "search_index": 1 +>>>>>>> 6ade609dd6 (fix(material-request): get remaining qty on partial transaction with product bundle) } ], "idx": 1, diff --git a/erpnext/stock/doctype/material_request_item/material_request_item.py b/erpnext/stock/doctype/material_request_item/material_request_item.py index d23d041f5f4..869cc609d2b 100644 --- a/erpnext/stock/doctype/material_request_item/material_request_item.py +++ b/erpnext/stock/doctype/material_request_item/material_request_item.py @@ -37,6 +37,7 @@ class MaterialRequestItem(Document): material_request_plan_item: DF.Data | None min_order_qty: DF.Float ordered_qty: DF.Float + packed_item: DF.Data | None page_break: DF.Check parent: DF.Data parentfield: DF.Data