Skip to content

Vendor and Purchase Reports

Backlog fieldValue
Story IDAP-PUR-007
EpicPurchase
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 purchasing managers, I want to review vendor balances, statements, and purchase invoice activity so that supplier exposure and purchasing history can be analyzed.

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

Date/as-of period and report-specific vendor scope are required as applicable.

Optional or conditional

Vendor/category, document/status, currency, aging bucket, and branch are optional filters.

Action behavior

Reports are read-only; statements/balances use posted invoices, returns, payments, openings, and reconciliations.

Blocking rule or downstream effect

Opening plus movements must equal closing balance under 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
reportsLazy-loaded routeReport/printNo route-level permission/guard found in source windowFeature token matchapps/purchase/src/app/remote-entry/entry.routes.ts:30
vendor-balance-reportVendorBalanceReportComponentReport/printNo route-level permission/guard found in source windowFeature token matchapps/purchase/src/app/remote-entry/report/report.module.ts:22
vendor-categoryMainVendorCategoryComponentList/navigationPermission: AppPurchasePermissions.VendorCategory_List; Guards: AuthGuardFeature token matchapps/purchase/src/app/remote-entry/purchase/purchase.module.ts:29
vendor-definitionsMainVendorDefintionsComponentList/navigationPermission: AppPurchasePermissions.Vendor_List; Guards: AuthGuardFeature token matchapps/purchase/src/app/remote-entry/purchase/purchase.module.ts:77
vendor-reportsVendorReportComponentReport/printNo route-level permission/guard found in source windowFeature token matchapps/purchase/src/app/remote-entry/report/report.module.ts:14

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
VendorBalanceReportComponentFromDateRequired in component validatorapps/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorBalanceReportComponentToDateRequired in component validatorapps/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorBalanceReportComponentVendorIdsRequired in component validatorapps/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorReportComponentfromDateRequired in component validatorapps/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts
VendorReportComponenttoDateRequired in component validatorapps/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts
VendorReportComponentvendorIdRequired in component validatorapps/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
VendorBalanceReportComponentonRouteToVendorDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorBalanceReportComponentprintTableGenerate 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/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorBalanceReportComponentviewDataOpen 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/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorBalanceReportComponentviewStatementOpen 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/purchase/src/app/remote-entry/report/pages/vendor-balance-report/vendor-balance-report.component.ts
VendorReportComponentonRouteToJournalEntryNavigate 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/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts
VendorReportComponentonRouteToTransactionDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts
VendorReportComponentprintTableGenerate 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/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts
VendorReportComponentviewDataOpen 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/purchase/src/app/remote-entry/report/components/vendor-report/vendor-report.component.ts

Page-specific frontend acceptance criteria

  1. 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
  2. vendor-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
  3. vendor-category - 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: AppPurchasePermissions.VendorCategory_List; Guards: AuthGuard
  4. vendor-definitions - 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: AppPurchasePermissions.Vendor_List; Guards: AuthGuard
  5. vendor-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

Internal Documentation — Microtec