@tailor-platform/erp-kit 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +8 -4
- package/dist/cli.mjs +70 -70
- package/package.json +1 -1
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +5 -5
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -1
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +37 -12
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +3 -1
- package/skills/erp-kit-app-6-impl-frontend/references/component.md +90 -0
- package/skills/erp-kit-app-6-impl-frontend/references/detail-view.md +255 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +1 -5
- package/skills/erp-kit-app-7-impl-review/SKILL.md +3 -2
- package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +14 -8
- package/skills/erp-kit-module-6-impl-review/SKILL.md +16 -19
- package/skills/erp-kit-module-shared/references/commands.md +68 -1
- package/src/commands/index.ts +8 -2
- package/src/commands/init.test.ts +24 -8
- package/src/commands/init.ts +5 -12
- package/src/commands/lib/distribute.test.ts +1 -20
- package/src/commands/lib/distribute.ts +0 -14
- package/src/commands/update.test.ts +1 -1
- package/src/generator/scaffold.ts +25 -4
- package/src/module.ts +4 -1
- package/src/modules/accounting/README.md +63 -0
- package/src/modules/accounting/command/activateBudget.generated.ts +6 -0
- package/src/modules/accounting/command/activateBudget.test.ts +119 -0
- package/src/modules/accounting/command/activateBudget.ts +77 -0
- package/src/modules/accounting/command/activateCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/activateCostElement.test.ts +59 -0
- package/src/modules/accounting/command/activateCostElement.ts +41 -0
- package/src/modules/accounting/command/activateProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/activateProfitCenter.test.ts +60 -0
- package/src/modules/accounting/command/activateProfitCenter.ts +38 -0
- package/src/modules/accounting/command/approveBudget.generated.ts +6 -0
- package/src/modules/accounting/command/approveBudget.test.ts +69 -0
- package/src/modules/accounting/command/approveBudget.ts +47 -0
- package/src/modules/accounting/command/assignCostCenterToHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/assignCostCenterToHierarchyNode.test.ts +112 -0
- package/src/modules/accounting/command/assignCostCenterToHierarchyNode.ts +67 -0
- package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.test.ts +123 -0
- package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.ts +71 -0
- package/src/modules/accounting/command/closeBudget.generated.ts +6 -0
- package/src/modules/accounting/command/closeBudget.test.ts +93 -0
- package/src/modules/accounting/command/closeBudget.ts +40 -0
- package/src/modules/accounting/command/closeInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/closeInternalOrder.test.ts +74 -0
- package/src/modules/accounting/command/closeInternalOrder.ts +38 -0
- package/src/modules/accounting/command/consumeCommitment.generated.ts +6 -0
- package/src/modules/accounting/command/consumeCommitment.test.ts +123 -0
- package/src/modules/accounting/command/consumeCommitment.ts +62 -0
- package/src/modules/accounting/command/createAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/createAllocationCycle.test.ts +166 -0
- package/src/modules/accounting/command/createAllocationCycle.ts +68 -0
- package/src/modules/accounting/command/createAllocationRule.generated.ts +6 -0
- package/src/modules/accounting/command/createAllocationRule.test.ts +195 -0
- package/src/modules/accounting/command/createAllocationRule.ts +103 -0
- package/src/modules/accounting/command/createBudget.generated.ts +6 -0
- package/src/modules/accounting/command/createBudget.test.ts +159 -0
- package/src/modules/accounting/command/createBudget.ts +100 -0
- package/src/modules/accounting/command/createBudgetLineItem.generated.ts +6 -0
- package/src/modules/accounting/command/createBudgetLineItem.test.ts +178 -0
- package/src/modules/accounting/command/createBudgetLineItem.ts +104 -0
- package/src/modules/accounting/command/createCostCenter.generated.ts +6 -0
- package/src/modules/accounting/command/createCostCenter.test.ts +179 -0
- package/src/modules/accounting/command/createCostCenter.ts +112 -0
- package/src/modules/accounting/command/createCostCenterHierarchy.generated.ts +6 -0
- package/src/modules/accounting/command/createCostCenterHierarchy.test.ts +91 -0
- package/src/modules/accounting/command/createCostCenterHierarchy.ts +48 -0
- package/src/modules/accounting/command/createCostCenterHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/createCostCenterHierarchyNode.test.ts +171 -0
- package/src/modules/accounting/command/createCostCenterHierarchyNode.ts +117 -0
- package/src/modules/accounting/command/createCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/createCostElement.test.ts +317 -0
- package/src/modules/accounting/command/createCostElement.ts +149 -0
- package/src/modules/accounting/command/createInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/createInternalOrder.test.ts +206 -0
- package/src/modules/accounting/command/createInternalOrder.ts +104 -0
- package/src/modules/accounting/command/createPlanVersion.generated.ts +6 -0
- package/src/modules/accounting/command/createPlanVersion.test.ts +230 -0
- package/src/modules/accounting/command/createPlanVersion.ts +71 -0
- package/src/modules/accounting/command/createProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/createProfitCenter.test.ts +227 -0
- package/src/modules/accounting/command/createProfitCenter.ts +81 -0
- package/src/modules/accounting/command/createProfitCenterHierarchy.generated.ts +6 -0
- package/src/modules/accounting/command/createProfitCenterHierarchy.test.ts +91 -0
- package/src/modules/accounting/command/createProfitCenterHierarchy.ts +46 -0
- package/src/modules/accounting/command/createProfitCenterHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/createProfitCenterHierarchyNode.test.ts +160 -0
- package/src/modules/accounting/command/createProfitCenterHierarchyNode.ts +109 -0
- package/src/modules/accounting/command/deactivateCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/deactivateCostElement.test.ts +59 -0
- package/src/modules/accounting/command/deactivateCostElement.ts +41 -0
- package/src/modules/accounting/command/deactivateProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/deactivateProfitCenter.test.ts +60 -0
- package/src/modules/accounting/command/deactivateProfitCenter.ts +42 -0
- package/src/modules/accounting/command/deleteAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/deleteAllocationCycle.test.ts +90 -0
- package/src/modules/accounting/command/deleteAllocationCycle.ts +39 -0
- package/src/modules/accounting/command/deleteAllocationRule.generated.ts +6 -0
- package/src/modules/accounting/command/deleteAllocationRule.test.ts +98 -0
- package/src/modules/accounting/command/deleteAllocationRule.ts +40 -0
- package/src/modules/accounting/command/deleteBudget.generated.ts +6 -0
- package/src/modules/accounting/command/deleteBudget.test.ts +90 -0
- package/src/modules/accounting/command/deleteBudget.ts +35 -0
- package/src/modules/accounting/command/deleteBudgetLineItem.generated.ts +6 -0
- package/src/modules/accounting/command/deleteBudgetLineItem.test.ts +85 -0
- package/src/modules/accounting/command/deleteBudgetLineItem.ts +50 -0
- package/src/modules/accounting/command/deleteCostCenter.generated.ts +6 -0
- package/src/modules/accounting/command/deleteCostCenter.test.ts +79 -0
- package/src/modules/accounting/command/deleteCostCenter.ts +67 -0
- package/src/modules/accounting/command/deleteCostCenterHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/deleteCostCenterHierarchyNode.test.ts +59 -0
- package/src/modules/accounting/command/deleteCostCenterHierarchyNode.ts +58 -0
- package/src/modules/accounting/command/deleteCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/deleteCostElement.test.ts +58 -0
- package/src/modules/accounting/command/deleteCostElement.ts +33 -0
- package/src/modules/accounting/command/deleteInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/deleteInternalOrder.test.ts +81 -0
- package/src/modules/accounting/command/deleteInternalOrder.ts +37 -0
- package/src/modules/accounting/command/deleteProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/deleteProfitCenter.test.ts +68 -0
- package/src/modules/accounting/command/deleteProfitCenter.ts +39 -0
- package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.test.ts +72 -0
- package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.ts +61 -0
- package/src/modules/accounting/command/executeAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/executeAllocationCycle.test.ts +167 -0
- package/src/modules/accounting/command/executeAllocationCycle.ts +94 -0
- package/src/modules/accounting/command/finalizeVarianceReport.generated.ts +6 -0
- package/src/modules/accounting/command/finalizeVarianceReport.test.ts +60 -0
- package/src/modules/accounting/command/finalizeVarianceReport.ts +45 -0
- package/src/modules/accounting/command/generateVarianceReport.generated.ts +6 -0
- package/src/modules/accounting/command/generateVarianceReport.test.ts +386 -0
- package/src/modules/accounting/command/generateVarianceReport.ts +219 -0
- package/src/modules/accounting/command/invalidateAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/invalidateAllocationCycle.test.ts +84 -0
- package/src/modules/accounting/command/invalidateAllocationCycle.ts +45 -0
- package/src/modules/accounting/command/moveCostCenterHierarchyNode.generated.ts +6 -0
- package/src/modules/accounting/command/moveCostCenterHierarchyNode.test.ts +135 -0
- package/src/modules/accounting/command/moveCostCenterHierarchyNode.ts +81 -0
- package/src/modules/accounting/command/postAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/postAllocationCycle.test.ts +98 -0
- package/src/modules/accounting/command/postAllocationCycle.ts +65 -0
- package/src/modules/accounting/command/reactivateCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/reactivateCostElement.test.ts +59 -0
- package/src/modules/accounting/command/reactivateCostElement.ts +41 -0
- package/src/modules/accounting/command/reactivateProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/reactivateProfitCenter.test.ts +60 -0
- package/src/modules/accounting/command/reactivateProfitCenter.ts +42 -0
- package/src/modules/accounting/command/recordCommitment.generated.ts +6 -0
- package/src/modules/accounting/command/recordCommitment.test.ts +157 -0
- package/src/modules/accounting/command/recordCommitment.ts +113 -0
- package/src/modules/accounting/command/rejectBudget.generated.ts +6 -0
- package/src/modules/accounting/command/rejectBudget.test.ts +105 -0
- package/src/modules/accounting/command/rejectBudget.ts +51 -0
- package/src/modules/accounting/command/releaseCommitment.generated.ts +6 -0
- package/src/modules/accounting/command/releaseCommitment.test.ts +94 -0
- package/src/modules/accounting/command/releaseCommitment.ts +51 -0
- package/src/modules/accounting/command/releaseInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/releaseInternalOrder.test.ts +74 -0
- package/src/modules/accounting/command/releaseInternalOrder.ts +38 -0
- package/src/modules/accounting/command/reverseAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/reverseAllocationCycle.test.ts +124 -0
- package/src/modules/accounting/command/reverseAllocationCycle.ts +63 -0
- package/src/modules/accounting/command/submitBudget.generated.ts +6 -0
- package/src/modules/accounting/command/submitBudget.test.ts +60 -0
- package/src/modules/accounting/command/submitBudget.ts +51 -0
- package/src/modules/accounting/command/technicallyCompleteInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/technicallyCompleteInternalOrder.test.ts +74 -0
- package/src/modules/accounting/command/technicallyCompleteInternalOrder.ts +42 -0
- package/src/modules/accounting/command/updateAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/updateAllocationCycle.test.ts +112 -0
- package/src/modules/accounting/command/updateAllocationCycle.ts +41 -0
- package/src/modules/accounting/command/updateBudget.generated.ts +6 -0
- package/src/modules/accounting/command/updateBudget.test.ts +112 -0
- package/src/modules/accounting/command/updateBudget.ts +44 -0
- package/src/modules/accounting/command/updateCostCenter.generated.ts +6 -0
- package/src/modules/accounting/command/updateCostCenter.test.ts +105 -0
- package/src/modules/accounting/command/updateCostCenter.ts +79 -0
- package/src/modules/accounting/command/updateCostElement.generated.ts +6 -0
- package/src/modules/accounting/command/updateCostElement.test.ts +265 -0
- package/src/modules/accounting/command/updateCostElement.ts +158 -0
- package/src/modules/accounting/command/updateInternalOrder.generated.ts +6 -0
- package/src/modules/accounting/command/updateInternalOrder.test.ts +209 -0
- package/src/modules/accounting/command/updateInternalOrder.ts +88 -0
- package/src/modules/accounting/command/updateProfitCenter.generated.ts +6 -0
- package/src/modules/accounting/command/updateProfitCenter.test.ts +162 -0
- package/src/modules/accounting/command/updateProfitCenter.ts +73 -0
- package/src/modules/accounting/command/validateAllocationCycle.generated.ts +6 -0
- package/src/modules/accounting/command/validateAllocationCycle.test.ts +141 -0
- package/src/modules/accounting/command/validateAllocationCycle.ts +80 -0
- package/src/modules/accounting/db/allocationCycle.ts +59 -0
- package/src/modules/accounting/db/allocationResult.ts +58 -0
- package/src/modules/accounting/db/allocationRule.ts +48 -0
- package/src/modules/accounting/db/budget.ts +84 -0
- package/src/modules/accounting/db/budgetLineItem.ts +64 -0
- package/src/modules/accounting/db/commitment.ts +60 -0
- package/src/modules/accounting/db/costCenter.ts +73 -0
- package/src/modules/accounting/db/costCenterHierarchy.ts +37 -0
- package/src/modules/accounting/db/costCenterHierarchyNode.ts +48 -0
- package/src/modules/accounting/db/costElement.ts +56 -0
- package/src/modules/accounting/db/internalOrder.ts +69 -0
- package/src/modules/accounting/db/planVersion.ts +47 -0
- package/src/modules/accounting/db/profitCenter.ts +52 -0
- package/src/modules/accounting/db/profitCenterHierarchy.ts +36 -0
- package/src/modules/accounting/db/profitCenterHierarchyAssignment.ts +62 -0
- package/src/modules/accounting/db/profitCenterHierarchyNode.ts +48 -0
- package/src/modules/accounting/db/varianceReport.ts +54 -0
- package/src/modules/accounting/db/varianceReportLine.ts +62 -0
- package/src/modules/accounting/docs/commands/ActivateBudget.md +54 -0
- package/src/modules/accounting/docs/commands/ActivateCostElement.md +43 -0
- package/src/modules/accounting/docs/commands/ActivateProfitCenter.md +43 -0
- package/src/modules/accounting/docs/commands/ApproveBudget.md +46 -0
- package/src/modules/accounting/docs/commands/AssignCostCenterToHierarchyNode.md +46 -0
- package/src/modules/accounting/docs/commands/AssignProfitCenterToHierarchyNode.md +47 -0
- package/src/modules/accounting/docs/commands/CloseBudget.md +47 -0
- package/src/modules/accounting/docs/commands/CloseInternalOrder.md +45 -0
- package/src/modules/accounting/docs/commands/ConsumeCommitment.md +53 -0
- package/src/modules/accounting/docs/commands/CreateAllocationCycle.md +55 -0
- package/src/modules/accounting/docs/commands/CreateAllocationRule.md +60 -0
- package/src/modules/accounting/docs/commands/CreateBudget.md +65 -0
- package/src/modules/accounting/docs/commands/CreateBudgetLineItem.md +66 -0
- package/src/modules/accounting/docs/commands/CreateCostCenter.md +64 -0
- package/src/modules/accounting/docs/commands/CreateCostCenterHierarchy.md +45 -0
- package/src/modules/accounting/docs/commands/CreateCostCenterHierarchyNode.md +61 -0
- package/src/modules/accounting/docs/commands/CreateCostElement.md +91 -0
- package/src/modules/accounting/docs/commands/CreateInternalOrder.md +72 -0
- package/src/modules/accounting/docs/commands/CreatePlanVersion.md +59 -0
- package/src/modules/accounting/docs/commands/CreateProfitCenter.md +63 -0
- package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchy.md +45 -0
- package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchyNode.md +60 -0
- package/src/modules/accounting/docs/commands/DeactivateCostElement.md +43 -0
- package/src/modules/accounting/docs/commands/DeactivateProfitCenter.md +44 -0
- package/src/modules/accounting/docs/commands/DeleteAllocationCycle.md +46 -0
- package/src/modules/accounting/docs/commands/DeleteAllocationRule.md +45 -0
- package/src/modules/accounting/docs/commands/DeleteBudget.md +46 -0
- package/src/modules/accounting/docs/commands/DeleteBudgetLineItem.md +45 -0
- package/src/modules/accounting/docs/commands/DeleteCostCenter.md +50 -0
- package/src/modules/accounting/docs/commands/DeleteCostCenterHierarchyNode.md +45 -0
- package/src/modules/accounting/docs/commands/DeleteCostElement.md +43 -0
- package/src/modules/accounting/docs/commands/DeleteInternalOrder.md +45 -0
- package/src/modules/accounting/docs/commands/DeleteProfitCenter.md +46 -0
- package/src/modules/accounting/docs/commands/DeleteProfitCenterHierarchyNode.md +46 -0
- package/src/modules/accounting/docs/commands/ExecuteAllocationCycle.md +54 -0
- package/src/modules/accounting/docs/commands/FinalizeVarianceReport.md +44 -0
- package/src/modules/accounting/docs/commands/GenerateVarianceReport.md +83 -0
- package/src/modules/accounting/docs/commands/InvalidateAllocationCycle.md +45 -0
- package/src/modules/accounting/docs/commands/MoveCostCenterHierarchyNode.md +51 -0
- package/src/modules/accounting/docs/commands/PostAllocationCycle.md +58 -0
- package/src/modules/accounting/docs/commands/ReactivateCostElement.md +43 -0
- package/src/modules/accounting/docs/commands/ReactivateProfitCenter.md +43 -0
- package/src/modules/accounting/docs/commands/RecordCommitment.md +60 -0
- package/src/modules/accounting/docs/commands/RejectBudget.md +49 -0
- package/src/modules/accounting/docs/commands/ReleaseCommitment.md +45 -0
- package/src/modules/accounting/docs/commands/ReleaseInternalOrder.md +44 -0
- package/src/modules/accounting/docs/commands/ReverseAllocationCycle.md +55 -0
- package/src/modules/accounting/docs/commands/SubmitBudget.md +47 -0
- package/src/modules/accounting/docs/commands/TechnicallyCompleteInternalOrder.md +44 -0
- package/src/modules/accounting/docs/commands/UpdateAllocationCycle.md +45 -0
- package/src/modules/accounting/docs/commands/UpdateBudget.md +47 -0
- package/src/modules/accounting/docs/commands/UpdateCostCenter.md +50 -0
- package/src/modules/accounting/docs/commands/UpdateCostElement.md +82 -0
- package/src/modules/accounting/docs/commands/UpdateInternalOrder.md +62 -0
- package/src/modules/accounting/docs/commands/UpdateProfitCenter.md +56 -0
- package/src/modules/accounting/docs/commands/ValidateAllocationCycle.md +57 -0
- package/src/modules/accounting/docs/features/budget-management.md +147 -0
- package/src/modules/accounting/docs/features/cost-allocation.md +129 -0
- package/src/modules/accounting/docs/features/cost-center-management.md +118 -0
- package/src/modules/accounting/docs/features/cost-element-management.md +114 -0
- package/src/modules/accounting/docs/features/internal-order-management.md +111 -0
- package/src/modules/accounting/docs/features/profit-center-management.md +120 -0
- package/src/modules/accounting/docs/features/variance-analysis.md +130 -0
- package/src/modules/accounting/docs/models/AllocationCycle.md +81 -0
- package/src/modules/accounting/docs/models/AllocationResult.md +37 -0
- package/src/modules/accounting/docs/models/AllocationRule.md +41 -0
- package/src/modules/accounting/docs/models/Budget.md +77 -0
- package/src/modules/accounting/docs/models/BudgetLineItem.md +40 -0
- package/src/modules/accounting/docs/models/Commitment.md +45 -0
- package/src/modules/accounting/docs/models/CostCenter.md +51 -0
- package/src/modules/accounting/docs/models/CostCenterHierarchy.md +38 -0
- package/src/modules/accounting/docs/models/CostCenterHierarchyNode.md +41 -0
- package/src/modules/accounting/docs/models/CostElement.md +66 -0
- package/src/modules/accounting/docs/models/InternalOrder.md +67 -0
- package/src/modules/accounting/docs/models/PlanVersion.md +36 -0
- package/src/modules/accounting/docs/models/ProfitCenter.md +66 -0
- package/src/modules/accounting/docs/models/ProfitCenterHierarchy.md +36 -0
- package/src/modules/accounting/docs/models/ProfitCenterHierarchyAssignment.md +36 -0
- package/src/modules/accounting/docs/models/ProfitCenterHierarchyNode.md +39 -0
- package/src/modules/accounting/docs/models/VarianceReport.md +58 -0
- package/src/modules/accounting/docs/models/VarianceReportLine.md +43 -0
- package/src/modules/accounting/docs/queries/CalculateBudgetAvailability.md +64 -0
- package/src/modules/accounting/docs/queries/GetAllocationCycle.md +43 -0
- package/src/modules/accounting/docs/queries/GetBudget.md +42 -0
- package/src/modules/accounting/docs/queries/GetCostCenter.md +38 -0
- package/src/modules/accounting/docs/queries/GetCostCenterHierarchy.md +45 -0
- package/src/modules/accounting/docs/queries/GetCostElement.md +39 -0
- package/src/modules/accounting/docs/queries/GetInternalOrder.md +42 -0
- package/src/modules/accounting/docs/queries/GetProfitCenter.md +38 -0
- package/src/modules/accounting/docs/queries/GetProfitCenterHierarchy.md +46 -0
- package/src/modules/accounting/docs/queries/GetVarianceReport.md +45 -0
- package/src/modules/accounting/docs/queries/ListAllocationCycles.md +63 -0
- package/src/modules/accounting/docs/queries/ListBudgets.md +70 -0
- package/src/modules/accounting/docs/queries/ListCostCenters.md +55 -0
- package/src/modules/accounting/docs/queries/ListCostElements.md +63 -0
- package/src/modules/accounting/docs/queries/ListInternalOrders.md +62 -0
- package/src/modules/accounting/docs/queries/ListProfitCenters.md +49 -0
- package/src/modules/accounting/generated/enums.ts +110 -0
- package/src/modules/accounting/generated/kysely-tailordb.ts +302 -0
- package/src/modules/accounting/index.ts +2 -0
- package/src/modules/accounting/lib/_db_deps.ts +70 -0
- package/src/modules/accounting/lib/actualAmounts.ts +93 -0
- package/src/modules/accounting/lib/allocationPosting.ts +152 -0
- package/src/modules/accounting/lib/errors.generated.ts +432 -0
- package/src/modules/accounting/lib/permissions.generated.ts +61 -0
- package/src/modules/accounting/lib/types.ts +114 -0
- package/src/modules/accounting/module.ts +428 -0
- package/src/modules/accounting/permissions.ts +3 -0
- package/src/modules/accounting/query/calculateBudgetAvailability.generated.ts +5 -0
- package/src/modules/accounting/query/calculateBudgetAvailability.test.ts +229 -0
- package/src/modules/accounting/query/calculateBudgetAvailability.ts +147 -0
- package/src/modules/accounting/query/getAllocationCycle.generated.ts +5 -0
- package/src/modules/accounting/query/getAllocationCycle.test.ts +94 -0
- package/src/modules/accounting/query/getAllocationCycle.ts +37 -0
- package/src/modules/accounting/query/getBudget.generated.ts +5 -0
- package/src/modules/accounting/query/getBudget.test.ts +80 -0
- package/src/modules/accounting/query/getBudget.ts +31 -0
- package/src/modules/accounting/query/getCostCenter.generated.ts +5 -0
- package/src/modules/accounting/query/getCostCenter.test.ts +50 -0
- package/src/modules/accounting/query/getCostCenter.ts +33 -0
- package/src/modules/accounting/query/getCostCenterHierarchy.generated.ts +5 -0
- package/src/modules/accounting/query/getCostCenterHierarchy.test.ts +100 -0
- package/src/modules/accounting/query/getCostCenterHierarchy.ts +80 -0
- package/src/modules/accounting/query/getCostElement.generated.ts +5 -0
- package/src/modules/accounting/query/getCostElement.test.ts +57 -0
- package/src/modules/accounting/query/getCostElement.ts +21 -0
- package/src/modules/accounting/query/getInternalOrder.generated.ts +5 -0
- package/src/modules/accounting/query/getInternalOrder.test.ts +73 -0
- package/src/modules/accounting/query/getInternalOrder.ts +21 -0
- package/src/modules/accounting/query/getProfitCenter.generated.ts +5 -0
- package/src/modules/accounting/query/getProfitCenter.test.ts +65 -0
- package/src/modules/accounting/query/getProfitCenter.ts +31 -0
- package/src/modules/accounting/query/getProfitCenterHierarchy.generated.ts +5 -0
- package/src/modules/accounting/query/getProfitCenterHierarchy.test.ts +97 -0
- package/src/modules/accounting/query/getProfitCenterHierarchy.ts +87 -0
- package/src/modules/accounting/query/getVarianceReport.generated.ts +5 -0
- package/src/modules/accounting/query/getVarianceReport.test.ts +108 -0
- package/src/modules/accounting/query/getVarianceReport.ts +31 -0
- package/src/modules/accounting/query/listAllocationCycles.generated.ts +5 -0
- package/src/modules/accounting/query/listAllocationCycles.test.ts +152 -0
- package/src/modules/accounting/query/listAllocationCycles.ts +96 -0
- package/src/modules/accounting/query/listBudgets.generated.ts +5 -0
- package/src/modules/accounting/query/listBudgets.test.ts +150 -0
- package/src/modules/accounting/query/listBudgets.ts +85 -0
- package/src/modules/accounting/query/listCostCenters.generated.ts +5 -0
- package/src/modules/accounting/query/listCostCenters.test.ts +111 -0
- package/src/modules/accounting/query/listCostCenters.ts +71 -0
- package/src/modules/accounting/query/listCostElements.generated.ts +5 -0
- package/src/modules/accounting/query/listCostElements.test.ts +138 -0
- package/src/modules/accounting/query/listCostElements.ts +105 -0
- package/src/modules/accounting/query/listInternalOrders.generated.ts +5 -0
- package/src/modules/accounting/query/listInternalOrders.test.ts +129 -0
- package/src/modules/accounting/query/listInternalOrders.ts +94 -0
- package/src/modules/accounting/query/listProfitCenters.generated.ts +5 -0
- package/src/modules/accounting/query/listProfitCenters.test.ts +94 -0
- package/src/modules/accounting/query/listProfitCenters.ts +56 -0
- package/src/modules/accounting/seed/index.ts +19 -0
- package/src/modules/accounting/tailor.config.ts +13 -0
- package/src/modules/accounting/testing/commandTestUtils.ts +35 -0
- package/src/modules/accounting/testing/fixtures.ts +502 -0
- package/src/modules/audit/command/logAuditEvent.ts +43 -38
- package/src/modules/audit/command/updateAuditPolicy.ts +2 -2
- package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +1 -1
- package/src/modules/audit/module.ts +4 -0
- package/src/modules/business-partner/command/updateContactPerson.ts +3 -4
- package/src/modules/business-partner/command/updatePartner.ts +13 -6
- package/src/modules/business-partner/command/updatePartnerAddress.ts +13 -6
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +3 -4
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +3 -4
- package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +3 -3
- package/src/modules/business-partner/docs/commands/UpdatePartner.md +2 -2
- package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +2 -2
- package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +2 -2
- package/src/modules/coa-management/command/updateAccount.ts +3 -3
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +22 -0
- package/src/modules/coa-management/command/updateAccountGroup.ts +30 -18
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +3 -4
- package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +4 -3
- package/src/modules/finance-ledger/command/updateFiscalYear.ts +2 -3
- package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +0 -17
- package/src/modules/finance-ledger/command/updateJournalEntry.ts +2 -10
- package/src/modules/finance-ledger/command/updateJournalLine.ts +2 -3
- package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +1 -4
- package/src/modules/inventory/command/updateLot.test.ts +1 -1
- package/src/modules/inventory/command/updateLot.ts +2 -3
- package/src/modules/inventory/command/updateStockMovement.ts +2 -3
- package/src/modules/inventory/command/updateStorageLocation.ts +12 -17
- package/src/modules/inventory/command/updateValuationPolicy.ts +2 -3
- package/src/modules/inventory/command/updateWarehouse.ts +2 -3
- package/src/modules/inventory/docs/commands/UpdateLot.md +3 -3
- package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +6 -6
- package/src/modules/inventory/docs/commands/UpdateWarehouse.md +2 -2
- package/src/modules/item-management/command/updateItem.test.ts +16 -12
- package/src/modules/item-management/command/updateItem.ts +47 -31
- package/src/modules/item-management/command/updateTaxonomyNode.test.ts +15 -16
- package/src/modules/item-management/command/updateTaxonomyNode.ts +42 -29
- package/src/modules/item-management/docs/commands/UpdateItem.md +7 -11
- package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +10 -14
- package/src/modules/manufacturing/command/updateBillOfMaterial.ts +3 -4
- package/src/modules/manufacturing/command/updateProductionOrder.ts +3 -4
- package/src/modules/manufacturing/command/updateRouting.ts +3 -4
- package/src/modules/manufacturing/command/updateWorkCenter.test.ts +16 -7
- package/src/modules/manufacturing/command/updateWorkCenter.ts +41 -38
- package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +2 -0
- package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +2 -0
- package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +1 -0
- package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +1 -0
- package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +6 -5
- package/src/modules/manufacturing/docs/models/BillOfMaterialLine.md +42 -0
- package/src/modules/manufacturing/docs/models/CostVarianceLine.md +36 -0
- package/src/modules/manufacturing/docs/models/ManufacturingCostLine.md +37 -0
- package/src/modules/manufacturing/docs/models/ManufacturingCostSettlementRecord.md +34 -0
- package/src/modules/manufacturing/docs/models/ProductionOrderBomSnapshot.md +35 -0
- package/src/modules/manufacturing/docs/models/ProductionOrderCostBaseline.md +36 -0
- package/src/modules/manufacturing/docs/models/ProductionOrderMaterialRequirement.md +35 -0
- package/src/modules/manufacturing/docs/models/ProductionOrderRoutingSnapshot.md +34 -0
- package/src/modules/manufacturing/docs/models/RoutingOperation.md +40 -0
- package/src/modules/manufacturing/docs/models/WorkOrderExecutionEvent.md +38 -0
- package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +1 -0
- package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +1 -0
- package/src/modules/organization/command/updateCompany.test.ts +6 -6
- package/src/modules/organization/command/updateCompany.ts +3 -4
- package/src/modules/organization/command/updateDepartment.test.ts +7 -7
- package/src/modules/organization/command/updateDepartment.ts +13 -12
- package/src/modules/organization/command/updateSite.test.ts +10 -10
- package/src/modules/organization/command/updateSite.ts +3 -4
- package/src/modules/organization/docs/commands/UpdateCompany.md +6 -6
- package/src/modules/organization/docs/commands/UpdateDepartment.md +9 -10
- package/src/modules/organization/docs/commands/UpdateSite.md +12 -12
- package/src/modules/product-management/command/updateProduct.test.ts +17 -11
- package/src/modules/product-management/command/updateProduct.ts +45 -28
- package/src/modules/product-management/command/updateProductAttribute.test.ts +16 -21
- package/src/modules/product-management/command/updateProductAttribute.ts +40 -26
- package/src/modules/product-management/command/updateProductAttributeValue.ts +2 -3
- package/src/modules/product-management/command/updateProductCategory.test.ts +14 -19
- package/src/modules/product-management/command/updateProductCategory.ts +42 -26
- package/src/modules/product-management/docs/commands/UpdateProduct.md +16 -20
- package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +10 -14
- package/src/modules/product-management/docs/commands/UpdateProductCategory.md +10 -14
- package/src/modules/purchase/command/updateGoodsReceipt.ts +2 -3
- package/src/modules/purchase/command/updatePurchaseBill.ts +2 -3
- package/src/modules/purchase/command/updatePurchaseOrder.ts +2 -3
- package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +2 -3
- package/src/modules/purchase/command/updatePurchasePriceList.ts +2 -3
- package/src/modules/purchase/command/updatePurchasePriceRule.ts +2 -3
- package/src/modules/sales/command/updateChannel.test.ts +4 -4
- package/src/modules/sales/command/updateChannel.ts +2 -3
- package/src/modules/sales/command/updateListing.test.ts +2 -2
- package/src/modules/sales/command/updateListing.ts +2 -3
- package/src/modules/sales/command/updateSalesCreditNote.test.ts +2 -2
- package/src/modules/sales/command/updateSalesCreditNote.ts +2 -3
- package/src/modules/sales/command/updateSalesInvoice.test.ts +2 -2
- package/src/modules/sales/command/updateSalesInvoice.ts +2 -3
- package/src/modules/sales/command/updateSalesOrder.test.ts +3 -3
- package/src/modules/sales/command/updateSalesOrder.ts +2 -3
- package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +2 -2
- package/src/modules/sales/command/updateSalesPaymentTerm.ts +2 -3
- package/src/modules/sales/command/updateSalesPriceList.test.ts +3 -3
- package/src/modules/sales/command/updateSalesPriceList.ts +2 -3
- package/src/modules/sales/command/updateSalesPriceRule.test.ts +3 -3
- package/src/modules/sales/command/updateSalesPriceRule.ts +2 -3
- package/src/modules/sales/command/updateShipment.test.ts +2 -2
- package/src/modules/sales/command/updateShipment.ts +2 -3
- package/src/modules/sales/docs/commands/UpdateChannel.md +4 -4
- package/src/modules/sales/docs/commands/UpdateListing.md +2 -2
- package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +2 -2
- package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +2 -2
- package/src/modules/sales/docs/commands/UpdateSalesOrder.md +3 -3
- package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +2 -2
- package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +3 -3
- package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +3 -3
- package/src/modules/sales/docs/commands/UpdateShipment.md +2 -2
- package/src/modules/user-management/README.md +2 -1
- package/src/modules/user-management/command/updateOwnProfile.generated.ts +6 -0
- package/src/modules/user-management/command/updateOwnProfile.test.ts +191 -0
- package/src/modules/user-management/command/updateOwnProfile.ts +82 -0
- package/src/modules/user-management/command/updateUser.generated.ts +6 -0
- package/src/modules/user-management/command/updateUser.test.ts +195 -0
- package/src/modules/user-management/command/updateUser.ts +76 -0
- package/src/modules/user-management/docs/commands/UpdateOwnProfile.md +68 -0
- package/src/modules/user-management/docs/commands/UpdateUser.md +67 -0
- package/src/modules/user-management/docs/features/user-account-management.md +28 -3
- package/src/modules/user-management/docs/models/User.md +2 -0
- package/src/modules/user-management/lib/errors.generated.ts +5 -0
- package/src/modules/user-management/lib/permissions.generated.ts +2 -0
- package/src/modules/user-management/module.ts +5 -0
- package/src/modules/user-management/seed/index.ts +19 -0
- package/templates/scaffold/app/backend/seed/data/AuditEntry.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/AuditPolicy.jsonl +7 -0
- package/templates/scaffold/app/backend/seed/data/AuditPolicy.schema.ts +15 -0
- package/templates/scaffold/app/backend/seed/data/AuditableEntity.jsonl +4 -0
- package/templates/scaffold/app/backend/seed/data/AuditableEntity.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/ChangeDetail.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/Company.schema.ts +15 -0
- package/templates/scaffold/app/backend/seed/data/Permission.jsonl +13 -0
- package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +1 -1
- package/templates/scaffold/app/backend/seed/data/PolicyFieldRule.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/Role.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/Role.schema.ts +1 -1
- package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +13 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +1 -1
- package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -1
- package/templates/scaffold/app/backend/seed/data/User.schema.ts +1 -1
- package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +1 -1
- package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -1
- package/templates/scaffold/app/backend/seed/exec.mjs +12 -0
- package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +2 -2
- package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +2 -2
- package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +62 -0
- package/templates/scaffold/app/backend/src/modules-db.ts +13 -0
- package/templates/scaffold/app/backend/src/modules.ts +3 -5
- package/templates/scaffold/app/backend/src/resolvers/assignPermissionToRole.ts +70 -0
- package/templates/scaffold/app/backend/src/resolvers/assignRoleToUser.ts +72 -0
- package/templates/scaffold/app/backend/src/resolvers/createRole.ts +92 -0
- package/templates/scaffold/app/backend/src/resolvers/createUser.ts +113 -13
- package/templates/scaffold/app/backend/src/resolvers/deactivateUser.ts +67 -0
- package/templates/scaffold/app/backend/src/resolvers/reactivateUser.ts +63 -0
- package/templates/scaffold/app/backend/src/resolvers/revokePermissionFromRole.ts +72 -0
- package/templates/scaffold/app/backend/src/resolvers/revokeRoleFromUser.ts +72 -0
- package/templates/scaffold/app/backend/src/resolvers/updateOwnProfile.ts +107 -0
- package/templates/scaffold/app/backend/src/resolvers/updateUserProfile.ts +107 -0
- package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log-detail.test.ts +79 -0
- package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log.test.ts +86 -0
- package/templates/scaffold/app/backend/src/tests/stories/role-management/user--assign-role-to-user.test.ts +103 -0
- package/templates/scaffold/app/backend/src/tests/stories/role-management/user--create-role.test.ts +61 -0
- package/templates/scaffold/app/backend/src/tests/stories/role-management/user--remove-role-from-user.test.ts +89 -0
- package/templates/scaffold/app/backend/src/tests/stories/role-management/user--update-role-permissions.test.ts +125 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--browse-user-list.test.ts +91 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--create-user-account.test.ts +97 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--toggle-user-status.test.ts +131 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-own-profile.test.ts +85 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-user-profile.test.ts +158 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-own-profile.test.ts +30 -0
- package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-user-detail.test.ts +98 -0
- package/templates/scaffold/app/backend/tailor.config.ts +6 -2
- package/templates/scaffold/app/docs/actors/user.md +11 -0
- package/templates/scaffold/app/docs/business-flow/audit-log/README.md +31 -0
- package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log-detail.md +35 -0
- package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log.md +44 -0
- package/templates/scaffold/app/docs/business-flow/role-management/README.md +33 -0
- package/templates/scaffold/app/docs/business-flow/role-management/story/user--assign-role-to-user.md +35 -0
- package/templates/scaffold/app/docs/business-flow/role-management/story/user--create-role.md +41 -0
- package/templates/scaffold/app/docs/business-flow/role-management/story/user--remove-role-from-user.md +33 -0
- package/templates/scaffold/app/docs/business-flow/role-management/story/user--update-role-permissions.md +41 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/README.md +48 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--browse-user-list.md +38 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--create-user-account.md +45 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--toggle-user-status.md +38 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-own-profile.md +36 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-user-profile.md +41 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-own-profile.md +30 -0
- package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-user-detail.md +33 -0
- package/templates/scaffold/app/docs/resolver/assignPermissionToRole.md +16 -0
- package/templates/scaffold/app/docs/resolver/assignRoleToUser.md +17 -0
- package/templates/scaffold/app/docs/resolver/createRole.md +17 -0
- package/templates/scaffold/app/docs/resolver/createUser.md +23 -0
- package/templates/scaffold/app/docs/resolver/deactivateUser.md +17 -0
- package/templates/scaffold/app/docs/resolver/reactivateUser.md +16 -0
- package/templates/scaffold/app/docs/resolver/revokePermissionFromRole.md +17 -0
- package/templates/scaffold/app/docs/resolver/revokeRoleFromUser.md +17 -0
- package/templates/scaffold/app/docs/resolver/updateOwnProfile.md +20 -0
- package/templates/scaffold/app/docs/resolver/updateUserProfile.md +19 -0
- package/templates/scaffold/app/docs/screen/audit-entry-detail.md +30 -0
- package/templates/scaffold/app/docs/screen/audit-entry-list.md +25 -0
- package/templates/scaffold/app/docs/screen/my-profile-edit-form.md +22 -0
- package/templates/scaffold/app/docs/screen/my-profile.md +27 -0
- package/templates/scaffold/app/docs/screen/role-create-form.md +23 -0
- package/templates/scaffold/app/docs/screen/role-detail.md +27 -0
- package/templates/scaffold/app/docs/screen/role-edit-form.md +21 -0
- package/templates/scaffold/app/docs/screen/role-list.md +23 -0
- package/templates/scaffold/app/docs/screen/user-create-form.md +23 -0
- package/templates/scaffold/app/docs/screen/user-detail.md +33 -0
- package/templates/scaffold/app/docs/screen/user-edit-form.md +22 -0
- package/templates/scaffold/app/docs/screen/user-list.md +24 -0
- package/templates/scaffold/app/frontend/package.json +1 -1
- package/templates/scaffold/app/frontend/src/App.tsx +4 -0
- package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +1 -1
- package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +59 -31
- package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1411 -688
- package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +1 -1
- package/templates/scaffold/app/frontend/src/lib/permission-groups.ts +59 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/components/audit-entry-detail.tsx +102 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/page.tsx +65 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/audit/components/audit-entries-table.tsx +90 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/audit/page.tsx +52 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/components/edit-profile-form.tsx +125 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +41 -21
- package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-actions.tsx +26 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-detail.tsx +69 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/components/edit-role-form.tsx +192 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/page.tsx +51 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/page.tsx +56 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/components/roles-table.tsx +85 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/create/components/create-role-form.tsx +204 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/create/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/role/page.tsx +60 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-actions.tsx +216 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +97 -33
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/components/edit-user-form.tsx +115 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/page.tsx +51 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +8 -2
- package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +43 -42
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +120 -45
- package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +3 -4
- package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +8 -1
- package/templates/scaffold/module/eslint.config.js +8 -0
- package/templates/scaffold/project/__dot__gitignore +1 -0
- package/templates/scaffold/project/__pnpm-workspace.yaml +3 -0
- package/templates/scaffold/project/apps/.gitkeep +0 -0
- package/templates/scaffold/project/modules/.gitkeep +0 -0
- package/templates/scaffold/project/package.json +15 -0
- package/templates/workflows/erp-kit-check.yml +10 -4
- package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +0 -39
- package/templates/scaffold/app/frontend/src/components/ui/button.tsx +0 -60
- package/templates/scaffold/app/frontend/src/components/ui/card.tsx +0 -75
- package/templates/scaffold/app/frontend/src/components/ui/input.tsx +0 -21
- package/templates/scaffold/app/frontend/src/components/ui/table.tsx +0 -90
- /package/src/modules/{supplier-portal → accounting/executor}/.gitkeep +0 -0
- /package/templates/scaffold/app/{docs/actors/.gitkeep → backend/seed/data/AuditEntry.jsonl} +0 -0
- /package/templates/scaffold/app/{docs/business-flow/.gitkeep → backend/seed/data/ChangeDetail.jsonl} +0 -0
- /package/templates/scaffold/app/{docs/resolver/.gitkeep → backend/seed/data/Company.jsonl} +0 -0
- /package/templates/scaffold/app/{docs/screen/.gitkeep → backend/seed/data/PolicyFieldRule.jsonl} +0 -0
- /package/templates/{config → scaffold/project}/license.config.json +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ReverseAllocationCycle
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
reverseAllocationCycle transitions an allocation cycle from POSTED to REVERSED status by creating reversal journal entries with inverted amounts. This offsets the original allocation postings to zero. An already REVERSED cycle cannot be reversed again. The reversal period must be in OPEN or FUTURE_ENTERABLE status.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Allocation cycle must exist
|
|
10
|
+
- Allocation cycle must be in POSTED status to be reversed
|
|
11
|
+
- Reversing an already REVERSED cycle is rejected
|
|
12
|
+
- Creates reversal journal entries with inverted (negated) amounts
|
|
13
|
+
- Reversal journal entries must target a period that is in OPEN or FUTURE_ENTERABLE status
|
|
14
|
+
- Transitions status from POSTED to REVERSED
|
|
15
|
+
- Original allocation postings remain in the ledger for auditability
|
|
16
|
+
- Emits an audit event recording the status transition and acting user
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive reverse allocation cycle request] --> B{Allocation cycle exists?}
|
|
23
|
+
B -->|No| C[Return error: ALLOCATION_CYCLE_NOT_FOUND]
|
|
24
|
+
B -->|Yes| D{Status is POSTED?}
|
|
25
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
26
|
+
D -->|Yes| F{Reversal period is OPEN or FUTURE_ENTERABLE?}
|
|
27
|
+
F -->|No| G[Return error: PERIOD_NOT_OPEN]
|
|
28
|
+
F -->|Yes| H[Create reversal journal entries with inverted amounts]
|
|
29
|
+
H --> I[Post reversal entries via finance-ledger]
|
|
30
|
+
I --> J[Transition status from POSTED to REVERSED]
|
|
31
|
+
J --> K[Emit audit event]
|
|
32
|
+
K --> L[Return reversed allocation cycle]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## External Dependencies
|
|
36
|
+
|
|
37
|
+
- [finance-ledger::getAccountingPeriod](../../../finance-ledger/docs/queries/GetAccountingPeriod.md) — Validates that the reversal period is in OPEN or FUTURE_ENTERABLE status
|
|
38
|
+
- [finance-ledger::createJournalEntry](../../../finance-ledger/docs/commands/CreateJournalEntry.md) — Creates reversal journal entries
|
|
39
|
+
|
|
40
|
+
## Error Scenarios
|
|
41
|
+
|
|
42
|
+
- **ALLOCATION_CYCLE_NOT_FOUND**: Allocation cycle with the specified ID does not exist
|
|
43
|
+
- **INVALID_STATE**: Allocation cycle is not in POSTED status (e.g., DRAFT, VALIDATED, EXECUTED, or already REVERSED)
|
|
44
|
+
- **PERIOD_NOT_OPEN**: Reversal period is not in OPEN or FUTURE_ENTERABLE status
|
|
45
|
+
|
|
46
|
+
## Test Cases
|
|
47
|
+
|
|
48
|
+
- reverses a POSTED allocation cycle transitioning it to REVERSED status
|
|
49
|
+
- returns error when allocation cycle does not exist
|
|
50
|
+
- returns error when allocation cycle is not in POSTED status
|
|
51
|
+
- returns error when allocation cycle is already REVERSED
|
|
52
|
+
- returns error when reversal period is not OPEN or FUTURE_ENTERABLE
|
|
53
|
+
- returns error when allocation cycle is in DRAFT status
|
|
54
|
+
- returns error when allocation cycle is in VALIDATED status
|
|
55
|
+
- emits audit event recording the status transition and acting user
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# SubmitBudget
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
submitBudget transitions a budget from DRAFT status to SUBMITTED status, initiating the approval workflow. The budget must have at least one line item before it can be submitted.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Budget must exist
|
|
10
|
+
- Budget must be in DRAFT status to be submitted
|
|
11
|
+
- Budget must have at least one line item
|
|
12
|
+
- Submitting a budget without line items is rejected
|
|
13
|
+
- Transitions status from DRAFT to SUBMITTED
|
|
14
|
+
- Emits an audit event recording the status transition and acting user
|
|
15
|
+
|
|
16
|
+
## Process Flow
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
A[Receive submit budget request] --> B{Budget exists?}
|
|
21
|
+
B -->|No| C[Return error: BUDGET_NOT_FOUND]
|
|
22
|
+
B -->|Yes| D{Status is DRAFT?}
|
|
23
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
24
|
+
D -->|Yes| F{Has at least one line item?}
|
|
25
|
+
F -->|No| G[Return error: NO_LINE_ITEMS]
|
|
26
|
+
F -->|Yes| H[Transition status from DRAFT to SUBMITTED]
|
|
27
|
+
H --> I[Emit audit event]
|
|
28
|
+
I --> J[Return submitted budget]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## External Dependencies
|
|
32
|
+
|
|
33
|
+
- None
|
|
34
|
+
|
|
35
|
+
## Error Scenarios
|
|
36
|
+
|
|
37
|
+
- **BUDGET_NOT_FOUND**: Budget with the specified ID does not exist
|
|
38
|
+
- **INVALID_STATE**: Budget is not in DRAFT status
|
|
39
|
+
- **NO_LINE_ITEMS**: Budget has no line items and cannot be submitted
|
|
40
|
+
|
|
41
|
+
## Test Cases
|
|
42
|
+
|
|
43
|
+
- submits a DRAFT budget with line items transitioning it to SUBMITTED status
|
|
44
|
+
- returns error when budget does not exist
|
|
45
|
+
- returns error when budget is not in DRAFT status
|
|
46
|
+
- returns error when budget has no line items
|
|
47
|
+
- emits audit event recording the status transition and acting user
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# TechnicallyCompleteInternalOrder
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
technicallyCompleteInternalOrder transitions an internal order from RELEASED status to TECHNICALLY_COMPLETED status. This indicates that the activity tracked by the order is complete and no further cost postings are expected, though the order remains open for final review before closure.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Internal order must exist
|
|
10
|
+
- Internal order must be in RELEASED status to be technically completed
|
|
11
|
+
- Technically completing a CREATED, already TECHNICALLY_COMPLETED, or CLOSED order is rejected as an invalid state transition
|
|
12
|
+
- Once technically completed, no further cost postings are accepted
|
|
13
|
+
- Emits an audit event recording the status transition and acting user
|
|
14
|
+
|
|
15
|
+
## Process Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Receive technically complete internal order request] --> B{Internal order exists?}
|
|
20
|
+
B -->|No| C[Return error: INTERNAL_ORDER_NOT_FOUND]
|
|
21
|
+
B -->|Yes| D{Status is RELEASED?}
|
|
22
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
23
|
+
D -->|Yes| F[Transition status from RELEASED to TECHNICALLY_COMPLETED]
|
|
24
|
+
F --> G[Emit audit event]
|
|
25
|
+
G --> H[Return technically completed internal order]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## External Dependencies
|
|
29
|
+
|
|
30
|
+
- None
|
|
31
|
+
|
|
32
|
+
## Error Scenarios
|
|
33
|
+
|
|
34
|
+
- **INTERNAL_ORDER_NOT_FOUND**: Internal order with the specified ID does not exist
|
|
35
|
+
- **INVALID_STATE**: Internal order is not in RELEASED status
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- technically completes a RELEASED internal order transitioning it to TECHNICALLY_COMPLETED status
|
|
40
|
+
- returns error when internal order does not exist
|
|
41
|
+
- returns error when internal order is in CREATED status
|
|
42
|
+
- returns error when internal order is already TECHNICALLY_COMPLETED
|
|
43
|
+
- returns error when internal order is CLOSED
|
|
44
|
+
- emits audit event recording the status transition and acting user
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# UpdateAllocationCycle
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateAllocationCycle modifies an existing allocation cycle. Updates are only permitted when the cycle is in DRAFT status. In the current implementation, only the cycle name can be updated while in DRAFT.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Allocation cycle must exist
|
|
10
|
+
- Allocation cycle must be in DRAFT status to be updated
|
|
11
|
+
- Updates to cycles in VALIDATED, EXECUTED, POSTED, or REVERSED status are rejected
|
|
12
|
+
- Only `name` can be updated
|
|
13
|
+
- Emits an audit event recording previous and new field values
|
|
14
|
+
|
|
15
|
+
## Process Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Receive update allocation cycle request] --> B{Allocation cycle exists?}
|
|
20
|
+
B -->|No| C[Return error: ALLOCATION_CYCLE_NOT_FOUND]
|
|
21
|
+
B -->|Yes| D{Status is DRAFT?}
|
|
22
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
23
|
+
D -->|Yes| F[Apply updates to allocation cycle]
|
|
24
|
+
F --> G[Emit audit event]
|
|
25
|
+
G --> H[Return updated allocation cycle]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## External Dependencies
|
|
29
|
+
|
|
30
|
+
- None
|
|
31
|
+
|
|
32
|
+
## Error Scenarios
|
|
33
|
+
|
|
34
|
+
- **ALLOCATION_CYCLE_NOT_FOUND**: Allocation cycle with the specified ID does not exist
|
|
35
|
+
- **INVALID_STATE**: Allocation cycle is not in DRAFT status
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- updates name on a DRAFT allocation cycle
|
|
40
|
+
- returns error when allocation cycle does not exist
|
|
41
|
+
- returns error when allocation cycle is in VALIDATED status
|
|
42
|
+
- returns error when allocation cycle is in EXECUTED status
|
|
43
|
+
- returns error when allocation cycle is in POSTED status
|
|
44
|
+
- returns error when allocation cycle is in REVERSED status
|
|
45
|
+
- emits audit event recording previous and new field values
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# UpdateBudget
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateBudget modifies fields on an existing budget. Updates are only permitted when the budget is in DRAFT status. Name, description, and budget holder can be updated while in DRAFT.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Budget must exist
|
|
10
|
+
- Budget must be in DRAFT status to be updated
|
|
11
|
+
- Name, description, and budget holder can be updated
|
|
12
|
+
- Updates to budgets in SUBMITTED, APPROVED, ACTIVE, or CLOSED status are rejected
|
|
13
|
+
- Emits an audit event recording previous and new field values
|
|
14
|
+
|
|
15
|
+
## Process Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Receive update budget request] --> B{Budget exists?}
|
|
20
|
+
B -->|No| C[Return error: BUDGET_NOT_FOUND]
|
|
21
|
+
B -->|Yes| D{Status is DRAFT?}
|
|
22
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
23
|
+
D -->|Yes| F[Apply updates to budget]
|
|
24
|
+
F --> G[Emit audit event]
|
|
25
|
+
G --> H[Return updated budget]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## External Dependencies
|
|
29
|
+
|
|
30
|
+
- None
|
|
31
|
+
|
|
32
|
+
## Error Scenarios
|
|
33
|
+
|
|
34
|
+
- **BUDGET_NOT_FOUND**: Budget with the specified ID does not exist
|
|
35
|
+
- **INVALID_STATE**: Budget is not in DRAFT status
|
|
36
|
+
|
|
37
|
+
## Test Cases
|
|
38
|
+
|
|
39
|
+
- updates name on a DRAFT budget
|
|
40
|
+
- updates description on a DRAFT budget
|
|
41
|
+
- updates budget holder on a DRAFT budget
|
|
42
|
+
- returns error when budget does not exist
|
|
43
|
+
- returns error when budget is in SUBMITTED status
|
|
44
|
+
- returns error when budget is in APPROVED status
|
|
45
|
+
- returns error when budget is in ACTIVE status
|
|
46
|
+
- returns error when budget is in CLOSED status
|
|
47
|
+
- emits audit event recording previous and new field values
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# UpdateCostCenter
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateCostCenter modifies fields on an existing cost center. Name, description, category, responsible person, department, and validity period can be updated. The cost center code is fixed by the existing record and is not part of the update input.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Cost center must exist
|
|
10
|
+
- Name, description, category, responsible person, and department can be updated
|
|
11
|
+
- Category must be from the defined set: overhead, production, administration, sales, or research
|
|
12
|
+
- When updating validTo, it must remain on or after validFrom
|
|
13
|
+
- Emits an audit event recording previous and new field values
|
|
14
|
+
|
|
15
|
+
## Process Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Receive update cost center request] --> B{Lookup by costCenterId}
|
|
20
|
+
B -->|Not found| C[Return error: COST_CENTER_NOT_FOUND]
|
|
21
|
+
B -->|Found| D{Valid name if provided?}
|
|
22
|
+
D -->|No| E[Return error: INVALID_NAME]
|
|
23
|
+
D -->|Yes| F{Valid category if changed?}
|
|
24
|
+
F -->|No| G[Return error: INVALID_CATEGORY]
|
|
25
|
+
F -->|Yes| H{validTo >= validFrom when both set?}
|
|
26
|
+
H -->|No| I[Return error: INVALID_VALIDITY_PERIOD]
|
|
27
|
+
H -->|Yes| J[Apply updates to cost center]
|
|
28
|
+
J --> K[Emit audit event]
|
|
29
|
+
K --> L[Return updated cost center]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## External Dependencies
|
|
33
|
+
|
|
34
|
+
- None
|
|
35
|
+
|
|
36
|
+
## Error Scenarios
|
|
37
|
+
|
|
38
|
+
- **COST_CENTER_NOT_FOUND**: Cost center with the specified ID does not exist
|
|
39
|
+
- **INVALID_NAME**: Name is empty or blank when provided
|
|
40
|
+
- **INVALID_CATEGORY**: Category is not one of the recognized values (overhead, production, administration, sales, research)
|
|
41
|
+
- **INVALID_VALIDITY_PERIOD**: validTo is before validFrom
|
|
42
|
+
|
|
43
|
+
## Test Cases
|
|
44
|
+
|
|
45
|
+
- returns error when cost center does not exist
|
|
46
|
+
- returns error when name is empty string
|
|
47
|
+
- returns error when category is invalid
|
|
48
|
+
- returns error when validTo is before validFrom
|
|
49
|
+
- updates cost center with valid fields
|
|
50
|
+
- updates multiple fields at once
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# UpdateCostElement
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateCostElement modifies fields on an existing cost element that is in DRAFT or ACTIVE status. Description and name can be updated in both DRAFT and ACTIVE status. Category and GL account reference changes are only permitted while the element is in DRAFT status. Type changes are never permitted. The command enforces field-level mutability rules based on the current lifecycle status to preserve referential integrity of downstream cost postings and allocations.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Cost element must exist and be in DRAFT or ACTIVE status
|
|
10
|
+
- Description can be updated in both DRAFT and ACTIVE status
|
|
11
|
+
- Name can be updated in both DRAFT and ACTIVE status
|
|
12
|
+
- Category change is not permitted when the cost element is in ACTIVE status
|
|
13
|
+
- GL account reference change is not permitted after activation (only updatable in DRAFT)
|
|
14
|
+
- Type change (PRIMARY to SECONDARY or vice versa) is never permitted
|
|
15
|
+
- When updating category, the new category must still match the element's type
|
|
16
|
+
- When updating GL account reference on a DRAFT PRIMARY element, the new GL account must be active in an active CoA
|
|
17
|
+
- When updating GL account reference, no other PRIMARY element in the same company may reference the new GL account
|
|
18
|
+
- When updating validFrom/validTo, validFrom must be less than or equal to validTo when both are set
|
|
19
|
+
- INACTIVE cost elements cannot be updated
|
|
20
|
+
- Emits an audit event recording previous and new field values
|
|
21
|
+
|
|
22
|
+
## Process Flow
|
|
23
|
+
|
|
24
|
+
```mermaid
|
|
25
|
+
flowchart TD
|
|
26
|
+
A[Receive update cost element request] --> B{Cost element exists?}
|
|
27
|
+
B -->|No| C[Return error: COST_ELEMENT_NOT_FOUND]
|
|
28
|
+
B -->|Yes| D{Status is DRAFT or ACTIVE?}
|
|
29
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
30
|
+
D -->|Yes| F{Type change attempted?}
|
|
31
|
+
F -->|Yes| G[Return error: TYPE_CHANGE_NOT_ALLOWED]
|
|
32
|
+
F -->|No| H{Status is ACTIVE and category change attempted?}
|
|
33
|
+
H -->|Yes| I[Return error: CATEGORY_CHANGE_NOT_ALLOWED]
|
|
34
|
+
H -->|No| J{Status is ACTIVE and GL account change attempted?}
|
|
35
|
+
J -->|Yes| K[Return error: GL_ACCOUNT_CHANGE_NOT_ALLOWED]
|
|
36
|
+
J -->|No| L{Category matches type if changed?}
|
|
37
|
+
L -->|No| M[Return error: INVALID_CATEGORY_FOR_TYPE]
|
|
38
|
+
L -->|Yes| N{GL account valid if changed?}
|
|
39
|
+
N -->|No| O[Return error: GL_ACCOUNT_NOT_FOUND]
|
|
40
|
+
N -->|Yes| P{Duplicate GL account reference?}
|
|
41
|
+
P -->|Yes| Q[Return error: DUPLICATE_GL_ACCOUNT_REFERENCE]
|
|
42
|
+
P -->|No| R{validFrom <= validTo when both set?}
|
|
43
|
+
R -->|No| S[Return error: INVALID_VALIDITY_PERIOD]
|
|
44
|
+
R -->|Yes| T[Apply updates to cost element]
|
|
45
|
+
T --> U[Emit audit event]
|
|
46
|
+
U --> V[Return updated cost element]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## External Dependencies
|
|
50
|
+
|
|
51
|
+
- [coa-management::getAccount](../../../coa-management/docs/queries/GetAccount.md) — Validates updated GL account reference if changed
|
|
52
|
+
|
|
53
|
+
## Error Scenarios
|
|
54
|
+
|
|
55
|
+
- **COST_ELEMENT_NOT_FOUND**: Cost element with the specified ID does not exist
|
|
56
|
+
- **INVALID_STATE**: Cost element is in INACTIVE status and cannot be updated
|
|
57
|
+
- **TYPE_CHANGE_NOT_ALLOWED**: Changing the type (PRIMARY/SECONDARY) is never permitted
|
|
58
|
+
- **CATEGORY_CHANGE_NOT_ALLOWED**: Category cannot be changed when the cost element is in ACTIVE status
|
|
59
|
+
- **GL_ACCOUNT_CHANGE_NOT_ALLOWED**: GL account reference cannot be changed after activation
|
|
60
|
+
- **INVALID_CATEGORY_FOR_TYPE**: New category does not match the cost element type
|
|
61
|
+
- **GL_ACCOUNT_NOT_FOUND**: Updated GL account does not exist or is not active in an active Chart of Accounts
|
|
62
|
+
- **DUPLICATE_GL_ACCOUNT_REFERENCE**: Another PRIMARY cost element in the same company already references the specified GL account
|
|
63
|
+
- **INVALID_VALIDITY_PERIOD**: validFrom is after validTo
|
|
64
|
+
|
|
65
|
+
## Test Cases
|
|
66
|
+
|
|
67
|
+
- updates description on a DRAFT cost element
|
|
68
|
+
- updates description on an ACTIVE cost element
|
|
69
|
+
- updates name on a DRAFT cost element
|
|
70
|
+
- updates name on an ACTIVE cost element
|
|
71
|
+
- updates category on a DRAFT cost element
|
|
72
|
+
- returns error when changing category on an ACTIVE cost element
|
|
73
|
+
- returns error when changing type on any cost element
|
|
74
|
+
- returns error when changing GL account on an ACTIVE cost element
|
|
75
|
+
- updates GL account on a DRAFT PRIMARY cost element
|
|
76
|
+
- returns error when updated GL account does not exist
|
|
77
|
+
- returns error when updated GL account is already referenced by another PRIMARY element
|
|
78
|
+
- returns error when new category does not match the element type
|
|
79
|
+
- returns error when cost element does not exist
|
|
80
|
+
- returns error when cost element is INACTIVE
|
|
81
|
+
- returns error when validFrom is after validTo
|
|
82
|
+
- emits audit event recording previous and new field values
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# UpdateInternalOrder
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateInternalOrder modifies fields on an existing internal order. Updates are permitted when the order is in CREATED or RELEASED status. Orders in TECHNICALLY_COMPLETED or CLOSED status cannot be updated. The order type cannot be changed after the order has been released.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Internal order must exist
|
|
10
|
+
- Internal order must be in CREATED or RELEASED status
|
|
11
|
+
- Description, responsible person, cost center, and validity dates can be updated in CREATED or RELEASED status
|
|
12
|
+
- Order type cannot be changed after the order is released
|
|
13
|
+
- Orders in TECHNICALLY_COMPLETED or CLOSED status cannot be updated
|
|
14
|
+
- When updating validity dates, validFrom must precede validTo when both are set
|
|
15
|
+
- Updated cost center must belong to the same company
|
|
16
|
+
- Emits an audit event recording previous and new field values
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive update internal order request] --> B{Internal order exists?}
|
|
23
|
+
B -->|No| C[Return error: INTERNAL_ORDER_NOT_FOUND]
|
|
24
|
+
B -->|Yes| D{Status is CREATED or RELEASED?}
|
|
25
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
26
|
+
D -->|Yes| F{Order type change attempted after release?}
|
|
27
|
+
F -->|Yes| G[Return error: ORDER_TYPE_CHANGE_NOT_ALLOWED]
|
|
28
|
+
F -->|No| H{Cost center valid if changed?}
|
|
29
|
+
H -->|No| I[Return error: COST_CENTER_NOT_FOUND]
|
|
30
|
+
H -->|Yes| J{validFrom <= validTo when both set?}
|
|
31
|
+
J -->|No| K[Return error: INVALID_VALIDITY_PERIOD]
|
|
32
|
+
J -->|Yes| L[Apply updates to internal order]
|
|
33
|
+
L --> M[Emit audit event]
|
|
34
|
+
M --> N[Return updated internal order]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## External Dependencies
|
|
38
|
+
|
|
39
|
+
- None
|
|
40
|
+
|
|
41
|
+
## Error Scenarios
|
|
42
|
+
|
|
43
|
+
- **INTERNAL_ORDER_NOT_FOUND**: Internal order with the specified ID does not exist
|
|
44
|
+
- **INVALID_STATE**: Internal order is in TECHNICALLY_COMPLETED or CLOSED status and cannot be updated
|
|
45
|
+
- **ORDER_TYPE_CHANGE_NOT_ALLOWED**: Order type cannot be changed after the order is released
|
|
46
|
+
- **COST_CENTER_NOT_FOUND**: Updated cost center does not exist or does not belong to the same company
|
|
47
|
+
- **INVALID_VALIDITY_PERIOD**: validFrom is after validTo
|
|
48
|
+
|
|
49
|
+
## Test Cases
|
|
50
|
+
|
|
51
|
+
- updates description on a CREATED internal order
|
|
52
|
+
- updates description on a RELEASED internal order
|
|
53
|
+
- updates responsible person on a CREATED internal order
|
|
54
|
+
- updates cost center on a CREATED internal order
|
|
55
|
+
- updates validity dates on a CREATED internal order
|
|
56
|
+
- returns error when internal order does not exist
|
|
57
|
+
- returns error when internal order is TECHNICALLY_COMPLETED
|
|
58
|
+
- returns error when internal order is CLOSED
|
|
59
|
+
- returns error when changing order type after release
|
|
60
|
+
- returns error when updated cost center does not exist
|
|
61
|
+
- returns error when validFrom is after validTo
|
|
62
|
+
- emits audit event recording previous and new field values
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# UpdateProfitCenter
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
updateProfitCenter modifies fields on an existing profit center. In DRAFT status, all mutable fields can be updated. In ACTIVE status, only limited fields (description, responsible person) can be updated. INACTIVE profit centers cannot be updated.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Profit center must exist
|
|
10
|
+
- Profit center must be in DRAFT or ACTIVE status
|
|
11
|
+
- In DRAFT status: name, description, responsible person, validFrom, validTo can be updated
|
|
12
|
+
- In ACTIVE status: only description and responsible person can be updated
|
|
13
|
+
- When updating validTo, it must remain on or after validFrom
|
|
14
|
+
- INACTIVE profit centers cannot be updated
|
|
15
|
+
- Emits an audit event recording previous and new field values
|
|
16
|
+
|
|
17
|
+
## Process Flow
|
|
18
|
+
|
|
19
|
+
```mermaid
|
|
20
|
+
flowchart TD
|
|
21
|
+
A[Receive update profit center request] --> B{Profit center exists?}
|
|
22
|
+
B -->|No| C[Return error: PROFIT_CENTER_NOT_FOUND]
|
|
23
|
+
B -->|Yes| D{Status is DRAFT or ACTIVE?}
|
|
24
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
25
|
+
D -->|Yes| F{Status is ACTIVE and restricted field change?}
|
|
26
|
+
F -->|Yes| G[Return error: FIELD_NOT_UPDATABLE]
|
|
27
|
+
F -->|No| H{validTo >= validFrom when both set?}
|
|
28
|
+
H -->|No| I[Return error: INVALID_VALIDITY_PERIOD]
|
|
29
|
+
H -->|Yes| J[Apply updates to profit center]
|
|
30
|
+
J --> K[Emit audit event]
|
|
31
|
+
K --> L[Return updated profit center]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## External Dependencies
|
|
35
|
+
|
|
36
|
+
- None
|
|
37
|
+
|
|
38
|
+
## Error Scenarios
|
|
39
|
+
|
|
40
|
+
- **PROFIT_CENTER_NOT_FOUND**: Profit center with the specified ID does not exist
|
|
41
|
+
- **INVALID_STATE**: Profit center is in INACTIVE status and cannot be updated
|
|
42
|
+
- **FIELD_NOT_UPDATABLE**: Attempted to change a field that is not updatable in ACTIVE status
|
|
43
|
+
- **INVALID_VALIDITY_PERIOD**: validTo is before validFrom
|
|
44
|
+
|
|
45
|
+
## Test Cases
|
|
46
|
+
|
|
47
|
+
- updates name on a DRAFT profit center
|
|
48
|
+
- updates description on a DRAFT profit center
|
|
49
|
+
- updates description on an ACTIVE profit center
|
|
50
|
+
- updates responsible person on a DRAFT profit center
|
|
51
|
+
- updates responsible person on an ACTIVE profit center
|
|
52
|
+
- returns error when changing restricted fields on an ACTIVE profit center
|
|
53
|
+
- returns error when profit center does not exist
|
|
54
|
+
- returns error when profit center is INACTIVE
|
|
55
|
+
- returns error when validTo is before validFrom
|
|
56
|
+
- emits audit event recording previous and new field values
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# ValidateAllocationCycle
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
validateAllocationCycle transitions an allocation cycle from DRAFT status to VALIDATED status. Validation verifies that the cycle has at least one allocation rule and that receiver percentages sum to exactly 100% for each sender. Only DRAFT cycles can be validated.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Allocation cycle must exist
|
|
10
|
+
- Allocation cycle must be in DRAFT status to be validated
|
|
11
|
+
- Cycle must have at least one allocation rule
|
|
12
|
+
- Allocation rule percentages for each sender must sum to exactly 100%
|
|
13
|
+
- Percentage values must be positive (greater than zero)
|
|
14
|
+
- Upon validation, the cycle becomes eligible for execution
|
|
15
|
+
- Emits an audit event recording the status transition and acting user
|
|
16
|
+
|
|
17
|
+
## Process Flow
|
|
18
|
+
|
|
19
|
+
```mermaid
|
|
20
|
+
flowchart TD
|
|
21
|
+
A[Receive validate allocation cycle request] --> B{Allocation cycle exists?}
|
|
22
|
+
B -->|No| C[Return error: ALLOCATION_CYCLE_NOT_FOUND]
|
|
23
|
+
B -->|Yes| D{Status is DRAFT?}
|
|
24
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
25
|
+
D -->|Yes| F{Has at least one allocation rule?}
|
|
26
|
+
F -->|No| G[Return error: NO_ALLOCATION_RULES]
|
|
27
|
+
F -->|Yes| P{All percentages positive?}
|
|
28
|
+
P -->|No| Q[Return error: INVALID_PERCENTAGE]
|
|
29
|
+
P -->|Yes| H{Percentages sum to 100% per sender?}
|
|
30
|
+
H -->|No| I[Return error: INVALID_PERCENTAGE_SUM]
|
|
31
|
+
H -->|Yes| J[Transition status from DRAFT to VALIDATED]
|
|
32
|
+
J --> K[Emit audit event]
|
|
33
|
+
K --> L[Return validated allocation cycle]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## External Dependencies
|
|
37
|
+
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
## Error Scenarios
|
|
41
|
+
|
|
42
|
+
- **ALLOCATION_CYCLE_NOT_FOUND**: Allocation cycle with the specified ID does not exist
|
|
43
|
+
- **INVALID_STATE**: Allocation cycle is not in DRAFT status
|
|
44
|
+
- **NO_ALLOCATION_RULES**: Cycle has no allocation rules defined
|
|
45
|
+
- **INVALID_PERCENTAGE**: One or more percentage values are zero or negative
|
|
46
|
+
- **INVALID_PERCENTAGE_SUM**: Allocation rule percentages for one or more senders do not sum to exactly 100%
|
|
47
|
+
|
|
48
|
+
## Test Cases
|
|
49
|
+
|
|
50
|
+
- validates a DRAFT allocation cycle with valid rules transitioning it to VALIDATED status
|
|
51
|
+
- returns error when allocation cycle does not exist
|
|
52
|
+
- returns error when allocation cycle is not in DRAFT status
|
|
53
|
+
- returns error when cycle has no allocation rules
|
|
54
|
+
- returns error when any percentage is zero or negative
|
|
55
|
+
- returns error when percentages do not sum to 100% for a sender
|
|
56
|
+
- validates with multiple senders each summing to 100%
|
|
57
|
+
- emits audit event recording the status transition and acting user
|