From 90009a4687f1d71fa9848c5bf841d1f2ad22c07a Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 20 Jul 2026 20:05:37 +0530 Subject: [PATCH] feat(stock): expose all Bin qty fields in Stock Summary and Stock Projected Qty Stock Summary's sort selector only offered 5 of Bin's 10 qty fields; add the rest (ordered, requested, planned, reserved for production plan, reserved stock) and extend get_data's or_filters so bins whose only nonzero qty is one of the new fields show up when sorted by it. Sort labels now mirror Bin field labels. Stock Projected Qty report had a column for every Bin qty field except reserved_stock; add it. (cherry picked from commit 59c0c15c2ed9a82369358856cca212d8ceb4b01f) --- erpnext/stock/dashboard/item_dashboard.py | 5 +++++ .../stock/page/stock_balance/stock_balance.js | 18 +++++++++++++----- .../stock_projected_qty/stock_projected_qty.py | 9 +++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/erpnext/stock/dashboard/item_dashboard.py b/erpnext/stock/dashboard/item_dashboard.py index e5635bb4093..ac83e207d07 100644 --- a/erpnext/stock/dashboard/item_dashboard.py +++ b/erpnext/stock/dashboard/item_dashboard.py @@ -53,6 +53,11 @@ def get_data( "reserved_qty": ["!=", 0], "reserved_qty_for_production": ["!=", 0], "reserved_qty_for_sub_contract": ["!=", 0], + "reserved_qty_for_production_plan": ["!=", 0], + "reserved_stock": ["!=", 0], + "ordered_qty": ["!=", 0], + "indented_qty": ["!=", 0], + "planned_qty": ["!=", 0], "actual_qty": ["!=", 0], }, filters=filters, diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js index a5fba9f98f3..531e335dfdb 100644 --- a/erpnext/stock/page/stock_balance/stock_balance.js +++ b/erpnext/stock/page/stock_balance/stock_balance.js @@ -48,11 +48,19 @@ frappe.pages["stock-balance"].on_page_load = function (wrapper) { sort_by: "projected_qty", sort_order: "asc", options: [ - { fieldname: "projected_qty", label: __("Projected qty") }, - { fieldname: "reserved_qty", label: __("Reserved for sale") }, - { fieldname: "reserved_qty_for_production", label: __("Reserved for manufacturing") }, - { fieldname: "reserved_qty_for_sub_contract", label: __("Reserved for sub contracting") }, - { fieldname: "actual_qty", label: __("Actual qty in stock") }, + { fieldname: "projected_qty", label: __("Projected Qty") }, + { fieldname: "reserved_qty", label: __("Reserved Qty") }, + { fieldname: "reserved_qty_for_production", label: __("Reserved Qty for Production") }, + { fieldname: "reserved_qty_for_sub_contract", label: __("Reserved Qty for Subcontract") }, + { + fieldname: "reserved_qty_for_production_plan", + label: __("Reserved Qty for Production Plan"), + }, + { fieldname: "reserved_stock", label: __("Reserved Stock") }, + { fieldname: "ordered_qty", label: __("Ordered Qty") }, + { fieldname: "indented_qty", label: __("Requested Qty") }, + { fieldname: "planned_qty", label: __("Planned Qty") }, + { fieldname: "actual_qty", label: __("Actual Qty") }, ], }, change: function (sort_by, sort_order) { diff --git a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py index 3193ba3de51..3bb557d42c2 100644 --- a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +++ b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py @@ -84,6 +84,7 @@ def execute(filters=None): bin.reserved_qty_for_production_plan, bin.reserved_qty_for_sub_contract, reserved_qty_for_pos, + bin.reserved_stock, bin.projected_qty, re_order_level, re_order_qty, @@ -200,6 +201,13 @@ def get_columns(): "width": 100, "convertible": "qty", }, + { + "label": _("Reserved Stock"), + "fieldname": "reserved_stock", + "fieldtype": "Float", + "width": 100, + "convertible": "qty", + }, { "label": _("Projected Qty"), "fieldname": "projected_qty", @@ -246,6 +254,7 @@ def get_bin_list(filters): bin.reserved_qty_for_production, bin.reserved_qty_for_sub_contract, bin.reserved_qty_for_production_plan, + bin.reserved_stock, bin.projected_qty, ) .orderby(bin.item_code, bin.warehouse)