From 0d9ace7ab87d5198aa8dfc3874b6f82920dc88ae Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Mon, 13 Jul 2026 13:33:37 +0530 Subject: [PATCH] fix(stock): show qty (company) and qty (warehouse) in sales transactions company was passed to get_bin_details only for purchase order, so company_total_stock was never returned for sales order, quotation, sales invoice and delivery note and the qty (company) column always read zero. pass ctx.company for every doctype, which also drops the dependency on doc being supplied. on the client, set_actual_qty copied only actual_qty out of the response, so qty (company) never refreshed on a warehouse change. use frm.call with child so every bin field is applied, pass include_child_warehouses to match the server, and include quotation. (cherry picked from commit ab30bab6cbdc0981ece3f0ecbc7cf87329b9a416) --- erpnext/public/js/utils/sales_common.js | 12 +++++------- erpnext/stock/get_item_details.py | 7 +++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/erpnext/public/js/utils/sales_common.js b/erpnext/public/js/utils/sales_common.js index d1d5d77f285..72a8d25af3b 100644 --- a/erpnext/public/js/utils/sales_common.js +++ b/erpnext/public/js/utils/sales_common.js @@ -284,19 +284,17 @@ erpnext.sales_common = { set_actual_qty(doc, cdt, cdn) { let row = locals[cdt][cdn]; - let sales_doctypes = ["Sales Invoice", "Delivery Note", "Sales Order"]; + let sales_doctypes = ["Sales Invoice", "Delivery Note", "Sales Order", "Quotation"]; if (row.item_code && row.warehouse && sales_doctypes.includes(doc.doctype)) { - frappe.call({ + return this.frm.call({ method: "erpnext.stock.get_item_details.get_bin_details", + child: row, args: { item_code: row.item_code, warehouse: row.warehouse, - }, - callback(r) { - if (r.message) { - frappe.model.set_value(cdt, cdn, "actual_qty", r.message.actual_qty); - } + company: doc.company, + include_child_warehouses: true, }, }); } diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 05c61bbb4d5..7cbe369c720 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -307,10 +307,9 @@ def update_bin_details(ctx: ItemDetailsCtx, out: ItemDetails, doc): out.update(get_bin_details(ctx.item_code, ctx.from_warehouse)) elif out.get("warehouse"): - company = ctx.company if (doc and doc.get("doctype") == "Purchase Order") else None - - # calculate company_total_stock only for po - bin_details = get_bin_details(ctx.item_code, out.warehouse, company, include_child_warehouses=True) + bin_details = get_bin_details( + ctx.item_code, out.warehouse, ctx.company, include_child_warehouses=True + ) out.update(bin_details)