@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.
Files changed (635) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +8 -4
  3. package/dist/cli.mjs +70 -70
  4. package/package.json +1 -1
  5. package/skills/erp-kit-app-5-impl-backend/SKILL.md +5 -5
  6. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -1
  7. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +37 -12
  8. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +3 -1
  9. package/skills/erp-kit-app-6-impl-frontend/references/component.md +90 -0
  10. package/skills/erp-kit-app-6-impl-frontend/references/detail-view.md +255 -0
  11. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +1 -5
  12. package/skills/erp-kit-app-7-impl-review/SKILL.md +3 -2
  13. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +14 -8
  14. package/skills/erp-kit-module-6-impl-review/SKILL.md +16 -19
  15. package/skills/erp-kit-module-shared/references/commands.md +68 -1
  16. package/src/commands/index.ts +8 -2
  17. package/src/commands/init.test.ts +24 -8
  18. package/src/commands/init.ts +5 -12
  19. package/src/commands/lib/distribute.test.ts +1 -20
  20. package/src/commands/lib/distribute.ts +0 -14
  21. package/src/commands/update.test.ts +1 -1
  22. package/src/generator/scaffold.ts +25 -4
  23. package/src/module.ts +4 -1
  24. package/src/modules/accounting/README.md +63 -0
  25. package/src/modules/accounting/command/activateBudget.generated.ts +6 -0
  26. package/src/modules/accounting/command/activateBudget.test.ts +119 -0
  27. package/src/modules/accounting/command/activateBudget.ts +77 -0
  28. package/src/modules/accounting/command/activateCostElement.generated.ts +6 -0
  29. package/src/modules/accounting/command/activateCostElement.test.ts +59 -0
  30. package/src/modules/accounting/command/activateCostElement.ts +41 -0
  31. package/src/modules/accounting/command/activateProfitCenter.generated.ts +6 -0
  32. package/src/modules/accounting/command/activateProfitCenter.test.ts +60 -0
  33. package/src/modules/accounting/command/activateProfitCenter.ts +38 -0
  34. package/src/modules/accounting/command/approveBudget.generated.ts +6 -0
  35. package/src/modules/accounting/command/approveBudget.test.ts +69 -0
  36. package/src/modules/accounting/command/approveBudget.ts +47 -0
  37. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.generated.ts +6 -0
  38. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.test.ts +112 -0
  39. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.ts +67 -0
  40. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.generated.ts +6 -0
  41. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.test.ts +123 -0
  42. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.ts +71 -0
  43. package/src/modules/accounting/command/closeBudget.generated.ts +6 -0
  44. package/src/modules/accounting/command/closeBudget.test.ts +93 -0
  45. package/src/modules/accounting/command/closeBudget.ts +40 -0
  46. package/src/modules/accounting/command/closeInternalOrder.generated.ts +6 -0
  47. package/src/modules/accounting/command/closeInternalOrder.test.ts +74 -0
  48. package/src/modules/accounting/command/closeInternalOrder.ts +38 -0
  49. package/src/modules/accounting/command/consumeCommitment.generated.ts +6 -0
  50. package/src/modules/accounting/command/consumeCommitment.test.ts +123 -0
  51. package/src/modules/accounting/command/consumeCommitment.ts +62 -0
  52. package/src/modules/accounting/command/createAllocationCycle.generated.ts +6 -0
  53. package/src/modules/accounting/command/createAllocationCycle.test.ts +166 -0
  54. package/src/modules/accounting/command/createAllocationCycle.ts +68 -0
  55. package/src/modules/accounting/command/createAllocationRule.generated.ts +6 -0
  56. package/src/modules/accounting/command/createAllocationRule.test.ts +195 -0
  57. package/src/modules/accounting/command/createAllocationRule.ts +103 -0
  58. package/src/modules/accounting/command/createBudget.generated.ts +6 -0
  59. package/src/modules/accounting/command/createBudget.test.ts +159 -0
  60. package/src/modules/accounting/command/createBudget.ts +100 -0
  61. package/src/modules/accounting/command/createBudgetLineItem.generated.ts +6 -0
  62. package/src/modules/accounting/command/createBudgetLineItem.test.ts +178 -0
  63. package/src/modules/accounting/command/createBudgetLineItem.ts +104 -0
  64. package/src/modules/accounting/command/createCostCenter.generated.ts +6 -0
  65. package/src/modules/accounting/command/createCostCenter.test.ts +179 -0
  66. package/src/modules/accounting/command/createCostCenter.ts +112 -0
  67. package/src/modules/accounting/command/createCostCenterHierarchy.generated.ts +6 -0
  68. package/src/modules/accounting/command/createCostCenterHierarchy.test.ts +91 -0
  69. package/src/modules/accounting/command/createCostCenterHierarchy.ts +48 -0
  70. package/src/modules/accounting/command/createCostCenterHierarchyNode.generated.ts +6 -0
  71. package/src/modules/accounting/command/createCostCenterHierarchyNode.test.ts +171 -0
  72. package/src/modules/accounting/command/createCostCenterHierarchyNode.ts +117 -0
  73. package/src/modules/accounting/command/createCostElement.generated.ts +6 -0
  74. package/src/modules/accounting/command/createCostElement.test.ts +317 -0
  75. package/src/modules/accounting/command/createCostElement.ts +149 -0
  76. package/src/modules/accounting/command/createInternalOrder.generated.ts +6 -0
  77. package/src/modules/accounting/command/createInternalOrder.test.ts +206 -0
  78. package/src/modules/accounting/command/createInternalOrder.ts +104 -0
  79. package/src/modules/accounting/command/createPlanVersion.generated.ts +6 -0
  80. package/src/modules/accounting/command/createPlanVersion.test.ts +230 -0
  81. package/src/modules/accounting/command/createPlanVersion.ts +71 -0
  82. package/src/modules/accounting/command/createProfitCenter.generated.ts +6 -0
  83. package/src/modules/accounting/command/createProfitCenter.test.ts +227 -0
  84. package/src/modules/accounting/command/createProfitCenter.ts +81 -0
  85. package/src/modules/accounting/command/createProfitCenterHierarchy.generated.ts +6 -0
  86. package/src/modules/accounting/command/createProfitCenterHierarchy.test.ts +91 -0
  87. package/src/modules/accounting/command/createProfitCenterHierarchy.ts +46 -0
  88. package/src/modules/accounting/command/createProfitCenterHierarchyNode.generated.ts +6 -0
  89. package/src/modules/accounting/command/createProfitCenterHierarchyNode.test.ts +160 -0
  90. package/src/modules/accounting/command/createProfitCenterHierarchyNode.ts +109 -0
  91. package/src/modules/accounting/command/deactivateCostElement.generated.ts +6 -0
  92. package/src/modules/accounting/command/deactivateCostElement.test.ts +59 -0
  93. package/src/modules/accounting/command/deactivateCostElement.ts +41 -0
  94. package/src/modules/accounting/command/deactivateProfitCenter.generated.ts +6 -0
  95. package/src/modules/accounting/command/deactivateProfitCenter.test.ts +60 -0
  96. package/src/modules/accounting/command/deactivateProfitCenter.ts +42 -0
  97. package/src/modules/accounting/command/deleteAllocationCycle.generated.ts +6 -0
  98. package/src/modules/accounting/command/deleteAllocationCycle.test.ts +90 -0
  99. package/src/modules/accounting/command/deleteAllocationCycle.ts +39 -0
  100. package/src/modules/accounting/command/deleteAllocationRule.generated.ts +6 -0
  101. package/src/modules/accounting/command/deleteAllocationRule.test.ts +98 -0
  102. package/src/modules/accounting/command/deleteAllocationRule.ts +40 -0
  103. package/src/modules/accounting/command/deleteBudget.generated.ts +6 -0
  104. package/src/modules/accounting/command/deleteBudget.test.ts +90 -0
  105. package/src/modules/accounting/command/deleteBudget.ts +35 -0
  106. package/src/modules/accounting/command/deleteBudgetLineItem.generated.ts +6 -0
  107. package/src/modules/accounting/command/deleteBudgetLineItem.test.ts +85 -0
  108. package/src/modules/accounting/command/deleteBudgetLineItem.ts +50 -0
  109. package/src/modules/accounting/command/deleteCostCenter.generated.ts +6 -0
  110. package/src/modules/accounting/command/deleteCostCenter.test.ts +79 -0
  111. package/src/modules/accounting/command/deleteCostCenter.ts +67 -0
  112. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.generated.ts +6 -0
  113. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.test.ts +59 -0
  114. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.ts +58 -0
  115. package/src/modules/accounting/command/deleteCostElement.generated.ts +6 -0
  116. package/src/modules/accounting/command/deleteCostElement.test.ts +58 -0
  117. package/src/modules/accounting/command/deleteCostElement.ts +33 -0
  118. package/src/modules/accounting/command/deleteInternalOrder.generated.ts +6 -0
  119. package/src/modules/accounting/command/deleteInternalOrder.test.ts +81 -0
  120. package/src/modules/accounting/command/deleteInternalOrder.ts +37 -0
  121. package/src/modules/accounting/command/deleteProfitCenter.generated.ts +6 -0
  122. package/src/modules/accounting/command/deleteProfitCenter.test.ts +68 -0
  123. package/src/modules/accounting/command/deleteProfitCenter.ts +39 -0
  124. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.generated.ts +6 -0
  125. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.test.ts +72 -0
  126. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.ts +61 -0
  127. package/src/modules/accounting/command/executeAllocationCycle.generated.ts +6 -0
  128. package/src/modules/accounting/command/executeAllocationCycle.test.ts +167 -0
  129. package/src/modules/accounting/command/executeAllocationCycle.ts +94 -0
  130. package/src/modules/accounting/command/finalizeVarianceReport.generated.ts +6 -0
  131. package/src/modules/accounting/command/finalizeVarianceReport.test.ts +60 -0
  132. package/src/modules/accounting/command/finalizeVarianceReport.ts +45 -0
  133. package/src/modules/accounting/command/generateVarianceReport.generated.ts +6 -0
  134. package/src/modules/accounting/command/generateVarianceReport.test.ts +386 -0
  135. package/src/modules/accounting/command/generateVarianceReport.ts +219 -0
  136. package/src/modules/accounting/command/invalidateAllocationCycle.generated.ts +6 -0
  137. package/src/modules/accounting/command/invalidateAllocationCycle.test.ts +84 -0
  138. package/src/modules/accounting/command/invalidateAllocationCycle.ts +45 -0
  139. package/src/modules/accounting/command/moveCostCenterHierarchyNode.generated.ts +6 -0
  140. package/src/modules/accounting/command/moveCostCenterHierarchyNode.test.ts +135 -0
  141. package/src/modules/accounting/command/moveCostCenterHierarchyNode.ts +81 -0
  142. package/src/modules/accounting/command/postAllocationCycle.generated.ts +6 -0
  143. package/src/modules/accounting/command/postAllocationCycle.test.ts +98 -0
  144. package/src/modules/accounting/command/postAllocationCycle.ts +65 -0
  145. package/src/modules/accounting/command/reactivateCostElement.generated.ts +6 -0
  146. package/src/modules/accounting/command/reactivateCostElement.test.ts +59 -0
  147. package/src/modules/accounting/command/reactivateCostElement.ts +41 -0
  148. package/src/modules/accounting/command/reactivateProfitCenter.generated.ts +6 -0
  149. package/src/modules/accounting/command/reactivateProfitCenter.test.ts +60 -0
  150. package/src/modules/accounting/command/reactivateProfitCenter.ts +42 -0
  151. package/src/modules/accounting/command/recordCommitment.generated.ts +6 -0
  152. package/src/modules/accounting/command/recordCommitment.test.ts +157 -0
  153. package/src/modules/accounting/command/recordCommitment.ts +113 -0
  154. package/src/modules/accounting/command/rejectBudget.generated.ts +6 -0
  155. package/src/modules/accounting/command/rejectBudget.test.ts +105 -0
  156. package/src/modules/accounting/command/rejectBudget.ts +51 -0
  157. package/src/modules/accounting/command/releaseCommitment.generated.ts +6 -0
  158. package/src/modules/accounting/command/releaseCommitment.test.ts +94 -0
  159. package/src/modules/accounting/command/releaseCommitment.ts +51 -0
  160. package/src/modules/accounting/command/releaseInternalOrder.generated.ts +6 -0
  161. package/src/modules/accounting/command/releaseInternalOrder.test.ts +74 -0
  162. package/src/modules/accounting/command/releaseInternalOrder.ts +38 -0
  163. package/src/modules/accounting/command/reverseAllocationCycle.generated.ts +6 -0
  164. package/src/modules/accounting/command/reverseAllocationCycle.test.ts +124 -0
  165. package/src/modules/accounting/command/reverseAllocationCycle.ts +63 -0
  166. package/src/modules/accounting/command/submitBudget.generated.ts +6 -0
  167. package/src/modules/accounting/command/submitBudget.test.ts +60 -0
  168. package/src/modules/accounting/command/submitBudget.ts +51 -0
  169. package/src/modules/accounting/command/technicallyCompleteInternalOrder.generated.ts +6 -0
  170. package/src/modules/accounting/command/technicallyCompleteInternalOrder.test.ts +74 -0
  171. package/src/modules/accounting/command/technicallyCompleteInternalOrder.ts +42 -0
  172. package/src/modules/accounting/command/updateAllocationCycle.generated.ts +6 -0
  173. package/src/modules/accounting/command/updateAllocationCycle.test.ts +112 -0
  174. package/src/modules/accounting/command/updateAllocationCycle.ts +41 -0
  175. package/src/modules/accounting/command/updateBudget.generated.ts +6 -0
  176. package/src/modules/accounting/command/updateBudget.test.ts +112 -0
  177. package/src/modules/accounting/command/updateBudget.ts +44 -0
  178. package/src/modules/accounting/command/updateCostCenter.generated.ts +6 -0
  179. package/src/modules/accounting/command/updateCostCenter.test.ts +105 -0
  180. package/src/modules/accounting/command/updateCostCenter.ts +79 -0
  181. package/src/modules/accounting/command/updateCostElement.generated.ts +6 -0
  182. package/src/modules/accounting/command/updateCostElement.test.ts +265 -0
  183. package/src/modules/accounting/command/updateCostElement.ts +158 -0
  184. package/src/modules/accounting/command/updateInternalOrder.generated.ts +6 -0
  185. package/src/modules/accounting/command/updateInternalOrder.test.ts +209 -0
  186. package/src/modules/accounting/command/updateInternalOrder.ts +88 -0
  187. package/src/modules/accounting/command/updateProfitCenter.generated.ts +6 -0
  188. package/src/modules/accounting/command/updateProfitCenter.test.ts +162 -0
  189. package/src/modules/accounting/command/updateProfitCenter.ts +73 -0
  190. package/src/modules/accounting/command/validateAllocationCycle.generated.ts +6 -0
  191. package/src/modules/accounting/command/validateAllocationCycle.test.ts +141 -0
  192. package/src/modules/accounting/command/validateAllocationCycle.ts +80 -0
  193. package/src/modules/accounting/db/allocationCycle.ts +59 -0
  194. package/src/modules/accounting/db/allocationResult.ts +58 -0
  195. package/src/modules/accounting/db/allocationRule.ts +48 -0
  196. package/src/modules/accounting/db/budget.ts +84 -0
  197. package/src/modules/accounting/db/budgetLineItem.ts +64 -0
  198. package/src/modules/accounting/db/commitment.ts +60 -0
  199. package/src/modules/accounting/db/costCenter.ts +73 -0
  200. package/src/modules/accounting/db/costCenterHierarchy.ts +37 -0
  201. package/src/modules/accounting/db/costCenterHierarchyNode.ts +48 -0
  202. package/src/modules/accounting/db/costElement.ts +56 -0
  203. package/src/modules/accounting/db/internalOrder.ts +69 -0
  204. package/src/modules/accounting/db/planVersion.ts +47 -0
  205. package/src/modules/accounting/db/profitCenter.ts +52 -0
  206. package/src/modules/accounting/db/profitCenterHierarchy.ts +36 -0
  207. package/src/modules/accounting/db/profitCenterHierarchyAssignment.ts +62 -0
  208. package/src/modules/accounting/db/profitCenterHierarchyNode.ts +48 -0
  209. package/src/modules/accounting/db/varianceReport.ts +54 -0
  210. package/src/modules/accounting/db/varianceReportLine.ts +62 -0
  211. package/src/modules/accounting/docs/commands/ActivateBudget.md +54 -0
  212. package/src/modules/accounting/docs/commands/ActivateCostElement.md +43 -0
  213. package/src/modules/accounting/docs/commands/ActivateProfitCenter.md +43 -0
  214. package/src/modules/accounting/docs/commands/ApproveBudget.md +46 -0
  215. package/src/modules/accounting/docs/commands/AssignCostCenterToHierarchyNode.md +46 -0
  216. package/src/modules/accounting/docs/commands/AssignProfitCenterToHierarchyNode.md +47 -0
  217. package/src/modules/accounting/docs/commands/CloseBudget.md +47 -0
  218. package/src/modules/accounting/docs/commands/CloseInternalOrder.md +45 -0
  219. package/src/modules/accounting/docs/commands/ConsumeCommitment.md +53 -0
  220. package/src/modules/accounting/docs/commands/CreateAllocationCycle.md +55 -0
  221. package/src/modules/accounting/docs/commands/CreateAllocationRule.md +60 -0
  222. package/src/modules/accounting/docs/commands/CreateBudget.md +65 -0
  223. package/src/modules/accounting/docs/commands/CreateBudgetLineItem.md +66 -0
  224. package/src/modules/accounting/docs/commands/CreateCostCenter.md +64 -0
  225. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchy.md +45 -0
  226. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchyNode.md +61 -0
  227. package/src/modules/accounting/docs/commands/CreateCostElement.md +91 -0
  228. package/src/modules/accounting/docs/commands/CreateInternalOrder.md +72 -0
  229. package/src/modules/accounting/docs/commands/CreatePlanVersion.md +59 -0
  230. package/src/modules/accounting/docs/commands/CreateProfitCenter.md +63 -0
  231. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchy.md +45 -0
  232. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchyNode.md +60 -0
  233. package/src/modules/accounting/docs/commands/DeactivateCostElement.md +43 -0
  234. package/src/modules/accounting/docs/commands/DeactivateProfitCenter.md +44 -0
  235. package/src/modules/accounting/docs/commands/DeleteAllocationCycle.md +46 -0
  236. package/src/modules/accounting/docs/commands/DeleteAllocationRule.md +45 -0
  237. package/src/modules/accounting/docs/commands/DeleteBudget.md +46 -0
  238. package/src/modules/accounting/docs/commands/DeleteBudgetLineItem.md +45 -0
  239. package/src/modules/accounting/docs/commands/DeleteCostCenter.md +50 -0
  240. package/src/modules/accounting/docs/commands/DeleteCostCenterHierarchyNode.md +45 -0
  241. package/src/modules/accounting/docs/commands/DeleteCostElement.md +43 -0
  242. package/src/modules/accounting/docs/commands/DeleteInternalOrder.md +45 -0
  243. package/src/modules/accounting/docs/commands/DeleteProfitCenter.md +46 -0
  244. package/src/modules/accounting/docs/commands/DeleteProfitCenterHierarchyNode.md +46 -0
  245. package/src/modules/accounting/docs/commands/ExecuteAllocationCycle.md +54 -0
  246. package/src/modules/accounting/docs/commands/FinalizeVarianceReport.md +44 -0
  247. package/src/modules/accounting/docs/commands/GenerateVarianceReport.md +83 -0
  248. package/src/modules/accounting/docs/commands/InvalidateAllocationCycle.md +45 -0
  249. package/src/modules/accounting/docs/commands/MoveCostCenterHierarchyNode.md +51 -0
  250. package/src/modules/accounting/docs/commands/PostAllocationCycle.md +58 -0
  251. package/src/modules/accounting/docs/commands/ReactivateCostElement.md +43 -0
  252. package/src/modules/accounting/docs/commands/ReactivateProfitCenter.md +43 -0
  253. package/src/modules/accounting/docs/commands/RecordCommitment.md +60 -0
  254. package/src/modules/accounting/docs/commands/RejectBudget.md +49 -0
  255. package/src/modules/accounting/docs/commands/ReleaseCommitment.md +45 -0
  256. package/src/modules/accounting/docs/commands/ReleaseInternalOrder.md +44 -0
  257. package/src/modules/accounting/docs/commands/ReverseAllocationCycle.md +55 -0
  258. package/src/modules/accounting/docs/commands/SubmitBudget.md +47 -0
  259. package/src/modules/accounting/docs/commands/TechnicallyCompleteInternalOrder.md +44 -0
  260. package/src/modules/accounting/docs/commands/UpdateAllocationCycle.md +45 -0
  261. package/src/modules/accounting/docs/commands/UpdateBudget.md +47 -0
  262. package/src/modules/accounting/docs/commands/UpdateCostCenter.md +50 -0
  263. package/src/modules/accounting/docs/commands/UpdateCostElement.md +82 -0
  264. package/src/modules/accounting/docs/commands/UpdateInternalOrder.md +62 -0
  265. package/src/modules/accounting/docs/commands/UpdateProfitCenter.md +56 -0
  266. package/src/modules/accounting/docs/commands/ValidateAllocationCycle.md +57 -0
  267. package/src/modules/accounting/docs/features/budget-management.md +147 -0
  268. package/src/modules/accounting/docs/features/cost-allocation.md +129 -0
  269. package/src/modules/accounting/docs/features/cost-center-management.md +118 -0
  270. package/src/modules/accounting/docs/features/cost-element-management.md +114 -0
  271. package/src/modules/accounting/docs/features/internal-order-management.md +111 -0
  272. package/src/modules/accounting/docs/features/profit-center-management.md +120 -0
  273. package/src/modules/accounting/docs/features/variance-analysis.md +130 -0
  274. package/src/modules/accounting/docs/models/AllocationCycle.md +81 -0
  275. package/src/modules/accounting/docs/models/AllocationResult.md +37 -0
  276. package/src/modules/accounting/docs/models/AllocationRule.md +41 -0
  277. package/src/modules/accounting/docs/models/Budget.md +77 -0
  278. package/src/modules/accounting/docs/models/BudgetLineItem.md +40 -0
  279. package/src/modules/accounting/docs/models/Commitment.md +45 -0
  280. package/src/modules/accounting/docs/models/CostCenter.md +51 -0
  281. package/src/modules/accounting/docs/models/CostCenterHierarchy.md +38 -0
  282. package/src/modules/accounting/docs/models/CostCenterHierarchyNode.md +41 -0
  283. package/src/modules/accounting/docs/models/CostElement.md +66 -0
  284. package/src/modules/accounting/docs/models/InternalOrder.md +67 -0
  285. package/src/modules/accounting/docs/models/PlanVersion.md +36 -0
  286. package/src/modules/accounting/docs/models/ProfitCenter.md +66 -0
  287. package/src/modules/accounting/docs/models/ProfitCenterHierarchy.md +36 -0
  288. package/src/modules/accounting/docs/models/ProfitCenterHierarchyAssignment.md +36 -0
  289. package/src/modules/accounting/docs/models/ProfitCenterHierarchyNode.md +39 -0
  290. package/src/modules/accounting/docs/models/VarianceReport.md +58 -0
  291. package/src/modules/accounting/docs/models/VarianceReportLine.md +43 -0
  292. package/src/modules/accounting/docs/queries/CalculateBudgetAvailability.md +64 -0
  293. package/src/modules/accounting/docs/queries/GetAllocationCycle.md +43 -0
  294. package/src/modules/accounting/docs/queries/GetBudget.md +42 -0
  295. package/src/modules/accounting/docs/queries/GetCostCenter.md +38 -0
  296. package/src/modules/accounting/docs/queries/GetCostCenterHierarchy.md +45 -0
  297. package/src/modules/accounting/docs/queries/GetCostElement.md +39 -0
  298. package/src/modules/accounting/docs/queries/GetInternalOrder.md +42 -0
  299. package/src/modules/accounting/docs/queries/GetProfitCenter.md +38 -0
  300. package/src/modules/accounting/docs/queries/GetProfitCenterHierarchy.md +46 -0
  301. package/src/modules/accounting/docs/queries/GetVarianceReport.md +45 -0
  302. package/src/modules/accounting/docs/queries/ListAllocationCycles.md +63 -0
  303. package/src/modules/accounting/docs/queries/ListBudgets.md +70 -0
  304. package/src/modules/accounting/docs/queries/ListCostCenters.md +55 -0
  305. package/src/modules/accounting/docs/queries/ListCostElements.md +63 -0
  306. package/src/modules/accounting/docs/queries/ListInternalOrders.md +62 -0
  307. package/src/modules/accounting/docs/queries/ListProfitCenters.md +49 -0
  308. package/src/modules/accounting/generated/enums.ts +110 -0
  309. package/src/modules/accounting/generated/kysely-tailordb.ts +302 -0
  310. package/src/modules/accounting/index.ts +2 -0
  311. package/src/modules/accounting/lib/_db_deps.ts +70 -0
  312. package/src/modules/accounting/lib/actualAmounts.ts +93 -0
  313. package/src/modules/accounting/lib/allocationPosting.ts +152 -0
  314. package/src/modules/accounting/lib/errors.generated.ts +432 -0
  315. package/src/modules/accounting/lib/permissions.generated.ts +61 -0
  316. package/src/modules/accounting/lib/types.ts +114 -0
  317. package/src/modules/accounting/module.ts +428 -0
  318. package/src/modules/accounting/permissions.ts +3 -0
  319. package/src/modules/accounting/query/calculateBudgetAvailability.generated.ts +5 -0
  320. package/src/modules/accounting/query/calculateBudgetAvailability.test.ts +229 -0
  321. package/src/modules/accounting/query/calculateBudgetAvailability.ts +147 -0
  322. package/src/modules/accounting/query/getAllocationCycle.generated.ts +5 -0
  323. package/src/modules/accounting/query/getAllocationCycle.test.ts +94 -0
  324. package/src/modules/accounting/query/getAllocationCycle.ts +37 -0
  325. package/src/modules/accounting/query/getBudget.generated.ts +5 -0
  326. package/src/modules/accounting/query/getBudget.test.ts +80 -0
  327. package/src/modules/accounting/query/getBudget.ts +31 -0
  328. package/src/modules/accounting/query/getCostCenter.generated.ts +5 -0
  329. package/src/modules/accounting/query/getCostCenter.test.ts +50 -0
  330. package/src/modules/accounting/query/getCostCenter.ts +33 -0
  331. package/src/modules/accounting/query/getCostCenterHierarchy.generated.ts +5 -0
  332. package/src/modules/accounting/query/getCostCenterHierarchy.test.ts +100 -0
  333. package/src/modules/accounting/query/getCostCenterHierarchy.ts +80 -0
  334. package/src/modules/accounting/query/getCostElement.generated.ts +5 -0
  335. package/src/modules/accounting/query/getCostElement.test.ts +57 -0
  336. package/src/modules/accounting/query/getCostElement.ts +21 -0
  337. package/src/modules/accounting/query/getInternalOrder.generated.ts +5 -0
  338. package/src/modules/accounting/query/getInternalOrder.test.ts +73 -0
  339. package/src/modules/accounting/query/getInternalOrder.ts +21 -0
  340. package/src/modules/accounting/query/getProfitCenter.generated.ts +5 -0
  341. package/src/modules/accounting/query/getProfitCenter.test.ts +65 -0
  342. package/src/modules/accounting/query/getProfitCenter.ts +31 -0
  343. package/src/modules/accounting/query/getProfitCenterHierarchy.generated.ts +5 -0
  344. package/src/modules/accounting/query/getProfitCenterHierarchy.test.ts +97 -0
  345. package/src/modules/accounting/query/getProfitCenterHierarchy.ts +87 -0
  346. package/src/modules/accounting/query/getVarianceReport.generated.ts +5 -0
  347. package/src/modules/accounting/query/getVarianceReport.test.ts +108 -0
  348. package/src/modules/accounting/query/getVarianceReport.ts +31 -0
  349. package/src/modules/accounting/query/listAllocationCycles.generated.ts +5 -0
  350. package/src/modules/accounting/query/listAllocationCycles.test.ts +152 -0
  351. package/src/modules/accounting/query/listAllocationCycles.ts +96 -0
  352. package/src/modules/accounting/query/listBudgets.generated.ts +5 -0
  353. package/src/modules/accounting/query/listBudgets.test.ts +150 -0
  354. package/src/modules/accounting/query/listBudgets.ts +85 -0
  355. package/src/modules/accounting/query/listCostCenters.generated.ts +5 -0
  356. package/src/modules/accounting/query/listCostCenters.test.ts +111 -0
  357. package/src/modules/accounting/query/listCostCenters.ts +71 -0
  358. package/src/modules/accounting/query/listCostElements.generated.ts +5 -0
  359. package/src/modules/accounting/query/listCostElements.test.ts +138 -0
  360. package/src/modules/accounting/query/listCostElements.ts +105 -0
  361. package/src/modules/accounting/query/listInternalOrders.generated.ts +5 -0
  362. package/src/modules/accounting/query/listInternalOrders.test.ts +129 -0
  363. package/src/modules/accounting/query/listInternalOrders.ts +94 -0
  364. package/src/modules/accounting/query/listProfitCenters.generated.ts +5 -0
  365. package/src/modules/accounting/query/listProfitCenters.test.ts +94 -0
  366. package/src/modules/accounting/query/listProfitCenters.ts +56 -0
  367. package/src/modules/accounting/seed/index.ts +19 -0
  368. package/src/modules/accounting/tailor.config.ts +13 -0
  369. package/src/modules/accounting/testing/commandTestUtils.ts +35 -0
  370. package/src/modules/accounting/testing/fixtures.ts +502 -0
  371. package/src/modules/audit/command/logAuditEvent.ts +43 -38
  372. package/src/modules/audit/command/updateAuditPolicy.ts +2 -2
  373. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +1 -1
  374. package/src/modules/audit/module.ts +4 -0
  375. package/src/modules/business-partner/command/updateContactPerson.ts +3 -4
  376. package/src/modules/business-partner/command/updatePartner.ts +13 -6
  377. package/src/modules/business-partner/command/updatePartnerAddress.ts +13 -6
  378. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +3 -4
  379. package/src/modules/business-partner/command/updatePartnerIdentification.ts +3 -4
  380. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +3 -3
  381. package/src/modules/business-partner/docs/commands/UpdatePartner.md +2 -2
  382. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +2 -2
  383. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +2 -2
  384. package/src/modules/coa-management/command/updateAccount.ts +3 -3
  385. package/src/modules/coa-management/command/updateAccountGroup.test.ts +22 -0
  386. package/src/modules/coa-management/command/updateAccountGroup.ts +30 -18
  387. package/src/modules/coa-management/command/updateChartOfAccounts.ts +3 -4
  388. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +4 -3
  389. package/src/modules/finance-ledger/command/updateFiscalYear.ts +2 -3
  390. package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +0 -17
  391. package/src/modules/finance-ledger/command/updateJournalEntry.ts +2 -10
  392. package/src/modules/finance-ledger/command/updateJournalLine.ts +2 -3
  393. package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +1 -4
  394. package/src/modules/inventory/command/updateLot.test.ts +1 -1
  395. package/src/modules/inventory/command/updateLot.ts +2 -3
  396. package/src/modules/inventory/command/updateStockMovement.ts +2 -3
  397. package/src/modules/inventory/command/updateStorageLocation.ts +12 -17
  398. package/src/modules/inventory/command/updateValuationPolicy.ts +2 -3
  399. package/src/modules/inventory/command/updateWarehouse.ts +2 -3
  400. package/src/modules/inventory/docs/commands/UpdateLot.md +3 -3
  401. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +6 -6
  402. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +2 -2
  403. package/src/modules/item-management/command/updateItem.test.ts +16 -12
  404. package/src/modules/item-management/command/updateItem.ts +47 -31
  405. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +15 -16
  406. package/src/modules/item-management/command/updateTaxonomyNode.ts +42 -29
  407. package/src/modules/item-management/docs/commands/UpdateItem.md +7 -11
  408. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +10 -14
  409. package/src/modules/manufacturing/command/updateBillOfMaterial.ts +3 -4
  410. package/src/modules/manufacturing/command/updateProductionOrder.ts +3 -4
  411. package/src/modules/manufacturing/command/updateRouting.ts +3 -4
  412. package/src/modules/manufacturing/command/updateWorkCenter.test.ts +16 -7
  413. package/src/modules/manufacturing/command/updateWorkCenter.ts +41 -38
  414. package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +2 -0
  415. package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +2 -0
  416. package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +1 -0
  417. package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +1 -0
  418. package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +6 -5
  419. package/src/modules/manufacturing/docs/models/BillOfMaterialLine.md +42 -0
  420. package/src/modules/manufacturing/docs/models/CostVarianceLine.md +36 -0
  421. package/src/modules/manufacturing/docs/models/ManufacturingCostLine.md +37 -0
  422. package/src/modules/manufacturing/docs/models/ManufacturingCostSettlementRecord.md +34 -0
  423. package/src/modules/manufacturing/docs/models/ProductionOrderBomSnapshot.md +35 -0
  424. package/src/modules/manufacturing/docs/models/ProductionOrderCostBaseline.md +36 -0
  425. package/src/modules/manufacturing/docs/models/ProductionOrderMaterialRequirement.md +35 -0
  426. package/src/modules/manufacturing/docs/models/ProductionOrderRoutingSnapshot.md +34 -0
  427. package/src/modules/manufacturing/docs/models/RoutingOperation.md +40 -0
  428. package/src/modules/manufacturing/docs/models/WorkOrderExecutionEvent.md +38 -0
  429. package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +1 -0
  430. package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +1 -0
  431. package/src/modules/organization/command/updateCompany.test.ts +6 -6
  432. package/src/modules/organization/command/updateCompany.ts +3 -4
  433. package/src/modules/organization/command/updateDepartment.test.ts +7 -7
  434. package/src/modules/organization/command/updateDepartment.ts +13 -12
  435. package/src/modules/organization/command/updateSite.test.ts +10 -10
  436. package/src/modules/organization/command/updateSite.ts +3 -4
  437. package/src/modules/organization/docs/commands/UpdateCompany.md +6 -6
  438. package/src/modules/organization/docs/commands/UpdateDepartment.md +9 -10
  439. package/src/modules/organization/docs/commands/UpdateSite.md +12 -12
  440. package/src/modules/product-management/command/updateProduct.test.ts +17 -11
  441. package/src/modules/product-management/command/updateProduct.ts +45 -28
  442. package/src/modules/product-management/command/updateProductAttribute.test.ts +16 -21
  443. package/src/modules/product-management/command/updateProductAttribute.ts +40 -26
  444. package/src/modules/product-management/command/updateProductAttributeValue.ts +2 -3
  445. package/src/modules/product-management/command/updateProductCategory.test.ts +14 -19
  446. package/src/modules/product-management/command/updateProductCategory.ts +42 -26
  447. package/src/modules/product-management/docs/commands/UpdateProduct.md +16 -20
  448. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +10 -14
  449. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +10 -14
  450. package/src/modules/purchase/command/updateGoodsReceipt.ts +2 -3
  451. package/src/modules/purchase/command/updatePurchaseBill.ts +2 -3
  452. package/src/modules/purchase/command/updatePurchaseOrder.ts +2 -3
  453. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +2 -3
  454. package/src/modules/purchase/command/updatePurchasePriceList.ts +2 -3
  455. package/src/modules/purchase/command/updatePurchasePriceRule.ts +2 -3
  456. package/src/modules/sales/command/updateChannel.test.ts +4 -4
  457. package/src/modules/sales/command/updateChannel.ts +2 -3
  458. package/src/modules/sales/command/updateListing.test.ts +2 -2
  459. package/src/modules/sales/command/updateListing.ts +2 -3
  460. package/src/modules/sales/command/updateSalesCreditNote.test.ts +2 -2
  461. package/src/modules/sales/command/updateSalesCreditNote.ts +2 -3
  462. package/src/modules/sales/command/updateSalesInvoice.test.ts +2 -2
  463. package/src/modules/sales/command/updateSalesInvoice.ts +2 -3
  464. package/src/modules/sales/command/updateSalesOrder.test.ts +3 -3
  465. package/src/modules/sales/command/updateSalesOrder.ts +2 -3
  466. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +2 -2
  467. package/src/modules/sales/command/updateSalesPaymentTerm.ts +2 -3
  468. package/src/modules/sales/command/updateSalesPriceList.test.ts +3 -3
  469. package/src/modules/sales/command/updateSalesPriceList.ts +2 -3
  470. package/src/modules/sales/command/updateSalesPriceRule.test.ts +3 -3
  471. package/src/modules/sales/command/updateSalesPriceRule.ts +2 -3
  472. package/src/modules/sales/command/updateShipment.test.ts +2 -2
  473. package/src/modules/sales/command/updateShipment.ts +2 -3
  474. package/src/modules/sales/docs/commands/UpdateChannel.md +4 -4
  475. package/src/modules/sales/docs/commands/UpdateListing.md +2 -2
  476. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +2 -2
  477. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +2 -2
  478. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +3 -3
  479. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +2 -2
  480. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +3 -3
  481. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +3 -3
  482. package/src/modules/sales/docs/commands/UpdateShipment.md +2 -2
  483. package/src/modules/user-management/README.md +2 -1
  484. package/src/modules/user-management/command/updateOwnProfile.generated.ts +6 -0
  485. package/src/modules/user-management/command/updateOwnProfile.test.ts +191 -0
  486. package/src/modules/user-management/command/updateOwnProfile.ts +82 -0
  487. package/src/modules/user-management/command/updateUser.generated.ts +6 -0
  488. package/src/modules/user-management/command/updateUser.test.ts +195 -0
  489. package/src/modules/user-management/command/updateUser.ts +76 -0
  490. package/src/modules/user-management/docs/commands/UpdateOwnProfile.md +68 -0
  491. package/src/modules/user-management/docs/commands/UpdateUser.md +67 -0
  492. package/src/modules/user-management/docs/features/user-account-management.md +28 -3
  493. package/src/modules/user-management/docs/models/User.md +2 -0
  494. package/src/modules/user-management/lib/errors.generated.ts +5 -0
  495. package/src/modules/user-management/lib/permissions.generated.ts +2 -0
  496. package/src/modules/user-management/module.ts +5 -0
  497. package/src/modules/user-management/seed/index.ts +19 -0
  498. package/templates/scaffold/app/backend/seed/data/AuditEntry.schema.ts +20 -0
  499. package/templates/scaffold/app/backend/seed/data/AuditPolicy.jsonl +7 -0
  500. package/templates/scaffold/app/backend/seed/data/AuditPolicy.schema.ts +15 -0
  501. package/templates/scaffold/app/backend/seed/data/AuditableEntity.jsonl +4 -0
  502. package/templates/scaffold/app/backend/seed/data/AuditableEntity.schema.ts +20 -0
  503. package/templates/scaffold/app/backend/seed/data/ChangeDetail.schema.ts +20 -0
  504. package/templates/scaffold/app/backend/seed/data/Company.schema.ts +15 -0
  505. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +13 -0
  506. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +1 -1
  507. package/templates/scaffold/app/backend/seed/data/PolicyFieldRule.schema.ts +20 -0
  508. package/templates/scaffold/app/backend/seed/data/Role.jsonl +1 -0
  509. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +1 -1
  510. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +13 -0
  511. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +1 -1
  512. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -1
  513. package/templates/scaffold/app/backend/seed/data/User.schema.ts +1 -1
  514. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +1 -0
  515. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +1 -1
  516. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -1
  517. package/templates/scaffold/app/backend/seed/exec.mjs +12 -0
  518. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +2 -2
  519. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +2 -2
  520. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +62 -0
  521. package/templates/scaffold/app/backend/src/modules-db.ts +13 -0
  522. package/templates/scaffold/app/backend/src/modules.ts +3 -5
  523. package/templates/scaffold/app/backend/src/resolvers/assignPermissionToRole.ts +70 -0
  524. package/templates/scaffold/app/backend/src/resolvers/assignRoleToUser.ts +72 -0
  525. package/templates/scaffold/app/backend/src/resolvers/createRole.ts +92 -0
  526. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +113 -13
  527. package/templates/scaffold/app/backend/src/resolvers/deactivateUser.ts +67 -0
  528. package/templates/scaffold/app/backend/src/resolvers/reactivateUser.ts +63 -0
  529. package/templates/scaffold/app/backend/src/resolvers/revokePermissionFromRole.ts +72 -0
  530. package/templates/scaffold/app/backend/src/resolvers/revokeRoleFromUser.ts +72 -0
  531. package/templates/scaffold/app/backend/src/resolvers/updateOwnProfile.ts +107 -0
  532. package/templates/scaffold/app/backend/src/resolvers/updateUserProfile.ts +107 -0
  533. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log-detail.test.ts +79 -0
  534. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log.test.ts +86 -0
  535. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--assign-role-to-user.test.ts +103 -0
  536. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--create-role.test.ts +61 -0
  537. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--remove-role-from-user.test.ts +89 -0
  538. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--update-role-permissions.test.ts +125 -0
  539. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--browse-user-list.test.ts +91 -0
  540. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--create-user-account.test.ts +97 -0
  541. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--toggle-user-status.test.ts +131 -0
  542. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-own-profile.test.ts +85 -0
  543. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-user-profile.test.ts +158 -0
  544. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-own-profile.test.ts +30 -0
  545. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-user-detail.test.ts +98 -0
  546. package/templates/scaffold/app/backend/tailor.config.ts +6 -2
  547. package/templates/scaffold/app/docs/actors/user.md +11 -0
  548. package/templates/scaffold/app/docs/business-flow/audit-log/README.md +31 -0
  549. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log-detail.md +35 -0
  550. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log.md +44 -0
  551. package/templates/scaffold/app/docs/business-flow/role-management/README.md +33 -0
  552. package/templates/scaffold/app/docs/business-flow/role-management/story/user--assign-role-to-user.md +35 -0
  553. package/templates/scaffold/app/docs/business-flow/role-management/story/user--create-role.md +41 -0
  554. package/templates/scaffold/app/docs/business-flow/role-management/story/user--remove-role-from-user.md +33 -0
  555. package/templates/scaffold/app/docs/business-flow/role-management/story/user--update-role-permissions.md +41 -0
  556. package/templates/scaffold/app/docs/business-flow/user-lifecycle/README.md +48 -0
  557. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--browse-user-list.md +38 -0
  558. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--create-user-account.md +45 -0
  559. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--toggle-user-status.md +38 -0
  560. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-own-profile.md +36 -0
  561. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-user-profile.md +41 -0
  562. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-own-profile.md +30 -0
  563. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-user-detail.md +33 -0
  564. package/templates/scaffold/app/docs/resolver/assignPermissionToRole.md +16 -0
  565. package/templates/scaffold/app/docs/resolver/assignRoleToUser.md +17 -0
  566. package/templates/scaffold/app/docs/resolver/createRole.md +17 -0
  567. package/templates/scaffold/app/docs/resolver/createUser.md +23 -0
  568. package/templates/scaffold/app/docs/resolver/deactivateUser.md +17 -0
  569. package/templates/scaffold/app/docs/resolver/reactivateUser.md +16 -0
  570. package/templates/scaffold/app/docs/resolver/revokePermissionFromRole.md +17 -0
  571. package/templates/scaffold/app/docs/resolver/revokeRoleFromUser.md +17 -0
  572. package/templates/scaffold/app/docs/resolver/updateOwnProfile.md +20 -0
  573. package/templates/scaffold/app/docs/resolver/updateUserProfile.md +19 -0
  574. package/templates/scaffold/app/docs/screen/audit-entry-detail.md +30 -0
  575. package/templates/scaffold/app/docs/screen/audit-entry-list.md +25 -0
  576. package/templates/scaffold/app/docs/screen/my-profile-edit-form.md +22 -0
  577. package/templates/scaffold/app/docs/screen/my-profile.md +27 -0
  578. package/templates/scaffold/app/docs/screen/role-create-form.md +23 -0
  579. package/templates/scaffold/app/docs/screen/role-detail.md +27 -0
  580. package/templates/scaffold/app/docs/screen/role-edit-form.md +21 -0
  581. package/templates/scaffold/app/docs/screen/role-list.md +23 -0
  582. package/templates/scaffold/app/docs/screen/user-create-form.md +23 -0
  583. package/templates/scaffold/app/docs/screen/user-detail.md +33 -0
  584. package/templates/scaffold/app/docs/screen/user-edit-form.md +22 -0
  585. package/templates/scaffold/app/docs/screen/user-list.md +24 -0
  586. package/templates/scaffold/app/frontend/package.json +1 -1
  587. package/templates/scaffold/app/frontend/src/App.tsx +4 -0
  588. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +1 -1
  589. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +59 -31
  590. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1411 -688
  591. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +1 -1
  592. package/templates/scaffold/app/frontend/src/lib/permission-groups.ts +59 -0
  593. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/components/audit-entry-detail.tsx +102 -0
  594. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/page.tsx +65 -0
  595. package/templates/scaffold/app/frontend/src/pages/user-management/audit/components/audit-entries-table.tsx +90 -0
  596. package/templates/scaffold/app/frontend/src/pages/user-management/audit/page.tsx +52 -0
  597. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/components/edit-profile-form.tsx +125 -0
  598. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/page.tsx +19 -0
  599. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +41 -21
  600. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-actions.tsx +26 -0
  601. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-detail.tsx +69 -0
  602. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/components/edit-role-form.tsx +192 -0
  603. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/page.tsx +51 -0
  604. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/page.tsx +56 -0
  605. package/templates/scaffold/app/frontend/src/pages/user-management/role/components/roles-table.tsx +85 -0
  606. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/components/create-role-form.tsx +204 -0
  607. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/page.tsx +19 -0
  608. package/templates/scaffold/app/frontend/src/pages/user-management/role/page.tsx +60 -0
  609. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-actions.tsx +216 -0
  610. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +97 -33
  611. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/components/edit-user-form.tsx +115 -0
  612. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/page.tsx +51 -0
  613. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +8 -2
  614. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +43 -42
  615. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +120 -45
  616. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +3 -4
  617. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +8 -1
  618. package/templates/scaffold/module/eslint.config.js +8 -0
  619. package/templates/scaffold/project/__dot__gitignore +1 -0
  620. package/templates/scaffold/project/__pnpm-workspace.yaml +3 -0
  621. package/templates/scaffold/project/apps/.gitkeep +0 -0
  622. package/templates/scaffold/project/modules/.gitkeep +0 -0
  623. package/templates/scaffold/project/package.json +15 -0
  624. package/templates/workflows/erp-kit-check.yml +10 -4
  625. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +0 -39
  626. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +0 -60
  627. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +0 -75
  628. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +0 -21
  629. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +0 -90
  630. /package/src/modules/{supplier-portal → accounting/executor}/.gitkeep +0 -0
  631. /package/templates/scaffold/app/{docs/actors/.gitkeep → backend/seed/data/AuditEntry.jsonl} +0 -0
  632. /package/templates/scaffold/app/{docs/business-flow/.gitkeep → backend/seed/data/ChangeDetail.jsonl} +0 -0
  633. /package/templates/scaffold/app/{docs/resolver/.gitkeep → backend/seed/data/Company.jsonl} +0 -0
  634. /package/templates/scaffold/app/{docs/screen/.gitkeep → backend/seed/data/PolicyFieldRule.jsonl} +0 -0
  635. /package/templates/{config → scaffold/project}/license.config.json +0 -0
@@ -0,0 +1,40 @@
1
+ # BudgetLineItem
2
+
3
+ ## Description
4
+
5
+ BudgetLineItem is a child record of a Budget that specifies the planned spending amount for a specific cost element within a specific accounting period. Each line item carries a budget reference, cost element reference, accounting period reference, and planned amount. The corresponding GL account for each line item is derived automatically from the referenced primary cost element's one-to-one GL account mapping defined in cost-element-management, ensuring a single authoritative planning axis while preserving traceability to the general ledger. Budget line items provide the granular cost-element-level detail needed for funds checking, budget-vs-actual comparison, and variance analysis.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createBudgetLineItem](../commands/CreateBudgetLineItem.md) - Add a budget line item to a DRAFT budget specifying cost element, period, and planned amount
16
+ - [deleteBudgetLineItem](../commands/DeleteBudgetLineItem.md) - Remove a budget line item from a DRAFT budget
17
+
18
+ ### Query Definitions
19
+
20
+ - [GetBudget](../queries/GetBudget.md) - Retrieve budget line items as part of the parent budget
21
+
22
+ ### Models
23
+
24
+ - BudgetLineItem
25
+
26
+ ### Invariants
27
+
28
+ - Budget line item must reference a valid budget via budgetId
29
+ - Budget line item can only be added to or removed from a DRAFT budget
30
+ - Budget line item requires a valid cost element reference; the cost element must be a PRIMARY type in ACTIVE status
31
+ - Budget line item derives its GL account automatically from the referenced primary cost element's GL account mapping
32
+ - Budget line item requires a valid accounting period reference from finance-ledger
33
+ - Budget line item planned amount must be a positive value
34
+ - Duplicate line items (same cost element and period) within a single budget are rejected
35
+
36
+ ### Relationships
37
+
38
+ - **Belongs to Budget**: Each budget line item belongs to a Budget via budgetId
39
+ - **References CostElement**: Each budget line item references a CostElement via costElementId
40
+ - **References AccountingPeriod**: Each budget line item references an AccountingPeriod via accountingPeriodId (finance-ledger module)
@@ -0,0 +1,45 @@
1
+ # Commitment
2
+
3
+ ## Description
4
+
5
+ Commitment represents an outstanding purchase order amount that reduces available budget before the actual expense is incurred. Each commitment carries a cost element reference, cost object type and id (polymorphic reference to cost center, profit center, or internal order), accounting period reference, amount, purchase order reference, company scope, and status. Commitments are recorded when the purchase module confirms a purchase order, consumed when goods are received or invoices are matched (reducing the commitment and increasing actuals), and released when a purchase order is cancelled. Commitments are a key component of the budgetary control formula: Available = Budget - (Actual + Commitments + Encumbrances).
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [recordCommitment](../commands/RecordCommitment.md) - Record a commitment amount when a purchase order confirmation event is received
16
+ - [consumeCommitment](../commands/ConsumeCommitment.md) - Reduce commitment and increase actual when goods receipt or invoice match event is received
17
+ - [releaseCommitment](../commands/ReleaseCommitment.md) - Release commitment amount back to available budget when a purchase order is cancelled
18
+
19
+ ### Query Definitions
20
+
21
+ - [GetBudget](../queries/GetBudget.md) - Commitment amounts are included in budget availability calculations
22
+
23
+ ### Models
24
+
25
+ - Commitment
26
+
27
+ ### Invariants
28
+
29
+ - Commitment must reference a valid cost element via costElementId
30
+ - Commitment must reference a valid cost object via costObjectType and costObjectId (cost center, profit center, or internal order)
31
+ - Commitment must reference a valid accounting period from finance-ledger
32
+ - Commitment amount must be a positive value when recorded
33
+ - Commitment must reference a valid purchase order via purchaseOrderId
34
+ - Commitment must reference a valid companyId; the company must be in ACTIVE status
35
+ - Commitment amounts are reduced and actual amounts are increased when a goods receipt or invoice match event is received
36
+ - Commitment amounts are fully released when a purchase order cancellation event is received
37
+ - Commitments reduce available budget in the budgetary control formula
38
+
39
+ ### Relationships
40
+
41
+ - **References CostElement**: Each commitment references a CostElement via costElementId
42
+ - **Polymorphic Cost Object**: Each commitment references a cost object via costObjectType and costObjectId, which can be a CostCenter, ProfitCenter, or InternalOrder
43
+ - **References AccountingPeriod**: Each commitment references an AccountingPeriod via accountingPeriodId (finance-ledger module)
44
+ - **References PurchaseOrder**: Each commitment references a PurchaseOrder via purchaseOrderId (purchase module)
45
+ - **References Company**: Each commitment is scoped to a Company via companyId (organization module)
@@ -0,0 +1,51 @@
1
+ # CostCenter
2
+
3
+ ## Description
4
+
5
+ CostCenter represents a responsibility area within a company that accumulates overhead costs, such as an IT department, a production floor, or a facilities group. Each cost center carries a code, name, optional description, category (e.g., overhead, production, administration, sales, research), optional responsible person, optional department reference, company scope, validity period (valid-from/to dates), and a position within a cost center hierarchy via its hierarchy node assignment. Cost centers are distinct from organizational departments and serve as the primary receiver for overhead costs, acting as the foundational cost object referenced by cost allocation, budget management, variance analysis, and internal order settlement. Cost centers use validity-based lifecycle management rather than explicit status transitions.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createCostCenter](../commands/CreateCostCenter.md) - Create a new cost center with code, name, category, validity period, and hierarchy node assignment
16
+ - [updateCostCenter](../commands/UpdateCostCenter.md) - Update mutable fields of a cost center (name, description, category, responsible person, department)
17
+ - [deleteCostCenter](../commands/DeleteCostCenter.md) - Delete a cost center that has no dependent records (postings, budgets, allocation rules)
18
+ - [assignCostCenterToHierarchyNode](../commands/AssignCostCenterToHierarchyNode.md) - Assign or reassign a cost center to a different hierarchy node within the same company
19
+
20
+ ### Query Definitions
21
+
22
+ - [GetCostCenter](../queries/GetCostCenter.md) - Retrieve a cost center by id
23
+ - [ListCostCenters](../queries/ListCostCenters.md) - List cost centers with filters (category, company, validity period)
24
+
25
+ ### Models
26
+
27
+ - CostCenter
28
+
29
+ ### Invariants
30
+
31
+ - Cost center requires a unique code within the company scope
32
+ - Cost center code cannot be changed after creation to preserve referential integrity
33
+ - Cost center requires a name and a valid category (overhead, production, administration, sales, research)
34
+ - Cost center must reference a valid companyId; the company must be in ACTIVE status
35
+ - Cost center must reference a valid hierarchy node within the same company's hierarchy
36
+ - Cost center valid-from date must be earlier than or equal to valid-to date when both are provided
37
+ - A cost center with no valid-to date is treated as indefinitely active from its valid-from date
38
+ - A cost center whose valid-to date has passed cannot receive new cost postings
39
+ - A cost center whose valid-from date is in the future cannot receive cost postings until that date is reached
40
+ - A cost center cannot be deleted if it has associated cost postings, budget line items, or allocation rules referencing it
41
+ - A cost center can only be assigned to a hierarchy node within the same company's hierarchy
42
+ - Multiple cost centers can be assigned to the same hierarchy node
43
+ - Changing a cost center's category is permitted and emits an audit event
44
+ - Cost centers are scoped to a company; cost centers from different companies are fully isolated
45
+
46
+ ### Relationships
47
+
48
+ - **References Company**: Each cost center is scoped to a Company via companyId (organization module)
49
+ - **References CostCenterHierarchyNode**: Each cost center is assigned to a CostCenterHierarchyNode via hierarchyNodeId
50
+ - **References User**: Each cost center optionally references a responsible person via responsiblePersonId (user-management module)
51
+ - **References Department**: Each cost center optionally references a Department via departmentId (organization module)
@@ -0,0 +1,38 @@
1
+ # CostCenterHierarchy
2
+
3
+ ## Description
4
+
5
+ CostCenterHierarchy is the organizational structure entity that defines a tree-based grouping of cost centers for hierarchical roll-up reporting and cost aggregation. Each hierarchy carries a name, version identifier, and company scope. A hierarchy must be established before any cost centers can be created within a company, following the SAP CO pattern where a hierarchy root is a prerequisite for cost center master data. Multiple hierarchy versions can exist within the same company to support current and planned organizational structures.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createCostCenterHierarchy](../commands/CreateCostCenterHierarchy.md) - Create a new cost center hierarchy with a name and version for a company
16
+
17
+ ### Query Definitions
18
+
19
+ - [GetCostCenterHierarchy](../queries/GetCostCenterHierarchy.md) - Retrieve a cost center hierarchy by id with its full node tree
20
+
21
+ ### Models
22
+
23
+ - CostCenterHierarchy
24
+ - CostCenterHierarchyNode
25
+
26
+ ### Invariants
27
+
28
+ - Cost center hierarchy requires a name and version identifier
29
+ - Cost center hierarchy must reference a valid companyId; the company must be in ACTIVE status
30
+ - Cost center hierarchy is scoped to a company; hierarchies from different companies are fully isolated
31
+ - A cost center hierarchy can have multiple versions within the same company
32
+ - A hierarchy root node must be established before child nodes can be added
33
+ - Hierarchy roll-up reporting aggregates costs from child nodes up through parent nodes to the root
34
+
35
+ ### Relationships
36
+
37
+ - **References Company**: Each cost center hierarchy is scoped to a Company via companyId (organization module)
38
+ - **Has Many CostCenterHierarchyNode**: A cost center hierarchy contains one or more hierarchy nodes forming a tree structure
@@ -0,0 +1,41 @@
1
+ # CostCenterHierarchyNode
2
+
3
+ ## Description
4
+
5
+ CostCenterHierarchyNode represents a single node within a cost center hierarchy tree, supporting parent-child relationships that enable hierarchical roll-up of costs from leaf-level cost centers through intermediate grouping nodes to the root. Each node carries a name, optional parent node reference, hierarchy reference, sort order, and level attribute. Nodes serve as the assignment target for cost centers, allowing flexible organizational grouping by functional area (e.g., Administration, Production, Sales, R&D).
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createCostCenterHierarchyNode](../commands/CreateCostCenterHierarchyNode.md) - Create a new hierarchy node as a child of an existing node or as the root node
16
+ - [deleteCostCenterHierarchyNode](../commands/DeleteCostCenterHierarchyNode.md) - Delete a hierarchy node that has no child nodes or assigned cost centers
17
+ - [moveCostCenterHierarchyNode](../commands/MoveCostCenterHierarchyNode.md) - Move a hierarchy node to a different parent within the same hierarchy
18
+
19
+ ### Query Definitions
20
+
21
+ - [GetCostCenterHierarchy](../queries/GetCostCenterHierarchy.md) - Retrieve hierarchy nodes as part of the full hierarchy tree
22
+
23
+ ### Models
24
+
25
+ - CostCenterHierarchyNode
26
+
27
+ ### Invariants
28
+
29
+ - Hierarchy node requires a name
30
+ - Hierarchy node must belong to a valid CostCenterHierarchy via hierarchyId
31
+ - A hierarchy node cannot be its own parent (no self-referencing)
32
+ - A hierarchy node cannot create a circular reference (child cannot be an ancestor of its parent)
33
+ - Deleting a hierarchy node that has child nodes is rejected; children must be reassigned or removed first
34
+ - Deleting a hierarchy node that has assigned cost centers is rejected; cost centers must be reassigned first
35
+ - Hierarchy nodes support parent-child relationships with a sort order and level attribute
36
+
37
+ ### Relationships
38
+
39
+ - **Belongs to CostCenterHierarchy**: Each node belongs to a CostCenterHierarchy via hierarchyId
40
+ - **Self-referencing Parent**: Each node optionally references a parent CostCenterHierarchyNode via parentNodeId
41
+ - **Has Many CostCenter**: A hierarchy node can have multiple cost centers assigned to it
@@ -0,0 +1,66 @@
1
+ # CostElement
2
+
3
+ ## Description
4
+
5
+ CostElement is the foundational classification entity of the accounting module, defining the types of costs that can be recorded, allocated, and analyzed across cost centers, profit centers, and internal orders. Each cost element carries a code, name, type (PRIMARY or SECONDARY), category, optional description, optional GL account reference (mandatory for primary elements), company scope, and optional validity period. Primary cost elements are mapped one-to-one to GL accounts from coa-management and represent costs visible in both financial and management accounting (e.g., material costs, labor costs, depreciation). Secondary cost elements exist exclusively within the controlling domain for internal cost allocation activities such as assessment, distribution, and settlement. Cost elements follow a lifecycle from DRAFT through ACTIVE to INACTIVE, ensuring that only validated cost types are available for postings.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createCostElement
18
+ Draft --> Draft: updateCostElement
19
+ Draft --> Active: activateCostElement
20
+ Active --> Inactive: deactivateCostElement
21
+ Inactive --> Active: reactivateCostElement
22
+ Draft --> [*]: deleteCostElement
23
+ ```
24
+
25
+ ### Command Definitions
26
+
27
+ - [createCostElement](../commands/CreateCostElement.md) - Create a new cost element in DRAFT status with code, name, type, category, and optional GL account reference
28
+ - [updateCostElement](../commands/UpdateCostElement.md) - Update mutable fields of a cost element (name, description, validity dates)
29
+ - [activateCostElement](../commands/ActivateCostElement.md) - Activate a DRAFT cost element, making it available for cost postings and allocations
30
+ - [deactivateCostElement](../commands/DeactivateCostElement.md) - Deactivate an ACTIVE cost element, preventing new postings while preserving historical data
31
+ - [reactivateCostElement](../commands/ReactivateCostElement.md) - Reactivate an INACTIVE cost element back to ACTIVE status
32
+ - [deleteCostElement](../commands/DeleteCostElement.md) - Delete a DRAFT cost element that has not been activated
33
+
34
+ ### Query Definitions
35
+
36
+ - [GetCostElement](../queries/GetCostElement.md) - Retrieve a cost element by id
37
+ - [ListCostElements](../queries/ListCostElements.md) - List cost elements with filters (type, category, status, company)
38
+
39
+ ### Models
40
+
41
+ - CostElement
42
+
43
+ ### Invariants
44
+
45
+ - Cost elements can only be created in DRAFT status
46
+ - Cost element requires a unique code within the company scope
47
+ - Cost element requires a name and a type (PRIMARY or SECONDARY)
48
+ - Cost element requires a category appropriate to its type: overhead, material, labor, depreciation for PRIMARY; assessment, distribution, internal_activity_allocation, settlement for SECONDARY
49
+ - A primary cost element must reference a valid GL account from an ACTIVE Chart of Accounts; the GL account must be active
50
+ - A secondary cost element must not reference a GL account
51
+ - Two primary cost elements within the same company cannot reference the same GL account
52
+ - A primary cost element's GL account must belong to the same company's chart of accounts
53
+ - Cost element valid-from date must be before or equal to valid-to date when both are provided; omitting them means the element is valid indefinitely
54
+ - Only DRAFT cost elements can be deleted; ACTIVE and INACTIVE elements cannot be deleted
55
+ - Changing the type of a cost element (PRIMARY to SECONDARY or vice versa) after activation is not permitted
56
+ - Changing the GL account reference of a primary cost element after activation is not permitted
57
+ - Updating the category of an ACTIVE cost element is not permitted
58
+ - Cost postings referencing a cost element that is INACTIVE or outside its validity period are rejected
59
+ - Secondary cost elements can only be used in internal allocation contexts (assessment, distribution, activity allocation, settlement)
60
+ - Cost elements are scoped to a company; elements from different companies are fully isolated
61
+ - Cost element must reference a valid companyId; the company must be in ACTIVE status
62
+
63
+ ### Relationships
64
+
65
+ - **References Company**: Each cost element is scoped to a Company via companyId (organization module)
66
+ - **References GLAccount**: Primary cost elements reference a GLAccount via glAccountId (coa-management module); secondary cost elements have no GL account reference
@@ -0,0 +1,67 @@
1
+ # InternalOrder
2
+
3
+ ## Description
4
+
5
+ InternalOrder is a temporary cost collector entity for tracking expenses associated with specific short-to-medium-term activities such as projects, marketing campaigns, R&D initiatives, and corporate events. Each internal order carries a unique order number, order type (OVERHEAD, INVESTMENT, or ACCRUAL), description, responsible person, responsible cost center reference, company scope, optional validity dates, and a status. Unlike cost centers which are permanent organizational units, internal orders are purpose-bound objects with a defined lifecycle that follows a four-stage progression: CREATED, RELEASED, TECHNICALLY_COMPLETED, and CLOSED. Cost postings are only permitted while the order is in RELEASED status, and orders may optionally have a budget assigned to control spending limits.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Created: createInternalOrder
18
+ Created --> Released: releaseInternalOrder
19
+ Released --> TechnicallyCompleted: technicallyCompleteInternalOrder
20
+ TechnicallyCompleted --> Closed: closeInternalOrder
21
+ Created --> [*]: deleteInternalOrder
22
+ ```
23
+
24
+ ### Command Definitions
25
+
26
+ - [createInternalOrder](../commands/CreateInternalOrder.md) - Create a new internal order in CREATED status with order type, description, responsible person, and cost center
27
+ - [updateInternalOrder](../commands/UpdateInternalOrder.md) - Update mutable fields of an internal order (description, responsible person, cost center, validity dates)
28
+ - [releaseInternalOrder](../commands/ReleaseInternalOrder.md) - Release a CREATED internal order, enabling cost postings
29
+ - [technicallyCompleteInternalOrder](../commands/TechnicallyCompleteInternalOrder.md) - Technically complete a RELEASED order, stopping new postings and beginning final review
30
+ - [closeInternalOrder](../commands/CloseInternalOrder.md) - Close a TECHNICALLY_COMPLETED order, archiving it permanently
31
+ - [deleteInternalOrder](../commands/DeleteInternalOrder.md) - Delete a CREATED internal order that has not been released
32
+
33
+ ### Query Definitions
34
+
35
+ - [GetInternalOrder](../queries/GetInternalOrder.md) - Retrieve an internal order by id
36
+ - [ListInternalOrders](../queries/ListInternalOrders.md) - List internal orders with filters (type, status, company, cost center)
37
+
38
+ ### Models
39
+
40
+ - InternalOrder
41
+
42
+ ### Invariants
43
+
44
+ - Internal order can only be created in CREATED status
45
+ - Internal order requires a unique order number within the company scope
46
+ - Internal order requires a valid order type (OVERHEAD, INVESTMENT, ACCRUAL)
47
+ - Internal order requires a description and a responsible person
48
+ - Internal order must reference a valid companyId; the company must be in ACTIVE status
49
+ - Internal order must reference a valid responsible cost center within the same company
50
+ - Validity dates are optional; when both are provided, valid-from must precede valid-to
51
+ - Cost postings are only accepted when the internal order is in RELEASED status
52
+ - Cost postings to an order in CREATED, TECHNICALLY_COMPLETED, or CLOSED status are rejected
53
+ - Cost postings with a date outside the order's validity period are rejected when validity dates are set
54
+ - Only CREATED orders can be released; releasing an order in any other status fails
55
+ - Only RELEASED orders can be technically completed
56
+ - Only TECHNICALLY_COMPLETED orders can be closed
57
+ - CLOSED orders cannot transition to any other status
58
+ - Only CREATED orders can be deleted; RELEASED, TECHNICALLY_COMPLETED, and CLOSED orders cannot be deleted
59
+ - Order type cannot be changed after the order is released
60
+ - Internal order fields can be updated while in CREATED or RELEASED status but not in TECHNICALLY_COMPLETED or CLOSED status
61
+ - Cost postings to an internal order with a budget must not exceed the assigned budget amount
62
+ - Internal orders are scoped to a company; orders from different companies are fully isolated
63
+
64
+ ### Relationships
65
+
66
+ - **References Company**: Each internal order is scoped to a Company via companyId (organization module)
67
+ - **References CostCenter**: Each internal order references a responsible CostCenter via costCenterId (accounting module)
@@ -0,0 +1,36 @@
1
+ # PlanVersion
2
+
3
+ ## Description
4
+
5
+ PlanVersion is a versioning entity that supports multi-version budget planning, enabling organizations to maintain an approved operating budget alongside rolling forecasts and what-if simulations. Each plan version carries a name, type (BUDGET, FORECAST, or SIMULATION), optional base version reference for copying line items, and company scope. The BUDGET type represents the committed baseline, FORECAST enables rolling adjustments to projections, and SIMULATION allows what-if modeling without altering any committed plan. Plan versions can reference a base version from which line items are copied, supporting incremental planning workflows.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createPlanVersion](../commands/CreatePlanVersion.md) - Create a new plan version with name, type, optional base version reference, and company
16
+
17
+ ### Query Definitions
18
+
19
+ - None — plan versions are accessed through their associated budget queries
20
+
21
+ ### Models
22
+
23
+ - PlanVersion
24
+
25
+ ### Invariants
26
+
27
+ - Plan version requires a name
28
+ - Plan version requires a valid type (BUDGET, FORECAST, or SIMULATION)
29
+ - Plan version must reference a valid companyId; the company must be in ACTIVE status
30
+ - Plan version of type FORECAST or SIMULATION can reference a base version from which line items are copied
31
+ - Plan versions are scoped to a company; versions from different companies are fully isolated
32
+
33
+ ### Relationships
34
+
35
+ - **References Company**: Each plan version is scoped to a Company via companyId (organization module)
36
+ - **Self-referencing Base Version**: A plan version optionally references another PlanVersion via baseVersionId for copying line items
@@ -0,0 +1,66 @@
1
+ # ProfitCenter
2
+
3
+ ## Description
4
+
5
+ ProfitCenter represents a discrete business segment — such as a product line, regional division, or service line — for which management can independently evaluate profitability through internal profit and loss reporting. Each profit center carries a code, name, optional description, optional responsible person, company scope, validity period (valid-from/to), and a status following a lifecycle from DRAFT through ACTIVE to INACTIVE. Revenue and cost transactions posted in the finance-ledger are tagged with profit center assignments, enabling aggregation of income and expenses at the profit center level. Profit centers are organized into hierarchical groupings via ProfitCenterHierarchy and are deliberately decoupled from the organizational hierarchy to allow flexible, cross-cutting profitability views.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createProfitCenter
18
+ Draft --> Draft: updateProfitCenter
19
+ Draft --> Active: activateProfitCenter
20
+ Active --> Active: updateProfitCenter (limited fields)
21
+ Active --> Inactive: deactivateProfitCenter
22
+ Inactive --> Active: reactivateProfitCenter
23
+ Draft --> [*]: deleteProfitCenter
24
+ ```
25
+
26
+ ### Command Definitions
27
+
28
+ - [createProfitCenter](../commands/CreateProfitCenter.md) - Create a new profit center in DRAFT status with code, name, and validity period
29
+ - [updateProfitCenter](../commands/UpdateProfitCenter.md) - Update mutable fields of a profit center (name, description, responsible person)
30
+ - [activateProfitCenter](../commands/ActivateProfitCenter.md) - Activate a DRAFT profit center, making it available for transaction tagging
31
+ - [deactivateProfitCenter](../commands/DeactivateProfitCenter.md) - Deactivate an ACTIVE profit center, preventing new transaction assignments
32
+ - [reactivateProfitCenter](../commands/ReactivateProfitCenter.md) - Reactivate an INACTIVE profit center back to ACTIVE status
33
+ - [deleteProfitCenter](../commands/DeleteProfitCenter.md) - Delete a DRAFT profit center and its hierarchy assignment
34
+ - [assignProfitCenterToHierarchyNode](../commands/AssignProfitCenterToHierarchyNode.md) - Assign or reassign a profit center to a hierarchy node
35
+
36
+ ### Query Definitions
37
+
38
+ - [GetProfitCenter](../queries/GetProfitCenter.md) - Retrieve a profit center by id
39
+ - [ListProfitCenters](../queries/ListProfitCenters.md) - List profit centers with filters (status, company, validity period)
40
+
41
+ ### Models
42
+
43
+ - ProfitCenter
44
+
45
+ ### Invariants
46
+
47
+ - Profit center can only be created in DRAFT status
48
+ - Profit center requires a unique code within the company scope
49
+ - Profit center requires a name
50
+ - Profit center must reference a valid companyId; the company must be in ACTIVE status
51
+ - Valid-from date is required; valid-to date is optional
52
+ - Valid-to date, when specified, must be on or after the valid-from date
53
+ - Profit center code cannot be changed after activation
54
+ - Only DRAFT profit centers can be deleted; ACTIVE and INACTIVE profit centers cannot be deleted
55
+ - Only ACTIVE profit centers within their validity period can receive transaction assignments
56
+ - Transactions cannot be assigned to a DRAFT or INACTIVE profit center
57
+ - Transactions cannot be assigned to a profit center outside its validity period (before valid-from or after valid-to)
58
+ - Activating an already ACTIVE profit center fails with an invalid status transition error
59
+ - Deactivating a DRAFT profit center fails with an invalid status transition error
60
+ - Profit centers are scoped to a company; profit centers from different companies are fully isolated
61
+
62
+ ### Relationships
63
+
64
+ - **References Company**: Each profit center is scoped to a Company via companyId (organization module)
65
+ - **References ProfitCenterHierarchyNode**: Each profit center can be assigned to a ProfitCenterHierarchyNode within a hierarchy
66
+ - **References User**: Each profit center optionally references a responsible person via responsiblePersonId (user-management module)
@@ -0,0 +1,36 @@
1
+ # ProfitCenterHierarchy
2
+
3
+ ## Description
4
+
5
+ ProfitCenterHierarchy is the organizational structure entity that defines a tree-based grouping of profit centers for hierarchical roll-up reporting and profitability aggregation. Each hierarchy carries a name and company scope. Profit center hierarchies support multi-dimensional analysis by business dimension such as region, product line, or service line, enabling both detailed drill-down analysis and executive-level summary reporting. Multiple hierarchies can coexist for the same company to support different analytical perspectives (e.g., one by region, one by product line).
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createProfitCenterHierarchy](../commands/CreateProfitCenterHierarchy.md) - Create a new profit center hierarchy with a name for a company
16
+
17
+ ### Query Definitions
18
+
19
+ - [GetProfitCenterHierarchy](../queries/GetProfitCenterHierarchy.md) - Retrieve a profit center hierarchy by id with its full node tree
20
+
21
+ ### Models
22
+
23
+ - ProfitCenterHierarchy
24
+ - ProfitCenterHierarchyNode
25
+
26
+ ### Invariants
27
+
28
+ - Profit center hierarchy requires a name
29
+ - Profit center hierarchy must reference a valid companyId; the company must be in ACTIVE status
30
+ - Profit center hierarchies are scoped to a company; hierarchies from different companies are fully isolated
31
+ - Hierarchy roll-up aggregates financial results from child nodes up to parent nodes
32
+
33
+ ### Relationships
34
+
35
+ - **References Company**: Each profit center hierarchy is scoped to a Company via companyId (organization module)
36
+ - **Has Many ProfitCenterHierarchyNode**: A profit center hierarchy contains one or more hierarchy nodes forming a tree structure
@@ -0,0 +1,36 @@
1
+ # ProfitCenterHierarchyAssignment
2
+
3
+ ## Description
4
+
5
+ ProfitCenterHierarchyAssignment represents the assignment of a profit center to a specific node within a profit center hierarchy. Each assignment links a profit center to exactly one node per hierarchy, enabling hierarchical roll-up reporting across multiple hierarchy dimensions simultaneously. A profit center can be assigned to nodes in multiple hierarchies, but within a given hierarchy it can only be assigned to one node at a time. Reassigning a profit center to a different node within the same hierarchy replaces the previous assignment.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [assignProfitCenterToHierarchyNode](../commands/AssignProfitCenterToHierarchyNode.md) - Assign a profit center to a hierarchy node, replacing any existing assignment within the same hierarchy
16
+
17
+ ### Query Definitions
18
+
19
+ - [GetProfitCenterHierarchy](../queries/GetProfitCenterHierarchy.md) - Retrieve hierarchy nodes and their associated profit center assignments
20
+
21
+ ### Models
22
+
23
+ - ProfitCenterHierarchyAssignment
24
+
25
+ ### Invariants
26
+
27
+ - A profit center can be assigned to exactly one node within a given hierarchy (enforced by a unique index on profitCenterId and hierarchyId)
28
+ - A profit center can be assigned to nodes in multiple different hierarchies simultaneously
29
+ - Assigning a profit center to a new node within the same hierarchy replaces the previous assignment
30
+ - Both the profit center and the target hierarchy node must exist before an assignment can be created
31
+
32
+ ### Relationships
33
+
34
+ - **References ProfitCenter**: Each assignment references a ProfitCenter via profitCenterId
35
+ - **References ProfitCenterHierarchy**: Each assignment references a ProfitCenterHierarchy via hierarchyId
36
+ - **References ProfitCenterHierarchyNode**: Each assignment references a ProfitCenterHierarchyNode via hierarchyNodeId
@@ -0,0 +1,39 @@
1
+ # ProfitCenterHierarchyNode
2
+
3
+ ## Description
4
+
5
+ ProfitCenterHierarchyNode represents a single node within a profit center hierarchy tree, supporting parent-child relationships that enable hierarchical roll-up of profitability results from leaf-level profit centers through intermediate grouping nodes to the root. Each node carries a name, optional parent node reference, hierarchy reference, sort order, and level attribute. Nodes serve as the assignment target for profit centers, allowing flexible grouping by business dimension such as region, product line, or service line.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createProfitCenterHierarchyNode](../commands/CreateProfitCenterHierarchyNode.md) - Create a new hierarchy node as a child of an existing node or as the root node
16
+ - [deleteProfitCenterHierarchyNode](../commands/DeleteProfitCenterHierarchyNode.md) - Delete a hierarchy node that has no child nodes or assigned profit centers
17
+
18
+ ### Query Definitions
19
+
20
+ - [GetProfitCenterHierarchy](../queries/GetProfitCenterHierarchy.md) - Retrieve hierarchy nodes as part of the full hierarchy tree
21
+
22
+ ### Models
23
+
24
+ - ProfitCenterHierarchyNode
25
+
26
+ ### Invariants
27
+
28
+ - Hierarchy node requires a name
29
+ - Hierarchy node must belong to a valid ProfitCenterHierarchy via hierarchyId
30
+ - A hierarchy node cannot be its own parent (no self-referencing)
31
+ - A hierarchy node cannot create a circular reference (child cannot be an ancestor of its parent)
32
+ - Removing a hierarchy node that has child nodes is rejected; children must be reassigned or removed first
33
+ - Removing a hierarchy node that has profit centers assigned is rejected; profit centers must be reassigned first
34
+
35
+ ### Relationships
36
+
37
+ - **Belongs to ProfitCenterHierarchy**: Each node belongs to a ProfitCenterHierarchy via hierarchyId
38
+ - **Self-referencing Parent**: Each node optionally references a parent ProfitCenterHierarchyNode via parentNodeId
39
+ - **Has Many ProfitCenter**: A hierarchy node can have multiple profit centers assigned to it
@@ -0,0 +1,58 @@
1
+ # VarianceReport
2
+
3
+ ## Description
4
+
5
+ VarianceReport is the management accounting report entity that compares planned (budget) amounts against actual costs and revenues by cost object and accounting period. Each report carries a cost object type and id (polymorphic reference to cost center, profit center, or internal order), accounting period reference, company scope, summary totals (total planned, total actual, total variance), and a status following a DRAFT to FINAL lifecycle. Actual amounts are sourced from posted journal entries in the finance-ledger module, aggregated by cost element, period, and cost object. Planned amounts are sourced from BudgetLineItems in budget-management. Each report contains one or more VarianceReportLine child records that provide cost-element-level detail, enabling managers to diagnose which cost types are driving deviations.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: generateVarianceReport
18
+ Draft --> Final: finalizeVarianceReport
19
+ ```
20
+
21
+ ### Command Definitions
22
+
23
+ - [generateVarianceReport](../commands/GenerateVarianceReport.md) - Generate a variance report in DRAFT status by collecting actuals and plan amounts, computing variances per cost element
24
+ - [finalizeVarianceReport](../commands/FinalizeVarianceReport.md) - Finalize a DRAFT variance report, locking it for distribution to management
25
+
26
+ ### Query Definitions
27
+
28
+ - [GetVarianceReport](../queries/GetVarianceReport.md) - Retrieve a variance report by id with all detail lines
29
+
30
+ ### Models
31
+
32
+ - VarianceReport
33
+ - VarianceReportLine
34
+
35
+ ### Invariants
36
+
37
+ - Variance report can only be created in DRAFT status
38
+ - Variance report must reference a valid companyId; the company must be in ACTIVE status
39
+ - Variance report must reference a valid accounting period from finance-ledger
40
+ - Variance report must reference a valid cost object (cost center, profit center, or internal order)
41
+ - Variance report summary totals (total planned, total actual, total variance) are computed from the sum of its detail lines
42
+ - Variance report can transition from DRAFT to FINAL
43
+ - Variance report in FINAL status cannot be transitioned back to DRAFT
44
+ - A FINAL variance report cannot be modified
45
+ - A DRAFT variance report can be updated before finalization
46
+ - A variance report cannot be generated if no budget line items exist for the specified cost object and period
47
+ - Actual amounts are sourced exclusively from POSTED journal entries; DRAFT journal entries are excluded
48
+ - Regenerating a variance report for the same cost object and period replaces the existing DRAFT report
49
+ - A FINAL variance report is not overwritten by regeneration; a new DRAFT is created alongside it
50
+ - Variance reports are scoped to a single company; data from other companies is excluded
51
+ - Multiple variance reports can exist for the same cost object across different accounting periods
52
+
53
+ ### Relationships
54
+
55
+ - **References Company**: Each variance report is scoped to a Company via companyId (organization module)
56
+ - **References AccountingPeriod**: Each variance report references an AccountingPeriod via accountingPeriodId (finance-ledger module)
57
+ - **Polymorphic Cost Object**: Each variance report references a cost object via costObjectType and costObjectId, which can be a CostCenter, ProfitCenter, or InternalOrder
58
+ - **Has Many VarianceReportLine**: A variance report contains one or more variance report lines providing cost-element-level detail