Skip to content

Van Sales Reports

Backlog fieldValue
Story IDAP-VAN-005
EpicVan Sales
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 distribution managers, I want to review distribution sales and salesperson results so that field sales performance and transactions can be reconciled.

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/period and authorized field-sales scope are required.

Optional or conditional

Salesperson, customer, device, route, invoice, status, and branch filters are optional.

Action behavior

View/Print/Export are read-only and use posted/synchronized records according to report rules.

Blocking rule or downstream effect

Offline duplicates/cancelled documents must not inflate totals.

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/distribution/src/app/remote-entry/entry.routes.ts:34
sales-reportDistributionSalesReportComponentReport/printNo route-level permission/guard found in source windowFeature token matchapps/distribution/src/app/remote-entry/reports/reports-routing.module.ts:9

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
DistributionInvoiceReportFiltersComponentcustomerIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentdeviceIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentfromDateVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentpaymentTermIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentsalesmanIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentstatusesVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponenttoDateVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentvisitIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts
DistributionInvoiceReportFiltersComponentwarehouseIdsVisible control; optional or API-dependentapps/distribution/src/app/remote-entry/reports/distribution-sales-report/components/distribution-invoice-report-filters/distribution-invoice-report-filters.component.ts

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
DistributionSalesReportComponentonRouteToJournalEntryNavigate 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/distribution/src/app/remote-entry/reports/distribution-sales-report/distribution-sales-report.component.ts
DistributionSalesReportComponentonRouteToStockOutNavigate 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/distribution/src/app/remote-entry/reports/distribution-sales-report/distribution-sales-report.component.ts
DistributionSalesReportComponentonViewDataOpen 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/distribution/src/app/remote-entry/reports/distribution-sales-report/distribution-sales-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. sales-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

Internal Documentation — Microtec