@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
@@ -16,7 +16,7 @@ export interface UpdateBillOfMaterialLineInput {
16
16
  isSubassembly?: boolean | null;
17
17
  }
18
18
 
19
- export interface UpdateBillOfMaterialInput {
19
+ export type UpdateBillOfMaterialInput = {
20
20
  id: string;
21
21
  bomType?: string | null;
22
22
  effectivityStartDate?: Date | null;
@@ -24,8 +24,7 @@ export interface UpdateBillOfMaterialInput {
24
24
  defaultSelection?: boolean | null;
25
25
  revisionNumber?: string | null;
26
26
  lines?: UpdateBillOfMaterialLineInput[];
27
- }
28
-
27
+ };
29
28
  /**
30
29
  * Function: updateBillOfMaterial
31
30
  *
@@ -35,7 +34,7 @@ export interface UpdateBillOfMaterialInput {
35
34
  */
36
35
  export async function run<CF extends Record<string, unknown>>(
37
36
  db: Transaction,
38
- input: UpdateBillOfMaterialInput & CF,
37
+ input: UpdateBillOfMaterialInput & Omit<Partial<CF>, "status">,
39
38
  _ctx: CommandContext,
40
39
  ) {
41
40
  const {
@@ -8,7 +8,7 @@ import {
8
8
  } from "../lib/errors.generated";
9
9
  import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
10
10
 
11
- export interface UpdateProductionOrderInput {
11
+ export type UpdateProductionOrderInput = {
12
12
  id: string;
13
13
  plannedQuantity?: number | null;
14
14
  plannedStartDate?: Date | null;
@@ -18,8 +18,7 @@ export interface UpdateProductionOrderInput {
18
18
  orderedItemId?: string | null;
19
19
  companyId?: string | null;
20
20
  siteId?: string | null;
21
- }
22
-
21
+ };
23
22
  /**
24
23
  * Function: updateProductionOrder
25
24
  *
@@ -28,7 +27,7 @@ export interface UpdateProductionOrderInput {
28
27
  */
29
28
  export async function run<CF extends Record<string, unknown>>(
30
29
  db: Transaction,
31
- input: UpdateProductionOrderInput & CF,
30
+ input: UpdateProductionOrderInput & Omit<Partial<CF>, "status">,
32
31
  _ctx: CommandContext,
33
32
  ) {
34
33
  const {
@@ -18,12 +18,11 @@ export interface UpdateRoutingOperationInput {
18
18
  operatorInstructions?: string | null;
19
19
  }
20
20
 
21
- export interface UpdateRoutingInput {
21
+ export type UpdateRoutingInput = {
22
22
  id: string;
23
23
  revisionNumber?: string | null;
24
24
  operations: UpdateRoutingOperationInput[];
25
- }
26
-
25
+ };
27
26
  /**
28
27
  * Function: updateRouting
29
28
  *
@@ -32,7 +31,7 @@ export interface UpdateRoutingInput {
32
31
  */
33
32
  export async function run<CF extends Record<string, unknown>>(
34
33
  db: Transaction,
35
- input: UpdateRoutingInput & CF,
34
+ input: UpdateRoutingInput & Omit<Partial<CF>, "status">,
36
35
  _ctx: CommandContext,
37
36
  ) {
38
37
  const { id, revisionNumber, operations, ...customFields } = input;
@@ -7,7 +7,6 @@ import {
7
7
  InvalidRateError,
8
8
  InvalidOverheadMethodError,
9
9
  OverheadCurrencyRequiredError,
10
- ImmutableScopeFieldError,
11
10
  } from "../lib/errors.generated";
12
11
  import { baseActiveWorkCenter } from "../testing/fixtures";
13
12
  import { run } from "./updateWorkCenter";
@@ -56,18 +55,28 @@ describe("updateWorkCenter", () => {
56
55
  }
57
56
  });
58
57
 
59
- it("returns error when immutable scope fields are changed", async () => {
60
- const { db } = createMockDb<Transaction>();
58
+ it("looks up a work center by companyId, siteId, and code", async () => {
59
+ const { db, spies } = createMockDb<Transaction>();
60
+ spies.select.mockReturnValueOnce(baseActiveWorkCenter);
61
+ spies.update.mockReturnValue({
62
+ ...baseActiveWorkCenter,
63
+ capacityAssumptions: 220,
64
+ });
61
65
 
62
66
  const result = await run(
63
67
  db,
64
- { ...validInput, companyId: "other-company" } as Parameters<typeof run>[1],
68
+ {
69
+ companyId: baseActiveWorkCenter.companyId,
70
+ siteId: baseActiveWorkCenter.siteId,
71
+ code: baseActiveWorkCenter.code,
72
+ capacityAssumptions: 220,
73
+ },
65
74
  ctx,
66
75
  );
67
76
 
68
- expect(result.ok).toBe(false);
69
- if (!result.ok) {
70
- expect(result.error).toBeInstanceOf(ImmutableScopeFieldError);
77
+ expect(result.ok).toBe(true);
78
+ if (result.ok) {
79
+ expect(result.value.workCenter.capacityAssumptions).toBe(220);
71
80
  }
72
81
  });
73
82
 
@@ -5,7 +5,6 @@ import {
5
5
  InvalidRateError,
6
6
  InvalidOverheadMethodError,
7
7
  OverheadCurrencyRequiredError,
8
- ImmutableScopeFieldError,
9
8
  } from "../lib/errors.generated";
10
9
  import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
11
10
 
@@ -15,18 +14,17 @@ const VALID_OVERHEAD_METHODS = [
15
14
  "FIXED_AMOUNT_PER_GOOD_UNIT",
16
15
  ] as const;
17
16
 
18
- const IMMUTABLE_FIELDS = ["companyId", "siteId", "code"] as const;
19
-
20
- export interface UpdateWorkCenterInput {
21
- id: string;
17
+ export type UpdateWorkCenterInput = (
18
+ | { id: string }
19
+ | { companyId: string; siteId: string; code: string }
20
+ ) & {
22
21
  capacityAssumptions?: number | null;
23
22
  laborRate?: number | null;
24
23
  machineRate?: number | null;
25
24
  calendarReference?: string | null;
26
25
  overheadAbsorptionMethod?: string | null;
27
26
  overheadAbsorptionCurrency?: string | null;
28
- }
29
-
27
+ };
30
28
  /**
31
29
  * Function: updateWorkCenter
32
30
  *
@@ -36,11 +34,10 @@ export interface UpdateWorkCenterInput {
36
34
  */
37
35
  export async function run<CF extends Record<string, unknown>>(
38
36
  db: Transaction,
39
- input: UpdateWorkCenterInput & CF,
37
+ input: UpdateWorkCenterInput & Omit<Partial<CF>, "status">,
40
38
  _ctx: CommandContext,
41
39
  ) {
42
40
  const {
43
- id,
44
41
  capacityAssumptions,
45
42
  laborRate,
46
43
  machineRate,
@@ -49,42 +46,48 @@ export async function run<CF extends Record<string, unknown>>(
49
46
  overheadAbsorptionCurrency,
50
47
  ...customFields
51
48
  } = input;
52
-
53
- // 1. Reject immutable scope fields
54
- for (const field of IMMUTABLE_FIELDS) {
55
- if (field in customFields) {
56
- return err(new ImmutableScopeFieldError(field));
57
- }
49
+ delete (customFields as Record<string, unknown>).id;
50
+ delete (customFields as Record<string, unknown>).companyId;
51
+ delete (customFields as Record<string, unknown>).siteId;
52
+ delete (customFields as Record<string, unknown>).code;
53
+
54
+ // 1. Check work center exists
55
+ let workCenterQuery = db.selectFrom("WorkCenter").selectAll();
56
+ if ("id" in input) {
57
+ workCenterQuery = workCenterQuery.where("id", "=", (input as { id: string }).id);
58
+ } else {
59
+ const lookup = input as { companyId: string; siteId: string; code: string };
60
+ workCenterQuery = workCenterQuery
61
+ .where("companyId", "=", lookup.companyId)
62
+ .where("siteId", "=", lookup.siteId)
63
+ .where("code", "=", lookup.code);
58
64
  }
59
-
60
- // 2. Check work center exists
61
- const workCenter = await db
62
- .selectFrom("WorkCenter")
63
- .selectAll()
64
- .where("id", "=", id)
65
- .forUpdate()
66
- .executeTakeFirst();
65
+ const workCenter = await workCenterQuery.forUpdate().executeTakeFirst();
67
66
 
68
67
  if (!workCenter) {
69
- return err(new WorkCenterNotFoundError(id));
68
+ const key =
69
+ "id" in input
70
+ ? (input as { id: string }).id
71
+ : `${(input as { companyId: string; siteId: string; code: string }).companyId}:${(input as { companyId: string; siteId: string; code: string }).siteId}:${(input as { companyId: string; siteId: string; code: string }).code}`;
72
+ return err(new WorkCenterNotFoundError(key));
70
73
  }
71
74
 
72
- // 3. Only DRAFT or ACTIVE allowed
75
+ // 2. Only DRAFT or ACTIVE allowed
73
76
  if (workCenter.status !== "DRAFT" && workCenter.status !== "ACTIVE") {
74
- return err(new WorkCenterNotFoundError(id));
77
+ return err(new WorkCenterNotFoundError(workCenter.id));
75
78
  }
76
79
 
77
- // 4. Validate capacity if provided
80
+ // 3. Validate capacity if provided
78
81
  if (capacityAssumptions != null && capacityAssumptions <= 0) {
79
- return err(new InvalidCapacityError(id));
82
+ return err(new InvalidCapacityError(workCenter.id));
80
83
  }
81
84
 
82
- // 5. Validate rates if provided
85
+ // 4. Validate rates if provided
83
86
  if (laborRate != null && laborRate < 0) {
84
- return err(new InvalidRateError(id));
87
+ return err(new InvalidRateError(workCenter.id));
85
88
  }
86
89
  if (machineRate != null && machineRate < 0) {
87
- return err(new InvalidRateError(id));
90
+ return err(new InvalidRateError(workCenter.id));
88
91
  }
89
92
 
90
93
  // Resolve the effective overhead method after update
@@ -97,20 +100,20 @@ export async function run<CF extends Record<string, unknown>>(
97
100
  ? overheadAbsorptionCurrency
98
101
  : workCenter.overheadAbsorptionCurrency;
99
102
 
100
- // 6. Validate overhead method
103
+ // 5. Validate overhead method
101
104
  if (
102
105
  effectiveMethod != null &&
103
106
  !VALID_OVERHEAD_METHODS.includes(effectiveMethod as (typeof VALID_OVERHEAD_METHODS)[number])
104
107
  ) {
105
- return err(new InvalidOverheadMethodError(id));
108
+ return err(new InvalidOverheadMethodError(workCenter.id));
106
109
  }
107
110
 
108
- // 7. Overhead currency required for FIXED_AMOUNT_PER_GOOD_UNIT
111
+ // 6. Overhead currency required for FIXED_AMOUNT_PER_GOOD_UNIT
109
112
  if (effectiveMethod === "FIXED_AMOUNT_PER_GOOD_UNIT" && !effectiveCurrency) {
110
- return err(new OverheadCurrencyRequiredError(id));
113
+ return err(new OverheadCurrencyRequiredError(workCenter.id));
111
114
  }
112
115
 
113
- // 8. Build update set
116
+ // 7. Build update set
114
117
  const updateSet: Record<string, unknown> = {
115
118
  ...(customFields as Record<string, unknown>),
116
119
  updatedAt: new Date(),
@@ -125,11 +128,11 @@ export async function run<CF extends Record<string, unknown>>(
125
128
  if (overheadAbsorptionCurrency !== undefined)
126
129
  updateSet.overheadAbsorptionCurrency = overheadAbsorptionCurrency;
127
130
 
128
- // 9. Persist changes
131
+ // 8. Persist changes
129
132
  const updated = await db
130
133
  .updateTable("WorkCenter")
131
134
  .set(updateSet)
132
- .where("id", "=", id)
135
+ .where("id", "=", workCenter.id)
133
136
  .returningAll()
134
137
  .executeTakeFirstOrThrow();
135
138
 
@@ -47,3 +47,5 @@ flowchart TD
47
47
  - returns error when the status does not allow activation
48
48
  - returns error when required calendar context is missing
49
49
  - returns error when capacity is not positive
50
+ - returns error when a configured rate is negative
51
+ - returns error when fixed overhead is missing its currency
@@ -64,3 +64,5 @@ flowchart TD
64
64
  - returns error when a lot-tracked receipt omits finishedGoodLotReference
65
65
  - returns error when a serial-tracked receipt omits serialReferences
66
66
  - rolls up completion to the parent order
67
+ - allows zero-quantity completion only under an explicit bypass policy
68
+ - emits a backflush handoff when completion requires backflush consumption
@@ -52,3 +52,4 @@ flowchart TD
52
52
  - returns error when a component item is inactive
53
53
  - returns error when a component item exists but is inactive
54
54
  - returns error when the version identity already exists in scope
55
+ - returns error when the parent item is inactive
@@ -50,3 +50,4 @@ flowchart TD
50
50
  - returns error when the review result cannot represent all required variance types
51
51
  - returns error when reviewer identity is missing
52
52
  - keeps all required variance types distinct during review
53
+ - returns error when final variance cannot be recalculated consistently
@@ -2,13 +2,13 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- UpdateWorkCenter revises mutable work-center master data such as capacity, calendar, rate assumptions, and overhead policy. The command keeps existing production-order cost snapshots immutable even when active master data changes.
5
+ UpdateWorkCenter revises mutable work-center master data such as capacity, calendar, rate assumptions, and overhead policy. The target work center can be looked up by `id` or by `companyId` + `siteId` + `code`. The command keeps existing production-order cost snapshots immutable even when active master data changes.
6
6
 
7
7
  ## Business Rules
8
8
 
9
- - Target work center must exist.
9
+ - Target work center must exist (looked up by `id` or `companyId` + `siteId` + `code`).
10
10
  - Draft and active work centers may be updated.
11
- - Scope identity and unique code remain immutable after creation.
11
+ - Scope identity and unique code are fixed by the existing record and are used only for lookup.
12
12
  - Capacity must remain positive.
13
13
  - Labor and machine rates must be zero or greater.
14
14
  - Fixed-amount overhead requires a currency.
@@ -32,7 +32,6 @@ flowchart TD
32
32
  ## Error Scenarios
33
33
 
34
34
  - **WORK_CENTER_NOT_FOUND**: Target work center does not exist.
35
- - **IMMUTABLE_SCOPE_FIELD**: The request attempts to change immutable scope or code fields.
36
35
  - **INVALID_CAPACITY**: Capacity is zero or negative.
37
36
  - **INVALID_RATE**: Labor or machine rate is negative.
38
37
  - **INVALID_OVERHEAD_METHOD**: Overhead method is not supported.
@@ -42,7 +41,9 @@ flowchart TD
42
41
 
43
42
  - updates an active work center without changing scope identity
44
43
  - returns error when the work center does not exist
45
- - returns error when immutable scope fields are changed
44
+ - looks up a work center by companyId, siteId, and code
46
45
  - returns error when capacity is not positive
47
46
  - returns error when a rate is negative
48
47
  - preserves released cost baselines after update
48
+ - returns error when the overhead method is not supported
49
+ - returns error when fixed-amount overhead omits currency
@@ -0,0 +1,42 @@
1
+ # BillOfMaterialLine
2
+
3
+ ## Description
4
+
5
+ BillOfMaterialLine stores one component entry within a BillOfMaterial version. It owns the component item reference, required quantity, unit of measure, scrap assumption, and subassembly flag that drive BOM explosion and production-order material requirements at release time.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createBillOfMaterial](../commands/CreateBillOfMaterial.md) - Create draft BOM versions including initial component lines.
16
+ - [updateBillOfMaterial](../commands/UpdateBillOfMaterial.md) - Revise component lines while the BOM remains draft.
17
+ - [activateBillOfMaterial](../commands/ActivateBillOfMaterial.md) - Validate and freeze the component line structure for selection at release.
18
+ - [deactivateBillOfMaterial](../commands/DeactivateBillOfMaterial.md) - Retire the BOM version without mutating lines on existing production-order snapshots.
19
+
20
+ ### Query Definitions
21
+
22
+ - [getBillOfMaterial](../queries/GetBillOfMaterial.md) - Retrieve one BOM version with its component lines.
23
+ - [explodeBillOfMaterial](../queries/ExplodeBillOfMaterial.md) - Expand component lines into multi-level requirements for planning.
24
+ - [listBillOfMaterialsByItem](../queries/ListBillOfMaterialsByItem.md) - List BOM versions and lines for one parent item and scope.
25
+ - [detectBillOfMaterialCircularReference](../queries/DetectBillOfMaterialCircularReference.md) - Validate component line references for circular manufactured-item loops.
26
+
27
+ ### Models
28
+
29
+ - BillOfMaterialLine
30
+
31
+ ### Invariants
32
+
33
+ - Every BillOfMaterialLine belongs to exactly one BillOfMaterial version.
34
+ - `requiredQuantity` must be greater than zero.
35
+ - Component item must be a valid item reference.
36
+ - Inactive items cannot appear as component lines on a draft or active BOM.
37
+ - `scrapAssumption`, when provided, must be zero or greater.
38
+
39
+ ### Relationships
40
+
41
+ - **Belongs To BillOfMaterial**: each line is subordinate to one [BillOfMaterial](./BillOfMaterial.md) version.
42
+ - **References Item (cross-module)**: `itemId` points to a component [Item](../../../item-management/docs/models/Item.md).
@@ -0,0 +1,36 @@
1
+ # CostVarianceLine
2
+
3
+ ## Description
4
+
5
+ CostVarianceLine stores one classified variance entry within a ManufacturingCostSummary. It owns the variance type, computed amount, optional account reference for settlement handoff, and an optional variance percentage that together express the planned-versus-actual deviation for one cost category.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [technicallyCompleteProductionOrder](../commands/TechnicallyCompleteProductionOrder.md) - Move the parent summary toward variance review where variance lines are produced.
16
+ - [reviewManufacturingCostSummary](../commands/ReviewManufacturingCostSummary.md) - Recalculate, classify, and freeze variance lines on the parent summary.
17
+
18
+ ### Query Definitions
19
+
20
+ - [getManufacturingCostSummary](../queries/GetManufacturingCostSummary.md) - Retrieve variance lines as part of the parent manufacturing cost summary.
21
+ - [listManufacturingCostSummariesByStatus](../queries/ListManufacturingCostSummariesByStatus.md) - List summaries whose variance lines await review or settlement.
22
+
23
+ ### Models
24
+
25
+ - CostVarianceLine
26
+
27
+ ### Invariants
28
+
29
+ - Every CostVarianceLine belongs to exactly one ManufacturingCostSummary.
30
+ - `varianceType` must be one of `MATERIAL_PRICE`, `MATERIAL_USAGE`, `LABOR_RATE`, `LABOR_EFFICIENCY`, `MACHINE_RATE`, `MACHINE_EFFICIENCY`, `SCRAP`, or `YIELD`.
31
+ - Variance lines are frozen when the parent summary reaches `VARIANCE_REVIEWED`.
32
+ - Each named variance type appears at most once per summary.
33
+
34
+ ### Relationships
35
+
36
+ - **Belongs To ManufacturingCostSummary**: each line is subordinate to one [ManufacturingCostSummary](./ManufacturingCostSummary.md).
@@ -0,0 +1,37 @@
1
+ # ManufacturingCostLine
2
+
3
+ ## Description
4
+
5
+ ManufacturingCostLine stores one planned-versus-actual cost entry within a ManufacturingCostSummary. It owns the cost type category, planned amount frozen at release, and accumulated actual amount updated through execution evidence.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Initialize planned cost lines when the production order is released.
16
+ - [recordInventoryIssueOutcome](../commands/RecordInventoryIssueOutcome.md) - Update actual material amounts on cost lines from inventory-valued outcomes.
17
+ - [reviewManufacturingCostSummary](../commands/ReviewManufacturingCostSummary.md) - Recalculate and freeze variance context that references planned versus actual cost lines.
18
+
19
+ ### Query Definitions
20
+
21
+ - [getManufacturingCostSummary](../queries/GetManufacturingCostSummary.md) - Retrieve cost lines as part of the parent manufacturing cost summary.
22
+ - [listManufacturingCostSummariesByStatus](../queries/ListManufacturingCostSummariesByStatus.md) - List summaries whose cost lines appear in review or settlement queues.
23
+
24
+ ### Models
25
+
26
+ - ManufacturingCostLine
27
+
28
+ ### Invariants
29
+
30
+ - Every ManufacturingCostLine belongs to exactly one ManufacturingCostSummary.
31
+ - `costType` identifies one cost category such as `MATERIAL`, `LABOR`, `MACHINE`, or `OVERHEAD`.
32
+ - `plannedAmount` is frozen at production-order release and never recomputed from later master-data changes.
33
+ - `actualAmount` accumulates from execution evidence only while the parent summary is in `COLLECTING`.
34
+
35
+ ### Relationships
36
+
37
+ - **Belongs To ManufacturingCostSummary**: each line is subordinate to one [ManufacturingCostSummary](./ManufacturingCostSummary.md).
@@ -0,0 +1,34 @@
1
+ # ManufacturingCostSettlementRecord
2
+
3
+ ## Description
4
+
5
+ ManufacturingCostSettlementRecord stores the downstream settlement acknowledgment evidence for a ManufacturingCostSummary. It owns the settlement date, settlement reference identifier, and an optional acknowledged date that together confirm that the variance review has been accepted by the downstream accounting or financial close process.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [recordManufacturingCostSettlementAcknowledgment](../commands/RecordManufacturingCostSettlementAcknowledgment.md) - Persist settlement acknowledgment evidence on the parent manufacturing cost summary.
16
+
17
+ ### Query Definitions
18
+
19
+ - [getManufacturingCostSummary](../queries/GetManufacturingCostSummary.md) - Retrieve the settlement record as part of the parent cost summary.
20
+
21
+ ### Models
22
+
23
+ - ManufacturingCostSettlementRecord
24
+
25
+ ### Invariants
26
+
27
+ - Every ManufacturingCostSettlementRecord belongs to exactly one ManufacturingCostSummary.
28
+ - `settlementDate` and `settlementReference` are required.
29
+ - A valid settlement record enables the parent ManufacturingCostSummary to transition to `SETTLED`.
30
+ - Settlement reference, order, summary, and currency must match the reviewed handoff.
31
+
32
+ ### Relationships
33
+
34
+ - **Belongs To ManufacturingCostSummary**: each record is subordinate to one [ManufacturingCostSummary](./ManufacturingCostSummary.md).
@@ -0,0 +1,35 @@
1
+ # ProductionOrderBomSnapshot
2
+
3
+ ## Description
4
+
5
+ ProductionOrderBomSnapshot stores the immutable BOM state frozen at production-order release. It owns the parent item reference, BOM type, and a serialized representation of the full BOM structure so that later BOM edits never affect released work.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Freeze the BOM snapshot when the production order is released.
16
+
17
+ ### Query Definitions
18
+
19
+ - [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve the BOM snapshot as part of the parent production order.
20
+
21
+ ### Models
22
+
23
+ - ProductionOrderBomSnapshot
24
+
25
+ ### Invariants
26
+
27
+ - Every ProductionOrder has at most one ProductionOrderBomSnapshot, created at release.
28
+ - The snapshot is immutable once created; later BOM updates do not affect it.
29
+ - `bomType` reflects the BOM type semantics frozen at release time.
30
+ - The snapshot exists only on orders in `RELEASED`, `IN_PROGRESS`, `COMPLETED`, `TECHNICALLY_COMPLETE`, or `CLOSED`.
31
+
32
+ ### Relationships
33
+
34
+ - **Belongs To ProductionOrder**: the snapshot is owned by one [ProductionOrder](./ProductionOrder.md).
35
+ - **Derived From BillOfMaterial**: the snapshot captures the state of a resolved [BillOfMaterial](./BillOfMaterial.md) version at release time.
@@ -0,0 +1,36 @@
1
+ # ProductionOrderCostBaseline
2
+
3
+ ## Description
4
+
5
+ ProductionOrderCostBaseline stores the frozen planned cost figures established at production-order release. It owns the planned material, labor, machine, and overhead cost totals along with the currency code so that variance analysis always compares actuals against an immutable release-time plan.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Create the frozen cost baseline when the production order is released.
16
+
17
+ ### Query Definitions
18
+
19
+ - [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve the cost baseline as part of the parent production order.
20
+
21
+ ### Models
22
+
23
+ - ProductionOrderCostBaseline
24
+
25
+ ### Invariants
26
+
27
+ - Every ProductionOrder has at most one ProductionOrderCostBaseline, created at release.
28
+ - The baseline is immutable once created; later work-center rate or BOM changes do not affect it.
29
+ - All planned cost fields are zero or greater.
30
+ - `currencyCode` is required and must be a valid ISO 4217 code.
31
+ - The baseline exists only on orders in `RELEASED`, `IN_PROGRESS`, `COMPLETED`, `TECHNICALLY_COMPLETE`, or `CLOSED`.
32
+
33
+ ### Relationships
34
+
35
+ - **Belongs To ProductionOrder**: the baseline is owned by one [ProductionOrder](./ProductionOrder.md).
36
+ - **Feeds ManufacturingCostSummary**: the frozen baseline drives planned totals in [ManufacturingCostSummary](./ManufacturingCostSummary.md) variance calculations.
@@ -0,0 +1,35 @@
1
+ # ProductionOrderMaterialRequirement
2
+
3
+ ## Description
4
+
5
+ ProductionOrderMaterialRequirement stores one exploded component requirement derived from the BOM snapshot at production-order release. It owns the component item reference, required quantity, unit of measure, and optional planned unit cost that drive material staging and inventory issue planning for the order.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Explode the BOM snapshot into material requirements when the production order is released.
16
+
17
+ ### Query Definitions
18
+
19
+ - [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve material requirements as part of the parent production order.
20
+
21
+ ### Models
22
+
23
+ - ProductionOrderMaterialRequirement
24
+
25
+ ### Invariants
26
+
27
+ - Every ProductionOrderMaterialRequirement belongs to exactly one ProductionOrder.
28
+ - `requiredQuantity` must be greater than zero.
29
+ - Requirements are created at release and reflect the BOM snapshot; later BOM edits do not affect them.
30
+ - `plannedUnitCost`, when provided, is zero or greater.
31
+
32
+ ### Relationships
33
+
34
+ - **Belongs To ProductionOrder**: each requirement is owned by one [ProductionOrder](./ProductionOrder.md).
35
+ - **References Item (cross-module)**: `itemId` points to the required component [Item](../../../item-management/docs/models/Item.md).
@@ -0,0 +1,34 @@
1
+ # ProductionOrderRoutingSnapshot
2
+
3
+ ## Description
4
+
5
+ ProductionOrderRoutingSnapshot stores the immutable routing state frozen at production-order release. It owns the routing reference and a serialized representation of the full routing structure so that later routing revisions never affect released work orders.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Freeze the routing snapshot when the production order is released.
16
+
17
+ ### Query Definitions
18
+
19
+ - [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve the routing snapshot as part of the parent production order.
20
+
21
+ ### Models
22
+
23
+ - ProductionOrderRoutingSnapshot
24
+
25
+ ### Invariants
26
+
27
+ - Every ProductionOrder has at most one ProductionOrderRoutingSnapshot, created at release.
28
+ - The snapshot is immutable once created; later routing revisions do not affect it.
29
+ - The snapshot exists only on orders in `RELEASED`, `IN_PROGRESS`, `COMPLETED`, `TECHNICALLY_COMPLETE`, or `CLOSED`.
30
+
31
+ ### Relationships
32
+
33
+ - **Belongs To ProductionOrder**: the snapshot is owned by one [ProductionOrder](./ProductionOrder.md).
34
+ - **Derived From Routing**: the snapshot captures the state of a resolved [Routing](./Routing.md) revision at release time.