Appearance
Taxes and Tax Groups
| Backlog field | Value |
|---|---|
| Story ID | AP-GS-011 |
| Epic | General Settings |
| 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 tax administrators, I want to maintain taxes, groups, rates, and official codes so that transactions calculate and report tax correctly.
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
Tax/group code/name, rate/effect/type, official code, effective state, and GL/group account are required for enabled tax.
Optional or conditional
Date range, exemptions, subtypes, and country metadata are conditional.
Action behavior
Save changes future tax calculation; documents retain posted tax snapshots.
Blocking rule or downstream effect
Posting fails when selected tax has neither a valid tax account nor permitted group account.
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 |
|---|---|---|---|---|---|
| egyptian-tax-authority-integration | EtaMainComponent | List/navigation | Permission: AppGeneralSettingsPermissions.SignatureServiceSetting_View,; Guards: PolicyAuthGuard | Feature token match | apps/erpHome/src/app/remote-entry/admin/admin-routing.module.ts:187 |
| tax-definition | TaxDefinitionComponent | List/navigation | Permission: AppGeneralSettingsPermissions.TaxDefinition_List; Guards: PolicyAuthGuard | Feature token match | apps/erpHome/src/app/remote-entry/general-setting/general-setting.module.ts:153 |
| tax-group | TaxGroupComponent | List/navigation | Permission: AppGeneralSettingsPermissions.TaxGroup_List; Guards: PolicyAuthGuard | Feature token match | apps/erpHome/src/app/remote-entry/general-setting/general-setting.module.ts:143 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| - | - | No reactive formControlName controls were found for the routed components; review template-driven/shared child components. | Route sources above |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| TaxDefinitionComponent | 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/erpHome/src/app/remote-entry/general-setting/pages/taxs/tax-definition/tax-definition.component.ts |
| TaxGroupComponent | 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/erpHome/src/app/remote-entry/general-setting/pages/taxs/tax-group/tax-group.component.ts |
Page-specific frontend acceptance criteria
- egyptian-tax-authority-integration - 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: AppGeneralSettingsPermissions.SignatureServiceSetting_View,; Guards: PolicyAuthGuard
- tax-definition - 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: AppGeneralSettingsPermissions.TaxDefinition_List; Guards: PolicyAuthGuard
- tax-group - 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: AppGeneralSettingsPermissions.TaxGroup_List; Guards: PolicyAuthGuard