@tailor-platform/erp-kit 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +8 -4
  3. package/dist/cli.mjs +70 -70
  4. package/package.json +1 -1
  5. package/skills/erp-kit-app-5-impl-backend/SKILL.md +5 -5
  6. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -1
  7. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +37 -12
  8. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +3 -1
  9. package/skills/erp-kit-app-6-impl-frontend/references/component.md +90 -0
  10. package/skills/erp-kit-app-6-impl-frontend/references/detail-view.md +255 -0
  11. package/skills/erp-kit-app-6-impl-frontend/references/pages.md +1 -5
  12. package/skills/erp-kit-app-7-impl-review/SKILL.md +3 -2
  13. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +14 -8
  14. package/skills/erp-kit-module-6-impl-review/SKILL.md +16 -19
  15. package/skills/erp-kit-module-shared/references/commands.md +68 -1
  16. package/src/commands/index.ts +8 -2
  17. package/src/commands/init.test.ts +24 -8
  18. package/src/commands/init.ts +5 -12
  19. package/src/commands/lib/distribute.test.ts +1 -20
  20. package/src/commands/lib/distribute.ts +0 -14
  21. package/src/commands/update.test.ts +1 -1
  22. package/src/generator/scaffold.ts +25 -4
  23. package/src/module.ts +4 -1
  24. package/src/modules/accounting/README.md +63 -0
  25. package/src/modules/accounting/command/activateBudget.generated.ts +6 -0
  26. package/src/modules/accounting/command/activateBudget.test.ts +119 -0
  27. package/src/modules/accounting/command/activateBudget.ts +77 -0
  28. package/src/modules/accounting/command/activateCostElement.generated.ts +6 -0
  29. package/src/modules/accounting/command/activateCostElement.test.ts +59 -0
  30. package/src/modules/accounting/command/activateCostElement.ts +41 -0
  31. package/src/modules/accounting/command/activateProfitCenter.generated.ts +6 -0
  32. package/src/modules/accounting/command/activateProfitCenter.test.ts +60 -0
  33. package/src/modules/accounting/command/activateProfitCenter.ts +38 -0
  34. package/src/modules/accounting/command/approveBudget.generated.ts +6 -0
  35. package/src/modules/accounting/command/approveBudget.test.ts +69 -0
  36. package/src/modules/accounting/command/approveBudget.ts +47 -0
  37. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.generated.ts +6 -0
  38. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.test.ts +112 -0
  39. package/src/modules/accounting/command/assignCostCenterToHierarchyNode.ts +67 -0
  40. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.generated.ts +6 -0
  41. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.test.ts +123 -0
  42. package/src/modules/accounting/command/assignProfitCenterToHierarchyNode.ts +71 -0
  43. package/src/modules/accounting/command/closeBudget.generated.ts +6 -0
  44. package/src/modules/accounting/command/closeBudget.test.ts +93 -0
  45. package/src/modules/accounting/command/closeBudget.ts +40 -0
  46. package/src/modules/accounting/command/closeInternalOrder.generated.ts +6 -0
  47. package/src/modules/accounting/command/closeInternalOrder.test.ts +74 -0
  48. package/src/modules/accounting/command/closeInternalOrder.ts +38 -0
  49. package/src/modules/accounting/command/consumeCommitment.generated.ts +6 -0
  50. package/src/modules/accounting/command/consumeCommitment.test.ts +123 -0
  51. package/src/modules/accounting/command/consumeCommitment.ts +62 -0
  52. package/src/modules/accounting/command/createAllocationCycle.generated.ts +6 -0
  53. package/src/modules/accounting/command/createAllocationCycle.test.ts +166 -0
  54. package/src/modules/accounting/command/createAllocationCycle.ts +68 -0
  55. package/src/modules/accounting/command/createAllocationRule.generated.ts +6 -0
  56. package/src/modules/accounting/command/createAllocationRule.test.ts +195 -0
  57. package/src/modules/accounting/command/createAllocationRule.ts +103 -0
  58. package/src/modules/accounting/command/createBudget.generated.ts +6 -0
  59. package/src/modules/accounting/command/createBudget.test.ts +159 -0
  60. package/src/modules/accounting/command/createBudget.ts +100 -0
  61. package/src/modules/accounting/command/createBudgetLineItem.generated.ts +6 -0
  62. package/src/modules/accounting/command/createBudgetLineItem.test.ts +178 -0
  63. package/src/modules/accounting/command/createBudgetLineItem.ts +104 -0
  64. package/src/modules/accounting/command/createCostCenter.generated.ts +6 -0
  65. package/src/modules/accounting/command/createCostCenter.test.ts +179 -0
  66. package/src/modules/accounting/command/createCostCenter.ts +112 -0
  67. package/src/modules/accounting/command/createCostCenterHierarchy.generated.ts +6 -0
  68. package/src/modules/accounting/command/createCostCenterHierarchy.test.ts +91 -0
  69. package/src/modules/accounting/command/createCostCenterHierarchy.ts +48 -0
  70. package/src/modules/accounting/command/createCostCenterHierarchyNode.generated.ts +6 -0
  71. package/src/modules/accounting/command/createCostCenterHierarchyNode.test.ts +171 -0
  72. package/src/modules/accounting/command/createCostCenterHierarchyNode.ts +117 -0
  73. package/src/modules/accounting/command/createCostElement.generated.ts +6 -0
  74. package/src/modules/accounting/command/createCostElement.test.ts +317 -0
  75. package/src/modules/accounting/command/createCostElement.ts +149 -0
  76. package/src/modules/accounting/command/createInternalOrder.generated.ts +6 -0
  77. package/src/modules/accounting/command/createInternalOrder.test.ts +206 -0
  78. package/src/modules/accounting/command/createInternalOrder.ts +104 -0
  79. package/src/modules/accounting/command/createPlanVersion.generated.ts +6 -0
  80. package/src/modules/accounting/command/createPlanVersion.test.ts +230 -0
  81. package/src/modules/accounting/command/createPlanVersion.ts +71 -0
  82. package/src/modules/accounting/command/createProfitCenter.generated.ts +6 -0
  83. package/src/modules/accounting/command/createProfitCenter.test.ts +227 -0
  84. package/src/modules/accounting/command/createProfitCenter.ts +81 -0
  85. package/src/modules/accounting/command/createProfitCenterHierarchy.generated.ts +6 -0
  86. package/src/modules/accounting/command/createProfitCenterHierarchy.test.ts +91 -0
  87. package/src/modules/accounting/command/createProfitCenterHierarchy.ts +46 -0
  88. package/src/modules/accounting/command/createProfitCenterHierarchyNode.generated.ts +6 -0
  89. package/src/modules/accounting/command/createProfitCenterHierarchyNode.test.ts +160 -0
  90. package/src/modules/accounting/command/createProfitCenterHierarchyNode.ts +109 -0
  91. package/src/modules/accounting/command/deactivateCostElement.generated.ts +6 -0
  92. package/src/modules/accounting/command/deactivateCostElement.test.ts +59 -0
  93. package/src/modules/accounting/command/deactivateCostElement.ts +41 -0
  94. package/src/modules/accounting/command/deactivateProfitCenter.generated.ts +6 -0
  95. package/src/modules/accounting/command/deactivateProfitCenter.test.ts +60 -0
  96. package/src/modules/accounting/command/deactivateProfitCenter.ts +42 -0
  97. package/src/modules/accounting/command/deleteAllocationCycle.generated.ts +6 -0
  98. package/src/modules/accounting/command/deleteAllocationCycle.test.ts +90 -0
  99. package/src/modules/accounting/command/deleteAllocationCycle.ts +39 -0
  100. package/src/modules/accounting/command/deleteAllocationRule.generated.ts +6 -0
  101. package/src/modules/accounting/command/deleteAllocationRule.test.ts +98 -0
  102. package/src/modules/accounting/command/deleteAllocationRule.ts +40 -0
  103. package/src/modules/accounting/command/deleteBudget.generated.ts +6 -0
  104. package/src/modules/accounting/command/deleteBudget.test.ts +90 -0
  105. package/src/modules/accounting/command/deleteBudget.ts +35 -0
  106. package/src/modules/accounting/command/deleteBudgetLineItem.generated.ts +6 -0
  107. package/src/modules/accounting/command/deleteBudgetLineItem.test.ts +85 -0
  108. package/src/modules/accounting/command/deleteBudgetLineItem.ts +50 -0
  109. package/src/modules/accounting/command/deleteCostCenter.generated.ts +6 -0
  110. package/src/modules/accounting/command/deleteCostCenter.test.ts +79 -0
  111. package/src/modules/accounting/command/deleteCostCenter.ts +67 -0
  112. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.generated.ts +6 -0
  113. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.test.ts +59 -0
  114. package/src/modules/accounting/command/deleteCostCenterHierarchyNode.ts +58 -0
  115. package/src/modules/accounting/command/deleteCostElement.generated.ts +6 -0
  116. package/src/modules/accounting/command/deleteCostElement.test.ts +58 -0
  117. package/src/modules/accounting/command/deleteCostElement.ts +33 -0
  118. package/src/modules/accounting/command/deleteInternalOrder.generated.ts +6 -0
  119. package/src/modules/accounting/command/deleteInternalOrder.test.ts +81 -0
  120. package/src/modules/accounting/command/deleteInternalOrder.ts +37 -0
  121. package/src/modules/accounting/command/deleteProfitCenter.generated.ts +6 -0
  122. package/src/modules/accounting/command/deleteProfitCenter.test.ts +68 -0
  123. package/src/modules/accounting/command/deleteProfitCenter.ts +39 -0
  124. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.generated.ts +6 -0
  125. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.test.ts +72 -0
  126. package/src/modules/accounting/command/deleteProfitCenterHierarchyNode.ts +61 -0
  127. package/src/modules/accounting/command/executeAllocationCycle.generated.ts +6 -0
  128. package/src/modules/accounting/command/executeAllocationCycle.test.ts +167 -0
  129. package/src/modules/accounting/command/executeAllocationCycle.ts +94 -0
  130. package/src/modules/accounting/command/finalizeVarianceReport.generated.ts +6 -0
  131. package/src/modules/accounting/command/finalizeVarianceReport.test.ts +60 -0
  132. package/src/modules/accounting/command/finalizeVarianceReport.ts +45 -0
  133. package/src/modules/accounting/command/generateVarianceReport.generated.ts +6 -0
  134. package/src/modules/accounting/command/generateVarianceReport.test.ts +386 -0
  135. package/src/modules/accounting/command/generateVarianceReport.ts +219 -0
  136. package/src/modules/accounting/command/invalidateAllocationCycle.generated.ts +6 -0
  137. package/src/modules/accounting/command/invalidateAllocationCycle.test.ts +84 -0
  138. package/src/modules/accounting/command/invalidateAllocationCycle.ts +45 -0
  139. package/src/modules/accounting/command/moveCostCenterHierarchyNode.generated.ts +6 -0
  140. package/src/modules/accounting/command/moveCostCenterHierarchyNode.test.ts +135 -0
  141. package/src/modules/accounting/command/moveCostCenterHierarchyNode.ts +81 -0
  142. package/src/modules/accounting/command/postAllocationCycle.generated.ts +6 -0
  143. package/src/modules/accounting/command/postAllocationCycle.test.ts +98 -0
  144. package/src/modules/accounting/command/postAllocationCycle.ts +65 -0
  145. package/src/modules/accounting/command/reactivateCostElement.generated.ts +6 -0
  146. package/src/modules/accounting/command/reactivateCostElement.test.ts +59 -0
  147. package/src/modules/accounting/command/reactivateCostElement.ts +41 -0
  148. package/src/modules/accounting/command/reactivateProfitCenter.generated.ts +6 -0
  149. package/src/modules/accounting/command/reactivateProfitCenter.test.ts +60 -0
  150. package/src/modules/accounting/command/reactivateProfitCenter.ts +42 -0
  151. package/src/modules/accounting/command/recordCommitment.generated.ts +6 -0
  152. package/src/modules/accounting/command/recordCommitment.test.ts +157 -0
  153. package/src/modules/accounting/command/recordCommitment.ts +113 -0
  154. package/src/modules/accounting/command/rejectBudget.generated.ts +6 -0
  155. package/src/modules/accounting/command/rejectBudget.test.ts +105 -0
  156. package/src/modules/accounting/command/rejectBudget.ts +51 -0
  157. package/src/modules/accounting/command/releaseCommitment.generated.ts +6 -0
  158. package/src/modules/accounting/command/releaseCommitment.test.ts +94 -0
  159. package/src/modules/accounting/command/releaseCommitment.ts +51 -0
  160. package/src/modules/accounting/command/releaseInternalOrder.generated.ts +6 -0
  161. package/src/modules/accounting/command/releaseInternalOrder.test.ts +74 -0
  162. package/src/modules/accounting/command/releaseInternalOrder.ts +38 -0
  163. package/src/modules/accounting/command/reverseAllocationCycle.generated.ts +6 -0
  164. package/src/modules/accounting/command/reverseAllocationCycle.test.ts +124 -0
  165. package/src/modules/accounting/command/reverseAllocationCycle.ts +63 -0
  166. package/src/modules/accounting/command/submitBudget.generated.ts +6 -0
  167. package/src/modules/accounting/command/submitBudget.test.ts +60 -0
  168. package/src/modules/accounting/command/submitBudget.ts +51 -0
  169. package/src/modules/accounting/command/technicallyCompleteInternalOrder.generated.ts +6 -0
  170. package/src/modules/accounting/command/technicallyCompleteInternalOrder.test.ts +74 -0
  171. package/src/modules/accounting/command/technicallyCompleteInternalOrder.ts +42 -0
  172. package/src/modules/accounting/command/updateAllocationCycle.generated.ts +6 -0
  173. package/src/modules/accounting/command/updateAllocationCycle.test.ts +112 -0
  174. package/src/modules/accounting/command/updateAllocationCycle.ts +41 -0
  175. package/src/modules/accounting/command/updateBudget.generated.ts +6 -0
  176. package/src/modules/accounting/command/updateBudget.test.ts +112 -0
  177. package/src/modules/accounting/command/updateBudget.ts +44 -0
  178. package/src/modules/accounting/command/updateCostCenter.generated.ts +6 -0
  179. package/src/modules/accounting/command/updateCostCenter.test.ts +105 -0
  180. package/src/modules/accounting/command/updateCostCenter.ts +79 -0
  181. package/src/modules/accounting/command/updateCostElement.generated.ts +6 -0
  182. package/src/modules/accounting/command/updateCostElement.test.ts +265 -0
  183. package/src/modules/accounting/command/updateCostElement.ts +158 -0
  184. package/src/modules/accounting/command/updateInternalOrder.generated.ts +6 -0
  185. package/src/modules/accounting/command/updateInternalOrder.test.ts +209 -0
  186. package/src/modules/accounting/command/updateInternalOrder.ts +88 -0
  187. package/src/modules/accounting/command/updateProfitCenter.generated.ts +6 -0
  188. package/src/modules/accounting/command/updateProfitCenter.test.ts +162 -0
  189. package/src/modules/accounting/command/updateProfitCenter.ts +73 -0
  190. package/src/modules/accounting/command/validateAllocationCycle.generated.ts +6 -0
  191. package/src/modules/accounting/command/validateAllocationCycle.test.ts +141 -0
  192. package/src/modules/accounting/command/validateAllocationCycle.ts +80 -0
  193. package/src/modules/accounting/db/allocationCycle.ts +59 -0
  194. package/src/modules/accounting/db/allocationResult.ts +58 -0
  195. package/src/modules/accounting/db/allocationRule.ts +48 -0
  196. package/src/modules/accounting/db/budget.ts +84 -0
  197. package/src/modules/accounting/db/budgetLineItem.ts +64 -0
  198. package/src/modules/accounting/db/commitment.ts +60 -0
  199. package/src/modules/accounting/db/costCenter.ts +73 -0
  200. package/src/modules/accounting/db/costCenterHierarchy.ts +37 -0
  201. package/src/modules/accounting/db/costCenterHierarchyNode.ts +48 -0
  202. package/src/modules/accounting/db/costElement.ts +56 -0
  203. package/src/modules/accounting/db/internalOrder.ts +69 -0
  204. package/src/modules/accounting/db/planVersion.ts +47 -0
  205. package/src/modules/accounting/db/profitCenter.ts +52 -0
  206. package/src/modules/accounting/db/profitCenterHierarchy.ts +36 -0
  207. package/src/modules/accounting/db/profitCenterHierarchyAssignment.ts +62 -0
  208. package/src/modules/accounting/db/profitCenterHierarchyNode.ts +48 -0
  209. package/src/modules/accounting/db/varianceReport.ts +54 -0
  210. package/src/modules/accounting/db/varianceReportLine.ts +62 -0
  211. package/src/modules/accounting/docs/commands/ActivateBudget.md +54 -0
  212. package/src/modules/accounting/docs/commands/ActivateCostElement.md +43 -0
  213. package/src/modules/accounting/docs/commands/ActivateProfitCenter.md +43 -0
  214. package/src/modules/accounting/docs/commands/ApproveBudget.md +46 -0
  215. package/src/modules/accounting/docs/commands/AssignCostCenterToHierarchyNode.md +46 -0
  216. package/src/modules/accounting/docs/commands/AssignProfitCenterToHierarchyNode.md +47 -0
  217. package/src/modules/accounting/docs/commands/CloseBudget.md +47 -0
  218. package/src/modules/accounting/docs/commands/CloseInternalOrder.md +45 -0
  219. package/src/modules/accounting/docs/commands/ConsumeCommitment.md +53 -0
  220. package/src/modules/accounting/docs/commands/CreateAllocationCycle.md +55 -0
  221. package/src/modules/accounting/docs/commands/CreateAllocationRule.md +60 -0
  222. package/src/modules/accounting/docs/commands/CreateBudget.md +65 -0
  223. package/src/modules/accounting/docs/commands/CreateBudgetLineItem.md +66 -0
  224. package/src/modules/accounting/docs/commands/CreateCostCenter.md +64 -0
  225. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchy.md +45 -0
  226. package/src/modules/accounting/docs/commands/CreateCostCenterHierarchyNode.md +61 -0
  227. package/src/modules/accounting/docs/commands/CreateCostElement.md +91 -0
  228. package/src/modules/accounting/docs/commands/CreateInternalOrder.md +72 -0
  229. package/src/modules/accounting/docs/commands/CreatePlanVersion.md +59 -0
  230. package/src/modules/accounting/docs/commands/CreateProfitCenter.md +63 -0
  231. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchy.md +45 -0
  232. package/src/modules/accounting/docs/commands/CreateProfitCenterHierarchyNode.md +60 -0
  233. package/src/modules/accounting/docs/commands/DeactivateCostElement.md +43 -0
  234. package/src/modules/accounting/docs/commands/DeactivateProfitCenter.md +44 -0
  235. package/src/modules/accounting/docs/commands/DeleteAllocationCycle.md +46 -0
  236. package/src/modules/accounting/docs/commands/DeleteAllocationRule.md +45 -0
  237. package/src/modules/accounting/docs/commands/DeleteBudget.md +46 -0
  238. package/src/modules/accounting/docs/commands/DeleteBudgetLineItem.md +45 -0
  239. package/src/modules/accounting/docs/commands/DeleteCostCenter.md +50 -0
  240. package/src/modules/accounting/docs/commands/DeleteCostCenterHierarchyNode.md +45 -0
  241. package/src/modules/accounting/docs/commands/DeleteCostElement.md +43 -0
  242. package/src/modules/accounting/docs/commands/DeleteInternalOrder.md +45 -0
  243. package/src/modules/accounting/docs/commands/DeleteProfitCenter.md +46 -0
  244. package/src/modules/accounting/docs/commands/DeleteProfitCenterHierarchyNode.md +46 -0
  245. package/src/modules/accounting/docs/commands/ExecuteAllocationCycle.md +54 -0
  246. package/src/modules/accounting/docs/commands/FinalizeVarianceReport.md +44 -0
  247. package/src/modules/accounting/docs/commands/GenerateVarianceReport.md +83 -0
  248. package/src/modules/accounting/docs/commands/InvalidateAllocationCycle.md +45 -0
  249. package/src/modules/accounting/docs/commands/MoveCostCenterHierarchyNode.md +51 -0
  250. package/src/modules/accounting/docs/commands/PostAllocationCycle.md +58 -0
  251. package/src/modules/accounting/docs/commands/ReactivateCostElement.md +43 -0
  252. package/src/modules/accounting/docs/commands/ReactivateProfitCenter.md +43 -0
  253. package/src/modules/accounting/docs/commands/RecordCommitment.md +60 -0
  254. package/src/modules/accounting/docs/commands/RejectBudget.md +49 -0
  255. package/src/modules/accounting/docs/commands/ReleaseCommitment.md +45 -0
  256. package/src/modules/accounting/docs/commands/ReleaseInternalOrder.md +44 -0
  257. package/src/modules/accounting/docs/commands/ReverseAllocationCycle.md +55 -0
  258. package/src/modules/accounting/docs/commands/SubmitBudget.md +47 -0
  259. package/src/modules/accounting/docs/commands/TechnicallyCompleteInternalOrder.md +44 -0
  260. package/src/modules/accounting/docs/commands/UpdateAllocationCycle.md +45 -0
  261. package/src/modules/accounting/docs/commands/UpdateBudget.md +47 -0
  262. package/src/modules/accounting/docs/commands/UpdateCostCenter.md +50 -0
  263. package/src/modules/accounting/docs/commands/UpdateCostElement.md +82 -0
  264. package/src/modules/accounting/docs/commands/UpdateInternalOrder.md +62 -0
  265. package/src/modules/accounting/docs/commands/UpdateProfitCenter.md +56 -0
  266. package/src/modules/accounting/docs/commands/ValidateAllocationCycle.md +57 -0
  267. package/src/modules/accounting/docs/features/budget-management.md +147 -0
  268. package/src/modules/accounting/docs/features/cost-allocation.md +129 -0
  269. package/src/modules/accounting/docs/features/cost-center-management.md +118 -0
  270. package/src/modules/accounting/docs/features/cost-element-management.md +114 -0
  271. package/src/modules/accounting/docs/features/internal-order-management.md +111 -0
  272. package/src/modules/accounting/docs/features/profit-center-management.md +120 -0
  273. package/src/modules/accounting/docs/features/variance-analysis.md +130 -0
  274. package/src/modules/accounting/docs/models/AllocationCycle.md +81 -0
  275. package/src/modules/accounting/docs/models/AllocationResult.md +37 -0
  276. package/src/modules/accounting/docs/models/AllocationRule.md +41 -0
  277. package/src/modules/accounting/docs/models/Budget.md +77 -0
  278. package/src/modules/accounting/docs/models/BudgetLineItem.md +40 -0
  279. package/src/modules/accounting/docs/models/Commitment.md +45 -0
  280. package/src/modules/accounting/docs/models/CostCenter.md +51 -0
  281. package/src/modules/accounting/docs/models/CostCenterHierarchy.md +38 -0
  282. package/src/modules/accounting/docs/models/CostCenterHierarchyNode.md +41 -0
  283. package/src/modules/accounting/docs/models/CostElement.md +66 -0
  284. package/src/modules/accounting/docs/models/InternalOrder.md +67 -0
  285. package/src/modules/accounting/docs/models/PlanVersion.md +36 -0
  286. package/src/modules/accounting/docs/models/ProfitCenter.md +66 -0
  287. package/src/modules/accounting/docs/models/ProfitCenterHierarchy.md +36 -0
  288. package/src/modules/accounting/docs/models/ProfitCenterHierarchyAssignment.md +36 -0
  289. package/src/modules/accounting/docs/models/ProfitCenterHierarchyNode.md +39 -0
  290. package/src/modules/accounting/docs/models/VarianceReport.md +58 -0
  291. package/src/modules/accounting/docs/models/VarianceReportLine.md +43 -0
  292. package/src/modules/accounting/docs/queries/CalculateBudgetAvailability.md +64 -0
  293. package/src/modules/accounting/docs/queries/GetAllocationCycle.md +43 -0
  294. package/src/modules/accounting/docs/queries/GetBudget.md +42 -0
  295. package/src/modules/accounting/docs/queries/GetCostCenter.md +38 -0
  296. package/src/modules/accounting/docs/queries/GetCostCenterHierarchy.md +45 -0
  297. package/src/modules/accounting/docs/queries/GetCostElement.md +39 -0
  298. package/src/modules/accounting/docs/queries/GetInternalOrder.md +42 -0
  299. package/src/modules/accounting/docs/queries/GetProfitCenter.md +38 -0
  300. package/src/modules/accounting/docs/queries/GetProfitCenterHierarchy.md +46 -0
  301. package/src/modules/accounting/docs/queries/GetVarianceReport.md +45 -0
  302. package/src/modules/accounting/docs/queries/ListAllocationCycles.md +63 -0
  303. package/src/modules/accounting/docs/queries/ListBudgets.md +70 -0
  304. package/src/modules/accounting/docs/queries/ListCostCenters.md +55 -0
  305. package/src/modules/accounting/docs/queries/ListCostElements.md +63 -0
  306. package/src/modules/accounting/docs/queries/ListInternalOrders.md +62 -0
  307. package/src/modules/accounting/docs/queries/ListProfitCenters.md +49 -0
  308. package/src/modules/accounting/generated/enums.ts +110 -0
  309. package/src/modules/accounting/generated/kysely-tailordb.ts +302 -0
  310. package/src/modules/accounting/index.ts +2 -0
  311. package/src/modules/accounting/lib/_db_deps.ts +70 -0
  312. package/src/modules/accounting/lib/actualAmounts.ts +93 -0
  313. package/src/modules/accounting/lib/allocationPosting.ts +152 -0
  314. package/src/modules/accounting/lib/errors.generated.ts +432 -0
  315. package/src/modules/accounting/lib/permissions.generated.ts +61 -0
  316. package/src/modules/accounting/lib/types.ts +114 -0
  317. package/src/modules/accounting/module.ts +428 -0
  318. package/src/modules/accounting/permissions.ts +3 -0
  319. package/src/modules/accounting/query/calculateBudgetAvailability.generated.ts +5 -0
  320. package/src/modules/accounting/query/calculateBudgetAvailability.test.ts +229 -0
  321. package/src/modules/accounting/query/calculateBudgetAvailability.ts +147 -0
  322. package/src/modules/accounting/query/getAllocationCycle.generated.ts +5 -0
  323. package/src/modules/accounting/query/getAllocationCycle.test.ts +94 -0
  324. package/src/modules/accounting/query/getAllocationCycle.ts +37 -0
  325. package/src/modules/accounting/query/getBudget.generated.ts +5 -0
  326. package/src/modules/accounting/query/getBudget.test.ts +80 -0
  327. package/src/modules/accounting/query/getBudget.ts +31 -0
  328. package/src/modules/accounting/query/getCostCenter.generated.ts +5 -0
  329. package/src/modules/accounting/query/getCostCenter.test.ts +50 -0
  330. package/src/modules/accounting/query/getCostCenter.ts +33 -0
  331. package/src/modules/accounting/query/getCostCenterHierarchy.generated.ts +5 -0
  332. package/src/modules/accounting/query/getCostCenterHierarchy.test.ts +100 -0
  333. package/src/modules/accounting/query/getCostCenterHierarchy.ts +80 -0
  334. package/src/modules/accounting/query/getCostElement.generated.ts +5 -0
  335. package/src/modules/accounting/query/getCostElement.test.ts +57 -0
  336. package/src/modules/accounting/query/getCostElement.ts +21 -0
  337. package/src/modules/accounting/query/getInternalOrder.generated.ts +5 -0
  338. package/src/modules/accounting/query/getInternalOrder.test.ts +73 -0
  339. package/src/modules/accounting/query/getInternalOrder.ts +21 -0
  340. package/src/modules/accounting/query/getProfitCenter.generated.ts +5 -0
  341. package/src/modules/accounting/query/getProfitCenter.test.ts +65 -0
  342. package/src/modules/accounting/query/getProfitCenter.ts +31 -0
  343. package/src/modules/accounting/query/getProfitCenterHierarchy.generated.ts +5 -0
  344. package/src/modules/accounting/query/getProfitCenterHierarchy.test.ts +97 -0
  345. package/src/modules/accounting/query/getProfitCenterHierarchy.ts +87 -0
  346. package/src/modules/accounting/query/getVarianceReport.generated.ts +5 -0
  347. package/src/modules/accounting/query/getVarianceReport.test.ts +108 -0
  348. package/src/modules/accounting/query/getVarianceReport.ts +31 -0
  349. package/src/modules/accounting/query/listAllocationCycles.generated.ts +5 -0
  350. package/src/modules/accounting/query/listAllocationCycles.test.ts +152 -0
  351. package/src/modules/accounting/query/listAllocationCycles.ts +96 -0
  352. package/src/modules/accounting/query/listBudgets.generated.ts +5 -0
  353. package/src/modules/accounting/query/listBudgets.test.ts +150 -0
  354. package/src/modules/accounting/query/listBudgets.ts +85 -0
  355. package/src/modules/accounting/query/listCostCenters.generated.ts +5 -0
  356. package/src/modules/accounting/query/listCostCenters.test.ts +111 -0
  357. package/src/modules/accounting/query/listCostCenters.ts +71 -0
  358. package/src/modules/accounting/query/listCostElements.generated.ts +5 -0
  359. package/src/modules/accounting/query/listCostElements.test.ts +138 -0
  360. package/src/modules/accounting/query/listCostElements.ts +105 -0
  361. package/src/modules/accounting/query/listInternalOrders.generated.ts +5 -0
  362. package/src/modules/accounting/query/listInternalOrders.test.ts +129 -0
  363. package/src/modules/accounting/query/listInternalOrders.ts +94 -0
  364. package/src/modules/accounting/query/listProfitCenters.generated.ts +5 -0
  365. package/src/modules/accounting/query/listProfitCenters.test.ts +94 -0
  366. package/src/modules/accounting/query/listProfitCenters.ts +56 -0
  367. package/src/modules/accounting/seed/index.ts +19 -0
  368. package/src/modules/accounting/tailor.config.ts +13 -0
  369. package/src/modules/accounting/testing/commandTestUtils.ts +35 -0
  370. package/src/modules/accounting/testing/fixtures.ts +502 -0
  371. package/src/modules/audit/command/logAuditEvent.ts +43 -38
  372. package/src/modules/audit/command/updateAuditPolicy.ts +2 -2
  373. package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +1 -1
  374. package/src/modules/audit/module.ts +4 -0
  375. package/src/modules/business-partner/command/updateContactPerson.ts +3 -4
  376. package/src/modules/business-partner/command/updatePartner.ts +13 -6
  377. package/src/modules/business-partner/command/updatePartnerAddress.ts +13 -6
  378. package/src/modules/business-partner/command/updatePartnerBankAccount.ts +3 -4
  379. package/src/modules/business-partner/command/updatePartnerIdentification.ts +3 -4
  380. package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +3 -3
  381. package/src/modules/business-partner/docs/commands/UpdatePartner.md +2 -2
  382. package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +2 -2
  383. package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +2 -2
  384. package/src/modules/coa-management/command/updateAccount.ts +3 -3
  385. package/src/modules/coa-management/command/updateAccountGroup.test.ts +22 -0
  386. package/src/modules/coa-management/command/updateAccountGroup.ts +30 -18
  387. package/src/modules/coa-management/command/updateChartOfAccounts.ts +3 -4
  388. package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +4 -3
  389. package/src/modules/finance-ledger/command/updateFiscalYear.ts +2 -3
  390. package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +0 -17
  391. package/src/modules/finance-ledger/command/updateJournalEntry.ts +2 -10
  392. package/src/modules/finance-ledger/command/updateJournalLine.ts +2 -3
  393. package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +1 -4
  394. package/src/modules/inventory/command/updateLot.test.ts +1 -1
  395. package/src/modules/inventory/command/updateLot.ts +2 -3
  396. package/src/modules/inventory/command/updateStockMovement.ts +2 -3
  397. package/src/modules/inventory/command/updateStorageLocation.ts +12 -17
  398. package/src/modules/inventory/command/updateValuationPolicy.ts +2 -3
  399. package/src/modules/inventory/command/updateWarehouse.ts +2 -3
  400. package/src/modules/inventory/docs/commands/UpdateLot.md +3 -3
  401. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +6 -6
  402. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +2 -2
  403. package/src/modules/item-management/command/updateItem.test.ts +16 -12
  404. package/src/modules/item-management/command/updateItem.ts +47 -31
  405. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +15 -16
  406. package/src/modules/item-management/command/updateTaxonomyNode.ts +42 -29
  407. package/src/modules/item-management/docs/commands/UpdateItem.md +7 -11
  408. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +10 -14
  409. package/src/modules/manufacturing/command/updateBillOfMaterial.ts +3 -4
  410. package/src/modules/manufacturing/command/updateProductionOrder.ts +3 -4
  411. package/src/modules/manufacturing/command/updateRouting.ts +3 -4
  412. package/src/modules/manufacturing/command/updateWorkCenter.test.ts +16 -7
  413. package/src/modules/manufacturing/command/updateWorkCenter.ts +41 -38
  414. package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +2 -0
  415. package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +2 -0
  416. package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +1 -0
  417. package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +1 -0
  418. package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +6 -5
  419. package/src/modules/manufacturing/docs/models/BillOfMaterialLine.md +42 -0
  420. package/src/modules/manufacturing/docs/models/CostVarianceLine.md +36 -0
  421. package/src/modules/manufacturing/docs/models/ManufacturingCostLine.md +37 -0
  422. package/src/modules/manufacturing/docs/models/ManufacturingCostSettlementRecord.md +34 -0
  423. package/src/modules/manufacturing/docs/models/ProductionOrderBomSnapshot.md +35 -0
  424. package/src/modules/manufacturing/docs/models/ProductionOrderCostBaseline.md +36 -0
  425. package/src/modules/manufacturing/docs/models/ProductionOrderMaterialRequirement.md +35 -0
  426. package/src/modules/manufacturing/docs/models/ProductionOrderRoutingSnapshot.md +34 -0
  427. package/src/modules/manufacturing/docs/models/RoutingOperation.md +40 -0
  428. package/src/modules/manufacturing/docs/models/WorkOrderExecutionEvent.md +38 -0
  429. package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +1 -0
  430. package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +1 -0
  431. package/src/modules/organization/command/updateCompany.test.ts +6 -6
  432. package/src/modules/organization/command/updateCompany.ts +3 -4
  433. package/src/modules/organization/command/updateDepartment.test.ts +7 -7
  434. package/src/modules/organization/command/updateDepartment.ts +13 -12
  435. package/src/modules/organization/command/updateSite.test.ts +10 -10
  436. package/src/modules/organization/command/updateSite.ts +3 -4
  437. package/src/modules/organization/docs/commands/UpdateCompany.md +6 -6
  438. package/src/modules/organization/docs/commands/UpdateDepartment.md +9 -10
  439. package/src/modules/organization/docs/commands/UpdateSite.md +12 -12
  440. package/src/modules/product-management/command/updateProduct.test.ts +17 -11
  441. package/src/modules/product-management/command/updateProduct.ts +45 -28
  442. package/src/modules/product-management/command/updateProductAttribute.test.ts +16 -21
  443. package/src/modules/product-management/command/updateProductAttribute.ts +40 -26
  444. package/src/modules/product-management/command/updateProductAttributeValue.ts +2 -3
  445. package/src/modules/product-management/command/updateProductCategory.test.ts +14 -19
  446. package/src/modules/product-management/command/updateProductCategory.ts +42 -26
  447. package/src/modules/product-management/docs/commands/UpdateProduct.md +16 -20
  448. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +10 -14
  449. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +10 -14
  450. package/src/modules/purchase/command/updateGoodsReceipt.ts +2 -3
  451. package/src/modules/purchase/command/updatePurchaseBill.ts +2 -3
  452. package/src/modules/purchase/command/updatePurchaseOrder.ts +2 -3
  453. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +2 -3
  454. package/src/modules/purchase/command/updatePurchasePriceList.ts +2 -3
  455. package/src/modules/purchase/command/updatePurchasePriceRule.ts +2 -3
  456. package/src/modules/sales/command/updateChannel.test.ts +4 -4
  457. package/src/modules/sales/command/updateChannel.ts +2 -3
  458. package/src/modules/sales/command/updateListing.test.ts +2 -2
  459. package/src/modules/sales/command/updateListing.ts +2 -3
  460. package/src/modules/sales/command/updateSalesCreditNote.test.ts +2 -2
  461. package/src/modules/sales/command/updateSalesCreditNote.ts +2 -3
  462. package/src/modules/sales/command/updateSalesInvoice.test.ts +2 -2
  463. package/src/modules/sales/command/updateSalesInvoice.ts +2 -3
  464. package/src/modules/sales/command/updateSalesOrder.test.ts +3 -3
  465. package/src/modules/sales/command/updateSalesOrder.ts +2 -3
  466. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +2 -2
  467. package/src/modules/sales/command/updateSalesPaymentTerm.ts +2 -3
  468. package/src/modules/sales/command/updateSalesPriceList.test.ts +3 -3
  469. package/src/modules/sales/command/updateSalesPriceList.ts +2 -3
  470. package/src/modules/sales/command/updateSalesPriceRule.test.ts +3 -3
  471. package/src/modules/sales/command/updateSalesPriceRule.ts +2 -3
  472. package/src/modules/sales/command/updateShipment.test.ts +2 -2
  473. package/src/modules/sales/command/updateShipment.ts +2 -3
  474. package/src/modules/sales/docs/commands/UpdateChannel.md +4 -4
  475. package/src/modules/sales/docs/commands/UpdateListing.md +2 -2
  476. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +2 -2
  477. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +2 -2
  478. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +3 -3
  479. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +2 -2
  480. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +3 -3
  481. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +3 -3
  482. package/src/modules/sales/docs/commands/UpdateShipment.md +2 -2
  483. package/src/modules/user-management/README.md +2 -1
  484. package/src/modules/user-management/command/updateOwnProfile.generated.ts +6 -0
  485. package/src/modules/user-management/command/updateOwnProfile.test.ts +191 -0
  486. package/src/modules/user-management/command/updateOwnProfile.ts +82 -0
  487. package/src/modules/user-management/command/updateUser.generated.ts +6 -0
  488. package/src/modules/user-management/command/updateUser.test.ts +195 -0
  489. package/src/modules/user-management/command/updateUser.ts +76 -0
  490. package/src/modules/user-management/docs/commands/UpdateOwnProfile.md +68 -0
  491. package/src/modules/user-management/docs/commands/UpdateUser.md +67 -0
  492. package/src/modules/user-management/docs/features/user-account-management.md +28 -3
  493. package/src/modules/user-management/docs/models/User.md +2 -0
  494. package/src/modules/user-management/lib/errors.generated.ts +5 -0
  495. package/src/modules/user-management/lib/permissions.generated.ts +2 -0
  496. package/src/modules/user-management/module.ts +5 -0
  497. package/src/modules/user-management/seed/index.ts +19 -0
  498. package/templates/scaffold/app/backend/seed/data/AuditEntry.schema.ts +20 -0
  499. package/templates/scaffold/app/backend/seed/data/AuditPolicy.jsonl +7 -0
  500. package/templates/scaffold/app/backend/seed/data/AuditPolicy.schema.ts +15 -0
  501. package/templates/scaffold/app/backend/seed/data/AuditableEntity.jsonl +4 -0
  502. package/templates/scaffold/app/backend/seed/data/AuditableEntity.schema.ts +20 -0
  503. package/templates/scaffold/app/backend/seed/data/ChangeDetail.schema.ts +20 -0
  504. package/templates/scaffold/app/backend/seed/data/Company.schema.ts +15 -0
  505. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +13 -0
  506. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +1 -1
  507. package/templates/scaffold/app/backend/seed/data/PolicyFieldRule.schema.ts +20 -0
  508. package/templates/scaffold/app/backend/seed/data/Role.jsonl +1 -0
  509. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +1 -1
  510. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +13 -0
  511. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +1 -1
  512. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -1
  513. package/templates/scaffold/app/backend/seed/data/User.schema.ts +1 -1
  514. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +1 -0
  515. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +1 -1
  516. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -1
  517. package/templates/scaffold/app/backend/seed/exec.mjs +12 -0
  518. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +2 -2
  519. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +2 -2
  520. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +62 -0
  521. package/templates/scaffold/app/backend/src/modules-db.ts +13 -0
  522. package/templates/scaffold/app/backend/src/modules.ts +3 -5
  523. package/templates/scaffold/app/backend/src/resolvers/assignPermissionToRole.ts +70 -0
  524. package/templates/scaffold/app/backend/src/resolvers/assignRoleToUser.ts +72 -0
  525. package/templates/scaffold/app/backend/src/resolvers/createRole.ts +92 -0
  526. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +113 -13
  527. package/templates/scaffold/app/backend/src/resolvers/deactivateUser.ts +67 -0
  528. package/templates/scaffold/app/backend/src/resolvers/reactivateUser.ts +63 -0
  529. package/templates/scaffold/app/backend/src/resolvers/revokePermissionFromRole.ts +72 -0
  530. package/templates/scaffold/app/backend/src/resolvers/revokeRoleFromUser.ts +72 -0
  531. package/templates/scaffold/app/backend/src/resolvers/updateOwnProfile.ts +107 -0
  532. package/templates/scaffold/app/backend/src/resolvers/updateUserProfile.ts +107 -0
  533. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log-detail.test.ts +79 -0
  534. package/templates/scaffold/app/backend/src/tests/stories/audit-log/user--view-audit-log.test.ts +86 -0
  535. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--assign-role-to-user.test.ts +103 -0
  536. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--create-role.test.ts +61 -0
  537. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--remove-role-from-user.test.ts +89 -0
  538. package/templates/scaffold/app/backend/src/tests/stories/role-management/user--update-role-permissions.test.ts +125 -0
  539. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--browse-user-list.test.ts +91 -0
  540. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--create-user-account.test.ts +97 -0
  541. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--toggle-user-status.test.ts +131 -0
  542. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-own-profile.test.ts +85 -0
  543. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--update-user-profile.test.ts +158 -0
  544. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-own-profile.test.ts +30 -0
  545. package/templates/scaffold/app/backend/src/tests/stories/user-lifecycle/user--view-user-detail.test.ts +98 -0
  546. package/templates/scaffold/app/backend/tailor.config.ts +6 -2
  547. package/templates/scaffold/app/docs/actors/user.md +11 -0
  548. package/templates/scaffold/app/docs/business-flow/audit-log/README.md +31 -0
  549. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log-detail.md +35 -0
  550. package/templates/scaffold/app/docs/business-flow/audit-log/story/user--view-audit-log.md +44 -0
  551. package/templates/scaffold/app/docs/business-flow/role-management/README.md +33 -0
  552. package/templates/scaffold/app/docs/business-flow/role-management/story/user--assign-role-to-user.md +35 -0
  553. package/templates/scaffold/app/docs/business-flow/role-management/story/user--create-role.md +41 -0
  554. package/templates/scaffold/app/docs/business-flow/role-management/story/user--remove-role-from-user.md +33 -0
  555. package/templates/scaffold/app/docs/business-flow/role-management/story/user--update-role-permissions.md +41 -0
  556. package/templates/scaffold/app/docs/business-flow/user-lifecycle/README.md +48 -0
  557. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--browse-user-list.md +38 -0
  558. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--create-user-account.md +45 -0
  559. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--toggle-user-status.md +38 -0
  560. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-own-profile.md +36 -0
  561. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--update-user-profile.md +41 -0
  562. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-own-profile.md +30 -0
  563. package/templates/scaffold/app/docs/business-flow/user-lifecycle/story/user--view-user-detail.md +33 -0
  564. package/templates/scaffold/app/docs/resolver/assignPermissionToRole.md +16 -0
  565. package/templates/scaffold/app/docs/resolver/assignRoleToUser.md +17 -0
  566. package/templates/scaffold/app/docs/resolver/createRole.md +17 -0
  567. package/templates/scaffold/app/docs/resolver/createUser.md +23 -0
  568. package/templates/scaffold/app/docs/resolver/deactivateUser.md +17 -0
  569. package/templates/scaffold/app/docs/resolver/reactivateUser.md +16 -0
  570. package/templates/scaffold/app/docs/resolver/revokePermissionFromRole.md +17 -0
  571. package/templates/scaffold/app/docs/resolver/revokeRoleFromUser.md +17 -0
  572. package/templates/scaffold/app/docs/resolver/updateOwnProfile.md +20 -0
  573. package/templates/scaffold/app/docs/resolver/updateUserProfile.md +19 -0
  574. package/templates/scaffold/app/docs/screen/audit-entry-detail.md +30 -0
  575. package/templates/scaffold/app/docs/screen/audit-entry-list.md +25 -0
  576. package/templates/scaffold/app/docs/screen/my-profile-edit-form.md +22 -0
  577. package/templates/scaffold/app/docs/screen/my-profile.md +27 -0
  578. package/templates/scaffold/app/docs/screen/role-create-form.md +23 -0
  579. package/templates/scaffold/app/docs/screen/role-detail.md +27 -0
  580. package/templates/scaffold/app/docs/screen/role-edit-form.md +21 -0
  581. package/templates/scaffold/app/docs/screen/role-list.md +23 -0
  582. package/templates/scaffold/app/docs/screen/user-create-form.md +23 -0
  583. package/templates/scaffold/app/docs/screen/user-detail.md +33 -0
  584. package/templates/scaffold/app/docs/screen/user-edit-form.md +22 -0
  585. package/templates/scaffold/app/docs/screen/user-list.md +24 -0
  586. package/templates/scaffold/app/frontend/package.json +1 -1
  587. package/templates/scaffold/app/frontend/src/App.tsx +4 -0
  588. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +1 -1
  589. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +59 -31
  590. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1411 -688
  591. package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +1 -1
  592. package/templates/scaffold/app/frontend/src/lib/permission-groups.ts +59 -0
  593. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/components/audit-entry-detail.tsx +102 -0
  594. package/templates/scaffold/app/frontend/src/pages/user-management/audit/[id]/page.tsx +65 -0
  595. package/templates/scaffold/app/frontend/src/pages/user-management/audit/components/audit-entries-table.tsx +90 -0
  596. package/templates/scaffold/app/frontend/src/pages/user-management/audit/page.tsx +52 -0
  597. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/components/edit-profile-form.tsx +125 -0
  598. package/templates/scaffold/app/frontend/src/pages/user-management/profile/edit/page.tsx +19 -0
  599. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +41 -21
  600. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-actions.tsx +26 -0
  601. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/components/role-detail.tsx +69 -0
  602. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/components/edit-role-form.tsx +192 -0
  603. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/edit/page.tsx +51 -0
  604. package/templates/scaffold/app/frontend/src/pages/user-management/role/[id]/page.tsx +56 -0
  605. package/templates/scaffold/app/frontend/src/pages/user-management/role/components/roles-table.tsx +85 -0
  606. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/components/create-role-form.tsx +204 -0
  607. package/templates/scaffold/app/frontend/src/pages/user-management/role/create/page.tsx +19 -0
  608. package/templates/scaffold/app/frontend/src/pages/user-management/role/page.tsx +60 -0
  609. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-actions.tsx +216 -0
  610. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +97 -33
  611. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/components/edit-user-form.tsx +115 -0
  612. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/edit/page.tsx +51 -0
  613. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +8 -2
  614. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +43 -42
  615. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +120 -45
  616. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +3 -4
  617. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +8 -1
  618. package/templates/scaffold/module/eslint.config.js +8 -0
  619. package/templates/scaffold/project/__dot__gitignore +1 -0
  620. package/templates/scaffold/project/__pnpm-workspace.yaml +3 -0
  621. package/templates/scaffold/project/apps/.gitkeep +0 -0
  622. package/templates/scaffold/project/modules/.gitkeep +0 -0
  623. package/templates/scaffold/project/package.json +15 -0
  624. package/templates/workflows/erp-kit-check.yml +10 -4
  625. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +0 -39
  626. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +0 -60
  627. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +0 -75
  628. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +0 -21
  629. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +0 -90
  630. /package/src/modules/{supplier-portal → accounting/executor}/.gitkeep +0 -0
  631. /package/templates/scaffold/app/{docs/actors/.gitkeep → backend/seed/data/AuditEntry.jsonl} +0 -0
  632. /package/templates/scaffold/app/{docs/business-flow/.gitkeep → backend/seed/data/ChangeDetail.jsonl} +0 -0
  633. /package/templates/scaffold/app/{docs/resolver/.gitkeep → backend/seed/data/Company.jsonl} +0 -0
  634. /package/templates/scaffold/app/{docs/screen/.gitkeep → backend/seed/data/PolicyFieldRule.jsonl} +0 -0
  635. /package/templates/{config → scaffold/project}/license.config.json +0 -0
@@ -0,0 +1,40 @@
1
+ # RoutingOperation
2
+
3
+ ## Description
4
+
5
+ RoutingOperation defines one ordered step within a Routing. It owns the sequence number, work-center assignment, standard setup and run time assumptions, optional operation description, and operator instructions that production-order release later snapshots into executable work orders.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createRouting](../commands/CreateRouting.md) - Create draft routings including initial ordered operations.
16
+ - [updateRouting](../commands/UpdateRouting.md) - Revise operation sequence, times, and work-center assignments while the routing is draft.
17
+ - [activateRouting](../commands/ActivateRouting.md) - Validate ordered operations and make the routing eligible for production-order release.
18
+ - [deactivateRouting](../commands/DeactivateRouting.md) - Retire the routing revision without mutating operations already snapshotted onto released orders.
19
+
20
+ ### Query Definitions
21
+
22
+ - [getRouting](../queries/GetRouting.md) - Retrieve one routing revision with ordered operations.
23
+ - [listRoutingsByItem](../queries/ListRoutingsByItem.md) - List routing revisions and operations for one parent item and scope.
24
+
25
+ ### Models
26
+
27
+ - RoutingOperation
28
+
29
+ ### Invariants
30
+
31
+ - Every RoutingOperation belongs to exactly one Routing.
32
+ - `sequenceNumber` must be unique within its parent Routing.
33
+ - `standardSetupTime` and `standardRunTime` must be zero or greater.
34
+ - Each operation must reference an active work center valid for the same company and effective scope.
35
+ - An active Routing must not reference an inactive work center through any of its operations.
36
+
37
+ ### Relationships
38
+
39
+ - **Belongs To Routing**: each operation is subordinate to one [Routing](./Routing.md).
40
+ - **References WorkCenter**: `workCenterId` points to the [WorkCenter](./WorkCenter.md) where the step executes.
@@ -0,0 +1,38 @@
1
+ # WorkOrderExecutionEvent
2
+
3
+ ## Description
4
+
5
+ WorkOrderExecutionEvent records one discrete execution action taken on a WorkOrder. It owns the event type, timestamp, and optional quantity, time, scrap, and notes values that together form the immutable audit trail for shop-floor progress, pauses, resumes, and completion.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [startWorkOrder](../commands/StartWorkOrder.md) - Append STARTED execution events when shop-floor work begins.
16
+ - [reportWorkOrderProgress](../commands/ReportWorkOrderProgress.md) - Append PROGRESS_REPORTED events with quantities, time, scrap, and notes.
17
+ - [pauseWorkOrder](../commands/PauseWorkOrder.md) - Append PAUSED execution events when work is interrupted.
18
+ - [resumeWorkOrder](../commands/ResumeWorkOrder.md) - Append RESUMED execution events when work continues after a pause.
19
+ - [completeWorkOrder](../commands/CompleteWorkOrder.md) - Append COMPLETED execution events when the operation finishes.
20
+
21
+ ### Query Definitions
22
+
23
+ - [getWorkOrder](../queries/GetWorkOrder.md) - Retrieve execution events as part of one work order.
24
+
25
+ ### Models
26
+
27
+ - WorkOrderExecutionEvent
28
+
29
+ ### Invariants
30
+
31
+ - Every WorkOrderExecutionEvent belongs to exactly one WorkOrder.
32
+ - `eventType` must be one of `STARTED`, `PAUSED`, `RESUMED`, `PROGRESS_REPORTED`, or `COMPLETED`.
33
+ - `quantity`, `timeValue`, and `scrapValue`, when provided, must be zero or greater.
34
+ - Events are append-only; existing events are never mutated after creation.
35
+
36
+ ### Relationships
37
+
38
+ - **Belongs To WorkOrder**: each event is subordinate to one [WorkOrder](./WorkOrder.md).
@@ -54,3 +54,4 @@ flowchart TD
54
54
  - returns error when the root BOM is not effective on the requested date
55
55
  - returns error when a required lower-level child BOM cannot be resolved
56
56
  - returns error when the explosion detects a circular BOM reference
57
+ - resolves lower-level child BOMs using the applicable site scope
@@ -36,3 +36,4 @@ flowchart TD
36
36
  - returns an empty list when the site has no work centers
37
37
  - returns error when company scope is missing
38
38
  - returns error when site scope is missing
39
+ - filters work centers by work-center type and accepts name ordering
@@ -89,7 +89,7 @@ describe("updateCompany", () => {
89
89
  }
90
90
  });
91
91
 
92
- it("throws when company does not exist", async () => {
92
+ it("returns error when company does not exist", async () => {
93
93
  const { db, spies } = createMockDb<Transaction>();
94
94
  spies.select.mockReturnValueOnce(undefined);
95
95
 
@@ -109,7 +109,7 @@ describe("updateCompany", () => {
109
109
  }
110
110
  });
111
111
 
112
- it("throws when legal name is empty", async () => {
112
+ it("returns error when legal name is empty", async () => {
113
113
  const { db, spies } = createMockDb<Transaction>();
114
114
  spies.select.mockReturnValueOnce(draftCompany);
115
115
 
@@ -129,7 +129,7 @@ describe("updateCompany", () => {
129
129
  }
130
130
  });
131
131
 
132
- it("throws when changing base currency on ACTIVE company", async () => {
132
+ it("returns error when changing base currency on ACTIVE company", async () => {
133
133
  const { db, spies } = createMockDb<Transaction>();
134
134
  spies.select.mockReturnValueOnce(activeCompany);
135
135
 
@@ -149,7 +149,7 @@ describe("updateCompany", () => {
149
149
  }
150
150
  });
151
151
 
152
- it("throws when changing base currency on INACTIVE company", async () => {
152
+ it("returns error when changing base currency on INACTIVE company", async () => {
153
153
  const { db, spies } = createMockDb<Transaction>();
154
154
  spies.select.mockReturnValueOnce(inactiveCompany);
155
155
 
@@ -169,7 +169,7 @@ describe("updateCompany", () => {
169
169
  }
170
170
  });
171
171
 
172
- it("throws when new base currency does not exist", async () => {
172
+ it("returns error when new base currency does not exist", async () => {
173
173
  const { db, spies } = createMockDb<Transaction>();
174
174
  spies.select
175
175
  .mockReturnValueOnce(draftCompany) // company lookup
@@ -191,7 +191,7 @@ describe("updateCompany", () => {
191
191
  }
192
192
  });
193
193
 
194
- it("throws when new base currency is inactive", async () => {
194
+ it("returns error when new base currency is inactive", async () => {
195
195
  const { db, spies } = createMockDb<Transaction>();
196
196
  spies.select
197
197
  .mockReturnValueOnce(draftCompany) // company lookup
@@ -8,7 +8,7 @@ import {
8
8
  import type { PrimitivesQueries } from "../module";
9
9
  import { ok, err, type CommandContext } from "@tailor-platform/erp-kit/module";
10
10
 
11
- export interface UpdateCompanyInput {
11
+ export type UpdateCompanyInput = {
12
12
  companyId: string;
13
13
  legalName?: string;
14
14
  taxId?: string;
@@ -19,8 +19,7 @@ export interface UpdateCompanyInput {
19
19
  state?: string;
20
20
  postalCode?: string;
21
21
  country?: string;
22
- }
23
-
22
+ };
24
23
  /**
25
24
  * Function: updateCompany
26
25
  *
@@ -29,7 +28,7 @@ export interface UpdateCompanyInput {
29
28
  */
30
29
  export async function run<CF extends Record<string, unknown>>(
31
30
  db: Transaction,
32
- input: UpdateCompanyInput & CF,
31
+ input: UpdateCompanyInput & Omit<Partial<CF>, "status">,
33
32
  ctx: CommandContext,
34
33
  primitivesQueries?: Pick<PrimitivesQueries, "getCurrency">,
35
34
  ) {
@@ -88,7 +88,7 @@ describe("updateDepartment", () => {
88
88
  }
89
89
  });
90
90
 
91
- it("throws when department does not exist", async () => {
91
+ it("returns error when department does not exist", async () => {
92
92
  const { db, spies } = createMockDb<Transaction>();
93
93
  spies.select.mockReturnValue(undefined);
94
94
 
@@ -103,7 +103,7 @@ describe("updateDepartment", () => {
103
103
  }
104
104
  });
105
105
 
106
- it("throws when name is empty", async () => {
106
+ it("returns error when name is empty", async () => {
107
107
  const { db, spies } = createMockDb<Transaction>();
108
108
  spies.select.mockReturnValueOnce(activeDepartment);
109
109
 
@@ -118,7 +118,7 @@ describe("updateDepartment", () => {
118
118
  }
119
119
  });
120
120
 
121
- it("throws when name is whitespace-only", async () => {
121
+ it("returns error when name is whitespace-only", async () => {
122
122
  const { db, spies } = createMockDb<Transaction>();
123
123
  spies.select.mockReturnValueOnce(activeDepartment);
124
124
 
@@ -133,7 +133,7 @@ describe("updateDepartment", () => {
133
133
  }
134
134
  });
135
135
 
136
- it("throws when setting self as parent", async () => {
136
+ it("returns error when setting self as parent", async () => {
137
137
  const { db, spies } = createMockDb<Transaction>();
138
138
  spies.select.mockReturnValueOnce(activeDepartment);
139
139
 
@@ -148,7 +148,7 @@ describe("updateDepartment", () => {
148
148
  }
149
149
  });
150
150
 
151
- it("throws when parent does not exist", async () => {
151
+ it("returns error when parent does not exist", async () => {
152
152
  const { db, spies } = createMockDb<Transaction>();
153
153
  spies.select
154
154
  .mockReturnValueOnce(activeDepartment) // find department
@@ -165,7 +165,7 @@ describe("updateDepartment", () => {
165
165
  }
166
166
  });
167
167
 
168
- it("throws when parent belongs to different company", async () => {
168
+ it("returns error when parent belongs to different company", async () => {
169
169
  const { db, spies } = createMockDb<Transaction>();
170
170
  spies.select
171
171
  .mockReturnValueOnce(activeDepartment) // find department
@@ -182,7 +182,7 @@ describe("updateDepartment", () => {
182
182
  }
183
183
  });
184
184
 
185
- it("throws when reparenting creates circular reference", async () => {
185
+ it("returns error when reparenting creates circular reference", async () => {
186
186
  const { db, spies } = createMockDb<Transaction>();
187
187
  // activeDepartment -> childDepartment -> grandchildDepartment
188
188
  // Try to set activeDepartment's parent to grandchildDepartment
@@ -9,12 +9,11 @@ import {
9
9
  import { run as detectCircularReference } from "../query/detectDepartmentCircularReference";
10
10
  import { ok, err } from "@tailor-platform/erp-kit/module";
11
11
 
12
- export interface UpdateDepartmentInput {
12
+ export type UpdateDepartmentInput = {
13
13
  departmentId: string;
14
14
  name?: string;
15
15
  parentDepartmentId?: string | null;
16
- }
17
-
16
+ };
18
17
  /**
19
18
  * Function: updateDepartment
20
19
  *
@@ -23,20 +22,22 @@ export interface UpdateDepartmentInput {
23
22
  */
24
23
  export async function run<CF extends Record<string, unknown>>(
25
24
  db: Transaction,
26
- input: UpdateDepartmentInput & CF,
25
+ input: UpdateDepartmentInput & Omit<Partial<CF>, "status">,
27
26
  ) {
28
- const { departmentId, name, parentDepartmentId, ...customFields } = input;
27
+ const { name, parentDepartmentId, ...rest } = input;
28
+ const customFields = { ...rest } as Record<string, unknown>;
29
+ delete customFields.departmentId;
29
30
 
30
31
  // 1. Find department
31
32
  const existing = await db
32
33
  .selectFrom("Department")
33
34
  .selectAll()
34
- .where("id", "=", departmentId)
35
+ .where("id", "=", input.departmentId)
35
36
  .forUpdate()
36
37
  .executeTakeFirst();
37
38
 
38
39
  if (!existing) {
39
- return err(new DepartmentNotFoundError(departmentId));
40
+ return err(new DepartmentNotFoundError(input.departmentId));
40
41
  }
41
42
 
42
43
  // 2. Validate name if provided
@@ -47,8 +48,8 @@ export async function run<CF extends Record<string, unknown>>(
47
48
  // 3. Validate parentDepartmentId if provided
48
49
  if (parentDepartmentId !== undefined && parentDepartmentId !== null) {
49
50
  // Self-reference check
50
- if (parentDepartmentId === departmentId) {
51
- return err(new SelfReferenceError(departmentId));
51
+ if (parentDepartmentId === existing.id) {
52
+ return err(new SelfReferenceError(existing.id));
52
53
  }
53
54
 
54
55
  // Find parent department
@@ -69,11 +70,11 @@ export async function run<CF extends Record<string, unknown>>(
69
70
 
70
71
  // Circular reference detection via shared query
71
72
  const circularResult = await detectCircularReference(db, {
72
- departmentId,
73
+ departmentId: existing.id,
73
74
  newParentId: parentDepartmentId,
74
75
  });
75
76
  if (circularResult.ok && circularResult.value.isCircular) {
76
- return err(new CircularReferenceError(departmentId));
77
+ return err(new CircularReferenceError(existing.id));
77
78
  }
78
79
  }
79
80
 
@@ -112,7 +113,7 @@ export async function run<CF extends Record<string, unknown>>(
112
113
  const department = await db
113
114
  .updateTable("Department")
114
115
  .set(updateSet)
115
- .where("id", "=", departmentId)
116
+ .where("id", "=", existing.id)
116
117
  .returningAll()
117
118
  .executeTakeFirst();
118
119
 
@@ -88,7 +88,7 @@ describe("updateSite", () => {
88
88
  }
89
89
  });
90
90
 
91
- it("throws when site does not exist", async () => {
91
+ it("returns error when site does not exist", async () => {
92
92
  const { db, spies } = createMockDb<Transaction>();
93
93
  spies.select.mockReturnValue(undefined);
94
94
 
@@ -100,7 +100,7 @@ describe("updateSite", () => {
100
100
  }
101
101
  });
102
102
 
103
- it("throws when name is empty", async () => {
103
+ it("returns error when name is empty", async () => {
104
104
  const { db, spies } = createMockDb<Transaction>();
105
105
  spies.select.mockReturnValueOnce(activeSite);
106
106
 
@@ -112,7 +112,7 @@ describe("updateSite", () => {
112
112
  }
113
113
  });
114
114
 
115
- it("throws when name already exists in same company", async () => {
115
+ it("returns error when name already exists in same company", async () => {
116
116
  const { db, spies } = createMockDb<Transaction>();
117
117
  const otherSite = { ...activeSite, id: "site-other", name: "Existing Name" };
118
118
 
@@ -128,7 +128,7 @@ describe("updateSite", () => {
128
128
  }
129
129
  });
130
130
 
131
- it("throws when type is invalid", async () => {
131
+ it("returns error when type is invalid", async () => {
132
132
  const { db, spies } = createMockDb<Transaction>();
133
133
  spies.select.mockReturnValueOnce(activeSite);
134
134
 
@@ -140,7 +140,7 @@ describe("updateSite", () => {
140
140
  }
141
141
  });
142
142
 
143
- it("throws when country code is invalid", async () => {
143
+ it("returns error when country code is invalid", async () => {
144
144
  const { db, spies } = createMockDb<Transaction>();
145
145
  spies.select.mockReturnValueOnce(activeSite);
146
146
 
@@ -152,7 +152,7 @@ describe("updateSite", () => {
152
152
  }
153
153
  });
154
154
 
155
- it("throws when timezone is invalid", async () => {
155
+ it("returns error when timezone is invalid", async () => {
156
156
  const { db, spies } = createMockDb<Transaction>();
157
157
  spies.select.mockReturnValueOnce(activeSite);
158
158
 
@@ -179,7 +179,7 @@ describe("updateSite", () => {
179
179
  }
180
180
  });
181
181
 
182
- it("throws when street is set to empty", async () => {
182
+ it("returns error when street is set to empty", async () => {
183
183
  const { db, spies } = createMockDb<Transaction>();
184
184
  spies.select.mockReturnValueOnce(activeSite);
185
185
 
@@ -191,7 +191,7 @@ describe("updateSite", () => {
191
191
  }
192
192
  });
193
193
 
194
- it("throws when city is set to empty", async () => {
194
+ it("returns error when city is set to empty", async () => {
195
195
  const { db, spies } = createMockDb<Transaction>();
196
196
  spies.select.mockReturnValueOnce(activeSite);
197
197
 
@@ -203,7 +203,7 @@ describe("updateSite", () => {
203
203
  }
204
204
  });
205
205
 
206
- it("throws when postalCode is set to empty", async () => {
206
+ it("returns error when postalCode is set to empty", async () => {
207
207
  const { db, spies } = createMockDb<Transaction>();
208
208
  spies.select.mockReturnValueOnce(activeSite);
209
209
 
@@ -215,7 +215,7 @@ describe("updateSite", () => {
215
215
  }
216
216
  });
217
217
 
218
- it("throws when country is set to empty", async () => {
218
+ it("returns error when country is set to empty", async () => {
219
219
  const { db, spies } = createMockDb<Transaction>();
220
220
  spies.select.mockReturnValueOnce(activeSite);
221
221
 
@@ -10,7 +10,7 @@ import {
10
10
  } from "../lib/errors.generated";
11
11
  import { ok, err } from "@tailor-platform/erp-kit/module";
12
12
 
13
- export interface UpdateSiteInput {
13
+ export type UpdateSiteInput = {
14
14
  siteId: string;
15
15
  name?: string;
16
16
  type?: string;
@@ -20,7 +20,7 @@ export interface UpdateSiteInput {
20
20
  postalCode?: string;
21
21
  country?: string;
22
22
  timezone?: string;
23
- }
23
+ };
24
24
 
25
25
  const VALID_SITE_TYPES = ["OFFICE", "WAREHOUSE", "STORE", "FACTORY", "DISTRIBUTION_CENTER"];
26
26
 
@@ -42,7 +42,6 @@ function isValidTimezone(tz: string): boolean {
42
42
  return false;
43
43
  }
44
44
  }
45
-
46
45
  /**
47
46
  * Function: updateSite
48
47
  *
@@ -51,7 +50,7 @@ function isValidTimezone(tz: string): boolean {
51
50
  */
52
51
  export async function run<CF extends Record<string, unknown>>(
53
52
  db: Transaction,
54
- input: UpdateSiteInput & CF,
53
+ input: UpdateSiteInput & Omit<Partial<CF>, "status">,
55
54
  ) {
56
55
  const {
57
56
  siteId,
@@ -49,10 +49,10 @@ flowchart TD
49
49
  - updates legal name on DRAFT company
50
50
  - updates address fields on ACTIVE company
51
51
  - updates tax ID and registration number
52
- - throws when company does not exist
53
- - throws when legal name is empty
54
- - throws when changing base currency on ACTIVE company
55
- - throws when changing base currency on INACTIVE company
56
- - throws when new base currency does not exist
57
- - throws when new base currency is inactive
52
+ - returns error when company does not exist
53
+ - returns error when legal name is empty
54
+ - returns error when changing base currency on ACTIVE company
55
+ - returns error when changing base currency on INACTIVE company
56
+ - returns error when new base currency does not exist
57
+ - returns error when new base currency is inactive
58
58
  - updates base currency on DRAFT company
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- UpdateDepartment modifies the name or parent department of an existing department. The department code and company are immutable. Parent department changes are validated to prevent self-references and circular hierarchies. Updating is allowed on both ACTIVE and INACTIVE departments.
5
+ UpdateDepartment modifies the name or parent department of an existing department. Department code and company ownership are fixed by the existing record and are not part of the update input. Parent department changes are validated to prevent self-references and circular hierarchies. Updating is allowed on both ACTIVE and INACTIVE departments.
6
6
 
7
7
  This command supports organizational restructuring and department renaming.
8
8
 
@@ -10,8 +10,7 @@ This command supports organizational restructuring and department renaming.
10
10
 
11
11
  - Department must exist
12
12
  - Name, if provided, must be non-empty
13
- - Department code cannot be changed
14
- - companyId cannot be changed
13
+ - Department code and company ownership are not part of the update input
15
14
  - Parent department, if provided, must exist and belong to the same company
16
15
  - A department cannot reference itself as its own parent
17
16
  - Circular parent references are rejected
@@ -54,11 +53,11 @@ flowchart TD
54
53
  - updates department name
55
54
  - updates parent department
56
55
  - removes parent department (promotes to top-level)
57
- - throws when department does not exist
58
- - throws when name is empty
59
- - throws when name is whitespace-only
60
- - throws when setting self as parent
61
- - throws when parent does not exist
62
- - throws when parent belongs to different company
63
- - throws when reparenting creates circular reference
56
+ - returns error when department does not exist
57
+ - returns error when name is empty
58
+ - returns error when name is whitespace-only
59
+ - returns error when setting self as parent
60
+ - returns error when parent does not exist
61
+ - returns error when parent belongs to different company
62
+ - returns error when reparenting creates circular reference
64
63
  - updates parent on INACTIVE department
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- UpdateSite modifies fields on an existing site. Updatable fields include name, type, address fields, country, and timezone. The companyId is immutable after creation. Updating is permitted on both ACTIVE and INACTIVE sites.
5
+ UpdateSite modifies fields on an existing site. Updatable fields include name, type, address fields, country, and timezone. Company ownership is fixed by the existing record and is not part of the update input. Updating is permitted on both ACTIVE and INACTIVE sites.
6
6
 
7
7
  This command supports address corrections, type reclassification, and timezone updates.
8
8
 
@@ -12,7 +12,7 @@ This command supports address corrections, type reclassification, and timezone u
12
12
  - Name, if provided, must be non-empty
13
13
  - Name, if changed, must remain unique within the same company
14
14
  - Type, if provided, must be one of the allowed classifications
15
- - companyId cannot be changed
15
+ - companyId is not part of the update input
16
16
  - Timezone, if provided, must be a valid IANA timezone identifier
17
17
  - Country, if provided, must reference a valid country code
18
18
  - Address fields can be individually updated
@@ -64,17 +64,17 @@ flowchart TD
64
64
  - updates site address fields
65
65
  - updates site type
66
66
  - updates site timezone
67
- - throws when site does not exist
68
- - throws when name is empty
69
- - throws when name already exists in same company
70
- - throws when type is invalid
71
- - throws when country code is invalid
72
- - throws when timezone is invalid
67
+ - returns error when site does not exist
68
+ - returns error when name is empty
69
+ - returns error when name already exists in same company
70
+ - returns error when type is invalid
71
+ - returns error when country code is invalid
72
+ - returns error when timezone is invalid
73
73
  - updates site country
74
- - throws when street is set to empty
75
- - throws when city is set to empty
76
- - throws when postalCode is set to empty
77
- - throws when country is set to empty
74
+ - returns error when street is set to empty
75
+ - returns error when city is set to empty
76
+ - returns error when postalCode is set to empty
77
+ - returns error when country is set to empty
78
78
  - updates state/province field
79
79
  - clears state/province field
80
80
  - updates address fields on INACTIVE site
@@ -3,7 +3,6 @@ import { createMockDb } from "../../../testing/index";
3
3
  import type { GetUnitInput } from "../../primitives/query/getUnit";
4
4
  import type { Transaction } from "../generated/kysely-tailordb";
5
5
  import {
6
- CodeImmutableError,
7
6
  InvalidUomError,
8
7
  MissingRequiredFieldError,
9
8
  NoFieldsToUpdateError,
@@ -51,16 +50,6 @@ describe("updateProduct", () => {
51
50
  }
52
51
  });
53
52
 
54
- it("returns error when code change attempted", async () => {
55
- const { db, spies } = createMockDb<Transaction>();
56
- spies.select.mockReturnValueOnce({ ...baseDraftProduct });
57
- const result = await run(db, { id: "product-1", code: "NEW-CODE" }, ctx, primitivesQueries);
58
- expect(result.ok).toBe(false);
59
- if (!result.ok) {
60
- expect(result.error).toBeInstanceOf(CodeImmutableError);
61
- }
62
- });
63
-
64
53
  it("returns error when no fields provided", async () => {
65
54
  const { db, spies } = createMockDb<Transaction>();
66
55
  spies.select.mockReturnValueOnce({ ...baseDraftProduct });
@@ -147,6 +136,23 @@ describe("updateProduct", () => {
147
136
  }
148
137
  });
149
138
 
139
+ it("looks up product by code and updates name", async () => {
140
+ const { db, spies } = createMockDb<Transaction>();
141
+ const updated = { ...baseDraftProduct, name: "Updated Name" };
142
+ spies.select.mockReturnValueOnce({ ...baseDraftProduct });
143
+ spies.update.mockReturnValueOnce(updated);
144
+ const result = await run(
145
+ db,
146
+ { code: baseDraftProduct.code, name: "Updated Name" },
147
+ ctx,
148
+ primitivesQueries,
149
+ );
150
+ expect(result.ok).toBe(true);
151
+ if (result.ok) {
152
+ expect(result.value.product.name).toBe("Updated Name");
153
+ }
154
+ });
155
+
150
156
  it("passes custom fields through", async () => {
151
157
  const { db, spies } = createMockDb<Transaction>();
152
158
  const updated = { ...baseDraftProduct, customField1: "value1" };