@tailor-platform/erp-kit 0.7.0 → 0.9.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 (756) hide show
  1. package/CHANGELOG.md +40 -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-1-requirements/SKILL.md +6 -0
  6. package/skills/erp-kit-app-2-requirements-review/SKILL.md +6 -0
  7. package/skills/erp-kit-app-3-plan/SKILL.md +6 -0
  8. package/skills/erp-kit-app-4-plan-review/SKILL.md +6 -0
  9. package/skills/erp-kit-app-5-impl-backend/SKILL.md +12 -5
  10. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -1
  11. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +37 -12
  12. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +9 -1
  13. package/skills/erp-kit-app-6-impl-frontend/references/component.md +90 -0
  14. package/skills/erp-kit-app-6-impl-frontend/references/detail-view.md +255 -0
  15. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +1 -5
  16. package/skills/erp-kit-app-7-impl-review/SKILL.md +9 -2
  17. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +14 -8
  18. package/skills/erp-kit-app-shared/SKILL.md +2 -0
  19. package/skills/erp-kit-mock-scenario/SKILL.md +6 -0
  20. package/skills/erp-kit-module-1-requirements/SKILL.md +6 -0
  21. package/skills/erp-kit-module-2-requirements-review/SKILL.md +6 -0
  22. package/skills/erp-kit-module-3-plan/SKILL.md +6 -0
  23. package/skills/erp-kit-module-3-update-plan/SKILL.md +6 -0
  24. package/skills/erp-kit-module-4-plan-review/SKILL.md +6 -0
  25. package/skills/erp-kit-module-5-impl/SKILL.md +6 -0
  26. package/skills/erp-kit-module-6-impl-review/SKILL.md +22 -19
  27. package/skills/erp-kit-module-shared/SKILL.md +2 -0
  28. package/skills/erp-kit-module-shared/references/commands.md +71 -1
  29. package/skills/erp-kit-update/SKILL.md +6 -0
  30. package/src/commands/index.ts +8 -2
  31. package/src/commands/init.test.ts +24 -8
  32. package/src/commands/init.ts +5 -12
  33. package/src/commands/lib/distribute.test.ts +1 -20
  34. package/src/commands/lib/distribute.ts +0 -14
  35. package/src/commands/update.test.ts +1 -1
  36. package/src/generator/scaffold.ts +25 -4
  37. package/src/module.ts +4 -1
  38. package/src/modules/accounting/README.md +63 -0
  39. package/src/modules/accounting/command/activateBudget.generated.ts +6 -0
  40. package/src/modules/accounting/command/activateBudget.test.ts +119 -0
  41. package/src/modules/accounting/command/activateBudget.ts +77 -0
  42. package/src/modules/accounting/command/activateCostElement.generated.ts +6 -0
  43. package/src/modules/accounting/command/activateCostElement.test.ts +59 -0
  44. package/src/modules/accounting/command/activateCostElement.ts +41 -0
  45. package/src/modules/accounting/command/activateProfitCenter.generated.ts +6 -0
  46. package/src/modules/accounting/command/activateProfitCenter.test.ts +60 -0
  47. package/src/modules/accounting/command/activateProfitCenter.ts +38 -0
  48. package/src/modules/accounting/command/approveBudget.generated.ts +6 -0
  49. package/src/modules/accounting/command/approveBudget.test.ts +69 -0
  50. package/src/modules/accounting/command/approveBudget.ts +47 -0
  51. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.generated.ts +6 -0
  52. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.test.ts +112 -0
  53. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.ts +67 -0
  54. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.generated.ts +6 -0
  55. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.test.ts +123 -0
  56. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.ts +71 -0
  57. package/src/modules/accounting/command/closeBudget.generated.ts +6 -0
  58. package/src/modules/accounting/command/closeBudget.test.ts +93 -0
  59. package/src/modules/accounting/command/closeBudget.ts +40 -0
  60. package/src/modules/accounting/command/closeInternalOrder.generated.ts +6 -0
  61. package/src/modules/accounting/command/closeInternalOrder.test.ts +74 -0
  62. package/src/modules/accounting/command/closeInternalOrder.ts +38 -0
  63. package/src/modules/accounting/command/consumeCommitment.generated.ts +6 -0
  64. package/src/modules/accounting/command/consumeCommitment.test.ts +123 -0
  65. package/src/modules/accounting/command/consumeCommitment.ts +62 -0
  66. package/src/modules/accounting/command/createAllocationCycle.generated.ts +6 -0
  67. package/src/modules/accounting/command/createAllocationCycle.test.ts +166 -0
  68. package/src/modules/accounting/command/createAllocationCycle.ts +68 -0
  69. package/src/modules/accounting/command/createAllocationRule.generated.ts +6 -0
  70. package/src/modules/accounting/command/createAllocationRule.test.ts +195 -0
  71. package/src/modules/accounting/command/createAllocationRule.ts +103 -0
  72. package/src/modules/accounting/command/createBudget.generated.ts +6 -0
  73. package/src/modules/accounting/command/createBudget.test.ts +159 -0
  74. package/src/modules/accounting/command/createBudget.ts +100 -0
  75. package/src/modules/accounting/command/createBudgetLineItem.generated.ts +6 -0
  76. package/src/modules/accounting/command/createBudgetLineItem.test.ts +178 -0
  77. package/src/modules/accounting/command/createBudgetLineItem.ts +104 -0
  78. package/src/modules/accounting/command/createCostCenter.generated.ts +6 -0
  79. package/src/modules/accounting/command/createCostCenter.test.ts +179 -0
  80. package/src/modules/accounting/command/createCostCenter.ts +112 -0
  81. package/src/modules/accounting/command/createCostCenterHierarchy.generated.ts +6 -0
  82. package/src/modules/accounting/command/createCostCenterHierarchy.test.ts +91 -0
  83. package/src/modules/accounting/command/createCostCenterHierarchy.ts +48 -0
  84. package/src/modules/accounting/command/createCostCenterHierarchyNode.generated.ts +6 -0
  85. package/src/modules/accounting/command/createCostCenterHierarchyNode.test.ts +171 -0
  86. package/src/modules/accounting/command/createCostCenterHierarchyNode.ts +117 -0
  87. package/src/modules/accounting/command/createCostElement.generated.ts +6 -0
  88. package/src/modules/accounting/command/createCostElement.test.ts +317 -0
  89. package/src/modules/accounting/command/createCostElement.ts +149 -0
  90. package/src/modules/accounting/command/createInternalOrder.generated.ts +6 -0
  91. package/src/modules/accounting/command/createInternalOrder.test.ts +206 -0
  92. package/src/modules/accounting/command/createInternalOrder.ts +104 -0
  93. package/src/modules/accounting/command/createPlanVersion.generated.ts +6 -0
  94. package/src/modules/accounting/command/createPlanVersion.test.ts +230 -0
  95. package/src/modules/accounting/command/createPlanVersion.ts +71 -0
  96. package/src/modules/accounting/command/createProfitCenter.generated.ts +6 -0
  97. package/src/modules/accounting/command/createProfitCenter.test.ts +227 -0
  98. package/src/modules/accounting/command/createProfitCenter.ts +81 -0
  99. package/src/modules/accounting/command/createProfitCenterHierarchy.generated.ts +6 -0
  100. package/src/modules/accounting/command/createProfitCenterHierarchy.test.ts +91 -0
  101. package/src/modules/accounting/command/createProfitCenterHierarchy.ts +46 -0
  102. package/src/modules/accounting/command/createProfitCenterHierarchyNode.generated.ts +6 -0
  103. package/src/modules/accounting/command/createProfitCenterHierarchyNode.test.ts +160 -0
  104. package/src/modules/accounting/command/createProfitCenterHierarchyNode.ts +109 -0
  105. package/src/modules/accounting/command/deactivateCostElement.generated.ts +6 -0
  106. package/src/modules/accounting/command/deactivateCostElement.test.ts +59 -0
  107. package/src/modules/accounting/command/deactivateCostElement.ts +41 -0
  108. package/src/modules/accounting/command/deactivateProfitCenter.generated.ts +6 -0
  109. package/src/modules/accounting/command/deactivateProfitCenter.test.ts +60 -0
  110. package/src/modules/accounting/command/deactivateProfitCenter.ts +42 -0
  111. package/src/modules/accounting/command/deleteAllocationCycle.generated.ts +6 -0
  112. package/src/modules/accounting/command/deleteAllocationCycle.test.ts +90 -0
  113. package/src/modules/accounting/command/deleteAllocationCycle.ts +39 -0
  114. package/src/modules/accounting/command/deleteAllocationRule.generated.ts +6 -0
  115. package/src/modules/accounting/command/deleteAllocationRule.test.ts +98 -0
  116. package/src/modules/accounting/command/deleteAllocationRule.ts +40 -0
  117. package/src/modules/accounting/command/deleteBudget.generated.ts +6 -0
  118. package/src/modules/accounting/command/deleteBudget.test.ts +90 -0
  119. package/src/modules/accounting/command/deleteBudget.ts +35 -0
  120. package/src/modules/accounting/command/deleteBudgetLineItem.generated.ts +6 -0
  121. package/src/modules/accounting/command/deleteBudgetLineItem.test.ts +85 -0
  122. package/src/modules/accounting/command/deleteBudgetLineItem.ts +50 -0
  123. package/src/modules/accounting/command/deleteCostCenter.generated.ts +6 -0
  124. package/src/modules/accounting/command/deleteCostCenter.test.ts +79 -0
  125. package/src/modules/accounting/command/deleteCostCenter.ts +67 -0
  126. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.generated.ts +6 -0
  127. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.test.ts +59 -0
  128. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.ts +58 -0
  129. package/src/modules/accounting/command/deleteCostElement.generated.ts +6 -0
  130. package/src/modules/accounting/command/deleteCostElement.test.ts +58 -0
  131. package/src/modules/accounting/command/deleteCostElement.ts +33 -0
  132. package/src/modules/accounting/command/deleteInternalOrder.generated.ts +6 -0
  133. package/src/modules/accounting/command/deleteInternalOrder.test.ts +81 -0
  134. package/src/modules/accounting/command/deleteInternalOrder.ts +37 -0
  135. package/src/modules/accounting/command/deleteProfitCenter.generated.ts +6 -0
  136. package/src/modules/accounting/command/deleteProfitCenter.test.ts +68 -0
  137. package/src/modules/accounting/command/deleteProfitCenter.ts +39 -0
  138. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.generated.ts +6 -0
  139. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.test.ts +72 -0
  140. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.ts +61 -0
  141. package/src/modules/accounting/command/executeAllocationCycle.generated.ts +6 -0
  142. package/src/modules/accounting/command/executeAllocationCycle.test.ts +167 -0
  143. package/src/modules/accounting/command/executeAllocationCycle.ts +94 -0
  144. package/src/modules/accounting/command/finalizeVarianceReport.generated.ts +6 -0
  145. package/src/modules/accounting/command/finalizeVarianceReport.test.ts +60 -0
  146. package/src/modules/accounting/command/finalizeVarianceReport.ts +45 -0
  147. package/src/modules/accounting/command/generateVarianceReport.generated.ts +6 -0
  148. package/src/modules/accounting/command/generateVarianceReport.test.ts +386 -0
  149. package/src/modules/accounting/command/generateVarianceReport.ts +219 -0
  150. package/src/modules/accounting/command/invalidateAllocationCycle.generated.ts +6 -0
  151. package/src/modules/accounting/command/invalidateAllocationCycle.test.ts +84 -0
  152. package/src/modules/accounting/command/invalidateAllocationCycle.ts +45 -0
  153. package/src/modules/accounting/command/moveCostCenterHierarchyNode.generated.ts +6 -0
  154. package/src/modules/accounting/command/moveCostCenterHierarchyNode.test.ts +135 -0
  155. package/src/modules/accounting/command/moveCostCenterHierarchyNode.ts +81 -0
  156. package/src/modules/accounting/command/postAllocationCycle.generated.ts +6 -0
  157. package/src/modules/accounting/command/postAllocationCycle.test.ts +98 -0
  158. package/src/modules/accounting/command/postAllocationCycle.ts +65 -0
  159. package/src/modules/accounting/command/reactivateCostElement.generated.ts +6 -0
  160. package/src/modules/accounting/command/reactivateCostElement.test.ts +59 -0
  161. package/src/modules/accounting/command/reactivateCostElement.ts +41 -0
  162. package/src/modules/accounting/command/reactivateProfitCenter.generated.ts +6 -0
  163. package/src/modules/accounting/command/reactivateProfitCenter.test.ts +60 -0
  164. package/src/modules/accounting/command/reactivateProfitCenter.ts +42 -0
  165. package/src/modules/accounting/command/recordCommitment.generated.ts +6 -0
  166. package/src/modules/accounting/command/recordCommitment.test.ts +157 -0
  167. package/src/modules/accounting/command/recordCommitment.ts +113 -0
  168. package/src/modules/accounting/command/rejectBudget.generated.ts +6 -0
  169. package/src/modules/accounting/command/rejectBudget.test.ts +105 -0
  170. package/src/modules/accounting/command/rejectBudget.ts +51 -0
  171. package/src/modules/accounting/command/releaseCommitment.generated.ts +6 -0
  172. package/src/modules/accounting/command/releaseCommitment.test.ts +94 -0
  173. package/src/modules/accounting/command/releaseCommitment.ts +51 -0
  174. package/src/modules/accounting/command/releaseInternalOrder.generated.ts +6 -0
  175. package/src/modules/accounting/command/releaseInternalOrder.test.ts +74 -0
  176. package/src/modules/accounting/command/releaseInternalOrder.ts +38 -0
  177. package/src/modules/accounting/command/reverseAllocationCycle.generated.ts +6 -0
  178. package/src/modules/accounting/command/reverseAllocationCycle.test.ts +124 -0
  179. package/src/modules/accounting/command/reverseAllocationCycle.ts +63 -0
  180. package/src/modules/accounting/command/submitBudget.generated.ts +6 -0
  181. package/src/modules/accounting/command/submitBudget.test.ts +60 -0
  182. package/src/modules/accounting/command/submitBudget.ts +51 -0
  183. package/src/modules/accounting/command/technicallyCompleteInternalOrder.generated.ts +6 -0
  184. package/src/modules/accounting/command/technicallyCompleteInternalOrder.test.ts +74 -0
  185. package/src/modules/accounting/command/technicallyCompleteInternalOrder.ts +42 -0
  186. package/src/modules/accounting/command/updateAllocationCycle.generated.ts +6 -0
  187. package/src/modules/accounting/command/updateAllocationCycle.test.ts +112 -0
  188. package/src/modules/accounting/command/updateAllocationCycle.ts +41 -0
  189. package/src/modules/accounting/command/updateBudget.generated.ts +6 -0
  190. package/src/modules/accounting/command/updateBudget.test.ts +112 -0
  191. package/src/modules/accounting/command/updateBudget.ts +44 -0
  192. package/src/modules/accounting/command/updateCostCenter.generated.ts +6 -0
  193. package/src/modules/accounting/command/updateCostCenter.test.ts +105 -0
  194. package/src/modules/accounting/command/updateCostCenter.ts +79 -0
  195. package/src/modules/accounting/command/updateCostElement.generated.ts +6 -0
  196. package/src/modules/accounting/command/updateCostElement.test.ts +265 -0
  197. package/src/modules/accounting/command/updateCostElement.ts +158 -0
  198. package/src/modules/accounting/command/updateInternalOrder.generated.ts +6 -0
  199. package/src/modules/accounting/command/updateInternalOrder.test.ts +209 -0
  200. package/src/modules/accounting/command/updateInternalOrder.ts +88 -0
  201. package/src/modules/accounting/command/updateProfitCenter.generated.ts +6 -0
  202. package/src/modules/accounting/command/updateProfitCenter.test.ts +162 -0
  203. package/src/modules/accounting/command/updateProfitCenter.ts +73 -0
  204. package/src/modules/accounting/command/validateAllocationCycle.generated.ts +6 -0
  205. package/src/modules/accounting/command/validateAllocationCycle.test.ts +141 -0
  206. package/src/modules/accounting/command/validateAllocationCycle.ts +80 -0
  207. package/src/modules/accounting/db/allocationCycle.ts +59 -0
  208. package/src/modules/accounting/db/allocationResult.ts +58 -0
  209. package/src/modules/accounting/db/allocationRule.ts +48 -0
  210. package/src/modules/accounting/db/budget.ts +84 -0
  211. package/src/modules/accounting/db/budgetLineItem.ts +64 -0
  212. package/src/modules/accounting/db/commitment.ts +60 -0
  213. package/src/modules/accounting/db/costCenter.ts +73 -0
  214. package/src/modules/accounting/db/costCenterHierarchy.ts +37 -0
  215. package/src/modules/accounting/db/costCenterHierarchyNode.ts +48 -0
  216. package/src/modules/accounting/db/costElement.ts +56 -0
  217. package/src/modules/accounting/db/internalOrder.ts +69 -0
  218. package/src/modules/accounting/db/planVersion.ts +47 -0
  219. package/src/modules/accounting/db/profitCenter.ts +52 -0
  220. package/src/modules/accounting/db/profitCenterHierarchy.ts +36 -0
  221. package/src/modules/accounting/db/profitCenterHierarchyAssignment.ts +62 -0
  222. package/src/modules/accounting/db/profitCenterHierarchyNode.ts +48 -0
  223. package/src/modules/accounting/db/varianceReport.ts +54 -0
  224. package/src/modules/accounting/db/varianceReportLine.ts +62 -0
  225. package/src/modules/accounting/docs/commands/ActivateBudget.md +54 -0
  226. package/src/modules/accounting/docs/commands/ActivateCostElement.md +43 -0
  227. package/src/modules/accounting/docs/commands/ActivateProfitCenter.md +43 -0
  228. package/src/modules/accounting/docs/commands/ApproveBudget.md +46 -0
  229. package/src/modules/accounting/docs/commands/AssignCostCenterToHierarchyNode.md +46 -0
  230. package/src/modules/accounting/docs/commands/AssignProfitCenterToHierarchyNode.md +47 -0
  231. package/src/modules/accounting/docs/commands/CloseBudget.md +47 -0
  232. package/src/modules/accounting/docs/commands/CloseInternalOrder.md +45 -0
  233. package/src/modules/accounting/docs/commands/ConsumeCommitment.md +53 -0
  234. package/src/modules/accounting/docs/commands/CreateAllocationCycle.md +55 -0
  235. package/src/modules/accounting/docs/commands/CreateAllocationRule.md +60 -0
  236. package/src/modules/accounting/docs/commands/CreateBudget.md +65 -0
  237. package/src/modules/accounting/docs/commands/CreateBudgetLineItem.md +66 -0
  238. package/src/modules/accounting/docs/commands/CreateCostCenter.md +64 -0
  239. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchy.md +45 -0
  240. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchyNode.md +61 -0
  241. package/src/modules/accounting/docs/commands/CreateCostElement.md +91 -0
  242. package/src/modules/accounting/docs/commands/CreateInternalOrder.md +72 -0
  243. package/src/modules/accounting/docs/commands/CreatePlanVersion.md +59 -0
  244. package/src/modules/accounting/docs/commands/CreateProfitCenter.md +63 -0
  245. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchy.md +45 -0
  246. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchyNode.md +60 -0
  247. package/src/modules/accounting/docs/commands/DeactivateCostElement.md +43 -0
  248. package/src/modules/accounting/docs/commands/DeactivateProfitCenter.md +44 -0
  249. package/src/modules/accounting/docs/commands/DeleteAllocationCycle.md +46 -0
  250. package/src/modules/accounting/docs/commands/DeleteAllocationRule.md +45 -0
  251. package/src/modules/accounting/docs/commands/DeleteBudget.md +46 -0
  252. package/src/modules/accounting/docs/commands/DeleteBudgetLineItem.md +45 -0
  253. package/src/modules/accounting/docs/commands/DeleteCostCenter.md +50 -0
  254. package/src/modules/accounting/docs/commands/DeleteCostCenterHierarchyNode.md +45 -0
  255. package/src/modules/accounting/docs/commands/DeleteCostElement.md +43 -0
  256. package/src/modules/accounting/docs/commands/DeleteInternalOrder.md +45 -0
  257. package/src/modules/accounting/docs/commands/DeleteProfitCenter.md +46 -0
  258. package/src/modules/accounting/docs/commands/DeleteProfitCenterHierarchyNode.md +46 -0
  259. package/src/modules/accounting/docs/commands/ExecuteAllocationCycle.md +54 -0
  260. package/src/modules/accounting/docs/commands/FinalizeVarianceReport.md +44 -0
  261. package/src/modules/accounting/docs/commands/GenerateVarianceReport.md +83 -0
  262. package/src/modules/accounting/docs/commands/InvalidateAllocationCycle.md +45 -0
  263. package/src/modules/accounting/docs/commands/MoveCostCenterHierarchyNode.md +51 -0
  264. package/src/modules/accounting/docs/commands/PostAllocationCycle.md +58 -0
  265. package/src/modules/accounting/docs/commands/ReactivateCostElement.md +43 -0
  266. package/src/modules/accounting/docs/commands/ReactivateProfitCenter.md +43 -0
  267. package/src/modules/accounting/docs/commands/RecordCommitment.md +60 -0
  268. package/src/modules/accounting/docs/commands/RejectBudget.md +49 -0
  269. package/src/modules/accounting/docs/commands/ReleaseCommitment.md +45 -0
  270. package/src/modules/accounting/docs/commands/ReleaseInternalOrder.md +44 -0
  271. package/src/modules/accounting/docs/commands/ReverseAllocationCycle.md +55 -0
  272. package/src/modules/accounting/docs/commands/SubmitBudget.md +47 -0
  273. package/src/modules/accounting/docs/commands/TechnicallyCompleteInternalOrder.md +44 -0
  274. package/src/modules/accounting/docs/commands/UpdateAllocationCycle.md +45 -0
  275. package/src/modules/accounting/docs/commands/UpdateBudget.md +47 -0
  276. package/src/modules/accounting/docs/commands/UpdateCostCenter.md +50 -0
  277. package/src/modules/accounting/docs/commands/UpdateCostElement.md +82 -0
  278. package/src/modules/accounting/docs/commands/UpdateInternalOrder.md +62 -0
  279. package/src/modules/accounting/docs/commands/UpdateProfitCenter.md +56 -0
  280. package/src/modules/accounting/docs/commands/ValidateAllocationCycle.md +57 -0
  281. package/src/modules/accounting/docs/features/budget-management.md +147 -0
  282. package/src/modules/accounting/docs/features/cost-allocation.md +129 -0
  283. package/src/modules/accounting/docs/features/cost-center-management.md +118 -0
  284. package/src/modules/accounting/docs/features/cost-element-management.md +114 -0
  285. package/src/modules/accounting/docs/features/internal-order-management.md +111 -0
  286. package/src/modules/accounting/docs/features/profit-center-management.md +120 -0
  287. package/src/modules/accounting/docs/features/variance-analysis.md +130 -0
  288. package/src/modules/accounting/docs/models/AllocationCycle.md +81 -0
  289. package/src/modules/accounting/docs/models/AllocationResult.md +37 -0
  290. package/src/modules/accounting/docs/models/AllocationRule.md +41 -0
  291. package/src/modules/accounting/docs/models/Budget.md +77 -0
  292. package/src/modules/accounting/docs/models/BudgetLineItem.md +40 -0
  293. package/src/modules/accounting/docs/models/Commitment.md +45 -0
  294. package/src/modules/accounting/docs/models/CostCenter.md +51 -0
  295. package/src/modules/accounting/docs/models/CostCenterHierarchy.md +38 -0
  296. package/src/modules/accounting/docs/models/CostCenterHierarchyNode.md +41 -0
  297. package/src/modules/accounting/docs/models/CostElement.md +66 -0
  298. package/src/modules/accounting/docs/models/InternalOrder.md +67 -0
  299. package/src/modules/accounting/docs/models/PlanVersion.md +36 -0
  300. package/src/modules/accounting/docs/models/ProfitCenter.md +66 -0
  301. package/src/modules/accounting/docs/models/ProfitCenterHierarchy.md +36 -0
  302. package/src/modules/accounting/docs/models/ProfitCenterHierarchyAssignment.md +36 -0
  303. package/src/modules/accounting/docs/models/ProfitCenterHierarchyNode.md +39 -0
  304. package/src/modules/accounting/docs/models/VarianceReport.md +58 -0
  305. package/src/modules/accounting/docs/models/VarianceReportLine.md +43 -0
  306. package/src/modules/accounting/docs/queries/CalculateBudgetAvailability.md +64 -0
  307. package/src/modules/accounting/docs/queries/GetAllocationCycle.md +43 -0
  308. package/src/modules/accounting/docs/queries/GetBudget.md +42 -0
  309. package/src/modules/accounting/docs/queries/GetCostCenter.md +38 -0
  310. package/src/modules/accounting/docs/queries/GetCostCenterHierarchy.md +45 -0
  311. package/src/modules/accounting/docs/queries/GetCostElement.md +39 -0
  312. package/src/modules/accounting/docs/queries/GetInternalOrder.md +42 -0
  313. package/src/modules/accounting/docs/queries/GetProfitCenter.md +38 -0
  314. package/src/modules/accounting/docs/queries/GetProfitCenterHierarchy.md +46 -0
  315. package/src/modules/accounting/docs/queries/GetVarianceReport.md +45 -0
  316. package/src/modules/accounting/docs/queries/ListAllocationCycles.md +63 -0
  317. package/src/modules/accounting/docs/queries/ListBudgets.md +70 -0
  318. package/src/modules/accounting/docs/queries/ListCostCenters.md +55 -0
  319. package/src/modules/accounting/docs/queries/ListCostElements.md +63 -0
  320. package/src/modules/accounting/docs/queries/ListInternalOrders.md +62 -0
  321. package/src/modules/accounting/docs/queries/ListProfitCenters.md +49 -0
  322. package/src/modules/accounting/generated/enums.ts +110 -0
  323. package/src/modules/accounting/generated/kysely-tailordb.ts +302 -0
  324. package/src/modules/accounting/index.ts +2 -0
  325. package/src/modules/accounting/lib/_db_deps.ts +70 -0
  326. package/src/modules/accounting/lib/actualAmounts.ts +93 -0
  327. package/src/modules/accounting/lib/allocationPosting.ts +152 -0
  328. package/src/modules/accounting/lib/errors.generated.ts +432 -0
  329. package/src/modules/accounting/lib/permissions.generated.ts +61 -0
  330. package/src/modules/accounting/lib/types.ts +114 -0
  331. package/src/modules/accounting/module.ts +429 -0
  332. package/src/modules/accounting/permissions.ts +3 -0
  333. package/src/modules/accounting/query/calculateBudgetAvailability.generated.ts +5 -0
  334. package/src/modules/accounting/query/calculateBudgetAvailability.test.ts +229 -0
  335. package/src/modules/accounting/query/calculateBudgetAvailability.ts +147 -0
  336. package/src/modules/accounting/query/getAllocationCycle.generated.ts +5 -0
  337. package/src/modules/accounting/query/getAllocationCycle.test.ts +94 -0
  338. package/src/modules/accounting/query/getAllocationCycle.ts +37 -0
  339. package/src/modules/accounting/query/getBudget.generated.ts +5 -0
  340. package/src/modules/accounting/query/getBudget.test.ts +80 -0
  341. package/src/modules/accounting/query/getBudget.ts +31 -0
  342. package/src/modules/accounting/query/getCostCenter.generated.ts +5 -0
  343. package/src/modules/accounting/query/getCostCenter.test.ts +50 -0
  344. package/src/modules/accounting/query/getCostCenter.ts +33 -0
  345. package/src/modules/accounting/query/getCostCenterHierarchy.generated.ts +5 -0
  346. package/src/modules/accounting/query/getCostCenterHierarchy.test.ts +100 -0
  347. package/src/modules/accounting/query/getCostCenterHierarchy.ts +80 -0
  348. package/src/modules/accounting/query/getCostElement.generated.ts +5 -0
  349. package/src/modules/accounting/query/getCostElement.test.ts +57 -0
  350. package/src/modules/accounting/query/getCostElement.ts +21 -0
  351. package/src/modules/accounting/query/getInternalOrder.generated.ts +5 -0
  352. package/src/modules/accounting/query/getInternalOrder.test.ts +73 -0
  353. package/src/modules/accounting/query/getInternalOrder.ts +21 -0
  354. package/src/modules/accounting/query/getProfitCenter.generated.ts +5 -0
  355. package/src/modules/accounting/query/getProfitCenter.test.ts +65 -0
  356. package/src/modules/accounting/query/getProfitCenter.ts +31 -0
  357. package/src/modules/accounting/query/getProfitCenterHierarchy.generated.ts +5 -0
  358. package/src/modules/accounting/query/getProfitCenterHierarchy.test.ts +97 -0
  359. package/src/modules/accounting/query/getProfitCenterHierarchy.ts +87 -0
  360. package/src/modules/accounting/query/getVarianceReport.generated.ts +5 -0
  361. package/src/modules/accounting/query/getVarianceReport.test.ts +108 -0
  362. package/src/modules/accounting/query/getVarianceReport.ts +31 -0
  363. package/src/modules/accounting/query/listAllocationCycles.generated.ts +5 -0
  364. package/src/modules/accounting/query/listAllocationCycles.test.ts +152 -0
  365. package/src/modules/accounting/query/listAllocationCycles.ts +96 -0
  366. package/src/modules/accounting/query/listBudgets.generated.ts +5 -0
  367. package/src/modules/accounting/query/listBudgets.test.ts +150 -0
  368. package/src/modules/accounting/query/listBudgets.ts +85 -0
  369. package/src/modules/accounting/query/listCostCenters.generated.ts +5 -0
  370. package/src/modules/accounting/query/listCostCenters.test.ts +111 -0
  371. package/src/modules/accounting/query/listCostCenters.ts +71 -0
  372. package/src/modules/accounting/query/listCostElements.generated.ts +5 -0
  373. package/src/modules/accounting/query/listCostElements.test.ts +138 -0
  374. package/src/modules/accounting/query/listCostElements.ts +105 -0
  375. package/src/modules/accounting/query/listInternalOrders.generated.ts +5 -0
  376. package/src/modules/accounting/query/listInternalOrders.test.ts +129 -0
  377. package/src/modules/accounting/query/listInternalOrders.ts +94 -0
  378. package/src/modules/accounting/query/listProfitCenters.generated.ts +5 -0
  379. package/src/modules/accounting/query/listProfitCenters.test.ts +94 -0
  380. package/src/modules/accounting/query/listProfitCenters.ts +56 -0
  381. package/src/modules/accounting/seed/index.ts +19 -0
  382. package/src/modules/accounting/tailor.config.ts +13 -0
  383. package/src/modules/accounting/testing/commandTestUtils.ts +35 -0
  384. package/src/modules/accounting/testing/fixtures.ts +502 -0
  385. package/src/modules/audit/command/logAuditEvent.ts +43 -38
  386. package/src/modules/audit/command/updateAuditPolicy.ts +2 -2
  387. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +1 -1
  388. package/src/modules/audit/module.ts +4 -0
  389. package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +3 -3
  390. package/src/modules/business-partner/command/createPartnerBankAccount.ts +1 -1
  391. package/src/modules/business-partner/command/updateContactPerson.ts +3 -4
  392. package/src/modules/business-partner/command/updatePartner.ts +13 -6
  393. package/src/modules/business-partner/command/updatePartnerAddress.ts +13 -6
  394. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +3 -4
  395. package/src/modules/business-partner/command/updatePartnerIdentification.ts +3 -4
  396. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +3 -3
  397. package/src/modules/business-partner/docs/commands/UpdatePartner.md +2 -2
  398. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +2 -2
  399. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +2 -2
  400. package/src/modules/business-partner/module.ts +1 -0
  401. package/src/modules/coa-management/command/activateAccount.test.ts +0 -15
  402. package/src/modules/coa-management/command/activateAccount.ts +1 -42
  403. package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +2 -31
  404. package/src/modules/coa-management/command/activateChartOfAccounts.ts +1 -37
  405. package/src/modules/coa-management/command/createAccount.test.ts +0 -28
  406. package/src/modules/coa-management/command/createAccount.ts +0 -43
  407. package/src/modules/coa-management/command/createAccountGroup.test.ts +2 -51
  408. package/src/modules/coa-management/command/createAccountGroup.ts +1 -56
  409. package/src/modules/coa-management/command/createChartOfAccounts.test.ts +1 -49
  410. package/src/modules/coa-management/command/createChartOfAccounts.ts +0 -51
  411. package/src/modules/coa-management/command/deactivateAccount.test.ts +0 -15
  412. package/src/modules/coa-management/command/deactivateAccount.ts +1 -53
  413. package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +2 -29
  414. package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +1 -37
  415. package/src/modules/coa-management/command/deleteAccount.test.ts +0 -13
  416. package/src/modules/coa-management/command/deleteAccount.ts +1 -42
  417. package/src/modules/coa-management/command/deleteAccountGroup.test.ts +0 -19
  418. package/src/modules/coa-management/command/deleteAccountGroup.ts +1 -42
  419. package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +2 -58
  420. package/src/modules/coa-management/command/deleteChartOfAccounts.ts +4 -88
  421. package/src/modules/coa-management/command/moveAccountGroup.test.ts +0 -27
  422. package/src/modules/coa-management/command/moveAccountGroup.ts +1 -48
  423. package/src/modules/coa-management/command/reactivateAccount.test.ts +0 -15
  424. package/src/modules/coa-management/command/reactivateAccount.ts +1 -53
  425. package/src/modules/coa-management/command/updateAccount.test.ts +0 -15
  426. package/src/modules/coa-management/command/updateAccount.ts +3 -95
  427. package/src/modules/coa-management/command/updateAccountGroup.test.ts +22 -20
  428. package/src/modules/coa-management/command/updateAccountGroup.ts +30 -78
  429. package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +2 -31
  430. package/src/modules/coa-management/command/updateChartOfAccounts.ts +4 -54
  431. package/src/modules/coa-management/docs/commands/ActivateAccount.md +1 -4
  432. package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +1 -4
  433. package/src/modules/coa-management/docs/commands/CreateAccount.md +1 -4
  434. package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +2 -5
  435. package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +2 -6
  436. package/src/modules/coa-management/docs/commands/DeactivateAccount.md +1 -4
  437. package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +1 -4
  438. package/src/modules/coa-management/docs/commands/DeleteAccount.md +1 -4
  439. package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +1 -4
  440. package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +1 -6
  441. package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +1 -4
  442. package/src/modules/coa-management/docs/commands/ReactivateAccount.md +1 -4
  443. package/src/modules/coa-management/docs/commands/UpdateAccount.md +1 -4
  444. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +6 -8
  445. package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +1 -4
  446. package/src/modules/coa-management/module.ts +16 -27
  447. package/src/modules/finance-ledger/command/updateFiscalYear.ts +2 -3
  448. package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +0 -17
  449. package/src/modules/finance-ledger/command/updateJournalEntry.ts +2 -10
  450. package/src/modules/finance-ledger/command/updateJournalLine.ts +2 -3
  451. package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +1 -4
  452. package/src/modules/finance-ledger/module.ts +1 -0
  453. package/src/modules/inventory/command/approveInventoryAdjustment.test.ts +1 -1
  454. package/src/modules/inventory/command/approveInventoryAdjustment.ts +1 -1
  455. package/src/modules/inventory/command/cancelStockMovement.test.ts +2 -2
  456. package/src/modules/inventory/command/cancelStockMovement.ts +1 -1
  457. package/src/modules/inventory/command/confirmInventoryAdjustment.test.ts +4 -4
  458. package/src/modules/inventory/command/confirmInventoryAdjustment.ts +1 -1
  459. package/src/modules/inventory/command/confirmStockMovement.test.ts +1 -1
  460. package/src/modules/inventory/command/confirmStockMovement.ts +1 -1
  461. package/src/modules/inventory/command/createInventoryAdjustment.test.ts +6 -6
  462. package/src/modules/inventory/command/createInventoryAdjustment.ts +1 -1
  463. package/src/modules/inventory/command/createStockMovement.test.ts +3 -3
  464. package/src/modules/inventory/command/createStockMovement.ts +1 -1
  465. package/src/modules/inventory/command/executeStockMovement.test.ts +5 -5
  466. package/src/modules/inventory/command/executeStockMovement.ts +1 -1
  467. package/src/modules/inventory/command/rejectInventoryAdjustment.test.ts +1 -1
  468. package/src/modules/inventory/command/rejectInventoryAdjustment.ts +1 -1
  469. package/src/modules/inventory/command/reviseInventoryAdjustment.test.ts +2 -2
  470. package/src/modules/inventory/command/reviseInventoryAdjustment.ts +1 -1
  471. package/src/modules/inventory/command/submitInventoryAdjustment.test.ts +1 -1
  472. package/src/modules/inventory/command/submitInventoryAdjustment.ts +1 -1
  473. package/src/modules/inventory/command/updateLot.test.ts +1 -1
  474. package/src/modules/inventory/command/updateLot.ts +2 -3
  475. package/src/modules/inventory/command/updateStockMovement.test.ts +4 -4
  476. package/src/modules/inventory/command/updateStockMovement.ts +4 -5
  477. package/src/modules/inventory/command/updateStorageLocation.ts +12 -17
  478. package/src/modules/inventory/command/updateValuationPolicy.ts +2 -3
  479. package/src/modules/inventory/command/updateWarehouse.ts +2 -3
  480. package/src/modules/inventory/docs/commands/UpdateLot.md +3 -3
  481. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +6 -6
  482. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +2 -2
  483. package/src/modules/inventory/module.ts +1 -0
  484. package/src/modules/item-management/command/createTaxonomyNode.test.ts +4 -4
  485. package/src/modules/item-management/command/createTaxonomyNode.ts +1 -1
  486. package/src/modules/item-management/command/moveTaxonomyNode.test.ts +2 -2
  487. package/src/modules/item-management/command/moveTaxonomyNode.ts +2 -2
  488. package/src/modules/item-management/command/updateItem.test.ts +16 -12
  489. package/src/modules/item-management/command/updateItem.ts +47 -31
  490. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +16 -17
  491. package/src/modules/item-management/command/updateTaxonomyNode.ts +43 -30
  492. package/src/modules/item-management/docs/commands/UpdateItem.md +7 -11
  493. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +10 -14
  494. package/src/modules/item-management/module.ts +1 -0
  495. package/src/modules/manufacturing/command/createRouting.ts +1 -1
  496. package/src/modules/manufacturing/command/recordInventoryIssueOutcome.test.ts +1 -1
  497. package/src/modules/manufacturing/command/recordInventoryIssueOutcome.ts +1 -1
  498. package/src/modules/manufacturing/command/recordManufacturingCostSettlementAcknowledgment.test.ts +1 -1
  499. package/src/modules/manufacturing/command/recordManufacturingCostSettlementAcknowledgment.ts +1 -1
  500. package/src/modules/manufacturing/command/reviewManufacturingCostSummary.test.ts +1 -1
  501. package/src/modules/manufacturing/command/reviewManufacturingCostSummary.ts +1 -1
  502. package/src/modules/manufacturing/command/updateBillOfMaterial.ts +3 -4
  503. package/src/modules/manufacturing/command/updateProductionOrder.ts +3 -4
  504. package/src/modules/manufacturing/command/updateRouting.ts +4 -5
  505. package/src/modules/manufacturing/command/updateWorkCenter.test.ts +16 -7
  506. package/src/modules/manufacturing/command/updateWorkCenter.ts +41 -38
  507. package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +2 -0
  508. package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +2 -0
  509. package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +1 -0
  510. package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +1 -0
  511. package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +6 -5
  512. package/src/modules/manufacturing/docs/models/BillOfMaterialLine.md +42 -0
  513. package/src/modules/manufacturing/docs/models/CostVarianceLine.md +36 -0
  514. package/src/modules/manufacturing/docs/models/ManufacturingCostLine.md +37 -0
  515. package/src/modules/manufacturing/docs/models/ManufacturingCostSettlementRecord.md +34 -0
  516. package/src/modules/manufacturing/docs/models/ProductionOrderBomSnapshot.md +35 -0
  517. package/src/modules/manufacturing/docs/models/ProductionOrderCostBaseline.md +36 -0
  518. package/src/modules/manufacturing/docs/models/ProductionOrderMaterialRequirement.md +35 -0
  519. package/src/modules/manufacturing/docs/models/ProductionOrderRoutingSnapshot.md +34 -0
  520. package/src/modules/manufacturing/docs/models/RoutingOperation.md +40 -0
  521. package/src/modules/manufacturing/docs/models/WorkOrderExecutionEvent.md +38 -0
  522. package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +1 -0
  523. package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +1 -0
  524. package/src/modules/manufacturing/module.ts +1 -0
  525. package/src/modules/organization/command/updateCompany.test.ts +6 -6
  526. package/src/modules/organization/command/updateCompany.ts +3 -4
  527. package/src/modules/organization/command/updateDepartment.test.ts +7 -7
  528. package/src/modules/organization/command/updateDepartment.ts +13 -12
  529. package/src/modules/organization/command/updateSite.test.ts +10 -10
  530. package/src/modules/organization/command/updateSite.ts +3 -4
  531. package/src/modules/organization/docs/commands/UpdateCompany.md +6 -6
  532. package/src/modules/organization/docs/commands/UpdateDepartment.md +9 -10
  533. package/src/modules/organization/docs/commands/UpdateSite.md +12 -12
  534. package/src/modules/organization/module.ts +1 -0
  535. package/src/modules/primitives/module.ts +1 -0
  536. package/src/modules/product-management/command/assignProductToCategory.test.ts +2 -2
  537. package/src/modules/product-management/command/assignProductToCategory.ts +2 -2
  538. package/src/modules/product-management/command/createProductAttribute.test.ts +1 -1
  539. package/src/modules/product-management/command/createProductAttribute.ts +1 -1
  540. package/src/modules/product-management/command/createProductAttributeValue.test.ts +1 -1
  541. package/src/modules/product-management/command/createProductAttributeValue.ts +1 -1
  542. package/src/modules/product-management/command/createProductCategory.test.ts +2 -2
  543. package/src/modules/product-management/command/createProductCategory.ts +1 -1
  544. package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +3 -3
  545. package/src/modules/product-management/command/setProductAttributeAssignment.ts +2 -2
  546. package/src/modules/product-management/command/updateProduct.test.ts +17 -11
  547. package/src/modules/product-management/command/updateProduct.ts +45 -28
  548. package/src/modules/product-management/command/updateProductAttribute.test.ts +16 -21
  549. package/src/modules/product-management/command/updateProductAttribute.ts +40 -26
  550. package/src/modules/product-management/command/updateProductAttributeValue.ts +2 -3
  551. package/src/modules/product-management/command/updateProductCategory.test.ts +14 -19
  552. package/src/modules/product-management/command/updateProductCategory.ts +42 -26
  553. package/src/modules/product-management/docs/commands/UpdateProduct.md +16 -20
  554. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +10 -14
  555. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +10 -14
  556. package/src/modules/product-management/module.ts +1 -0
  557. package/src/modules/purchase/command/activatePurchasePaymentTerm.test.ts +4 -4
  558. package/src/modules/purchase/command/activatePurchasePaymentTerm.ts +2 -2
  559. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.test.ts +4 -4
  560. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.ts +2 -2
  561. package/src/modules/purchase/command/updateGoodsReceipt.ts +2 -3
  562. package/src/modules/purchase/command/updatePurchaseBill.ts +2 -3
  563. package/src/modules/purchase/command/updatePurchaseOrder.ts +2 -3
  564. package/src/modules/purchase/command/updatePurchasePaymentTerm.test.ts +2 -2
  565. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +3 -4
  566. package/src/modules/purchase/command/updatePurchasePriceList.ts +2 -3
  567. package/src/modules/purchase/command/updatePurchasePriceRule.ts +2 -3
  568. package/src/modules/purchase/module.ts +1 -0
  569. package/src/modules/sales/command/createSalesOrder.ts +1 -1
  570. package/src/modules/sales/command/updateChannel.test.ts +4 -4
  571. package/src/modules/sales/command/updateChannel.ts +2 -3
  572. package/src/modules/sales/command/updateListing.test.ts +2 -2
  573. package/src/modules/sales/command/updateListing.ts +2 -3
  574. package/src/modules/sales/command/updateSalesCreditNote.test.ts +2 -2
  575. package/src/modules/sales/command/updateSalesCreditNote.ts +2 -3
  576. package/src/modules/sales/command/updateSalesInvoice.test.ts +2 -2
  577. package/src/modules/sales/command/updateSalesInvoice.ts +2 -3
  578. package/src/modules/sales/command/updateSalesOrder.test.ts +3 -3
  579. package/src/modules/sales/command/updateSalesOrder.ts +2 -3
  580. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +2 -2
  581. package/src/modules/sales/command/updateSalesPaymentTerm.ts +2 -3
  582. package/src/modules/sales/command/updateSalesPriceList.test.ts +3 -3
  583. package/src/modules/sales/command/updateSalesPriceList.ts +2 -3
  584. package/src/modules/sales/command/updateSalesPriceRule.test.ts +3 -3
  585. package/src/modules/sales/command/updateSalesPriceRule.ts +2 -3
  586. package/src/modules/sales/command/updateShipment.test.ts +2 -2
  587. package/src/modules/sales/command/updateShipment.ts +2 -3
  588. package/src/modules/sales/docs/commands/UpdateChannel.md +4 -4
  589. package/src/modules/sales/docs/commands/UpdateListing.md +2 -2
  590. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +2 -2
  591. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +2 -2
  592. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +3 -3
  593. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +2 -2
  594. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +3 -3
  595. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +3 -3
  596. package/src/modules/sales/docs/commands/UpdateShipment.md +2 -2
  597. package/src/modules/sales/module.ts +1 -0
  598. package/src/modules/user-management/README.md +2 -1
  599. package/src/modules/user-management/command/updateOwnProfile.generated.ts +6 -0
  600. package/src/modules/user-management/command/updateOwnProfile.test.ts +191 -0
  601. package/src/modules/user-management/command/updateOwnProfile.ts +82 -0
  602. package/src/modules/user-management/command/updateUser.generated.ts +6 -0
  603. package/src/modules/user-management/command/updateUser.test.ts +195 -0
  604. package/src/modules/user-management/command/updateUser.ts +76 -0
  605. package/src/modules/user-management/docs/commands/UpdateOwnProfile.md +68 -0
  606. package/src/modules/user-management/docs/commands/UpdateUser.md +67 -0
  607. package/src/modules/user-management/docs/features/user-account-management.md +28 -3
  608. package/src/modules/user-management/docs/models/User.md +2 -0
  609. package/src/modules/user-management/lib/errors.generated.ts +5 -0
  610. package/src/modules/user-management/lib/permissions.generated.ts +2 -0
  611. package/src/modules/user-management/module.ts +5 -0
  612. package/src/modules/user-management/seed/index.ts +19 -0
  613. package/templates/scaffold/app/backend/eslint.config.js +17 -0
  614. package/templates/scaffold/app/backend/package.json +1 -0
  615. package/templates/scaffold/app/backend/seed/data/AuditEntry.schema.ts +20 -0
  616. package/templates/scaffold/app/backend/seed/data/AuditPolicy.jsonl +7 -0
  617. package/templates/scaffold/app/backend/seed/data/AuditPolicy.schema.ts +15 -0
  618. package/templates/scaffold/app/backend/seed/data/AuditableEntity.jsonl +4 -0
  619. package/templates/scaffold/app/backend/seed/data/AuditableEntity.schema.ts +20 -0
  620. package/templates/scaffold/app/backend/seed/data/ChangeDetail.schema.ts +20 -0
  621. package/templates/scaffold/app/backend/seed/data/Company.schema.ts +15 -0
  622. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +13 -0
  623. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +1 -1
  624. package/templates/scaffold/app/backend/seed/data/PolicyFieldRule.schema.ts +20 -0
  625. package/templates/scaffold/app/backend/seed/data/Role.jsonl +1 -0
  626. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +1 -1
  627. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +13 -0
  628. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +1 -1
  629. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -1
  630. package/templates/scaffold/app/backend/seed/data/User.schema.ts +1 -1
  631. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +1 -0
  632. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +1 -1
  633. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -1
  634. package/templates/scaffold/app/backend/seed/exec.mjs +12 -0
  635. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +2 -2
  636. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +2 -2
  637. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +62 -0
  638. package/templates/scaffold/app/backend/src/modules-db.ts +13 -0
  639. package/templates/scaffold/app/backend/src/modules.ts +3 -5
  640. package/templates/scaffold/app/backend/src/resolvers/assignPermissionToRole.ts +70 -0
  641. package/templates/scaffold/app/backend/src/resolvers/assignRoleToUser.ts +72 -0
  642. package/templates/scaffold/app/backend/src/resolvers/createRole.ts +92 -0
  643. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +113 -13
  644. package/templates/scaffold/app/backend/src/resolvers/deactivateUser.ts +67 -0
  645. package/templates/scaffold/app/backend/src/resolvers/reactivateUser.ts +63 -0
  646. package/templates/scaffold/app/backend/src/resolvers/revokePermissionFromRole.ts +72 -0
  647. package/templates/scaffold/app/backend/src/resolvers/revokeRoleFromUser.ts +72 -0
  648. package/templates/scaffold/app/backend/src/resolvers/updateOwnProfile.ts +107 -0
  649. package/templates/scaffold/app/backend/src/resolvers/updateUserProfile.ts +107 -0
  650. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log-detail.test.ts +79 -0
  651. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log.test.ts +86 -0
  652. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--assign-role-to-user.test.ts +103 -0
  653. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--create-role.test.ts +61 -0
  654. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--remove-role-from-user.test.ts +89 -0
  655. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--update-role-permissions.test.ts +125 -0
  656. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--browse-user-list.test.ts +91 -0
  657. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--create-user-account.test.ts +97 -0
  658. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--toggle-user-status.test.ts +131 -0
  659. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-own-profile.test.ts +85 -0
  660. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-user-profile.test.ts +157 -0
  661. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-own-profile.test.ts +30 -0
  662. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-user-detail.test.ts +98 -0
  663. package/templates/scaffold/app/backend/tailor.config.ts +21 -3
  664. package/templates/scaffold/app/backend/tsconfig.json +1 -1
  665. package/templates/scaffold/app/docs/actors/user.md +11 -0
  666. package/templates/scaffold/app/docs/business-flow/audit-log/README.md +31 -0
  667. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log-detail.md +35 -0
  668. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log.md +44 -0
  669. package/templates/scaffold/app/docs/business-flow/role-management/README.md +33 -0
  670. package/templates/scaffold/app/docs/business-flow/role-management/story/user--assign-role-to-user.md +35 -0
  671. package/templates/scaffold/app/docs/business-flow/role-management/story/user--create-role.md +41 -0
  672. package/templates/scaffold/app/docs/business-flow/role-management/story/user--remove-role-from-user.md +33 -0
  673. package/templates/scaffold/app/docs/business-flow/role-management/story/user--update-role-permissions.md +41 -0
  674. package/templates/scaffold/app/docs/business-flow/user-lifecycle/README.md +48 -0
  675. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--browse-user-list.md +38 -0
  676. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--create-user-account.md +45 -0
  677. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--toggle-user-status.md +38 -0
  678. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-own-profile.md +36 -0
  679. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-user-profile.md +41 -0
  680. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-own-profile.md +30 -0
  681. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-user-detail.md +33 -0
  682. package/templates/scaffold/app/docs/resolver/assignPermissionToRole.md +16 -0
  683. package/templates/scaffold/app/docs/resolver/assignRoleToUser.md +17 -0
  684. package/templates/scaffold/app/docs/resolver/createRole.md +17 -0
  685. package/templates/scaffold/app/docs/resolver/createUser.md +23 -0
  686. package/templates/scaffold/app/docs/resolver/deactivateUser.md +17 -0
  687. package/templates/scaffold/app/docs/resolver/reactivateUser.md +16 -0
  688. package/templates/scaffold/app/docs/resolver/revokePermissionFromRole.md +17 -0
  689. package/templates/scaffold/app/docs/resolver/revokeRoleFromUser.md +17 -0
  690. package/templates/scaffold/app/docs/resolver/updateOwnProfile.md +20 -0
  691. package/templates/scaffold/app/docs/resolver/updateUserProfile.md +19 -0
  692. package/templates/scaffold/app/docs/screen/audit-entry-detail.md +30 -0
  693. package/templates/scaffold/app/docs/screen/audit-entry-list.md +25 -0
  694. package/templates/scaffold/app/docs/screen/my-profile-edit-form.md +22 -0
  695. package/templates/scaffold/app/docs/screen/my-profile.md +27 -0
  696. package/templates/scaffold/app/docs/screen/role-create-form.md +23 -0
  697. package/templates/scaffold/app/docs/screen/role-detail.md +27 -0
  698. package/templates/scaffold/app/docs/screen/role-edit-form.md +21 -0
  699. package/templates/scaffold/app/docs/screen/role-list.md +23 -0
  700. package/templates/scaffold/app/docs/screen/user-create-form.md +23 -0
  701. package/templates/scaffold/app/docs/screen/user-detail.md +33 -0
  702. package/templates/scaffold/app/docs/screen/user-edit-form.md +22 -0
  703. package/templates/scaffold/app/docs/screen/user-list.md +24 -0
  704. package/templates/scaffold/app/frontend/package.json +1 -1
  705. package/templates/scaffold/app/frontend/src/App.tsx +57 -12
  706. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +1 -1
  707. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +59 -31
  708. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1411 -688
  709. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +1 -1
  710. package/templates/scaffold/app/frontend/src/lib/permission-groups.ts +59 -0
  711. package/templates/scaffold/app/frontend/src/pages/audit/[id]/components/audit-entry-detail.tsx +102 -0
  712. package/templates/scaffold/app/frontend/src/pages/audit/[id]/page.tsx +65 -0
  713. package/templates/scaffold/app/frontend/src/pages/audit/components/audit-entries-table.tsx +90 -0
  714. package/templates/scaffold/app/frontend/src/pages/audit/page.tsx +52 -0
  715. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/components/edit-profile-form.tsx +125 -0
  716. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/page.tsx +19 -0
  717. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +41 -21
  718. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-actions.tsx +26 -0
  719. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-detail.tsx +69 -0
  720. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/components/edit-role-form.tsx +192 -0
  721. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/page.tsx +51 -0
  722. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/page.tsx +56 -0
  723. package/templates/scaffold/app/frontend/src/pages/user-management/role/components/roles-table.tsx +85 -0
  724. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/components/create-role-form.tsx +204 -0
  725. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/page.tsx +19 -0
  726. package/templates/scaffold/app/frontend/src/pages/user-management/role/page.tsx +60 -0
  727. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-actions.tsx +216 -0
  728. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +97 -33
  729. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/components/edit-user-form.tsx +115 -0
  730. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/page.tsx +51 -0
  731. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +8 -2
  732. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +43 -42
  733. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +120 -45
  734. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +3 -4
  735. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +8 -1
  736. package/templates/scaffold/module/eslint.config.js +32 -0
  737. package/templates/scaffold/module/module.ts +1 -0
  738. package/templates/scaffold/module/package.json +3 -1
  739. package/templates/scaffold/module/vitest.config.ts +11 -0
  740. package/templates/scaffold/project/__dot__gitignore +1 -0
  741. package/templates/scaffold/project/__pnpm-workspace.yaml +3 -0
  742. package/templates/scaffold/project/apps/.gitkeep +0 -0
  743. package/templates/scaffold/project/modules/.gitkeep +0 -0
  744. package/templates/scaffold/project/package.json +15 -0
  745. package/templates/workflows/erp-kit-check.yml +10 -4
  746. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +0 -39
  747. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +0 -60
  748. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +0 -75
  749. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +0 -21
  750. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +0 -90
  751. /package/src/modules/{supplier-portal → accounting/executor}/.gitkeep +0 -0
  752. /package/templates/scaffold/app/{docs/actors/.gitkeep → backend/seed/data/AuditEntry.jsonl} +0 -0
  753. /package/templates/scaffold/app/{docs/business-flow/.gitkeep → backend/seed/data/ChangeDetail.jsonl} +0 -0
  754. /package/templates/scaffold/app/{docs/resolver/.gitkeep → backend/seed/data/Company.jsonl} +0 -0
  755. /package/templates/scaffold/app/{docs/screen/.gitkeep → backend/seed/data/PolicyFieldRule.jsonl} +0 -0
  756. /package/templates/{config → scaffold/project}/license.config.json +0 -0
@@ -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
@@ -0,0 +1,43 @@
1
+ # VarianceReportLine
2
+
3
+ ## Description
4
+
5
+ VarianceReportLine is a child record of a VarianceReport that captures the planned amount, actual amount, computed variance amount, variance percentage, and variance direction (FAVORABLE or UNFAVORABLE) for a specific cost element within a specific accounting period. Each line carries a variance report reference, cost element reference, accounting period reference, planned amount, actual amount, variance amount, variance percentage, and variance direction. Variance direction is determined by account type: for cost/expense elements, actual below plan is FAVORABLE; for revenue elements, actual above plan is FAVORABLE. This cost-element-level detail enables managers to diagnose exactly which cost types are driving deviations from the budget.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [generateVarianceReport](../commands/GenerateVarianceReport.md) - Variance report lines are created as part of generating a variance report
16
+
17
+ ### Query Definitions
18
+
19
+ - [GetVarianceReport](../queries/GetVarianceReport.md) - Retrieve variance report lines as part of the parent variance report
20
+
21
+ ### Models
22
+
23
+ - VarianceReportLine
24
+
25
+ ### Invariants
26
+
27
+ - Variance report line must reference a valid variance report via varianceReportId
28
+ - Variance report line must reference a valid cost element via costElementId
29
+ - Variance report line must reference a valid accounting period via accountingPeriodId
30
+ - Variance amount is calculated as actual amount minus planned amount
31
+ - Variance percentage is calculated as (actual - planned) / planned * 100; division by zero is handled gracefully when planned amount is zero
32
+ - For cost/expense cost elements, variance direction is FAVORABLE when actual is less than planned, UNFAVORABLE when actual is greater than planned
33
+ - For revenue cost elements, variance direction is FAVORABLE when actual is greater than planned, UNFAVORABLE when actual is less than planned
34
+ - When actual equals planned, variance amount is zero and variance direction is FAVORABLE
35
+ - A variance report line is created for each cost element that has either a planned amount or an actual amount (or both)
36
+ - A cost element with actual postings but no corresponding budget line item generates a detail line with zero planned amount
37
+ - Variance report lines cannot be modified independently of the parent variance report
38
+
39
+ ### Relationships
40
+
41
+ - **Belongs to VarianceReport**: Each variance report line belongs to a VarianceReport via varianceReportId
42
+ - **References CostElement**: Each variance report line references a CostElement via costElementId
43
+ - **References AccountingPeriod**: Each variance report line references an AccountingPeriod via accountingPeriodId (finance-ledger module)
@@ -0,0 +1,64 @@
1
+ # CalculateBudgetAvailability
2
+
3
+ ## Overview
4
+
5
+ CalculateBudgetAvailability computes the available budget for a given cost element, cost object, and accounting period using the formula: Available = Budget - (Actual + Commitments + Encumbrances). The budget amount is sourced from the matching BudgetLineItem in the ACTIVE budget for the cost object. Actual amounts are sourced from posted journal entries in the finance-ledger module. Commitment amounts are sourced from outstanding purchase order commitment records received from the purchase module. Encumbrances are reserved for future extension and treated as zero in the current implementation. This query is the foundation for budgetary control (funds check) and is invoked during transaction validation to prevent overspending.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts required parameters: `{ costElementId, costObjectId, costObjectType, accountingPeriodId }`
10
+ - Locates the ACTIVE budget matching the cost object and fiscal year containing the given accounting period
11
+ - Retrieves the BudgetLineItem matching the cost element and accounting period
12
+ - If no matching budget or line item exists, returns available as null with a flag indicating no budget is defined
13
+ - Budget amount is the planned amount from the matching BudgetLineItem
14
+ - Actual amount is the sum of posted journal entry line amounts matching the cost element, cost object, and accounting period
15
+ - Commitment amount is the sum of outstanding purchase order commitment records matching the cost element, cost object, and accounting period
16
+ - Encumbrance amount is zero (future extension placeholder)
17
+ - Available = Budget - (Actual + Commitments + Encumbrances)
18
+ - Returns the computed availability along with each component amount (budget, actual, commitments, encumbrances, available)
19
+
20
+ ## Process Flow
21
+
22
+ ```mermaid
23
+ flowchart TD
24
+ A[Receive input: costElementId, costObjectId, costObjectType, accountingPeriodId] --> B[Find ACTIVE budget for cost object and fiscal year]
25
+ B --> C{ACTIVE budget found?}
26
+ C -->|No| D[Return null availability with NO_BUDGET_DEFINED flag]
27
+ C -->|Yes| E[Find BudgetLineItem matching cost element and period]
28
+ E --> F{Line item found?}
29
+ F -->|No| G[Return null availability with NO_BUDGET_LINE_ITEM flag]
30
+ F -->|Yes| H[Retrieve budget amount from line item]
31
+ H --> I[Sum actual amounts from posted journal entries]
32
+ I --> J[Sum commitment amounts from commitment records]
33
+ J --> K[Set encumbrance amount to zero]
34
+ K --> L[Compute Available = Budget - Actual + Commitments + Encumbrances]
35
+ L --> M[Return budget, actual, commitments, encumbrances, and available amounts]
36
+ ```
37
+
38
+ ## External Dependencies
39
+
40
+ - [finance-ledger::listJournalEntries](../../../finance-ledger/docs/queries/ListJournalEntries.md) - Actual amounts sourced from posted journal entries
41
+
42
+ ## Error Scenarios
43
+
44
+ - **NO_BUDGET_DEFINED**: No ACTIVE budget exists for the specified cost object and fiscal year — caller receives null availability
45
+ - **NO_BUDGET_LINE_ITEM**: ACTIVE budget exists but no line item matches the specified cost element and period — caller receives null availability
46
+ - **COST_ELEMENT_NOT_FOUND**: Provided costElementId does not reference an existing cost element
47
+ - **COST_OBJECT_NOT_FOUND**: Provided costObjectId does not reference an existing cost object of the specified type
48
+ - **ACCOUNTING_PERIOD_NOT_FOUND**: Provided accountingPeriodId does not reference an existing accounting period
49
+
50
+ ## Test Cases
51
+
52
+ - returns error when cost element does not exist
53
+ - returns error when cost object does not exist
54
+ - returns error when accounting period does not exist
55
+ - returns budget availability with all component amounts when budget and line item exist
56
+ - computes available as budget minus actual plus commitments plus encumbrances
57
+ - returns actual amount aggregated from posted journal entries only
58
+ - excludes draft journal entries from actual amount calculation
59
+ - returns commitment amount from outstanding purchase order records
60
+ - returns encumbrance amount as zero
61
+ - returns null availability with NO_BUDGET_DEFINED flag when no active budget exists
62
+ - returns null availability with NO_BUDGET_LINE_ITEM flag when line item does not exist for cost element and period
63
+ - handles zero budget amount gracefully
64
+ - handles case where actual exceeds budget resulting in negative availability
@@ -0,0 +1,43 @@
1
+ # GetAllocationCycle
2
+
3
+ ## Overview
4
+
5
+ GetAllocationCycle retrieves a single allocation cycle record by id, returning all header fields (name, type, status, company reference, accounting period reference) along with all associated allocation rules (sender cost center, receiver cost objects, percentages) and allocation results (sender, receiver, allocated amount, cost element). This is the primary query for reviewing allocation cycle configuration, verifying test run results, and auditing posted allocations.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full allocation cycle record including all header fields
11
+ - Includes all associated allocation rules with sender, receiver, and percentage details
12
+ - Includes all allocation results if the cycle has been executed (EXECUTED, POSTED, or REVERSED status)
13
+ - Allocation results are immutable records created during execution
14
+ - Returns null if no matching allocation cycle is found
15
+ - Lookup is an exact match on id
16
+
17
+ ## Process Flow
18
+
19
+ ```mermaid
20
+ flowchart TD
21
+ A[Receive input with id] --> B[SELECT from AllocationCycle where id = input.id]
22
+ B --> C{Allocation cycle found?}
23
+ C -->|Yes| D[Load all associated allocation rules]
24
+ D --> E[Load all associated allocation results]
25
+ E --> F[Return allocation cycle with rules and results]
26
+ C -->|No| G[Return null]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - None
32
+
33
+ ## Error Scenarios
34
+
35
+ - **ALLOCATION_CYCLE_NOT_FOUND**: No allocation cycle matches the given id — caller receives null
36
+
37
+ ## Test Cases
38
+
39
+ - returns allocation cycle with all fields and allocation rules when found by id
40
+ - returns allocation cycle with allocation results when cycle has been executed
41
+ - returns allocation cycle with empty results when cycle is in DRAFT or VALIDATED status
42
+ - returns allocation rules with sender, receiver, and percentage details
43
+ - returns null when no allocation cycle matches the given id
@@ -0,0 +1,42 @@
1
+ # GetBudget
2
+
3
+ ## Overview
4
+
5
+ GetBudget retrieves a single budget record by id, returning all header fields (name, budget holder, fiscal year reference, cost object reference, cost object type, status, plan version type, total amount) along with all associated budget line items. Each line item includes the cost element reference, accounting period reference, planned amount, and the GL account derived from the primary cost element's mapping. This is the primary query for viewing budget details, reviewing planned amounts by cost element and period, and supporting budget vs. actual comparison workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full budget record including all header fields
11
+ - Includes all associated BudgetLineItem records
12
+ - Each line item includes cost element reference, accounting period reference, planned amount, and derived GL account
13
+ - The GL account on each line item is derived from the referenced primary cost element's GL account mapping
14
+ - Returns null if no matching budget is found
15
+ - Lookup is an exact match on id
16
+
17
+ ## Process Flow
18
+
19
+ ```mermaid
20
+ flowchart TD
21
+ A[Receive input with id] --> B[SELECT from Budget where id = input.id]
22
+ B --> C{Budget found?}
23
+ C -->|Yes| D[Load all associated BudgetLineItem records]
24
+ D --> E[Return budget with all line items]
25
+ C -->|No| F[Return null]
26
+ ```
27
+
28
+ ## External Dependencies
29
+
30
+ - None
31
+
32
+ ## Error Scenarios
33
+
34
+ - **BUDGET_NOT_FOUND**: No budget matches the given id — caller receives null
35
+
36
+ ## Test Cases
37
+
38
+ - returns budget with all header fields and line items when found by id
39
+ - returns budget line items with cost element, period, and planned amount
40
+ - returns budget line items with derived GL account from cost element mapping
41
+ - returns budget with empty line items when budget has no line items
42
+ - returns null when no budget matches the given id
@@ -0,0 +1,38 @@
1
+ # GetCostCenter
2
+
3
+ ## Overview
4
+
5
+ GetCostCenter retrieves a single cost center record by id, including all master data fields (code, name, description, category, responsible person, department reference, validity period) and the hierarchy node assignment within the cost center hierarchy. This is the primary query for viewing cost center details, validating cost center configuration, and supporting cost posting, budget, and allocation workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full cost center record including all master data fields
11
+ - Includes the hierarchy node assignment (node id and hierarchy reference) for the cost center
12
+ - Returns null if no matching cost center is found
13
+ - Lookup is an exact match on id
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive input with id] --> B[SELECT from CostCenter where id = input.id]
20
+ B --> C{Cost center found?}
21
+ C -->|Yes| D[Load hierarchy node assignment]
22
+ D --> E[Return cost center with hierarchy node]
23
+ C -->|No| F[Return null]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - None
29
+
30
+ ## Error Scenarios
31
+
32
+ - **COST_CENTER_NOT_FOUND**: No cost center matches the given id — caller receives null
33
+
34
+ ## Test Cases
35
+
36
+ - returns cost center with all fields and hierarchy node assignment when found by id
37
+ - returns cost center with responsible person and department reference populated
38
+ - returns null when no cost center matches the given id