Appearance
Inventory Balance Report
| Backlog field | Value |
|---|---|
| Story ID | INV-DASH-010 |
| Epic | Inventory |
| Story type | Dashboard |
| Review status | Draft - business analyst and business owner review required |
| Source evidence | Inventory MFE route/form, Inventory.Apis controller, application command/query handlers, validators, domain entities, and posting services |
| Last source review | 2026-07-10 |
Purpose
Report current inventory quantity and value by item, variant, category, and warehouse.
User stories
- As a manager, I want to filter inventory balances by warehouse/category/item so that I can evaluate current stock.
- As an accountant, I want quantity and valuation totals so that I can reconcile inventory with the general ledger.
- As a user, I want to print or export the filtered result.
Acceptance criteria
- Filters restrict results to the user's authorized company/branch scope.
- Results identify item, variant, unit, warehouse, quantity, unit cost, and total value where applicable.
- Detail values sum to displayed report totals under the same rounding policy.
- Zero-balance inclusion follows the selected filter/policy.
- Export and print use the same effective filters and totals as the on-screen report.
- View, export, and print actions follow report permissions.
Inputs and action behavior
Warehouse IDs, item IDs, category IDs, From Date, and To Date are optional filters in the current page. Empty filters mean all authorized matching data. Date range must be chronologically valid.
- View: queries balances using the current filters and calculates displayed totals.
- Export: downloads the same authorized filter scope in the selected export format.
- Print: requests the server printout with the same filters.
- The report is read-only and creates no stock or GL effect.
Balance quantity/value must be calculated as of the selected date logic; the product owner must confirm whether From Date means movements within a period or contributes to an opening balance.
Frontend page coverage
The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.
| Route/page | Component | Mode | Route permission/guard | Mapping confidence | Source |
|---|---|---|---|---|---|
| inventory-balance-report | BalanceReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/inventory/src/app/remote-entry/reports/reports.module.ts:25 |
| reports | Lazy-loaded route | Report/print | No route-level permission/guard found in source window | Feature token match | apps/inventory/src/app/remote-entry/entry.routes.ts:34 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| BalanceReportComponent | categoryId | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | fromDate | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | itemsIds | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | toDate | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | warehouseIds | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| BalanceReportComponent | onViewInventoryBalance | Open the authorized record in view mode with its status, totals, lines, source and generated-document links; handle deleted, forbidden, and missing records without exposing stale data. | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | openDialog | Open the item/lookup/tracking dialog with the current warehouse, item, UOM, and remaining quantity context; accepted values must return to the correct line and cancel must not mutate it. | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
| BalanceReportComponent | printTable | Generate the printout for the selected record and authorized branch/tenant; use posted/current values and surface print, template, ZATCA/ETA, or popup failures without changing transaction state. | apps/inventory/src/app/remote-entry/reports/pages/balance-report/balance-report.component.ts |
Page-specific frontend acceptance criteria
- inventory-balance-report - Report/print: Expose documented filters, validation, empty/loading/error states, authorized results, totals, drill-through, print, and export behavior where present. Security observed: No route-level permission/guard found in source window
- reports - Report/print: Expose documented filters, validation, empty/loading/error states, authorized results, totals, drill-through, print, and export behavior where present. Security observed: No route-level permission/guard found in source window