Appearance
Customer Reports
| Backlog field | Value |
|---|---|
| Story ID | AP-SAL-002 |
| Epic | Sales |
| Story type | Report |
| Review status | Draft - business analyst and business owner review required |
| Source evidence | AppsPortal.Apis controller, application command/query handlers, validators, domain entities, and matching MFE workflow where available |
| Last source review | 2026-07-10 |
User story
As credit and sales managers, I want to review balances, statements, aging, follow-up, and profitability so that customer exposure and value can be analyzed.
Acceptance criteria
- Only authorized users can view or execute the feature's actions.
- Required business data, active dependencies, tenant/branch scope, and current document state are validated.
- Invalid requests return actionable validation errors without applying a partial change.
- Search, list, view, print, and export operations use the same authorized business scope.
- Material create, edit, status, approval, posting, reversal, and integration actions are auditable where applicable.
- Financial or stock effects are applied atomically and no more than once.
Business rules
Required
Date/as-of period and authorized customer scope are required as applicable.
Optional or conditional
Customer/category, currency, aging buckets, salesperson, status, and branch are optional filters.
Action behavior
Balance/statement/aging/follow-up/profitability reports are read-only.
Blocking rule or downstream effect
Opening plus posted invoices minus returns/payments/reconciliations must equal closing 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 |
|---|---|---|---|---|---|
| customer-aging-detail-report | CustomerAgingDetailsReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:44 |
| customer-aging-report | CustomerAgingReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:37 |
| customer-aging-report-print | CustomerAgingReportPrintComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:52 |
| customer-balance-report | CustomerBalanceReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:29 |
| customer-invoices-follow-up-report | CustomerInvoiceFollowUpReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:68 |
| customer-profitability-report | CustomerProfitabilityReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:101 |
| customer-statement-report | CustomerReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:21 |
| item-profitability-report | ItemProfitabilityReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:109 |
| reports | Lazy-loaded route | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/entry.routes.ts:18 |
| sales-invoice-report | SalesInvoiceReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:60 |
| salesman-target&commissiondetail-report | SalesCommissionReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:85 |
| salesman-target&commissiondetail-report/:id | SalesCommissionReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/sales/src/app/remote-entry/reports/reports.module.ts:93 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| CustomerAgingDetailsReportComponent | Buckets | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | CustomerId | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | salesManIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | ToDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingReportComponent | CustomerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerAgingReportComponent | salesManIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerAgingReportComponent | ShowZeroValues | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerAgingReportComponent | ToDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerBalanceReportComponent | CustomerIds | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | FromDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | SalesManId | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | ToDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | CustomerCategoryIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | CustomerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | FromDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | ToDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerProfitabilityReportComponent | customerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | fromDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | invoiceIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | salesManIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | toDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerReportComponent | CustomerId | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| CustomerReportComponent | fromDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| CustomerReportComponent | toDate | Required in component validator | apps/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| ItemProfitabilityReportComponent | categoryIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | customerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | fromDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | invoiceHeaderIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | itemIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | salesManIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | toDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | warehouseIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| SalesCommissionReportComponent | customerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | fromDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | salesManIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | toDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesInvoiceReportFiltersComponent | customerIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | fromDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | paymentTermIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | salesmanIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | statuses | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | toDate | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
| SalesInvoiceReportFiltersComponent | warehouseIds | Visible control; optional or API-dependent | apps/sales/src/app/remote-entry/reports/components/sales-invoice-report-filters/sales-invoice-report-filters.component.ts |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| CustomerAgingDetailsReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | onRouteToTransaction | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | routeToCustomerDef | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingDetailsReportComponent | viewData | 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/sales/src/app/remote-entry/reports/pages/customer-aging-details-report/customer-aging-details-report.component.ts |
| CustomerAgingReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerAgingReportComponent | onView | 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/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerAgingReportComponent | viewData | 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/sales/src/app/remote-entry/reports/pages/customer-aging-report/customer-aging-report.component.ts |
| CustomerBalanceReportComponent | onRouteToCustomer | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | 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/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | viewData | 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/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerBalanceReportComponent | viewStatement | 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/sales/src/app/remote-entry/reports/pages/customer-balance-report/customer-balance-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | printOut | 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/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | routeToCustomerDef | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | routeToInvoice | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | routeToJournalEntryView | 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/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | routeToSalesOrder | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | routeToStockOut | Navigate only when the transaction produced a linked Stock In/Stock Out record and Inventory view permission is available; service-only/no-stock cases expose no stock link. | apps/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerInvoiceFollowUpReportComponent | viewData | 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/sales/src/app/remote-entry/reports/pages/customer-invoice-follow-up-report/customer-invoice-follow-up-report.component.ts |
| CustomerProfitabilityReportComponent | onInvoiceClick | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | onViewData | 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/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerProfitabilityReportComponent | resetFilters | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-profitability-report/customer-profitability-report.component.ts |
| CustomerReportComponent | onRouteToJournalEntry | Navigate only when a linked journal ID exists and the user can view Accounting; otherwise the action is absent/disabled and no transaction data changes. | apps/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| CustomerReportComponent | onRouteToTransaction | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| CustomerReportComponent | onViewData | 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/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| CustomerReportComponent | 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/sales/src/app/remote-entry/reports/pages/customer-report/customer-report.component.ts |
| ItemProfitabilityReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | onViewReport | 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/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | openItemsDialog | 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/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | resetFilters | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | routeToCustomer | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | routeToInvoice | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| ItemProfitabilityReportComponent | routeToWarehouse | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/item-profitability-report/item-profitability-report.component.ts |
| SalesCommissionReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | onRouteToInvoice | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | onRouteToReturnInvoice | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesCommissionReportComponent | viewData | 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/sales/src/app/remote-entry/reports/pages/sales-commission-report/sales-commission-report.component.ts |
| SalesInvoiceReportComponent | onPrint | 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/sales/src/app/remote-entry/reports/pages/sales-invoice-report/sales-invoice-report.component.ts |
| SalesInvoiceReportComponent | onRouteToJournalEntry | Navigate only when a linked journal ID exists and the user can view Accounting; otherwise the action is absent/disabled and no transaction data changes. | apps/sales/src/app/remote-entry/reports/pages/sales-invoice-report/sales-invoice-report.component.ts |
| SalesInvoiceReportComponent | onRouteToSalesInvoice | Document the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler. | apps/sales/src/app/remote-entry/reports/pages/sales-invoice-report/sales-invoice-report.component.ts |
| SalesInvoiceReportComponent | onRouteToStockOut | Navigate only when the transaction produced a linked Stock In/Stock Out record and Inventory view permission is available; service-only/no-stock cases expose no stock link. | apps/sales/src/app/remote-entry/reports/pages/sales-invoice-report/sales-invoice-report.component.ts |
| SalesInvoiceReportComponent | onViewData | 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/sales/src/app/remote-entry/reports/pages/sales-invoice-report/sales-invoice-report.component.ts |
Page-specific frontend acceptance criteria
- customer-aging-detail-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
- customer-aging-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
- customer-aging-report-print - 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
- customer-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
- customer-invoices-follow-up-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
- customer-profitability-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
- customer-statement-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-profitability-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
- sales-invoice-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
- salesman-target&commissiondetail-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
- salesman-target&commissiondetail-report/:id - 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