@tailor-platform/erp-kit 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +8 -4
  3. package/dist/cli.mjs +70 -70
  4. package/package.json +1 -1
  5. package/skills/erp-kit-app-5-impl-backend/SKILL.md +5 -5
  6. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -1
  7. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +37 -12
  8. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +3 -1
  9. package/skills/erp-kit-app-6-impl-frontend/references/component.md +90 -0
  10. package/skills/erp-kit-app-6-impl-frontend/references/detail-view.md +255 -0
  11. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +1 -5
  12. package/skills/erp-kit-app-7-impl-review/SKILL.md +3 -2
  13. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +14 -8
  14. package/skills/erp-kit-module-6-impl-review/SKILL.md +16 -19
  15. package/skills/erp-kit-module-shared/references/commands.md +68 -1
  16. package/src/commands/index.ts +8 -2
  17. package/src/commands/init.test.ts +24 -8
  18. package/src/commands/init.ts +5 -12
  19. package/src/commands/lib/distribute.test.ts +1 -20
  20. package/src/commands/lib/distribute.ts +0 -14
  21. package/src/commands/update.test.ts +1 -1
  22. package/src/generator/scaffold.ts +25 -4
  23. package/src/module.ts +4 -1
  24. package/src/modules/accounting/README.md +63 -0
  25. package/src/modules/accounting/command/activateBudget.generated.ts +6 -0
  26. package/src/modules/accounting/command/activateBudget.test.ts +119 -0
  27. package/src/modules/accounting/command/activateBudget.ts +77 -0
  28. package/src/modules/accounting/command/activateCostElement.generated.ts +6 -0
  29. package/src/modules/accounting/command/activateCostElement.test.ts +59 -0
  30. package/src/modules/accounting/command/activateCostElement.ts +41 -0
  31. package/src/modules/accounting/command/activateProfitCenter.generated.ts +6 -0
  32. package/src/modules/accounting/command/activateProfitCenter.test.ts +60 -0
  33. package/src/modules/accounting/command/activateProfitCenter.ts +38 -0
  34. package/src/modules/accounting/command/approveBudget.generated.ts +6 -0
  35. package/src/modules/accounting/command/approveBudget.test.ts +69 -0
  36. package/src/modules/accounting/command/approveBudget.ts +47 -0
  37. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.generated.ts +6 -0
  38. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.test.ts +112 -0
  39. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.ts +67 -0
  40. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.generated.ts +6 -0
  41. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.test.ts +123 -0
  42. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.ts +71 -0
  43. package/src/modules/accounting/command/closeBudget.generated.ts +6 -0
  44. package/src/modules/accounting/command/closeBudget.test.ts +93 -0
  45. package/src/modules/accounting/command/closeBudget.ts +40 -0
  46. package/src/modules/accounting/command/closeInternalOrder.generated.ts +6 -0
  47. package/src/modules/accounting/command/closeInternalOrder.test.ts +74 -0
  48. package/src/modules/accounting/command/closeInternalOrder.ts +38 -0
  49. package/src/modules/accounting/command/consumeCommitment.generated.ts +6 -0
  50. package/src/modules/accounting/command/consumeCommitment.test.ts +123 -0
  51. package/src/modules/accounting/command/consumeCommitment.ts +62 -0
  52. package/src/modules/accounting/command/createAllocationCycle.generated.ts +6 -0
  53. package/src/modules/accounting/command/createAllocationCycle.test.ts +166 -0
  54. package/src/modules/accounting/command/createAllocationCycle.ts +68 -0
  55. package/src/modules/accounting/command/createAllocationRule.generated.ts +6 -0
  56. package/src/modules/accounting/command/createAllocationRule.test.ts +195 -0
  57. package/src/modules/accounting/command/createAllocationRule.ts +103 -0
  58. package/src/modules/accounting/command/createBudget.generated.ts +6 -0
  59. package/src/modules/accounting/command/createBudget.test.ts +159 -0
  60. package/src/modules/accounting/command/createBudget.ts +100 -0
  61. package/src/modules/accounting/command/createBudgetLineItem.generated.ts +6 -0
  62. package/src/modules/accounting/command/createBudgetLineItem.test.ts +178 -0
  63. package/src/modules/accounting/command/createBudgetLineItem.ts +104 -0
  64. package/src/modules/accounting/command/createCostCenter.generated.ts +6 -0
  65. package/src/modules/accounting/command/createCostCenter.test.ts +179 -0
  66. package/src/modules/accounting/command/createCostCenter.ts +112 -0
  67. package/src/modules/accounting/command/createCostCenterHierarchy.generated.ts +6 -0
  68. package/src/modules/accounting/command/createCostCenterHierarchy.test.ts +91 -0
  69. package/src/modules/accounting/command/createCostCenterHierarchy.ts +48 -0
  70. package/src/modules/accounting/command/createCostCenterHierarchyNode.generated.ts +6 -0
  71. package/src/modules/accounting/command/createCostCenterHierarchyNode.test.ts +171 -0
  72. package/src/modules/accounting/command/createCostCenterHierarchyNode.ts +117 -0
  73. package/src/modules/accounting/command/createCostElement.generated.ts +6 -0
  74. package/src/modules/accounting/command/createCostElement.test.ts +317 -0
  75. package/src/modules/accounting/command/createCostElement.ts +149 -0
  76. package/src/modules/accounting/command/createInternalOrder.generated.ts +6 -0
  77. package/src/modules/accounting/command/createInternalOrder.test.ts +206 -0
  78. package/src/modules/accounting/command/createInternalOrder.ts +104 -0
  79. package/src/modules/accounting/command/createPlanVersion.generated.ts +6 -0
  80. package/src/modules/accounting/command/createPlanVersion.test.ts +230 -0
  81. package/src/modules/accounting/command/createPlanVersion.ts +71 -0
  82. package/src/modules/accounting/command/createProfitCenter.generated.ts +6 -0
  83. package/src/modules/accounting/command/createProfitCenter.test.ts +227 -0
  84. package/src/modules/accounting/command/createProfitCenter.ts +81 -0
  85. package/src/modules/accounting/command/createProfitCenterHierarchy.generated.ts +6 -0
  86. package/src/modules/accounting/command/createProfitCenterHierarchy.test.ts +91 -0
  87. package/src/modules/accounting/command/createProfitCenterHierarchy.ts +46 -0
  88. package/src/modules/accounting/command/createProfitCenterHierarchyNode.generated.ts +6 -0
  89. package/src/modules/accounting/command/createProfitCenterHierarchyNode.test.ts +160 -0
  90. package/src/modules/accounting/command/createProfitCenterHierarchyNode.ts +109 -0
  91. package/src/modules/accounting/command/deactivateCostElement.generated.ts +6 -0
  92. package/src/modules/accounting/command/deactivateCostElement.test.ts +59 -0
  93. package/src/modules/accounting/command/deactivateCostElement.ts +41 -0
  94. package/src/modules/accounting/command/deactivateProfitCenter.generated.ts +6 -0
  95. package/src/modules/accounting/command/deactivateProfitCenter.test.ts +60 -0
  96. package/src/modules/accounting/command/deactivateProfitCenter.ts +42 -0
  97. package/src/modules/accounting/command/deleteAllocationCycle.generated.ts +6 -0
  98. package/src/modules/accounting/command/deleteAllocationCycle.test.ts +90 -0
  99. package/src/modules/accounting/command/deleteAllocationCycle.ts +39 -0
  100. package/src/modules/accounting/command/deleteAllocationRule.generated.ts +6 -0
  101. package/src/modules/accounting/command/deleteAllocationRule.test.ts +98 -0
  102. package/src/modules/accounting/command/deleteAllocationRule.ts +40 -0
  103. package/src/modules/accounting/command/deleteBudget.generated.ts +6 -0
  104. package/src/modules/accounting/command/deleteBudget.test.ts +90 -0
  105. package/src/modules/accounting/command/deleteBudget.ts +35 -0
  106. package/src/modules/accounting/command/deleteBudgetLineItem.generated.ts +6 -0
  107. package/src/modules/accounting/command/deleteBudgetLineItem.test.ts +85 -0
  108. package/src/modules/accounting/command/deleteBudgetLineItem.ts +50 -0
  109. package/src/modules/accounting/command/deleteCostCenter.generated.ts +6 -0
  110. package/src/modules/accounting/command/deleteCostCenter.test.ts +79 -0
  111. package/src/modules/accounting/command/deleteCostCenter.ts +67 -0
  112. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.generated.ts +6 -0
  113. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.test.ts +59 -0
  114. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.ts +58 -0
  115. package/src/modules/accounting/command/deleteCostElement.generated.ts +6 -0
  116. package/src/modules/accounting/command/deleteCostElement.test.ts +58 -0
  117. package/src/modules/accounting/command/deleteCostElement.ts +33 -0
  118. package/src/modules/accounting/command/deleteInternalOrder.generated.ts +6 -0
  119. package/src/modules/accounting/command/deleteInternalOrder.test.ts +81 -0
  120. package/src/modules/accounting/command/deleteInternalOrder.ts +37 -0
  121. package/src/modules/accounting/command/deleteProfitCenter.generated.ts +6 -0
  122. package/src/modules/accounting/command/deleteProfitCenter.test.ts +68 -0
  123. package/src/modules/accounting/command/deleteProfitCenter.ts +39 -0
  124. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.generated.ts +6 -0
  125. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.test.ts +72 -0
  126. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.ts +61 -0
  127. package/src/modules/accounting/command/executeAllocationCycle.generated.ts +6 -0
  128. package/src/modules/accounting/command/executeAllocationCycle.test.ts +167 -0
  129. package/src/modules/accounting/command/executeAllocationCycle.ts +94 -0
  130. package/src/modules/accounting/command/finalizeVarianceReport.generated.ts +6 -0
  131. package/src/modules/accounting/command/finalizeVarianceReport.test.ts +60 -0
  132. package/src/modules/accounting/command/finalizeVarianceReport.ts +45 -0
  133. package/src/modules/accounting/command/generateVarianceReport.generated.ts +6 -0
  134. package/src/modules/accounting/command/generateVarianceReport.test.ts +386 -0
  135. package/src/modules/accounting/command/generateVarianceReport.ts +219 -0
  136. package/src/modules/accounting/command/invalidateAllocationCycle.generated.ts +6 -0
  137. package/src/modules/accounting/command/invalidateAllocationCycle.test.ts +84 -0
  138. package/src/modules/accounting/command/invalidateAllocationCycle.ts +45 -0
  139. package/src/modules/accounting/command/moveCostCenterHierarchyNode.generated.ts +6 -0
  140. package/src/modules/accounting/command/moveCostCenterHierarchyNode.test.ts +135 -0
  141. package/src/modules/accounting/command/moveCostCenterHierarchyNode.ts +81 -0
  142. package/src/modules/accounting/command/postAllocationCycle.generated.ts +6 -0
  143. package/src/modules/accounting/command/postAllocationCycle.test.ts +98 -0
  144. package/src/modules/accounting/command/postAllocationCycle.ts +65 -0
  145. package/src/modules/accounting/command/reactivateCostElement.generated.ts +6 -0
  146. package/src/modules/accounting/command/reactivateCostElement.test.ts +59 -0
  147. package/src/modules/accounting/command/reactivateCostElement.ts +41 -0
  148. package/src/modules/accounting/command/reactivateProfitCenter.generated.ts +6 -0
  149. package/src/modules/accounting/command/reactivateProfitCenter.test.ts +60 -0
  150. package/src/modules/accounting/command/reactivateProfitCenter.ts +42 -0
  151. package/src/modules/accounting/command/recordCommitment.generated.ts +6 -0
  152. package/src/modules/accounting/command/recordCommitment.test.ts +157 -0
  153. package/src/modules/accounting/command/recordCommitment.ts +113 -0
  154. package/src/modules/accounting/command/rejectBudget.generated.ts +6 -0
  155. package/src/modules/accounting/command/rejectBudget.test.ts +105 -0
  156. package/src/modules/accounting/command/rejectBudget.ts +51 -0
  157. package/src/modules/accounting/command/releaseCommitment.generated.ts +6 -0
  158. package/src/modules/accounting/command/releaseCommitment.test.ts +94 -0
  159. package/src/modules/accounting/command/releaseCommitment.ts +51 -0
  160. package/src/modules/accounting/command/releaseInternalOrder.generated.ts +6 -0
  161. package/src/modules/accounting/command/releaseInternalOrder.test.ts +74 -0
  162. package/src/modules/accounting/command/releaseInternalOrder.ts +38 -0
  163. package/src/modules/accounting/command/reverseAllocationCycle.generated.ts +6 -0
  164. package/src/modules/accounting/command/reverseAllocationCycle.test.ts +124 -0
  165. package/src/modules/accounting/command/reverseAllocationCycle.ts +63 -0
  166. package/src/modules/accounting/command/submitBudget.generated.ts +6 -0
  167. package/src/modules/accounting/command/submitBudget.test.ts +60 -0
  168. package/src/modules/accounting/command/submitBudget.ts +51 -0
  169. package/src/modules/accounting/command/technicallyCompleteInternalOrder.generated.ts +6 -0
  170. package/src/modules/accounting/command/technicallyCompleteInternalOrder.test.ts +74 -0
  171. package/src/modules/accounting/command/technicallyCompleteInternalOrder.ts +42 -0
  172. package/src/modules/accounting/command/updateAllocationCycle.generated.ts +6 -0
  173. package/src/modules/accounting/command/updateAllocationCycle.test.ts +112 -0
  174. package/src/modules/accounting/command/updateAllocationCycle.ts +41 -0
  175. package/src/modules/accounting/command/updateBudget.generated.ts +6 -0
  176. package/src/modules/accounting/command/updateBudget.test.ts +112 -0
  177. package/src/modules/accounting/command/updateBudget.ts +44 -0
  178. package/src/modules/accounting/command/updateCostCenter.generated.ts +6 -0
  179. package/src/modules/accounting/command/updateCostCenter.test.ts +105 -0
  180. package/src/modules/accounting/command/updateCostCenter.ts +79 -0
  181. package/src/modules/accounting/command/updateCostElement.generated.ts +6 -0
  182. package/src/modules/accounting/command/updateCostElement.test.ts +265 -0
  183. package/src/modules/accounting/command/updateCostElement.ts +158 -0
  184. package/src/modules/accounting/command/updateInternalOrder.generated.ts +6 -0
  185. package/src/modules/accounting/command/updateInternalOrder.test.ts +209 -0
  186. package/src/modules/accounting/command/updateInternalOrder.ts +88 -0
  187. package/src/modules/accounting/command/updateProfitCenter.generated.ts +6 -0
  188. package/src/modules/accounting/command/updateProfitCenter.test.ts +162 -0
  189. package/src/modules/accounting/command/updateProfitCenter.ts +73 -0
  190. package/src/modules/accounting/command/validateAllocationCycle.generated.ts +6 -0
  191. package/src/modules/accounting/command/validateAllocationCycle.test.ts +141 -0
  192. package/src/modules/accounting/command/validateAllocationCycle.ts +80 -0
  193. package/src/modules/accounting/db/allocationCycle.ts +59 -0
  194. package/src/modules/accounting/db/allocationResult.ts +58 -0
  195. package/src/modules/accounting/db/allocationRule.ts +48 -0
  196. package/src/modules/accounting/db/budget.ts +84 -0
  197. package/src/modules/accounting/db/budgetLineItem.ts +64 -0
  198. package/src/modules/accounting/db/commitment.ts +60 -0
  199. package/src/modules/accounting/db/costCenter.ts +73 -0
  200. package/src/modules/accounting/db/costCenterHierarchy.ts +37 -0
  201. package/src/modules/accounting/db/costCenterHierarchyNode.ts +48 -0
  202. package/src/modules/accounting/db/costElement.ts +56 -0
  203. package/src/modules/accounting/db/internalOrder.ts +69 -0
  204. package/src/modules/accounting/db/planVersion.ts +47 -0
  205. package/src/modules/accounting/db/profitCenter.ts +52 -0
  206. package/src/modules/accounting/db/profitCenterHierarchy.ts +36 -0
  207. package/src/modules/accounting/db/profitCenterHierarchyAssignment.ts +62 -0
  208. package/src/modules/accounting/db/profitCenterHierarchyNode.ts +48 -0
  209. package/src/modules/accounting/db/varianceReport.ts +54 -0
  210. package/src/modules/accounting/db/varianceReportLine.ts +62 -0
  211. package/src/modules/accounting/docs/commands/ActivateBudget.md +54 -0
  212. package/src/modules/accounting/docs/commands/ActivateCostElement.md +43 -0
  213. package/src/modules/accounting/docs/commands/ActivateProfitCenter.md +43 -0
  214. package/src/modules/accounting/docs/commands/ApproveBudget.md +46 -0
  215. package/src/modules/accounting/docs/commands/AssignCostCenterToHierarchyNode.md +46 -0
  216. package/src/modules/accounting/docs/commands/AssignProfitCenterToHierarchyNode.md +47 -0
  217. package/src/modules/accounting/docs/commands/CloseBudget.md +47 -0
  218. package/src/modules/accounting/docs/commands/CloseInternalOrder.md +45 -0
  219. package/src/modules/accounting/docs/commands/ConsumeCommitment.md +53 -0
  220. package/src/modules/accounting/docs/commands/CreateAllocationCycle.md +55 -0
  221. package/src/modules/accounting/docs/commands/CreateAllocationRule.md +60 -0
  222. package/src/modules/accounting/docs/commands/CreateBudget.md +65 -0
  223. package/src/modules/accounting/docs/commands/CreateBudgetLineItem.md +66 -0
  224. package/src/modules/accounting/docs/commands/CreateCostCenter.md +64 -0
  225. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchy.md +45 -0
  226. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchyNode.md +61 -0
  227. package/src/modules/accounting/docs/commands/CreateCostElement.md +91 -0
  228. package/src/modules/accounting/docs/commands/CreateInternalOrder.md +72 -0
  229. package/src/modules/accounting/docs/commands/CreatePlanVersion.md +59 -0
  230. package/src/modules/accounting/docs/commands/CreateProfitCenter.md +63 -0
  231. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchy.md +45 -0
  232. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchyNode.md +60 -0
  233. package/src/modules/accounting/docs/commands/DeactivateCostElement.md +43 -0
  234. package/src/modules/accounting/docs/commands/DeactivateProfitCenter.md +44 -0
  235. package/src/modules/accounting/docs/commands/DeleteAllocationCycle.md +46 -0
  236. package/src/modules/accounting/docs/commands/DeleteAllocationRule.md +45 -0
  237. package/src/modules/accounting/docs/commands/DeleteBudget.md +46 -0
  238. package/src/modules/accounting/docs/commands/DeleteBudgetLineItem.md +45 -0
  239. package/src/modules/accounting/docs/commands/DeleteCostCenter.md +50 -0
  240. package/src/modules/accounting/docs/commands/DeleteCostCenterHierarchyNode.md +45 -0
  241. package/src/modules/accounting/docs/commands/DeleteCostElement.md +43 -0
  242. package/src/modules/accounting/docs/commands/DeleteInternalOrder.md +45 -0
  243. package/src/modules/accounting/docs/commands/DeleteProfitCenter.md +46 -0
  244. package/src/modules/accounting/docs/commands/DeleteProfitCenterHierarchyNode.md +46 -0
  245. package/src/modules/accounting/docs/commands/ExecuteAllocationCycle.md +54 -0
  246. package/src/modules/accounting/docs/commands/FinalizeVarianceReport.md +44 -0
  247. package/src/modules/accounting/docs/commands/GenerateVarianceReport.md +83 -0
  248. package/src/modules/accounting/docs/commands/InvalidateAllocationCycle.md +45 -0
  249. package/src/modules/accounting/docs/commands/MoveCostCenterHierarchyNode.md +51 -0
  250. package/src/modules/accounting/docs/commands/PostAllocationCycle.md +58 -0
  251. package/src/modules/accounting/docs/commands/ReactivateCostElement.md +43 -0
  252. package/src/modules/accounting/docs/commands/ReactivateProfitCenter.md +43 -0
  253. package/src/modules/accounting/docs/commands/RecordCommitment.md +60 -0
  254. package/src/modules/accounting/docs/commands/RejectBudget.md +49 -0
  255. package/src/modules/accounting/docs/commands/ReleaseCommitment.md +45 -0
  256. package/src/modules/accounting/docs/commands/ReleaseInternalOrder.md +44 -0
  257. package/src/modules/accounting/docs/commands/ReverseAllocationCycle.md +55 -0
  258. package/src/modules/accounting/docs/commands/SubmitBudget.md +47 -0
  259. package/src/modules/accounting/docs/commands/TechnicallyCompleteInternalOrder.md +44 -0
  260. package/src/modules/accounting/docs/commands/UpdateAllocationCycle.md +45 -0
  261. package/src/modules/accounting/docs/commands/UpdateBudget.md +47 -0
  262. package/src/modules/accounting/docs/commands/UpdateCostCenter.md +50 -0
  263. package/src/modules/accounting/docs/commands/UpdateCostElement.md +82 -0
  264. package/src/modules/accounting/docs/commands/UpdateInternalOrder.md +62 -0
  265. package/src/modules/accounting/docs/commands/UpdateProfitCenter.md +56 -0
  266. package/src/modules/accounting/docs/commands/ValidateAllocationCycle.md +57 -0
  267. package/src/modules/accounting/docs/features/budget-management.md +147 -0
  268. package/src/modules/accounting/docs/features/cost-allocation.md +129 -0
  269. package/src/modules/accounting/docs/features/cost-center-management.md +118 -0
  270. package/src/modules/accounting/docs/features/cost-element-management.md +114 -0
  271. package/src/modules/accounting/docs/features/internal-order-management.md +111 -0
  272. package/src/modules/accounting/docs/features/profit-center-management.md +120 -0
  273. package/src/modules/accounting/docs/features/variance-analysis.md +130 -0
  274. package/src/modules/accounting/docs/models/AllocationCycle.md +81 -0
  275. package/src/modules/accounting/docs/models/AllocationResult.md +37 -0
  276. package/src/modules/accounting/docs/models/AllocationRule.md +41 -0
  277. package/src/modules/accounting/docs/models/Budget.md +77 -0
  278. package/src/modules/accounting/docs/models/BudgetLineItem.md +40 -0
  279. package/src/modules/accounting/docs/models/Commitment.md +45 -0
  280. package/src/modules/accounting/docs/models/CostCenter.md +51 -0
  281. package/src/modules/accounting/docs/models/CostCenterHierarchy.md +38 -0
  282. package/src/modules/accounting/docs/models/CostCenterHierarchyNode.md +41 -0
  283. package/src/modules/accounting/docs/models/CostElement.md +66 -0
  284. package/src/modules/accounting/docs/models/InternalOrder.md +67 -0
  285. package/src/modules/accounting/docs/models/PlanVersion.md +36 -0
  286. package/src/modules/accounting/docs/models/ProfitCenter.md +66 -0
  287. package/src/modules/accounting/docs/models/ProfitCenterHierarchy.md +36 -0
  288. package/src/modules/accounting/docs/models/ProfitCenterHierarchyAssignment.md +36 -0
  289. package/src/modules/accounting/docs/models/ProfitCenterHierarchyNode.md +39 -0
  290. package/src/modules/accounting/docs/models/VarianceReport.md +58 -0
  291. package/src/modules/accounting/docs/models/VarianceReportLine.md +43 -0
  292. package/src/modules/accounting/docs/queries/CalculateBudgetAvailability.md +64 -0
  293. package/src/modules/accounting/docs/queries/GetAllocationCycle.md +43 -0
  294. package/src/modules/accounting/docs/queries/GetBudget.md +42 -0
  295. package/src/modules/accounting/docs/queries/GetCostCenter.md +38 -0
  296. package/src/modules/accounting/docs/queries/GetCostCenterHierarchy.md +45 -0
  297. package/src/modules/accounting/docs/queries/GetCostElement.md +39 -0
  298. package/src/modules/accounting/docs/queries/GetInternalOrder.md +42 -0
  299. package/src/modules/accounting/docs/queries/GetProfitCenter.md +38 -0
  300. package/src/modules/accounting/docs/queries/GetProfitCenterHierarchy.md +46 -0
  301. package/src/modules/accounting/docs/queries/GetVarianceReport.md +45 -0
  302. package/src/modules/accounting/docs/queries/ListAllocationCycles.md +63 -0
  303. package/src/modules/accounting/docs/queries/ListBudgets.md +70 -0
  304. package/src/modules/accounting/docs/queries/ListCostCenters.md +55 -0
  305. package/src/modules/accounting/docs/queries/ListCostElements.md +63 -0
  306. package/src/modules/accounting/docs/queries/ListInternalOrders.md +62 -0
  307. package/src/modules/accounting/docs/queries/ListProfitCenters.md +49 -0
  308. package/src/modules/accounting/generated/enums.ts +110 -0
  309. package/src/modules/accounting/generated/kysely-tailordb.ts +302 -0
  310. package/src/modules/accounting/index.ts +2 -0
  311. package/src/modules/accounting/lib/_db_deps.ts +70 -0
  312. package/src/modules/accounting/lib/actualAmounts.ts +93 -0
  313. package/src/modules/accounting/lib/allocationPosting.ts +152 -0
  314. package/src/modules/accounting/lib/errors.generated.ts +432 -0
  315. package/src/modules/accounting/lib/permissions.generated.ts +61 -0
  316. package/src/modules/accounting/lib/types.ts +114 -0
  317. package/src/modules/accounting/module.ts +428 -0
  318. package/src/modules/accounting/permissions.ts +3 -0
  319. package/src/modules/accounting/query/calculateBudgetAvailability.generated.ts +5 -0
  320. package/src/modules/accounting/query/calculateBudgetAvailability.test.ts +229 -0
  321. package/src/modules/accounting/query/calculateBudgetAvailability.ts +147 -0
  322. package/src/modules/accounting/query/getAllocationCycle.generated.ts +5 -0
  323. package/src/modules/accounting/query/getAllocationCycle.test.ts +94 -0
  324. package/src/modules/accounting/query/getAllocationCycle.ts +37 -0
  325. package/src/modules/accounting/query/getBudget.generated.ts +5 -0
  326. package/src/modules/accounting/query/getBudget.test.ts +80 -0
  327. package/src/modules/accounting/query/getBudget.ts +31 -0
  328. package/src/modules/accounting/query/getCostCenter.generated.ts +5 -0
  329. package/src/modules/accounting/query/getCostCenter.test.ts +50 -0
  330. package/src/modules/accounting/query/getCostCenter.ts +33 -0
  331. package/src/modules/accounting/query/getCostCenterHierarchy.generated.ts +5 -0
  332. package/src/modules/accounting/query/getCostCenterHierarchy.test.ts +100 -0
  333. package/src/modules/accounting/query/getCostCenterHierarchy.ts +80 -0
  334. package/src/modules/accounting/query/getCostElement.generated.ts +5 -0
  335. package/src/modules/accounting/query/getCostElement.test.ts +57 -0
  336. package/src/modules/accounting/query/getCostElement.ts +21 -0
  337. package/src/modules/accounting/query/getInternalOrder.generated.ts +5 -0
  338. package/src/modules/accounting/query/getInternalOrder.test.ts +73 -0
  339. package/src/modules/accounting/query/getInternalOrder.ts +21 -0
  340. package/src/modules/accounting/query/getProfitCenter.generated.ts +5 -0
  341. package/src/modules/accounting/query/getProfitCenter.test.ts +65 -0
  342. package/src/modules/accounting/query/getProfitCenter.ts +31 -0
  343. package/src/modules/accounting/query/getProfitCenterHierarchy.generated.ts +5 -0
  344. package/src/modules/accounting/query/getProfitCenterHierarchy.test.ts +97 -0
  345. package/src/modules/accounting/query/getProfitCenterHierarchy.ts +87 -0
  346. package/src/modules/accounting/query/getVarianceReport.generated.ts +5 -0
  347. package/src/modules/accounting/query/getVarianceReport.test.ts +108 -0
  348. package/src/modules/accounting/query/getVarianceReport.ts +31 -0
  349. package/src/modules/accounting/query/listAllocationCycles.generated.ts +5 -0
  350. package/src/modules/accounting/query/listAllocationCycles.test.ts +152 -0
  351. package/src/modules/accounting/query/listAllocationCycles.ts +96 -0
  352. package/src/modules/accounting/query/listBudgets.generated.ts +5 -0
  353. package/src/modules/accounting/query/listBudgets.test.ts +150 -0
  354. package/src/modules/accounting/query/listBudgets.ts +85 -0
  355. package/src/modules/accounting/query/listCostCenters.generated.ts +5 -0
  356. package/src/modules/accounting/query/listCostCenters.test.ts +111 -0
  357. package/src/modules/accounting/query/listCostCenters.ts +71 -0
  358. package/src/modules/accounting/query/listCostElements.generated.ts +5 -0
  359. package/src/modules/accounting/query/listCostElements.test.ts +138 -0
  360. package/src/modules/accounting/query/listCostElements.ts +105 -0
  361. package/src/modules/accounting/query/listInternalOrders.generated.ts +5 -0
  362. package/src/modules/accounting/query/listInternalOrders.test.ts +129 -0
  363. package/src/modules/accounting/query/listInternalOrders.ts +94 -0
  364. package/src/modules/accounting/query/listProfitCenters.generated.ts +5 -0
  365. package/src/modules/accounting/query/listProfitCenters.test.ts +94 -0
  366. package/src/modules/accounting/query/listProfitCenters.ts +56 -0
  367. package/src/modules/accounting/seed/index.ts +19 -0
  368. package/src/modules/accounting/tailor.config.ts +13 -0
  369. package/src/modules/accounting/testing/commandTestUtils.ts +35 -0
  370. package/src/modules/accounting/testing/fixtures.ts +502 -0
  371. package/src/modules/audit/command/logAuditEvent.ts +43 -38
  372. package/src/modules/audit/command/updateAuditPolicy.ts +2 -2
  373. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +1 -1
  374. package/src/modules/audit/module.ts +4 -0
  375. package/src/modules/business-partner/command/updateContactPerson.ts +3 -4
  376. package/src/modules/business-partner/command/updatePartner.ts +13 -6
  377. package/src/modules/business-partner/command/updatePartnerAddress.ts +13 -6
  378. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +3 -4
  379. package/src/modules/business-partner/command/updatePartnerIdentification.ts +3 -4
  380. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +3 -3
  381. package/src/modules/business-partner/docs/commands/UpdatePartner.md +2 -2
  382. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +2 -2
  383. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +2 -2
  384. package/src/modules/coa-management/command/updateAccount.ts +3 -3
  385. package/src/modules/coa-management/command/updateAccountGroup.test.ts +22 -0
  386. package/src/modules/coa-management/command/updateAccountGroup.ts +30 -18
  387. package/src/modules/coa-management/command/updateChartOfAccounts.ts +3 -4
  388. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +4 -3
  389. package/src/modules/finance-ledger/command/updateFiscalYear.ts +2 -3
  390. package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +0 -17
  391. package/src/modules/finance-ledger/command/updateJournalEntry.ts +2 -10
  392. package/src/modules/finance-ledger/command/updateJournalLine.ts +2 -3
  393. package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +1 -4
  394. package/src/modules/inventory/command/updateLot.test.ts +1 -1
  395. package/src/modules/inventory/command/updateLot.ts +2 -3
  396. package/src/modules/inventory/command/updateStockMovement.ts +2 -3
  397. package/src/modules/inventory/command/updateStorageLocation.ts +12 -17
  398. package/src/modules/inventory/command/updateValuationPolicy.ts +2 -3
  399. package/src/modules/inventory/command/updateWarehouse.ts +2 -3
  400. package/src/modules/inventory/docs/commands/UpdateLot.md +3 -3
  401. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +6 -6
  402. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +2 -2
  403. package/src/modules/item-management/command/updateItem.test.ts +16 -12
  404. package/src/modules/item-management/command/updateItem.ts +47 -31
  405. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +15 -16
  406. package/src/modules/item-management/command/updateTaxonomyNode.ts +42 -29
  407. package/src/modules/item-management/docs/commands/UpdateItem.md +7 -11
  408. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +10 -14
  409. package/src/modules/manufacturing/command/updateBillOfMaterial.ts +3 -4
  410. package/src/modules/manufacturing/command/updateProductionOrder.ts +3 -4
  411. package/src/modules/manufacturing/command/updateRouting.ts +3 -4
  412. package/src/modules/manufacturing/command/updateWorkCenter.test.ts +16 -7
  413. package/src/modules/manufacturing/command/updateWorkCenter.ts +41 -38
  414. package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +2 -0
  415. package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +2 -0
  416. package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +1 -0
  417. package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +1 -0
  418. package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +6 -5
  419. package/src/modules/manufacturing/docs/models/BillOfMaterialLine.md +42 -0
  420. package/src/modules/manufacturing/docs/models/CostVarianceLine.md +36 -0
  421. package/src/modules/manufacturing/docs/models/ManufacturingCostLine.md +37 -0
  422. package/src/modules/manufacturing/docs/models/ManufacturingCostSettlementRecord.md +34 -0
  423. package/src/modules/manufacturing/docs/models/ProductionOrderBomSnapshot.md +35 -0
  424. package/src/modules/manufacturing/docs/models/ProductionOrderCostBaseline.md +36 -0
  425. package/src/modules/manufacturing/docs/models/ProductionOrderMaterialRequirement.md +35 -0
  426. package/src/modules/manufacturing/docs/models/ProductionOrderRoutingSnapshot.md +34 -0
  427. package/src/modules/manufacturing/docs/models/RoutingOperation.md +40 -0
  428. package/src/modules/manufacturing/docs/models/WorkOrderExecutionEvent.md +38 -0
  429. package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +1 -0
  430. package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +1 -0
  431. package/src/modules/organization/command/updateCompany.test.ts +6 -6
  432. package/src/modules/organization/command/updateCompany.ts +3 -4
  433. package/src/modules/organization/command/updateDepartment.test.ts +7 -7
  434. package/src/modules/organization/command/updateDepartment.ts +13 -12
  435. package/src/modules/organization/command/updateSite.test.ts +10 -10
  436. package/src/modules/organization/command/updateSite.ts +3 -4
  437. package/src/modules/organization/docs/commands/UpdateCompany.md +6 -6
  438. package/src/modules/organization/docs/commands/UpdateDepartment.md +9 -10
  439. package/src/modules/organization/docs/commands/UpdateSite.md +12 -12
  440. package/src/modules/product-management/command/updateProduct.test.ts +17 -11
  441. package/src/modules/product-management/command/updateProduct.ts +45 -28
  442. package/src/modules/product-management/command/updateProductAttribute.test.ts +16 -21
  443. package/src/modules/product-management/command/updateProductAttribute.ts +40 -26
  444. package/src/modules/product-management/command/updateProductAttributeValue.ts +2 -3
  445. package/src/modules/product-management/command/updateProductCategory.test.ts +14 -19
  446. package/src/modules/product-management/command/updateProductCategory.ts +42 -26
  447. package/src/modules/product-management/docs/commands/UpdateProduct.md +16 -20
  448. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +10 -14
  449. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +10 -14
  450. package/src/modules/purchase/command/updateGoodsReceipt.ts +2 -3
  451. package/src/modules/purchase/command/updatePurchaseBill.ts +2 -3
  452. package/src/modules/purchase/command/updatePurchaseOrder.ts +2 -3
  453. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +2 -3
  454. package/src/modules/purchase/command/updatePurchasePriceList.ts +2 -3
  455. package/src/modules/purchase/command/updatePurchasePriceRule.ts +2 -3
  456. package/src/modules/sales/command/updateChannel.test.ts +4 -4
  457. package/src/modules/sales/command/updateChannel.ts +2 -3
  458. package/src/modules/sales/command/updateListing.test.ts +2 -2
  459. package/src/modules/sales/command/updateListing.ts +2 -3
  460. package/src/modules/sales/command/updateSalesCreditNote.test.ts +2 -2
  461. package/src/modules/sales/command/updateSalesCreditNote.ts +2 -3
  462. package/src/modules/sales/command/updateSalesInvoice.test.ts +2 -2
  463. package/src/modules/sales/command/updateSalesInvoice.ts +2 -3
  464. package/src/modules/sales/command/updateSalesOrder.test.ts +3 -3
  465. package/src/modules/sales/command/updateSalesOrder.ts +2 -3
  466. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +2 -2
  467. package/src/modules/sales/command/updateSalesPaymentTerm.ts +2 -3
  468. package/src/modules/sales/command/updateSalesPriceList.test.ts +3 -3
  469. package/src/modules/sales/command/updateSalesPriceList.ts +2 -3
  470. package/src/modules/sales/command/updateSalesPriceRule.test.ts +3 -3
  471. package/src/modules/sales/command/updateSalesPriceRule.ts +2 -3
  472. package/src/modules/sales/command/updateShipment.test.ts +2 -2
  473. package/src/modules/sales/command/updateShipment.ts +2 -3
  474. package/src/modules/sales/docs/commands/UpdateChannel.md +4 -4
  475. package/src/modules/sales/docs/commands/UpdateListing.md +2 -2
  476. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +2 -2
  477. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +2 -2
  478. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +3 -3
  479. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +2 -2
  480. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +3 -3
  481. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +3 -3
  482. package/src/modules/sales/docs/commands/UpdateShipment.md +2 -2
  483. package/src/modules/user-management/README.md +2 -1
  484. package/src/modules/user-management/command/updateOwnProfile.generated.ts +6 -0
  485. package/src/modules/user-management/command/updateOwnProfile.test.ts +191 -0
  486. package/src/modules/user-management/command/updateOwnProfile.ts +82 -0
  487. package/src/modules/user-management/command/updateUser.generated.ts +6 -0
  488. package/src/modules/user-management/command/updateUser.test.ts +195 -0
  489. package/src/modules/user-management/command/updateUser.ts +76 -0
  490. package/src/modules/user-management/docs/commands/UpdateOwnProfile.md +68 -0
  491. package/src/modules/user-management/docs/commands/UpdateUser.md +67 -0
  492. package/src/modules/user-management/docs/features/user-account-management.md +28 -3
  493. package/src/modules/user-management/docs/models/User.md +2 -0
  494. package/src/modules/user-management/lib/errors.generated.ts +5 -0
  495. package/src/modules/user-management/lib/permissions.generated.ts +2 -0
  496. package/src/modules/user-management/module.ts +5 -0
  497. package/src/modules/user-management/seed/index.ts +19 -0
  498. package/templates/scaffold/app/backend/seed/data/AuditEntry.schema.ts +20 -0
  499. package/templates/scaffold/app/backend/seed/data/AuditPolicy.jsonl +7 -0
  500. package/templates/scaffold/app/backend/seed/data/AuditPolicy.schema.ts +15 -0
  501. package/templates/scaffold/app/backend/seed/data/AuditableEntity.jsonl +4 -0
  502. package/templates/scaffold/app/backend/seed/data/AuditableEntity.schema.ts +20 -0
  503. package/templates/scaffold/app/backend/seed/data/ChangeDetail.schema.ts +20 -0
  504. package/templates/scaffold/app/backend/seed/data/Company.schema.ts +15 -0
  505. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +13 -0
  506. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +1 -1
  507. package/templates/scaffold/app/backend/seed/data/PolicyFieldRule.schema.ts +20 -0
  508. package/templates/scaffold/app/backend/seed/data/Role.jsonl +1 -0
  509. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +1 -1
  510. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +13 -0
  511. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +1 -1
  512. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -1
  513. package/templates/scaffold/app/backend/seed/data/User.schema.ts +1 -1
  514. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +1 -0
  515. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +1 -1
  516. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -1
  517. package/templates/scaffold/app/backend/seed/exec.mjs +12 -0
  518. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +2 -2
  519. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +2 -2
  520. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +62 -0
  521. package/templates/scaffold/app/backend/src/modules-db.ts +13 -0
  522. package/templates/scaffold/app/backend/src/modules.ts +3 -5
  523. package/templates/scaffold/app/backend/src/resolvers/assignPermissionToRole.ts +70 -0
  524. package/templates/scaffold/app/backend/src/resolvers/assignRoleToUser.ts +72 -0
  525. package/templates/scaffold/app/backend/src/resolvers/createRole.ts +92 -0
  526. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +113 -13
  527. package/templates/scaffold/app/backend/src/resolvers/deactivateUser.ts +67 -0
  528. package/templates/scaffold/app/backend/src/resolvers/reactivateUser.ts +63 -0
  529. package/templates/scaffold/app/backend/src/resolvers/revokePermissionFromRole.ts +72 -0
  530. package/templates/scaffold/app/backend/src/resolvers/revokeRoleFromUser.ts +72 -0
  531. package/templates/scaffold/app/backend/src/resolvers/updateOwnProfile.ts +107 -0
  532. package/templates/scaffold/app/backend/src/resolvers/updateUserProfile.ts +107 -0
  533. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log-detail.test.ts +79 -0
  534. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log.test.ts +86 -0
  535. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--assign-role-to-user.test.ts +103 -0
  536. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--create-role.test.ts +61 -0
  537. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--remove-role-from-user.test.ts +89 -0
  538. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--update-role-permissions.test.ts +125 -0
  539. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--browse-user-list.test.ts +91 -0
  540. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--create-user-account.test.ts +97 -0
  541. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--toggle-user-status.test.ts +131 -0
  542. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-own-profile.test.ts +85 -0
  543. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-user-profile.test.ts +158 -0
  544. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-own-profile.test.ts +30 -0
  545. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-user-detail.test.ts +98 -0
  546. package/templates/scaffold/app/backend/tailor.config.ts +6 -2
  547. package/templates/scaffold/app/docs/actors/user.md +11 -0
  548. package/templates/scaffold/app/docs/business-flow/audit-log/README.md +31 -0
  549. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log-detail.md +35 -0
  550. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log.md +44 -0
  551. package/templates/scaffold/app/docs/business-flow/role-management/README.md +33 -0
  552. package/templates/scaffold/app/docs/business-flow/role-management/story/user--assign-role-to-user.md +35 -0
  553. package/templates/scaffold/app/docs/business-flow/role-management/story/user--create-role.md +41 -0
  554. package/templates/scaffold/app/docs/business-flow/role-management/story/user--remove-role-from-user.md +33 -0
  555. package/templates/scaffold/app/docs/business-flow/role-management/story/user--update-role-permissions.md +41 -0
  556. package/templates/scaffold/app/docs/business-flow/user-lifecycle/README.md +48 -0
  557. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--browse-user-list.md +38 -0
  558. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--create-user-account.md +45 -0
  559. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--toggle-user-status.md +38 -0
  560. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-own-profile.md +36 -0
  561. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-user-profile.md +41 -0
  562. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-own-profile.md +30 -0
  563. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-user-detail.md +33 -0
  564. package/templates/scaffold/app/docs/resolver/assignPermissionToRole.md +16 -0
  565. package/templates/scaffold/app/docs/resolver/assignRoleToUser.md +17 -0
  566. package/templates/scaffold/app/docs/resolver/createRole.md +17 -0
  567. package/templates/scaffold/app/docs/resolver/createUser.md +23 -0
  568. package/templates/scaffold/app/docs/resolver/deactivateUser.md +17 -0
  569. package/templates/scaffold/app/docs/resolver/reactivateUser.md +16 -0
  570. package/templates/scaffold/app/docs/resolver/revokePermissionFromRole.md +17 -0
  571. package/templates/scaffold/app/docs/resolver/revokeRoleFromUser.md +17 -0
  572. package/templates/scaffold/app/docs/resolver/updateOwnProfile.md +20 -0
  573. package/templates/scaffold/app/docs/resolver/updateUserProfile.md +19 -0
  574. package/templates/scaffold/app/docs/screen/audit-entry-detail.md +30 -0
  575. package/templates/scaffold/app/docs/screen/audit-entry-list.md +25 -0
  576. package/templates/scaffold/app/docs/screen/my-profile-edit-form.md +22 -0
  577. package/templates/scaffold/app/docs/screen/my-profile.md +27 -0
  578. package/templates/scaffold/app/docs/screen/role-create-form.md +23 -0
  579. package/templates/scaffold/app/docs/screen/role-detail.md +27 -0
  580. package/templates/scaffold/app/docs/screen/role-edit-form.md +21 -0
  581. package/templates/scaffold/app/docs/screen/role-list.md +23 -0
  582. package/templates/scaffold/app/docs/screen/user-create-form.md +23 -0
  583. package/templates/scaffold/app/docs/screen/user-detail.md +33 -0
  584. package/templates/scaffold/app/docs/screen/user-edit-form.md +22 -0
  585. package/templates/scaffold/app/docs/screen/user-list.md +24 -0
  586. package/templates/scaffold/app/frontend/package.json +1 -1
  587. package/templates/scaffold/app/frontend/src/App.tsx +4 -0
  588. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +1 -1
  589. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +59 -31
  590. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1411 -688
  591. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +1 -1
  592. package/templates/scaffold/app/frontend/src/lib/permission-groups.ts +59 -0
  593. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/components/audit-entry-detail.tsx +102 -0
  594. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/page.tsx +65 -0
  595. package/templates/scaffold/app/frontend/src/pages/user-management/audit/components/audit-entries-table.tsx +90 -0
  596. package/templates/scaffold/app/frontend/src/pages/user-management/audit/page.tsx +52 -0
  597. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/components/edit-profile-form.tsx +125 -0
  598. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/page.tsx +19 -0
  599. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +41 -21
  600. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-actions.tsx +26 -0
  601. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-detail.tsx +69 -0
  602. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/components/edit-role-form.tsx +192 -0
  603. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/page.tsx +51 -0
  604. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/page.tsx +56 -0
  605. package/templates/scaffold/app/frontend/src/pages/user-management/role/components/roles-table.tsx +85 -0
  606. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/components/create-role-form.tsx +204 -0
  607. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/page.tsx +19 -0
  608. package/templates/scaffold/app/frontend/src/pages/user-management/role/page.tsx +60 -0
  609. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-actions.tsx +216 -0
  610. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +97 -33
  611. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/components/edit-user-form.tsx +115 -0
  612. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/page.tsx +51 -0
  613. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +8 -2
  614. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +43 -42
  615. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +120 -45
  616. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +3 -4
  617. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +8 -1
  618. package/templates/scaffold/module/eslint.config.js +8 -0
  619. package/templates/scaffold/project/__dot__gitignore +1 -0
  620. package/templates/scaffold/project/__pnpm-workspace.yaml +3 -0
  621. package/templates/scaffold/project/apps/.gitkeep +0 -0
  622. package/templates/scaffold/project/modules/.gitkeep +0 -0
  623. package/templates/scaffold/project/package.json +15 -0
  624. package/templates/workflows/erp-kit-check.yml +10 -4
  625. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +0 -39
  626. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +0 -60
  627. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +0 -75
  628. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +0 -21
  629. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +0 -90
  630. /package/src/modules/{supplier-portal → accounting/executor}/.gitkeep +0 -0
  631. /package/templates/scaffold/app/{docs/actors/.gitkeep → backend/seed/data/AuditEntry.jsonl} +0 -0
  632. /package/templates/scaffold/app/{docs/business-flow/.gitkeep → backend/seed/data/ChangeDetail.jsonl} +0 -0
  633. /package/templates/scaffold/app/{docs/resolver/.gitkeep → backend/seed/data/Company.jsonl} +0 -0
  634. /package/templates/scaffold/app/{docs/screen/.gitkeep → backend/seed/data/PolicyFieldRule.jsonl} +0 -0
  635. /package/templates/{config → scaffold/project}/license.config.json +0 -0
@@ -0,0 +1,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
@@ -0,0 +1,45 @@
1
+ # GetCostCenterHierarchy
2
+
3
+ ## Overview
4
+
5
+ GetCostCenterHierarchy retrieves a cost center hierarchy by id, returning the full tree structure including all hierarchy nodes (root, intermediate grouping nodes, and leaf nodes) with their parent-child relationships, sort order, and level attributes. Each node includes the list of cost centers assigned to it. This query supports hierarchical roll-up reporting, cost center organization browsing, and hierarchy-based cost aggregation.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the hierarchy record with all nodes assembled into a tree structure
11
+ - Each node includes its id, name, parent node reference, sort order, level, and list of assigned cost centers
12
+ - The root node has no parent reference
13
+ - Child nodes are nested under their parent nodes in the tree
14
+ - Assigned cost centers on each node include their full master data fields
15
+ - Returns null if no matching hierarchy is found
16
+ - Lookup is an exact match on id
17
+
18
+ ## Process Flow
19
+
20
+ ```mermaid
21
+ flowchart TD
22
+ A[Receive input with id] --> B[SELECT from CostCenterHierarchy where id = input.id]
23
+ B --> C{Hierarchy found?}
24
+ C -->|Yes| D[Load all hierarchy nodes]
25
+ D --> E[Assemble nodes into tree structure using parent-child references]
26
+ E --> F[Load assigned cost centers for each node]
27
+ F --> G[Return hierarchy with complete tree and cost center assignments]
28
+ C -->|No| H[Return null]
29
+ ```
30
+
31
+ ## External Dependencies
32
+
33
+ - None
34
+
35
+ ## Error Scenarios
36
+
37
+ - **COST_CENTER_HIERARCHY_NOT_FOUND**: No cost center hierarchy matches the given id — caller receives null
38
+
39
+ ## Test Cases
40
+
41
+ - returns hierarchy with all nodes in tree structure when found by id
42
+ - returns hierarchy with root node and nested child nodes
43
+ - returns hierarchy nodes with assigned cost centers populated
44
+ - returns leaf nodes with no children
45
+ - returns null when no hierarchy matches the given id
@@ -0,0 +1,39 @@
1
+ # GetCostElement
2
+
3
+ ## Overview
4
+
5
+ GetCostElement retrieves a single cost element record by id, returning all fields including code, name, type (PRIMARY or SECONDARY), category, status, validity period (valid-from/to), GL account reference (for primary elements), company reference, and description. This is the primary query for viewing cost element details, validating cost element configuration, and supporting downstream processes such as cost posting validation and allocation rule setup.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full cost element record including all header fields
11
+ - For PRIMARY cost elements, the GL account reference is included
12
+ - For SECONDARY cost elements, the GL account reference is null
13
+ - Returns null if no matching cost element is found
14
+ - Lookup is an exact match on id
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive input with id] --> B[SELECT from CostElement where id = input.id]
21
+ B --> C{Cost element found?}
22
+ C -->|Yes| D[Return cost element with all fields]
23
+ C -->|No| E[Return null]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - None
29
+
30
+ ## Error Scenarios
31
+
32
+ - **COST_ELEMENT_NOT_FOUND**: No cost element matches the given id — caller receives null
33
+
34
+ ## Test Cases
35
+
36
+ - returns cost element with all fields when found by id
37
+ - returns primary cost element with GL account reference populated
38
+ - returns secondary cost element with GL account reference as null
39
+ - returns null when no cost element matches the given id
@@ -0,0 +1,42 @@
1
+ # GetInternalOrder
2
+
3
+ ## Overview
4
+
5
+ GetInternalOrder retrieves a single internal order record by id, returning all fields including order number, order type (OVERHEAD, INVESTMENT, ACCRUAL), description, status (CREATED, RELEASED, TECHNICALLY_COMPLETED, CLOSED), responsible person, responsible cost center reference, validity period (valid-from/to), company reference, and optional budget assignment. This is the primary query for viewing internal order details, validating order status for cost postings, and reviewing accumulated costs against budgets.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full internal order record including all header fields
11
+ - Includes the responsible cost center reference
12
+ - Includes the budget assignment reference if one exists
13
+ - Returns null if no matching internal order is found
14
+ - Lookup is an exact match on id
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive input with id] --> B[SELECT from InternalOrder where id = input.id]
21
+ B --> C{Internal order found?}
22
+ C -->|Yes| D[Load responsible cost center reference]
23
+ D --> E[Load budget assignment if present]
24
+ E --> F[Return internal order with all fields]
25
+ C -->|No| G[Return null]
26
+ ```
27
+
28
+ ## External Dependencies
29
+
30
+ - None
31
+
32
+ ## Error Scenarios
33
+
34
+ - **INTERNAL_ORDER_NOT_FOUND**: No internal order matches the given id — caller receives null
35
+
36
+ ## Test Cases
37
+
38
+ - returns internal order with all fields when found by id
39
+ - returns internal order with responsible cost center reference populated
40
+ - returns internal order with budget assignment when one exists
41
+ - returns internal order without budget assignment when none exists
42
+ - returns null when no internal order matches the given id
@@ -0,0 +1,38 @@
1
+ # GetProfitCenter
2
+
3
+ ## Overview
4
+
5
+ GetProfitCenter retrieves a single profit center record by id, returning all fields including code, name, description, status (DRAFT, ACTIVE, INACTIVE), responsible person, validity period (valid-from/to), company reference, and hierarchy node assignment. This is the primary query for viewing profit center details, validating profit center configuration, and supporting transaction tagging and profitability reporting workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full profit center record including all master data fields
11
+ - Includes the hierarchy node assignment within the profit center hierarchy
12
+ - Returns null if no matching profit 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 ProfitCenter where id = input.id]
20
+ B --> C{Profit center found?}
21
+ C -->|Yes| D[Return profit center with all fields]
22
+ C -->|No| E[Return null]
23
+ ```
24
+
25
+ ## External Dependencies
26
+
27
+ - None
28
+
29
+ ## Error Scenarios
30
+
31
+ - **PROFIT_CENTER_NOT_FOUND**: No profit center matches the given id — caller receives null
32
+
33
+ ## Test Cases
34
+
35
+ - returns profit center with all fields when found by id
36
+ - returns profit center with hierarchy node assignment populated
37
+ - returns profit center with responsible person and validity period
38
+ - returns null when no profit center matches the given id
@@ -0,0 +1,46 @@
1
+ # GetProfitCenterHierarchy
2
+
3
+ ## Overview
4
+
5
+ GetProfitCenterHierarchy retrieves a profit center hierarchy by id, returning the full tree structure including all hierarchy nodes (root, intermediate grouping nodes, and leaf nodes) with their parent-child relationships. Each node includes the list of profit centers assigned to it. This query supports hierarchical roll-up profitability reporting, segment analysis, and profit center organization browsing.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the hierarchy record with all nodes assembled into a tree structure
11
+ - Each node includes its id, name, parent node reference, and list of assigned profit centers
12
+ - The root node has no parent reference
13
+ - Child nodes are nested under their parent nodes in the tree
14
+ - Assigned profit centers on each node include their full master data fields
15
+ - A profit center can appear in multiple hierarchies but only once within a given hierarchy
16
+ - Returns null if no matching hierarchy is found
17
+ - Lookup is an exact match on id
18
+
19
+ ## Process Flow
20
+
21
+ ```mermaid
22
+ flowchart TD
23
+ A[Receive input with id] --> B[SELECT from ProfitCenterHierarchy where id = input.id]
24
+ B --> C{Hierarchy found?}
25
+ C -->|Yes| D[Load all hierarchy nodes]
26
+ D --> E[Assemble nodes into tree structure using parent-child references]
27
+ E --> F[Load assigned profit centers for each node]
28
+ F --> G[Return hierarchy with complete tree and profit center assignments]
29
+ C -->|No| H[Return null]
30
+ ```
31
+
32
+ ## External Dependencies
33
+
34
+ - None
35
+
36
+ ## Error Scenarios
37
+
38
+ - **PROFIT_CENTER_HIERARCHY_NOT_FOUND**: No profit center hierarchy matches the given id — caller receives null
39
+
40
+ ## Test Cases
41
+
42
+ - returns hierarchy with all nodes in tree structure when found by id
43
+ - returns hierarchy with root node and nested child nodes
44
+ - returns hierarchy nodes with assigned profit centers populated
45
+ - returns leaf nodes with no children
46
+ - returns null when no hierarchy matches the given id
@@ -0,0 +1,45 @@
1
+ # GetVarianceReport
2
+
3
+ ## Overview
4
+
5
+ GetVarianceReport retrieves a single variance report record by id, returning all header fields (cost object reference, cost object type, accounting period reference, status, total planned, total actual, total variance) along with all associated VarianceReportLine detail records. Each detail line includes the cost element reference, accounting period, planned amount, actual amount, variance amount, variance percentage, and variance direction (FAVORABLE or UNFAVORABLE). This is the primary query for reviewing period-end variance analysis results, drilling into cost element-level deviations, and supporting management reporting workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a single lookup parameter: `{ id }`
10
+ - Returns the full variance report record including all header fields and summary totals
11
+ - Includes all associated VarianceReportLine records with cost element-level detail
12
+ - Each detail line includes planned amount, actual amount, variance amount, variance percentage, and variance direction
13
+ - Variance direction is FAVORABLE when actual costs are below plan (for cost/expense elements) or actual revenue is above plan (for revenue elements)
14
+ - Variance direction is UNFAVORABLE when actual costs are above plan or actual revenue is below plan
15
+ - Summary totals (total planned, total actual, total variance) are the sums of the corresponding detail line amounts
16
+ - Returns null if no matching variance report is found
17
+ - Lookup is an exact match on id
18
+
19
+ ## Process Flow
20
+
21
+ ```mermaid
22
+ flowchart TD
23
+ A[Receive input with id] --> B[SELECT from VarianceReport where id = input.id]
24
+ B --> C{Variance report found?}
25
+ C -->|Yes| D[Load all associated VarianceReportLine records]
26
+ D --> E[Return variance report with summary totals and detail lines]
27
+ C -->|No| F[Return null]
28
+ ```
29
+
30
+ ## External Dependencies
31
+
32
+ - None
33
+
34
+ ## Error Scenarios
35
+
36
+ - **VARIANCE_REPORT_NOT_FOUND**: No variance report matches the given id — caller receives null
37
+
38
+ ## Test Cases
39
+
40
+ - returns variance report with all header fields and detail lines when found by id
41
+ - returns variance report with summary totals matching the sum of detail lines
42
+ - returns detail lines with planned amount, actual amount, variance amount, and variance percentage
43
+ - returns detail lines with variance direction FAVORABLE for cost elements where actual is below plan
44
+ - returns detail lines with variance direction UNFAVORABLE for cost elements where actual is above plan
45
+ - returns null when no variance report matches the given id
@@ -0,0 +1,63 @@
1
+ # ListAllocationCycles
2
+
3
+ ## Overview
4
+
5
+ ListAllocationCycles retrieves a list of allocation cycle records matching optional filter criteria. Callers can filter by companyId, type (ASSESSMENT or DISTRIBUTION), status (DRAFT, VALIDATED, EXECUTED, POSTED, REVERSED), and accountingPeriodId. This query supports allocation cycle browsing, period-end processing review, and allocation audit workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts optional filter parameters: `{ companyId, type, status, accountingPeriodId }`
10
+ - Returns a list of allocation cycles matching all provided filters (AND logic)
11
+ - When no filters are provided, returns all allocation cycles accessible to the caller
12
+ - Each returned allocation cycle includes header fields but does not include nested rules and results (use GetAllocationCycle for full details)
13
+ - Returns an empty list if no allocation cycles match the given filters
14
+ - Results are scoped to the caller's accessible companies
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive input with optional filters] --> B[Build query with provided filters]
21
+ B --> C{companyId provided?}
22
+ C -->|Yes| D[Add companyId filter]
23
+ C -->|No| E[Skip companyId filter]
24
+ D --> F{type provided?}
25
+ E --> F
26
+ F -->|Yes| G[Add type filter]
27
+ F -->|No| H[Skip type filter]
28
+ G --> I{status provided?}
29
+ H --> I
30
+ I -->|Yes| J[Add status filter]
31
+ I -->|No| K[Skip status filter]
32
+ J --> L{accountingPeriodId provided?}
33
+ K --> L
34
+ L -->|Yes| M[Add accountingPeriodId filter]
35
+ L -->|No| N[Skip accountingPeriodId filter]
36
+ M --> O[Execute query]
37
+ N --> O
38
+ O --> P[Return list of matching allocation cycles]
39
+ ```
40
+
41
+ ## External Dependencies
42
+
43
+ - None
44
+
45
+ ## Error Scenarios
46
+
47
+ - **INVALID_TYPE_FILTER**: Provided type value is not ASSESSMENT or DISTRIBUTION
48
+ - **INVALID_STATUS_FILTER**: Provided status value is not DRAFT, VALIDATED, EXECUTED, POSTED, or REVERSED
49
+ - **ACCOUNTING_PERIOD_NOT_FOUND**: Provided accountingPeriodId does not reference an existing accounting period
50
+
51
+ ## Test Cases
52
+
53
+ - returns all allocation cycles when no filters are provided
54
+ - returns allocation cycles filtered by companyId
55
+ - returns allocation cycles filtered by type ASSESSMENT
56
+ - returns allocation cycles filtered by type DISTRIBUTION
57
+ - returns allocation cycles filtered by status POSTED
58
+ - returns allocation cycles filtered by accountingPeriodId
59
+ - returns allocation cycles matching multiple filters simultaneously
60
+ - returns an empty list when no allocation cycles match the given filters
61
+ - returns error when type filter is invalid
62
+ - returns error when status filter is invalid
63
+ - returns error when accountingPeriodId does not exist
@@ -0,0 +1,70 @@
1
+ # ListBudgets
2
+
3
+ ## Overview
4
+
5
+ ListBudgets retrieves a list of budget records matching optional filter criteria. Callers can filter by companyId, fiscalYearId, costObjectType (cost center, profit center, or internal order), costObjectId, status (DRAFT, SUBMITTED, APPROVED, ACTIVE, CLOSED), and planVersionId. This query supports budget browsing, budget vs. actual reporting setup, and budget administration workflows.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts optional filter parameters: `{ companyId, fiscalYearId, costObjectType, costObjectId, status, planVersionId }`
10
+ - Returns a list of budgets matching all provided filters (AND logic)
11
+ - When no filters are provided, returns all budgets accessible to the caller
12
+ - Each returned budget includes header fields but does not include nested line items (use GetBudget for full details)
13
+ - Returns an empty list if no budgets match the given filters
14
+ - Results are scoped to the caller's accessible companies
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive input with optional filters] --> B[Build query with provided filters]
21
+ B --> C{companyId provided?}
22
+ C -->|Yes| D[Add companyId filter]
23
+ C -->|No| E[Skip companyId filter]
24
+ D --> F{fiscalYearId provided?}
25
+ E --> F
26
+ F -->|Yes| G[Add fiscalYearId filter]
27
+ F -->|No| H[Skip fiscalYearId filter]
28
+ G --> I{costObjectType provided?}
29
+ H --> I
30
+ I -->|Yes| J[Add costObjectType filter]
31
+ I -->|No| K[Skip costObjectType filter]
32
+ J --> L{costObjectId provided?}
33
+ K --> L
34
+ L -->|Yes| M[Add costObjectId filter]
35
+ L -->|No| N[Skip costObjectId filter]
36
+ M --> O{status provided?}
37
+ N --> O
38
+ O -->|Yes| P[Add status filter]
39
+ O -->|No| Q[Skip status filter]
40
+ P --> R{planVersionId provided?}
41
+ Q --> R
42
+ R -->|Yes| S[Add planVersionId filter]
43
+ R -->|No| T[Skip planVersionId filter]
44
+ S --> U[Execute query]
45
+ T --> U
46
+ U --> V[Return list of matching budgets]
47
+ ```
48
+
49
+ ## External Dependencies
50
+
51
+ - None
52
+
53
+ ## Error Scenarios
54
+
55
+ - **INVALID_STATUS_FILTER**: Provided status value is not DRAFT, SUBMITTED, APPROVED, ACTIVE, or CLOSED
56
+ - **INVALID_COST_OBJECT_TYPE_FILTER**: Provided costObjectType is not a recognized cost object type
57
+
58
+ ## Test Cases
59
+
60
+ - returns all budgets when no filters are provided
61
+ - returns budgets filtered by companyId
62
+ - returns budgets filtered by fiscalYearId
63
+ - returns budgets filtered by costObjectType
64
+ - returns budgets filtered by costObjectId
65
+ - returns budgets filtered by status ACTIVE
66
+ - returns budgets filtered by planVersionId
67
+ - returns budgets matching multiple filters simultaneously
68
+ - returns an empty list when no budgets match the given filters
69
+ - returns error when status filter is invalid
70
+ - returns error when costObjectType filter is invalid