Appearance
Item Card Report
| Backlog field | Value |
|---|---|
| Story ID | INV-DASH-011 |
| 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
Show the chronological movement and running balance of one item variant across selected warehouses.
User stories
- As an inventory controller, I want to select an item variant and one or more warehouses so that I can trace every movement.
- As an auditor, I want opening, inbound, outbound, and running quantities/costs tied to source documents.
- As a user, I want to print the displayed item card for review or filing.
Acceptance criteria
- An item variant and at least one warehouse are required.
- Results are grouped by warehouse and ordered chronologically with deterministic tie-breaking.
- Every row identifies its source transaction and movement direction.
- Running balances reconcile with the opening balance and displayed movements.
- Changing item or warehouse selection refreshes the report without mixing cached results.
- Print output reflects the selected item, warehouses, scope, and localization.
- View and print actions follow report permissions.
Inputs and action behavior
- Required: one item/variant and at least one warehouse.
- Read-only derived fields: selected item detail and item UOM.
- Optional: From Date and To Date; when both are used, From cannot be later than To.
- View loads one table per selected warehouse and caches each warehouse result only for the current filter context.
- Changing item/warehouse/date clears incompatible cached results.
- Print sends the selected item-variant ID, warehouse IDs, and date filters to the server-generated printout.
- There is no posting or data mutation from this report.
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 |
|---|---|---|---|---|---|
| edit/add-item-definition | ItemCatalogTabsComponent | Add | Permission: AppInventoryPermissions.Items_Add; Guards: PolicyAuthGuard | Feature token match | apps/inventory/src/app/remote-entry/items/items.module.ts:92 |
| item-card-report | ItemCardComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/inventory/src/app/remote-entry/reports/reports.module.ts:17 |
| item-definition | MainItemDefinitionComponent | List/navigation | Permission: AppInventoryPermissions.Items_List; Guards: PolicyAuthGuard | Feature token match | apps/inventory/src/app/remote-entry/items/items.module.ts:72 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| ItemCardComponent | fromDate | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | itemDetail | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | itemId | Required in component validator | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | itemUom | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | toDate | Visible control; optional or API-dependent | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | warehouseId | Required in component validator | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| ItemCardComponent | onRouteToTransaction | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/inventory/src/app/remote-entry/reports/pages/item-card/item-card.component.ts |
| ItemCardComponent | 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/item-card/item-card.component.ts |
| ItemCardComponent | 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/item-card/item-card.component.ts |
| ItemCardComponent | viewItemTransaction | 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/item-card/item-card.component.ts |
| ItemCatalogTabsComponent | onRoute | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/inventory/src/app/remote-entry/items/pages/item-definition/item-catalog-tabs/item-catalog-tabs.component.ts |
Page-specific frontend acceptance criteria
- edit/add-item-definition - Add: Render permitted fields, required indicators, defaults, dependent lookups, validation, Save/Cancel, loading, success, and API-error states. Security observed: Permission: AppInventoryPermissions.Items_Add; Guards: PolicyAuthGuard
- item-card-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
- item-definition - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Permission: AppInventoryPermissions.Items_List; Guards: PolicyAuthGuard