Appearance
Purchase Dashboard
| Backlog field | Value |
|---|---|
| Story ID | AP-PUR-001 |
| Epic | Purchase |
| Story type | Business workflow |
| 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 purchasing managers, I want to monitor purchase activity and document statuses so that pending and exceptional work is visible.
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
Authorized company/branch context is required.
Optional or conditional
Date/status ranges and widget limits are optional.
Action behavior
Widgets are read-only summaries and navigation; they do not post or approve documents.
Blocking rule or downstream effect
Counts/totals must use the same status and period definitions as lists/reports.
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 |
|---|---|---|---|---|---|
| (module default) | DashboardComponent | Dashboard | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/dashboard/dashboard.module.ts:10 |
| (module default) | LayoutPageComponent | List/navigation | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/entry.routes.ts:6 |
| (module default) | VendorCategoryListComponent | List/navigation | Permission: AppPurchasePermissions.VendorCategory_List; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:40 |
| (module default) | VendorDefinitionsListComponent | List/navigation | Permission: AppPurchasePermissions.Vendor_List; Guards: AuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:88 |
| (module default) | VendorOpeningBalanceListComponent | List/navigation | Permission: AppPurchasePermissions.VendorOpeningBalance_List,; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase-transactions/purchase-transactions.module.ts:54 |
| add | AddVendorDefinitionsComponent | Add | Permission: AppPurchasePermissions.Vendor_Add; Guards: AuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:99 |
| add | CreateVendorCategoryComponent | Add | Permission: AppPurchasePermissions.VendorCategory_Add; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:51 |
| add | VendorOpeningBalanceAddComponent | Add | Permission: AppPurchasePermissions.VendorOpeningBalance_Add,; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase-transactions/purchase-transactions.module.ts:67 |
| edit/:id | EditVendorCategoryComponent | Edit | Permission: AppPurchasePermissions.VendorCategory_Edit; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:63 |
| edit/:id | EditVendorDefinitionsComponent | Edit | Permission: AppPurchasePermissions.Vendor_Edit; Guards: AuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:111 |
| edit/:id | VendorOpeningBalanceEditComponent | Edit | Permission: AppPurchasePermissions.VendorOpeningBalance_Edit,; Guards: PolicyAuthGuard, preventPostedGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase-transactions/purchase-transactions.module.ts:81 |
| import/:errorType | ListFileComponent | Import | Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:146 |
| masterdata | Lazy-loaded route | List/navigation | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/entry.routes.ts:18 |
| purchase-invoice-report | PurchaseInvoiceReportComponent | Report/print | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/report/report.module.ts:30 |
| sequence | SequenceComponent | Sequence | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:135 |
| sequence | SequenceComponent | Sequence | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/purchase-transactions/purchase-transactions.module.ts:166 |
| transactions | Lazy-loaded route | List/navigation | No route-level permission/guard found in source window | Feature token match | apps/purchase/src/app/remote-entry/entry.routes.ts:23 |
| view/:id | VendorOpeningBalanceViewComponent | View/detail | Permission: AppPurchasePermissions.VendorOpeningBalance_View,; Guards: PolicyAuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase-transactions/purchase-transactions.module.ts:96 |
| view/:id | ViewVendorDefinitionsComponent | View/detail | Permission: AppPurchasePermissions.Vendor_View; Guards: AuthGuard | Feature token match | apps/purchase/src/app/remote-entry/purchase/purchase.module.ts:123 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| AddVendorDefinitionsComponent | birthDate | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | cityId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | commercialId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactFax | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | ContactMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactPersonEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactPersonMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | ContactPersonMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactPersonName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactPersonPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | contactWebsite | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | countryId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | creditLimit | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | currencyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | discountAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | latitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | longitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | name | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | nameAr | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | payableAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | paymentTermId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | photo | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | pricePolicyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | purchaseAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | purchaseReturnAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | radius | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | state | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | street | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | taxId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | vendorCategoryId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| AddVendorDefinitionsComponent | VendorTagIds | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/add-vendor-definitions/add-vendor-definitions.component.ts |
| CreateVendorCategoryComponent | code | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | discountAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | marketType | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | name | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | nameAr | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | payableAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | paymentTermId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | pricePolicyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | purchaseAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| CreateVendorCategoryComponent | purchaseReturnAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/create-vendor-category/create-vendor-category.component.ts |
| EditVendorCategoryComponent | code | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | discountAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | marketType | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | name | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | nameAr | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | payableAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | paymentTermId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | pricePolicyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | purchaseAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorCategoryComponent | purchaseReturnAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/edit-vendor-category/edit-vendor-category.component.ts |
| EditVendorDefinitionsComponent | birthDate | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | cityId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | commercialId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactFax | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | ContactMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactPersonEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactPersonMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | ContactPersonMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactPersonName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactPersonPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | contactWebsite | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | countryId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | creditLimit | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | currencyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | discountAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | latitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | longitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | name | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | nameAr | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | payableAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | paymentTermId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | pricePolicyId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | purchaseAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | purchaseReturnAccountId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | radius | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | state | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | street | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | taxId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | vendorCategoryId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | VendorTagIds | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| PurchaseInvoiceReportFiltersComponent | fromDate | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | hasDiscount | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | paymentTermIds | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | statuses | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | toDate | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | vendorIds | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| PurchaseInvoiceReportFiltersComponent | warehouseIds | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/report/components/purchase-invoice-report-filters/purchase-invoice-report-filters.component.ts |
| VendorOpeningBalanceAddComponent | balance | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | balanceType | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | JournalLine | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | OpeningJournal | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | vendorId | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceEditComponent | balance | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | balanceType | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | OpeningJournal | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | vendorId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| ViewVendorDefinitionsComponent | languageService.ar | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | cityName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | code | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | commercialId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactFax | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | ContactMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactPersonEmail | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactPersonMobile | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | ContactPersonMobileCode | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactPersonName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactPersonPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactPhone | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | contactWebsite | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | creditLimit | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | currencyName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | discountAccountDisplay | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | latitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | longitude | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | name | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | nameAr | Required in component validator | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | payableAccountDisplay | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | paymentTermName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | pricePolicyName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | purchaseAccountDisplay | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | purchaseReturnAccountDisplay | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | radius | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | state | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | street | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | taxId | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
| ViewVendorDefinitionsComponent | vendorCategoryName | Visible control; optional or API-dependent | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/view-vendor-definitions/view-vendor-definitions.component.ts |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| EditVendorDefinitionsComponent | cancel | Leave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| EditVendorDefinitionsComponent | editVendor | Open the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/edit-vendor-definitions/edit-vendor-definitions.component.ts |
| PurchaseInvoiceReportComponent | 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/purchase/src/app/remote-entry/report/pages/purchase-invoice-report/purchase-invoice-report.component.ts |
| PurchaseInvoiceReportComponent | 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/purchase/src/app/remote-entry/report/pages/purchase-invoice-report/purchase-invoice-report.component.ts |
| PurchaseInvoiceReportComponent | routeToStockOuttryView | 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/purchase/src/app/remote-entry/report/pages/purchase-invoice-report/purchase-invoice-report.component.ts |
| VendorCategoryListComponent | onDelete | Available only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/vendor-category-list/vendor-category-list.component.ts |
| VendorCategoryListComponent | onEdit | Open the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-category/vendor-category-list/vendor-category-list.component.ts |
| VendorDefinitionsListComponent | onDelete | Available only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/vendor-definitions-list/vendor-definitions-list.component.ts |
| VendorDefinitionsListComponent | onEdit | Open the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/vendor-definitions-list/vendor-definitions-list.component.ts |
| VendorDefinitionsListComponent | 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/purchase/src/app/remote-entry/purchase/pages/vendor-definitions/vendor-definitions-list/vendor-definitions-list.component.ts |
| VendorOpeningBalanceAddComponent | addLine | Add one initialized detail row without changing existing rows; apply defaults and line validators, preserve stable row identity, and exclude incomplete rows from Save/Post. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | 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/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | openDistribute | Document 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/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceAddComponent | removeByFront | Available only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-add/vendor-opening-balance-add.component.ts |
| VendorOpeningBalanceEditComponent | addLine | Add one initialized detail row without changing existing rows; apply defaults and line validators, preserve stable row identity, and exclude incomplete rows from Save/Post. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | onSubmit | Validate 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/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | 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/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | openDistribute | Document 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/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceEditComponent | removeByFront | Available only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-edit/vendor-opening-balance-edit.component.ts |
| VendorOpeningBalanceListComponent | navigateHelpPageComponent | Document 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/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceListComponent | onDelete | Available only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceListComponent | onEdit | Open the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceListComponent | onPost | Available only for a postable Draft and Post permission; confirm the document, prevent a second submission, call the posting API, and refresh status, journal/stock links, and row actions. Failure must keep the pre-post state. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceListComponent | onUnPost | Available only for a postable Draft and Post permission; confirm the document, prevent a second submission, call the posting API, and refresh status, journal/stock links, and row actions. Failure must keep the pre-post state. | apps/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceListComponent | 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/purchase/src/app/remote-entry/purchase/pages/vendor-opening-balance/vendor-opening-balance-list/vendor-opening-balance-list.component.ts |
| VendorOpeningBalanceViewComponent | openDistribute | Document 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/purchase/pages/vendor-opening-balance/vendor-opening-balance-view/vendor-opening-balance-view.component.ts |
Page-specific frontend acceptance criteria
- (module default) - Dashboard: Load authorized summary values consistently with source reports, support exposed date/branch filters, and handle empty/error states. Security observed: No route-level permission/guard found in source window
- (module default) - 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
- add - Add: Render permitted fields, required indicators, defaults, dependent lookups, validation, Save/Cancel, loading, success, and API-error states. Security observed: Permission: AppPurchasePermissions.VendorOpeningBalance_Add,; Guards: PolicyAuthGuard
- edit/:id - Edit: Load the identified record, enforce state/permission field locks, preserve concurrency identity, validate changes, and return without losing filters. Security observed: Permission: AppPurchasePermissions.VendorOpeningBalance_Edit,; Guards: PolicyAuthGuard, preventPostedGuard
- import/:errorType - Import: Provide template/download and upload flow, file/type/size validation, row-level preview/errors, confirmation, duplicate policy, and partial-failure rules. Security observed: Guards: PolicyAuthGuard
- masterdata - 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
- purchase-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
- sequence - Sequence: Show current numbering scope and permit only authorized, valid sequence configuration without retroactively renumbering posted documents. Security observed: No route-level permission/guard found in source window
- transactions - 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
- view/: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: Permission: AppPurchasePermissions.Vendor_View; Guards: AuthGuard