Skip to content

Finance Statements and Reports

Backlog fieldValue
Story IDAP-FIN-002
EpicFinance
Story typeReport
Review statusDraft - business analyst and business owner review required
Source evidenceAppsPortal.Apis controller, application command/query handlers, validators, domain entities, and matching MFE workflow where available
Last source review2026-07-10

User story

As finance managers, I want to review cash receipts, cash payments, treasury statements, bank statements, and reconciliation reports so that cash position and movements are auditable.

Acceptance criteria

  1. Only authorized users can view or execute the feature's actions.
  2. Required business data, active dependencies, tenant/branch scope, and current document state are validated.
  3. Invalid requests return actionable validation errors without applying a partial change.
  4. Search, list, view, print, and export operations use the same authorized business scope.
  5. Material create, edit, status, approval, posting, reversal, and integration actions are auditable where applicable.
  6. Financial or stock effects are applied atomically and no more than once.

Business rules

Required

Authorized date/period and statement target (treasury, bank, receipt, payment, or reconciliation) are required as applicable.

Optional or conditional

Status, party, method, currency, account, and branch are optional filters.

Action behavior

View/Print/Export are read-only and must match posted subledger/journal records.

Blocking rule or downstream effect

Opening, movement, and closing balances must reconcile for identical filters.

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/pageComponentModeRoute permission/guardMapping confidenceSource
bank-account-statementBankAccountStatementComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:15
bank-account-statement/:id/:accountNumberBankAccountStatementComponentView/detailNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:31
cash-payment-reportCashPaymentComponentReport/printNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:47
cash-receiptsPaymentInCashRecieptComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:63
reconcilationInvoiceReconcilationHistoryComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:23
reportsLazy-loaded routeReport/printNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/entry.routes.ts:32
treasury-statementTreasuryStatementComponentList/navigationNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:39
treasury-statement/:idTreasuryStatementComponentView/detailNo route-level permission/guard found in source windowFeature token matchapps/finance/src/app/remote-entry/reports/reports.module.ts:55

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
BankAccountStatementComponentbankAccountIdRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentbankIdRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentdateFromRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentdateToRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
CashPaymentComponentBankAccountIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentBankPaymentHubDetailsIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentCustomerIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentFromDateRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentGlAccountIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentToDateRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentTreasuryPaymentHubDetailsIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentVendorIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
InvoiceReconcilationHistoryComponentcustomerIdVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
InvoiceReconcilationHistoryComponentinvoiceIdVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
PaymentInCashRecieptComponentbankAccountsConditionally required/validated in componentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentcustomerIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentfromDateRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentGLAccountIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentpaymentHubBankDetailsIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentpaymentHubTreasuryDetailsIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentsalesManIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponenttoDateRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentvendorIdsVisible control; optional or API-dependentapps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
TreasuryStatementComponentdateFromRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts
TreasuryStatementComponentdateToRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts
TreasuryStatementComponenttreasuryIdRequired in component validatorapps/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
BankAccountStatementComponentgetAccountingReportsDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentprintTableGenerate 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/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentrouteToJournalViewOpen 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/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
BankAccountStatementComponentrouteToPaymentViewOpen 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/finance/src/app/remote-entry/reports/pages/bank-account-statement/bank-account-statement.component.ts
CashPaymentComponentprintGenerate 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/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentredirectInCodeByIdDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
CashPaymentComponentsubmitValidate the concrete form and line collection, prevent duplicate submission, persist once, show API field/business errors in context, and navigate/refresh only after success.apps/finance/src/app/remote-entry/reports/pages/cash-payment/cash-payment.component.ts
InvoiceReconcilationHistoryComponentopenCustomerDialogOpen 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/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
InvoiceReconcilationHistoryComponentopenInvoiceDialogOpen 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/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
InvoiceReconcilationHistoryComponentprintTableGenerate 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/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
InvoiceReconcilationHistoryComponentviewDataOpen 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/finance/src/app/remote-entry/reports/pages/invoice-reconcilation-history/invoice-reconcilation-history.component.ts
PaymentInCashRecieptComponentfilterDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentonRedirectToPaymentInIdDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
PaymentInCashRecieptComponentprintoutGenerate 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/finance/src/app/remote-entry/reports/pages/payment-in-cash-reciept/payment-in-cash-reciept.component.ts
TreasuryStatementComponentgetReportDataDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts
TreasuryStatementComponentprintTableGenerate 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/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts
TreasuryStatementComponentrouteToJournalViewOpen 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/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts
TreasuryStatementComponentrouteToPaymentViewOpen 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/finance/src/app/remote-entry/reports/pages/treasury-statement/treasury-statement.component.ts

Page-specific frontend acceptance criteria

  1. bank-account-statement - 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: No route-level permission/guard found in source window
  2. bank-account-statement/:id/:accountNumber - View/detail: Load an authorized immutable/detail representation with status-aware actions, linked records, print/export where exposed, and not-found/forbidden handling. Security observed: No route-level permission/guard found in source window
  3. cash-payment-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
  4. cash-receipts - 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: No route-level permission/guard found in source window
  5. reconcilation - 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: No route-level permission/guard found in source window
  6. 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
  7. treasury-statement - 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: No route-level permission/guard found in source window
  8. treasury-statement/:id - View/detail: Load an authorized immutable/detail representation with status-aware actions, linked records, print/export where exposed, and not-found/forbidden handling. Security observed: No route-level permission/guard found in source window

Internal Documentation — Microtec