@tailor-platform/erp-kit 0.4.1 → 0.5.1

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 (940) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +12 -12
  3. package/dist/cli.mjs +503 -32
  4. package/package.json +2 -11
  5. package/skills/erp-kit-app-2-requirements-review/SKILL.md +2 -2
  6. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +1 -1
  7. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +6 -3
  8. package/skills/erp-kit-app-4-plan-review/SKILL.md +5 -3
  9. package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +3 -0
  10. package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +21 -3
  11. package/skills/erp-kit-app-5-impl-backend/SKILL.md +15 -4
  12. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +8 -4
  13. package/skills/erp-kit-app-7-impl-review/SKILL.md +1 -1
  14. package/skills/erp-kit-app-shared/references/resolver-classification.md +3 -0
  15. package/skills/erp-kit-module-2-requirements-review/SKILL.md +3 -30
  16. package/skills/erp-kit-module-3-update-plan/SKILL.md +132 -0
  17. package/skills/erp-kit-module-3-update-plan/references/command-extraction.md +87 -0
  18. package/skills/erp-kit-module-3-update-plan/references/model-extraction.md +72 -0
  19. package/skills/erp-kit-module-3-update-plan/references/naming.md +73 -0
  20. package/skills/erp-kit-module-3-update-plan/references/query-extraction.md +59 -0
  21. package/skills/erp-kit-module-4-plan-review/SKILL.md +3 -69
  22. package/skills/erp-kit-module-5-impl/SKILL.md +1 -0
  23. package/skills/erp-kit-module-6-impl-review/SKILL.md +42 -120
  24. package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +1 -1
  25. package/skills/erp-kit-module-6-impl-review/references/{error-implementation-parity.md → command-error-implementation-parity.md} +3 -3
  26. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +1 -1
  27. package/skills/erp-kit-module-6-impl-review/references/query-doc-code-parity.md +110 -0
  28. package/skills/erp-kit-module-6-impl-review/references/query-doc-test-parity.md +108 -0
  29. package/skills/erp-kit-module-6-impl-review/references/query-error-implementation-parity.md +100 -0
  30. package/src/commands/app/index.ts +18 -3
  31. package/src/commands/check.test.ts +1 -1
  32. package/src/commands/doc/module.ts +2 -3
  33. package/src/commands/doc/modules.test.ts +0 -7
  34. package/src/commands/doc/modules.ts +1 -2
  35. package/src/commands/doc/search.ts +1 -2
  36. package/src/commands/init-module.test.ts +17 -3
  37. package/src/commands/init-module.ts +0 -12
  38. package/src/commands/init.ts +4 -0
  39. package/src/commands/lib/distribute.test.ts +32 -1
  40. package/src/commands/lib/distribute.ts +47 -5
  41. package/src/commands/lib/sync-check-source.test.ts +1 -1
  42. package/src/commands/update.test.ts +16 -0
  43. package/src/commands/update.ts +4 -1
  44. package/src/generator/generate-code-boilerplate.test.ts +9 -1
  45. package/src/generator/generate-seed.ts +69 -0
  46. package/src/generator/scaffold.ts +6 -2
  47. package/src/mdschema.ts +39 -3
  48. package/src/module.ts +56 -0
  49. package/src/modules/business-partner/README.md +2 -2
  50. package/src/modules/inventory/README.md +65 -0
  51. package/src/modules/inventory/command/approveCountLine.generated.ts +6 -0
  52. package/src/modules/inventory/command/approveCountLine.test.ts +89 -0
  53. package/src/modules/inventory/command/approveCountLine.ts +68 -0
  54. package/src/modules/inventory/command/approveInventoryAdjustment.generated.ts +6 -0
  55. package/src/modules/inventory/command/approveInventoryAdjustment.test.ts +56 -0
  56. package/src/modules/inventory/command/approveInventoryAdjustment.ts +50 -0
  57. package/src/modules/inventory/command/assignSerialNumber.generated.ts +6 -0
  58. package/src/modules/inventory/command/assignSerialNumber.test.ts +133 -0
  59. package/src/modules/inventory/command/assignSerialNumber.ts +83 -0
  60. package/src/modules/inventory/command/cancelInventoryCount.generated.ts +6 -0
  61. package/src/modules/inventory/command/cancelInventoryCount.test.ts +114 -0
  62. package/src/modules/inventory/command/cancelInventoryCount.ts +62 -0
  63. package/src/modules/inventory/command/cancelStockMovement.generated.ts +6 -0
  64. package/src/modules/inventory/command/cancelStockMovement.test.ts +102 -0
  65. package/src/modules/inventory/command/cancelStockMovement.ts +56 -0
  66. package/src/modules/inventory/command/completeInventoryCount.generated.ts +6 -0
  67. package/src/modules/inventory/command/completeInventoryCount.test.ts +99 -0
  68. package/src/modules/inventory/command/completeInventoryCount.ts +70 -0
  69. package/src/modules/inventory/command/confirmInventoryAdjustment.generated.ts +6 -0
  70. package/src/modules/inventory/command/confirmInventoryAdjustment.test.ts +324 -0
  71. package/src/modules/inventory/command/confirmInventoryAdjustment.ts +194 -0
  72. package/src/modules/inventory/command/confirmStockMovement.generated.ts +6 -0
  73. package/src/modules/inventory/command/confirmStockMovement.test.ts +126 -0
  74. package/src/modules/inventory/command/confirmStockMovement.ts +131 -0
  75. package/src/modules/inventory/command/createInventoryAdjustment.generated.ts +6 -0
  76. package/src/modules/inventory/command/createInventoryAdjustment.test.ts +298 -0
  77. package/src/modules/inventory/command/createInventoryAdjustment.ts +124 -0
  78. package/src/modules/inventory/command/createInventoryCount.generated.ts +6 -0
  79. package/src/modules/inventory/command/createInventoryCount.test.ts +157 -0
  80. package/src/modules/inventory/command/createInventoryCount.ts +72 -0
  81. package/src/modules/inventory/command/createLot.generated.ts +6 -0
  82. package/src/modules/inventory/command/createLot.test.ts +106 -0
  83. package/src/modules/inventory/command/createLot.ts +72 -0
  84. package/src/modules/inventory/command/createStockMovement.generated.ts +6 -0
  85. package/src/modules/inventory/command/createStockMovement.test.ts +342 -0
  86. package/src/modules/inventory/command/createStockMovement.ts +172 -0
  87. package/src/modules/inventory/command/createStorageLocation.generated.ts +6 -0
  88. package/src/modules/inventory/command/createStorageLocation.test.ts +246 -0
  89. package/src/modules/inventory/command/createStorageLocation.ts +126 -0
  90. package/src/modules/inventory/command/createValuationPolicy.generated.ts +6 -0
  91. package/src/modules/inventory/command/createValuationPolicy.test.ts +75 -0
  92. package/src/modules/inventory/command/createValuationPolicy.ts +52 -0
  93. package/src/modules/inventory/command/createWarehouse.generated.ts +6 -0
  94. package/src/modules/inventory/command/createWarehouse.test.ts +143 -0
  95. package/src/modules/inventory/command/createWarehouse.ts +76 -0
  96. package/src/modules/inventory/command/deactivateStorageLocation.generated.ts +6 -0
  97. package/src/modules/inventory/command/deactivateStorageLocation.test.ts +69 -0
  98. package/src/modules/inventory/command/deactivateStorageLocation.ts +51 -0
  99. package/src/modules/inventory/command/deactivateWarehouse.generated.ts +6 -0
  100. package/src/modules/inventory/command/deactivateWarehouse.test.ts +75 -0
  101. package/src/modules/inventory/command/deactivateWarehouse.ts +45 -0
  102. package/src/modules/inventory/command/executeStockMovement.generated.ts +6 -0
  103. package/src/modules/inventory/command/executeStockMovement.test.ts +502 -0
  104. package/src/modules/inventory/command/executeStockMovement.ts +303 -0
  105. package/src/modules/inventory/command/reactivateStorageLocation.generated.ts +6 -0
  106. package/src/modules/inventory/command/reactivateStorageLocation.test.ts +78 -0
  107. package/src/modules/inventory/command/reactivateStorageLocation.ts +63 -0
  108. package/src/modules/inventory/command/reactivateWarehouse.generated.ts +6 -0
  109. package/src/modules/inventory/command/reactivateWarehouse.test.ts +87 -0
  110. package/src/modules/inventory/command/reactivateWarehouse.ts +65 -0
  111. package/src/modules/inventory/command/recordCountLine.generated.ts +6 -0
  112. package/src/modules/inventory/command/recordCountLine.test.ts +211 -0
  113. package/src/modules/inventory/command/recordCountLine.ts +81 -0
  114. package/src/modules/inventory/command/rejectCountLine.generated.ts +6 -0
  115. package/src/modules/inventory/command/rejectCountLine.test.ts +66 -0
  116. package/src/modules/inventory/command/rejectCountLine.ts +50 -0
  117. package/src/modules/inventory/command/rejectInventoryAdjustment.generated.ts +6 -0
  118. package/src/modules/inventory/command/rejectInventoryAdjustment.test.ts +69 -0
  119. package/src/modules/inventory/command/rejectInventoryAdjustment.ts +50 -0
  120. package/src/modules/inventory/command/releaseReservation.generated.ts +6 -0
  121. package/src/modules/inventory/command/releaseReservation.test.ts +65 -0
  122. package/src/modules/inventory/command/releaseReservation.ts +50 -0
  123. package/src/modules/inventory/command/reserveStock.generated.ts +6 -0
  124. package/src/modules/inventory/command/reserveStock.test.ts +141 -0
  125. package/src/modules/inventory/command/reserveStock.ts +88 -0
  126. package/src/modules/inventory/command/reviseInventoryAdjustment.generated.ts +6 -0
  127. package/src/modules/inventory/command/reviseInventoryAdjustment.test.ts +68 -0
  128. package/src/modules/inventory/command/reviseInventoryAdjustment.ts +48 -0
  129. package/src/modules/inventory/command/startInventoryCount.generated.ts +6 -0
  130. package/src/modules/inventory/command/startInventoryCount.test.ts +100 -0
  131. package/src/modules/inventory/command/startInventoryCount.ts +90 -0
  132. package/src/modules/inventory/command/submitInventoryAdjustment.generated.ts +6 -0
  133. package/src/modules/inventory/command/submitInventoryAdjustment.test.ts +53 -0
  134. package/src/modules/inventory/command/submitInventoryAdjustment.ts +47 -0
  135. package/src/modules/inventory/command/updateLot.generated.ts +6 -0
  136. package/src/modules/inventory/command/updateLot.test.ts +88 -0
  137. package/src/modules/inventory/command/updateLot.ts +52 -0
  138. package/src/modules/inventory/command/updateStockMovement.generated.ts +6 -0
  139. package/src/modules/inventory/command/updateStockMovement.test.ts +250 -0
  140. package/src/modules/inventory/command/updateStockMovement.ts +164 -0
  141. package/src/modules/inventory/command/updateStorageLocation.generated.ts +6 -0
  142. package/src/modules/inventory/command/updateStorageLocation.test.ts +72 -0
  143. package/src/modules/inventory/command/updateStorageLocation.ts +77 -0
  144. package/src/modules/inventory/command/updateValuationPolicy.generated.ts +6 -0
  145. package/src/modules/inventory/command/updateValuationPolicy.test.ts +68 -0
  146. package/src/modules/inventory/command/updateValuationPolicy.ts +74 -0
  147. package/src/modules/inventory/command/updateWarehouse.generated.ts +6 -0
  148. package/src/modules/inventory/command/updateWarehouse.test.ts +88 -0
  149. package/src/modules/inventory/command/updateWarehouse.ts +64 -0
  150. package/src/modules/inventory/db/costLayer.ts +54 -0
  151. package/src/modules/inventory/db/inventoryAdjustment.ts +88 -0
  152. package/src/modules/inventory/db/inventoryCount.ts +58 -0
  153. package/src/modules/inventory/db/inventoryCountLine.ts +61 -0
  154. package/src/modules/inventory/db/itemValuation.ts +50 -0
  155. package/src/modules/inventory/db/lot.ts +51 -0
  156. package/src/modules/inventory/db/lotStockLevel.ts +48 -0
  157. package/src/modules/inventory/db/serialNumber.ts +53 -0
  158. package/src/modules/inventory/db/stockLevel.ts +51 -0
  159. package/src/modules/inventory/db/stockMoveLine.ts +78 -0
  160. package/src/modules/inventory/db/stockMovement.ts +48 -0
  161. package/src/modules/inventory/db/storageLocation.ts +56 -0
  162. package/src/modules/inventory/db/valuationPolicy.ts +33 -0
  163. package/src/modules/inventory/db/warehouse.ts +45 -0
  164. package/src/modules/inventory/docs/commands/ApproveCountLine.md +44 -0
  165. package/src/modules/inventory/docs/commands/ApproveInventoryAdjustment.md +37 -0
  166. package/src/modules/inventory/docs/commands/AssignSerialNumber.md +46 -0
  167. package/src/modules/inventory/docs/commands/CancelInventoryCount.md +49 -0
  168. package/src/modules/inventory/docs/commands/CancelStockMovement.md +44 -0
  169. package/src/modules/inventory/docs/commands/CompleteInventoryCount.md +47 -0
  170. package/src/modules/inventory/docs/commands/ConfirmInventoryAdjustment.md +72 -0
  171. package/src/modules/inventory/docs/commands/ConfirmStockMovement.md +43 -0
  172. package/src/modules/inventory/docs/commands/CreateInventoryAdjustment.md +75 -0
  173. package/src/modules/inventory/docs/commands/CreateInventoryCount.md +49 -0
  174. package/src/modules/inventory/docs/commands/CreateLot.md +40 -0
  175. package/src/modules/inventory/docs/commands/CreateStockMovement.md +76 -0
  176. package/src/modules/inventory/docs/commands/CreateStorageLocation.md +66 -0
  177. package/src/modules/inventory/docs/commands/CreateValuationPolicy.md +45 -0
  178. package/src/modules/inventory/docs/commands/CreateWarehouse.md +47 -0
  179. package/src/modules/inventory/docs/commands/DeactivateStorageLocation.md +39 -0
  180. package/src/modules/inventory/docs/commands/DeactivateWarehouse.md +38 -0
  181. package/src/modules/inventory/docs/commands/ExecuteStockMovement.md +82 -0
  182. package/src/modules/inventory/docs/commands/ReactivateStorageLocation.md +42 -0
  183. package/src/modules/inventory/docs/commands/ReactivateWarehouse.md +42 -0
  184. package/src/modules/inventory/docs/commands/RecordCountLine.md +52 -0
  185. package/src/modules/inventory/docs/commands/RejectCountLine.md +42 -0
  186. package/src/modules/inventory/docs/commands/RejectInventoryAdjustment.md +38 -0
  187. package/src/modules/inventory/docs/commands/ReleaseReservation.md +37 -0
  188. package/src/modules/inventory/docs/commands/ReserveStock.md +49 -0
  189. package/src/modules/inventory/docs/commands/ReviseInventoryAdjustment.md +38 -0
  190. package/src/modules/inventory/docs/commands/StartInventoryCount.md +47 -0
  191. package/src/modules/inventory/docs/commands/SubmitInventoryAdjustment.md +37 -0
  192. package/src/modules/inventory/docs/commands/UpdateLot.md +41 -0
  193. package/src/modules/inventory/docs/commands/UpdateStockMovement.md +45 -0
  194. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +41 -0
  195. package/src/modules/inventory/docs/commands/UpdateValuationPolicy.md +44 -0
  196. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +42 -0
  197. package/src/modules/inventory/docs/features/inventory-adjustment.md +64 -0
  198. package/src/modules/inventory/docs/features/inventory-count.md +78 -0
  199. package/src/modules/inventory/docs/features/inventory-valuation.md +77 -0
  200. package/src/modules/inventory/docs/features/lot-and-batch-tracking.md +81 -0
  201. package/src/modules/inventory/docs/features/scrap-management.md +63 -0
  202. package/src/modules/inventory/docs/features/serial-number-tracking.md +68 -0
  203. package/src/modules/inventory/docs/features/stock-movement.md +72 -0
  204. package/src/modules/inventory/docs/features/stock-tracking.md +78 -0
  205. package/src/modules/inventory/docs/features/warehouse-management.md +97 -0
  206. package/src/modules/inventory/docs/models/CostLayer.md +37 -0
  207. package/src/modules/inventory/docs/models/InventoryAdjustment.md +69 -0
  208. package/src/modules/inventory/docs/models/InventoryCount.md +53 -0
  209. package/src/modules/inventory/docs/models/InventoryCountLine.md +53 -0
  210. package/src/modules/inventory/docs/models/ItemValuation.md +38 -0
  211. package/src/modules/inventory/docs/models/Lot.md +45 -0
  212. package/src/modules/inventory/docs/models/LotStockLevel.md +34 -0
  213. package/src/modules/inventory/docs/models/SerialNumber.md +53 -0
  214. package/src/modules/inventory/docs/models/StockLevel.md +41 -0
  215. package/src/modules/inventory/docs/models/StockMoveLine.md +44 -0
  216. package/src/modules/inventory/docs/models/StockMovement.md +52 -0
  217. package/src/modules/inventory/docs/models/StorageLocation.md +55 -0
  218. package/src/modules/inventory/docs/models/ValuationPolicy.md +38 -0
  219. package/src/modules/inventory/docs/models/Warehouse.md +50 -0
  220. package/src/modules/inventory/docs/queries/GetInventoryAdjustment.md +40 -0
  221. package/src/modules/inventory/docs/queries/GetInventoryCount.md +43 -0
  222. package/src/modules/inventory/docs/queries/GetItemValuation.md +42 -0
  223. package/src/modules/inventory/docs/queries/GetLot.md +42 -0
  224. package/src/modules/inventory/docs/queries/GetSerialNumber.md +43 -0
  225. package/src/modules/inventory/docs/queries/GetSerialNumberHistory.md +50 -0
  226. package/src/modules/inventory/docs/queries/GetStockLevel.md +42 -0
  227. package/src/modules/inventory/docs/queries/GetStockMovement.md +41 -0
  228. package/src/modules/inventory/docs/queries/GetStorageLocation.md +40 -0
  229. package/src/modules/inventory/docs/queries/GetValuationPolicy.md +38 -0
  230. package/src/modules/inventory/docs/queries/GetWarehouse.md +40 -0
  231. package/src/modules/inventory/docs/queries/GetWarehouseStockSummary.md +50 -0
  232. package/src/modules/inventory/docs/queries/ListCostLayers.md +49 -0
  233. package/src/modules/inventory/docs/queries/ListExpiringLots.md +51 -0
  234. package/src/modules/inventory/docs/queries/ListInventoryAdjustments.md +47 -0
  235. package/src/modules/inventory/docs/queries/ListInventoryCounts.md +57 -0
  236. package/src/modules/inventory/docs/queries/ListItemValuations.md +44 -0
  237. package/src/modules/inventory/docs/queries/ListLots.md +57 -0
  238. package/src/modules/inventory/docs/queries/ListSerialNumbers.md +44 -0
  239. package/src/modules/inventory/docs/queries/ListStockLevels.md +49 -0
  240. package/src/modules/inventory/docs/queries/ListStockMovements.md +47 -0
  241. package/src/modules/inventory/docs/queries/ListStorageLocations.md +47 -0
  242. package/src/modules/inventory/docs/queries/ListValuationPolicies.md +38 -0
  243. package/src/modules/inventory/docs/queries/ListWarehouses.md +42 -0
  244. package/src/modules/inventory/docs/queries/TraceLotBackward.md +46 -0
  245. package/src/modules/inventory/docs/queries/TraceLotForward.md +46 -0
  246. package/src/modules/inventory/executor/.gitkeep +0 -0
  247. package/src/modules/inventory/generated/.gitkeep +0 -0
  248. package/src/modules/inventory/generated/enums.ts +131 -0
  249. package/src/modules/inventory/generated/kysely-tailordb.ts +201 -0
  250. package/src/modules/inventory/index.ts +2 -0
  251. package/src/modules/inventory/lib/_db_deps.ts +17 -0
  252. package/src/modules/inventory/lib/errors.generated.ts +317 -0
  253. package/src/modules/inventory/lib/permissions.generated.ts +38 -0
  254. package/src/modules/inventory/lib/types.ts +92 -0
  255. package/src/modules/inventory/module.ts +202 -0
  256. package/src/modules/inventory/permissions.ts +3 -0
  257. package/src/modules/inventory/query/.gitkeep +0 -0
  258. package/src/modules/inventory/query/getInventoryAdjustment.generated.ts +5 -0
  259. package/src/modules/inventory/query/getInventoryAdjustment.test.ts +58 -0
  260. package/src/modules/inventory/query/getInventoryAdjustment.ts +16 -0
  261. package/src/modules/inventory/query/getInventoryCount.generated.ts +5 -0
  262. package/src/modules/inventory/query/getInventoryCount.test.ts +65 -0
  263. package/src/modules/inventory/query/getInventoryCount.ts +27 -0
  264. package/src/modules/inventory/query/getItemValuation.generated.ts +5 -0
  265. package/src/modules/inventory/query/getItemValuation.test.ts +72 -0
  266. package/src/modules/inventory/query/getItemValuation.ts +29 -0
  267. package/src/modules/inventory/query/getLot.generated.ts +5 -0
  268. package/src/modules/inventory/query/getLot.test.ts +62 -0
  269. package/src/modules/inventory/query/getLot.ts +28 -0
  270. package/src/modules/inventory/query/getSerialNumber.generated.ts +5 -0
  271. package/src/modules/inventory/query/getSerialNumber.test.ts +59 -0
  272. package/src/modules/inventory/query/getSerialNumber.ts +18 -0
  273. package/src/modules/inventory/query/getSerialNumberHistory.generated.ts +5 -0
  274. package/src/modules/inventory/query/getSerialNumberHistory.test.ts +80 -0
  275. package/src/modules/inventory/query/getSerialNumberHistory.ts +30 -0
  276. package/src/modules/inventory/query/getStockLevel.generated.ts +5 -0
  277. package/src/modules/inventory/query/getStockLevel.test.ts +70 -0
  278. package/src/modules/inventory/query/getStockLevel.ts +24 -0
  279. package/src/modules/inventory/query/getStockMovement.generated.ts +5 -0
  280. package/src/modules/inventory/query/getStockMovement.test.ts +62 -0
  281. package/src/modules/inventory/query/getStockMovement.ts +26 -0
  282. package/src/modules/inventory/query/getStorageLocation.generated.ts +5 -0
  283. package/src/modules/inventory/query/getStorageLocation.test.ts +54 -0
  284. package/src/modules/inventory/query/getStorageLocation.ts +26 -0
  285. package/src/modules/inventory/query/getValuationPolicy.generated.ts +5 -0
  286. package/src/modules/inventory/query/getValuationPolicy.test.ts +42 -0
  287. package/src/modules/inventory/query/getValuationPolicy.ts +16 -0
  288. package/src/modules/inventory/query/getWarehouse.generated.ts +5 -0
  289. package/src/modules/inventory/query/getWarehouse.test.ts +61 -0
  290. package/src/modules/inventory/query/getWarehouse.ts +26 -0
  291. package/src/modules/inventory/query/getWarehouseStockSummary.generated.ts +5 -0
  292. package/src/modules/inventory/query/getWarehouseStockSummary.test.ts +97 -0
  293. package/src/modules/inventory/query/getWarehouseStockSummary.ts +82 -0
  294. package/src/modules/inventory/query/listCostLayers.generated.ts +5 -0
  295. package/src/modules/inventory/query/listCostLayers.test.ts +58 -0
  296. package/src/modules/inventory/query/listCostLayers.ts +45 -0
  297. package/src/modules/inventory/query/listExpiringLots.generated.ts +5 -0
  298. package/src/modules/inventory/query/listExpiringLots.test.ts +70 -0
  299. package/src/modules/inventory/query/listExpiringLots.ts +74 -0
  300. package/src/modules/inventory/query/listInventoryAdjustments.generated.ts +5 -0
  301. package/src/modules/inventory/query/listInventoryAdjustments.test.ts +89 -0
  302. package/src/modules/inventory/query/listInventoryAdjustments.ts +59 -0
  303. package/src/modules/inventory/query/listInventoryCounts.generated.ts +5 -0
  304. package/src/modules/inventory/query/listInventoryCounts.test.ts +78 -0
  305. package/src/modules/inventory/query/listInventoryCounts.ts +55 -0
  306. package/src/modules/inventory/query/listItemValuations.generated.ts +5 -0
  307. package/src/modules/inventory/query/listItemValuations.test.ts +54 -0
  308. package/src/modules/inventory/query/listItemValuations.ts +39 -0
  309. package/src/modules/inventory/query/listLots.generated.ts +5 -0
  310. package/src/modules/inventory/query/listLots.test.ts +120 -0
  311. package/src/modules/inventory/query/listLots.ts +68 -0
  312. package/src/modules/inventory/query/listSerialNumbers.generated.ts +5 -0
  313. package/src/modules/inventory/query/listSerialNumbers.test.ts +58 -0
  314. package/src/modules/inventory/query/listSerialNumbers.ts +53 -0
  315. package/src/modules/inventory/query/listStockLevels.generated.ts +5 -0
  316. package/src/modules/inventory/query/listStockLevels.test.ts +73 -0
  317. package/src/modules/inventory/query/listStockLevels.ts +79 -0
  318. package/src/modules/inventory/query/listStockMovements.generated.ts +5 -0
  319. package/src/modules/inventory/query/listStockMovements.test.ts +98 -0
  320. package/src/modules/inventory/query/listStockMovements.ts +105 -0
  321. package/src/modules/inventory/query/listStorageLocations.generated.ts +5 -0
  322. package/src/modules/inventory/query/listStorageLocations.test.ts +70 -0
  323. package/src/modules/inventory/query/listStorageLocations.ts +53 -0
  324. package/src/modules/inventory/query/listValuationPolicies.generated.ts +5 -0
  325. package/src/modules/inventory/query/listValuationPolicies.test.ts +38 -0
  326. package/src/modules/inventory/query/listValuationPolicies.ts +39 -0
  327. package/src/modules/inventory/query/listWarehouses.generated.ts +5 -0
  328. package/src/modules/inventory/query/listWarehouses.test.ts +60 -0
  329. package/src/modules/inventory/query/listWarehouses.ts +39 -0
  330. package/src/modules/inventory/query/traceLotBackward.generated.ts +5 -0
  331. package/src/modules/inventory/query/traceLotBackward.test.ts +63 -0
  332. package/src/modules/inventory/query/traceLotBackward.ts +36 -0
  333. package/src/modules/inventory/query/traceLotForward.generated.ts +5 -0
  334. package/src/modules/inventory/query/traceLotForward.test.ts +63 -0
  335. package/src/modules/inventory/query/traceLotForward.ts +36 -0
  336. package/src/modules/inventory/tailor.config.ts +13 -0
  337. package/src/modules/inventory/tailor.d.ts +13 -0
  338. package/src/modules/inventory/testing/commandTestUtils.ts +29 -0
  339. package/src/modules/inventory/testing/fixtures.ts +412 -0
  340. package/src/modules/item-management/docs/models/{item.md → Item.md} +1 -1
  341. package/src/modules/primitives/seed/currencies.ts +22 -0
  342. package/src/modules/primitives/seed/exchangeRates.ts +22 -0
  343. package/src/modules/primitives/seed/index.ts +4 -0
  344. package/src/modules/primitives/seed/seed.test.ts +80 -0
  345. package/src/modules/primitives/seed/units.ts +62 -0
  346. package/src/modules/primitives/seed/uomCategories.ts +24 -0
  347. package/src/modules/purchase/README.md +63 -0
  348. package/src/modules/purchase/command/.gitkeep +0 -0
  349. package/src/modules/purchase/command/activatePurchasePaymentTerm.generated.ts +6 -0
  350. package/src/modules/purchase/command/activatePurchasePaymentTerm.test.ts +53 -0
  351. package/src/modules/purchase/command/activatePurchasePaymentTerm.ts +39 -0
  352. package/src/modules/purchase/command/activatePurchasePriceList.generated.ts +6 -0
  353. package/src/modules/purchase/command/activatePurchasePriceList.test.ts +39 -0
  354. package/src/modules/purchase/command/activatePurchasePriceList.ts +32 -0
  355. package/src/modules/purchase/command/activatePurchasePriceRule.generated.ts +6 -0
  356. package/src/modules/purchase/command/activatePurchasePriceRule.test.ts +133 -0
  357. package/src/modules/purchase/command/activatePurchasePriceRule.ts +75 -0
  358. package/src/modules/purchase/command/approvePurchaseOrder.generated.ts +6 -0
  359. package/src/modules/purchase/command/approvePurchaseOrder.test.ts +161 -0
  360. package/src/modules/purchase/command/approvePurchaseOrder.ts +89 -0
  361. package/src/modules/purchase/command/cancelGoodsReceipt.generated.ts +6 -0
  362. package/src/modules/purchase/command/cancelGoodsReceipt.test.ts +37 -0
  363. package/src/modules/purchase/command/cancelGoodsReceipt.ts +29 -0
  364. package/src/modules/purchase/command/cancelPurchaseBill.generated.ts +6 -0
  365. package/src/modules/purchase/command/cancelPurchaseBill.test.ts +101 -0
  366. package/src/modules/purchase/command/cancelPurchaseBill.ts +84 -0
  367. package/src/modules/purchase/command/cancelPurchaseOrder.generated.ts +6 -0
  368. package/src/modules/purchase/command/cancelPurchaseOrder.test.ts +119 -0
  369. package/src/modules/purchase/command/cancelPurchaseOrder.ts +65 -0
  370. package/src/modules/purchase/command/closePurchaseOrder.generated.ts +6 -0
  371. package/src/modules/purchase/command/closePurchaseOrder.test.ts +128 -0
  372. package/src/modules/purchase/command/closePurchaseOrder.ts +58 -0
  373. package/src/modules/purchase/command/createGoodsReceipt.generated.ts +6 -0
  374. package/src/modules/purchase/command/createGoodsReceipt.test.ts +233 -0
  375. package/src/modules/purchase/command/createGoodsReceipt.ts +93 -0
  376. package/src/modules/purchase/command/createPurchaseBill.generated.ts +6 -0
  377. package/src/modules/purchase/command/createPurchaseBill.test.ts +277 -0
  378. package/src/modules/purchase/command/createPurchaseBill.ts +107 -0
  379. package/src/modules/purchase/command/createPurchaseOrder.generated.ts +6 -0
  380. package/src/modules/purchase/command/createPurchaseOrder.test.ts +291 -0
  381. package/src/modules/purchase/command/createPurchaseOrder.ts +131 -0
  382. package/src/modules/purchase/command/createPurchasePaymentTerm.generated.ts +6 -0
  383. package/src/modules/purchase/command/createPurchasePaymentTerm.test.ts +140 -0
  384. package/src/modules/purchase/command/createPurchasePaymentTerm.ts +66 -0
  385. package/src/modules/purchase/command/createPurchasePriceList.generated.ts +6 -0
  386. package/src/modules/purchase/command/createPurchasePriceList.test.ts +108 -0
  387. package/src/modules/purchase/command/createPurchasePriceList.ts +63 -0
  388. package/src/modules/purchase/command/createPurchasePriceRule.generated.ts +6 -0
  389. package/src/modules/purchase/command/createPurchasePriceRule.test.ts +139 -0
  390. package/src/modules/purchase/command/createPurchasePriceRule.ts +95 -0
  391. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.generated.ts +6 -0
  392. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.test.ts +49 -0
  393. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.ts +41 -0
  394. package/src/modules/purchase/command/deactivatePurchasePriceList.generated.ts +6 -0
  395. package/src/modules/purchase/command/deactivatePurchasePriceList.test.ts +50 -0
  396. package/src/modules/purchase/command/deactivatePurchasePriceList.ts +32 -0
  397. package/src/modules/purchase/command/deactivatePurchasePriceRule.generated.ts +6 -0
  398. package/src/modules/purchase/command/deactivatePurchasePriceRule.test.ts +50 -0
  399. package/src/modules/purchase/command/deactivatePurchasePriceRule.ts +32 -0
  400. package/src/modules/purchase/command/matchPurchaseBill.generated.ts +6 -0
  401. package/src/modules/purchase/command/matchPurchaseBill.test.ts +188 -0
  402. package/src/modules/purchase/command/matchPurchaseBill.ts +146 -0
  403. package/src/modules/purchase/command/postGoodsReceipt.generated.ts +6 -0
  404. package/src/modules/purchase/command/postGoodsReceipt.test.ts +210 -0
  405. package/src/modules/purchase/command/postGoodsReceipt.ts +143 -0
  406. package/src/modules/purchase/command/rejectPurchaseOrder.generated.ts +6 -0
  407. package/src/modules/purchase/command/rejectPurchaseOrder.test.ts +79 -0
  408. package/src/modules/purchase/command/rejectPurchaseOrder.ts +41 -0
  409. package/src/modules/purchase/command/releasePurchaseBill.generated.ts +6 -0
  410. package/src/modules/purchase/command/releasePurchaseBill.test.ts +94 -0
  411. package/src/modules/purchase/command/releasePurchaseBill.ts +111 -0
  412. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.generated.ts +6 -0
  413. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.test.ts +171 -0
  414. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.ts +90 -0
  415. package/src/modules/purchase/command/submitPurchaseOrder.generated.ts +6 -0
  416. package/src/modules/purchase/command/submitPurchaseOrder.test.ts +98 -0
  417. package/src/modules/purchase/command/submitPurchaseOrder.ts +73 -0
  418. package/src/modules/purchase/command/updateGoodsReceipt.generated.ts +6 -0
  419. package/src/modules/purchase/command/updateGoodsReceipt.test.ts +115 -0
  420. package/src/modules/purchase/command/updateGoodsReceipt.ts +73 -0
  421. package/src/modules/purchase/command/updatePurchaseBill.generated.ts +6 -0
  422. package/src/modules/purchase/command/updatePurchaseBill.test.ts +137 -0
  423. package/src/modules/purchase/command/updatePurchaseBill.ts +89 -0
  424. package/src/modules/purchase/command/updatePurchaseOrder.generated.ts +6 -0
  425. package/src/modules/purchase/command/updatePurchaseOrder.test.ts +195 -0
  426. package/src/modules/purchase/command/updatePurchaseOrder.ts +121 -0
  427. package/src/modules/purchase/command/updatePurchasePaymentTerm.generated.ts +6 -0
  428. package/src/modules/purchase/command/updatePurchasePaymentTerm.test.ts +154 -0
  429. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +73 -0
  430. package/src/modules/purchase/command/updatePurchasePriceList.generated.ts +6 -0
  431. package/src/modules/purchase/command/updatePurchasePriceList.test.ts +73 -0
  432. package/src/modules/purchase/command/updatePurchasePriceList.ts +55 -0
  433. package/src/modules/purchase/command/updatePurchasePriceRule.generated.ts +6 -0
  434. package/src/modules/purchase/command/updatePurchasePriceRule.test.ts +191 -0
  435. package/src/modules/purchase/command/updatePurchasePriceRule.ts +104 -0
  436. package/src/modules/purchase/db/.gitkeep +0 -0
  437. package/src/modules/purchase/db/goodsReceipt.ts +62 -0
  438. package/src/modules/purchase/db/purchaseBill.ts +74 -0
  439. package/src/modules/purchase/db/purchaseOrder.ts +100 -0
  440. package/src/modules/purchase/db/purchasePaymentTerm.ts +46 -0
  441. package/src/modules/purchase/db/purchasePriceList.ts +53 -0
  442. package/src/modules/purchase/db/purchasePriceRule.ts +74 -0
  443. package/src/modules/purchase/db/supplierProfile.ts +59 -0
  444. package/src/modules/purchase/docs/commands/ActivatePurchasePaymentTerm.md +39 -0
  445. package/src/modules/purchase/docs/commands/ActivatePurchasePriceList.md +37 -0
  446. package/src/modules/purchase/docs/commands/ActivatePurchasePriceRule.md +47 -0
  447. package/src/modules/purchase/docs/commands/ApprovePurchaseOrder.md +55 -0
  448. package/src/modules/purchase/docs/commands/CancelGoodsReceipt.md +39 -0
  449. package/src/modules/purchase/docs/commands/CancelPurchaseBill.md +49 -0
  450. package/src/modules/purchase/docs/commands/CancelPurchaseOrder.md +47 -0
  451. package/src/modules/purchase/docs/commands/ClosePurchaseOrder.md +49 -0
  452. package/src/modules/purchase/docs/commands/CreateGoodsReceipt.md +54 -0
  453. package/src/modules/purchase/docs/commands/CreatePurchaseBill.md +59 -0
  454. package/src/modules/purchase/docs/commands/CreatePurchaseOrder.md +66 -0
  455. package/src/modules/purchase/docs/commands/CreatePurchasePaymentTerm.md +52 -0
  456. package/src/modules/purchase/docs/commands/CreatePurchasePriceList.md +48 -0
  457. package/src/modules/purchase/docs/commands/CreatePurchasePriceRule.md +62 -0
  458. package/src/modules/purchase/docs/commands/DeactivatePurchasePaymentTerm.md +42 -0
  459. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceList.md +39 -0
  460. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceRule.md +39 -0
  461. package/src/modules/purchase/docs/commands/MatchPurchaseBill.md +63 -0
  462. package/src/modules/purchase/docs/commands/PostGoodsReceipt.md +61 -0
  463. package/src/modules/purchase/docs/commands/RejectPurchaseOrder.md +44 -0
  464. package/src/modules/purchase/docs/commands/ReleasePurchaseBill.md +48 -0
  465. package/src/modules/purchase/docs/commands/SetSupplierDefaultPurchasePaymentTerm.md +50 -0
  466. package/src/modules/purchase/docs/commands/SubmitPurchaseOrder.md +51 -0
  467. package/src/modules/purchase/docs/commands/UpdateGoodsReceipt.md +48 -0
  468. package/src/modules/purchase/docs/commands/UpdatePurchaseBill.md +51 -0
  469. package/src/modules/purchase/docs/commands/UpdatePurchaseOrder.md +59 -0
  470. package/src/modules/purchase/docs/commands/UpdatePurchasePaymentTerm.md +51 -0
  471. package/src/modules/purchase/docs/commands/UpdatePurchasePriceList.md +43 -0
  472. package/src/modules/purchase/docs/commands/UpdatePurchasePriceRule.md +60 -0
  473. package/src/modules/purchase/docs/features/goods-receipt-matching.md +71 -0
  474. package/src/modules/purchase/docs/features/purchase-order-lifecycle.md +87 -0
  475. package/src/modules/purchase/docs/features/purchase-payment-terms.md +67 -0
  476. package/src/modules/purchase/docs/features/supplier-bill-matching.md +79 -0
  477. package/src/modules/purchase/docs/features/supplier-purchase-pricing.md +72 -0
  478. package/src/modules/purchase/docs/models/GoodsReceipt.md +58 -0
  479. package/src/modules/purchase/docs/models/PurchaseBill.md +68 -0
  480. package/src/modules/purchase/docs/models/PurchaseOrder.md +88 -0
  481. package/src/modules/purchase/docs/models/PurchasePaymentTerm.md +59 -0
  482. package/src/modules/purchase/docs/models/PurchasePriceList.md +53 -0
  483. package/src/modules/purchase/docs/models/PurchasePriceRule.md +58 -0
  484. package/src/modules/purchase/docs/models/SupplierProfile.md +37 -0
  485. package/src/modules/purchase/docs/queries/CalculatePurchaseBillDueSchedule.md +47 -0
  486. package/src/modules/purchase/docs/queries/CalculatePurchasePrice.md +53 -0
  487. package/src/modules/purchase/docs/queries/GetGoodsReceipt.md +36 -0
  488. package/src/modules/purchase/docs/queries/GetPurchaseBill.md +41 -0
  489. package/src/modules/purchase/docs/queries/GetPurchaseOrder.md +42 -0
  490. package/src/modules/purchase/docs/queries/GetPurchasePaymentTerm.md +36 -0
  491. package/src/modules/purchase/docs/queries/GetPurchasePriceList.md +36 -0
  492. package/src/modules/purchase/docs/queries/GetSupplierProfile.md +36 -0
  493. package/src/modules/purchase/executor/.gitkeep +0 -0
  494. package/src/modules/purchase/generated/.gitkeep +0 -0
  495. package/src/modules/purchase/generated/enums.ts +63 -0
  496. package/src/modules/purchase/generated/kysely-tailordb.ts +186 -0
  497. package/src/modules/purchase/index.ts +2 -0
  498. package/src/modules/purchase/lib/_db_deps.ts +77 -0
  499. package/src/modules/purchase/lib/domain.ts +467 -0
  500. package/src/modules/purchase/lib/errors.generated.ts +367 -0
  501. package/src/modules/purchase/lib/permissions.generated.ts +34 -0
  502. package/src/modules/purchase/lib/types.ts +65 -0
  503. package/src/modules/purchase/module.ts +218 -0
  504. package/src/modules/purchase/permissions.ts +1 -0
  505. package/src/modules/purchase/query/.gitkeep +0 -0
  506. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.generated.ts +5 -0
  507. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.test.ts +183 -0
  508. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.ts +41 -0
  509. package/src/modules/purchase/query/calculatePurchasePrice.generated.ts +5 -0
  510. package/src/modules/purchase/query/calculatePurchasePrice.test.ts +143 -0
  511. package/src/modules/purchase/query/calculatePurchasePrice.ts +113 -0
  512. package/src/modules/purchase/query/getGoodsReceipt.generated.ts +5 -0
  513. package/src/modules/purchase/query/getGoodsReceipt.test.ts +42 -0
  514. package/src/modules/purchase/query/getGoodsReceipt.ts +27 -0
  515. package/src/modules/purchase/query/getPurchaseBill.generated.ts +5 -0
  516. package/src/modules/purchase/query/getPurchaseBill.test.ts +69 -0
  517. package/src/modules/purchase/query/getPurchaseBill.ts +35 -0
  518. package/src/modules/purchase/query/getPurchaseOrder.generated.ts +5 -0
  519. package/src/modules/purchase/query/getPurchaseOrder.test.ts +65 -0
  520. package/src/modules/purchase/query/getPurchaseOrder.ts +33 -0
  521. package/src/modules/purchase/query/getPurchasePaymentTerm.generated.ts +5 -0
  522. package/src/modules/purchase/query/getPurchasePaymentTerm.test.ts +44 -0
  523. package/src/modules/purchase/query/getPurchasePaymentTerm.ts +30 -0
  524. package/src/modules/purchase/query/getPurchasePriceList.generated.ts +5 -0
  525. package/src/modules/purchase/query/getPurchasePriceList.test.ts +48 -0
  526. package/src/modules/purchase/query/getPurchasePriceList.ts +30 -0
  527. package/src/modules/purchase/query/getSupplierProfile.generated.ts +5 -0
  528. package/src/modules/purchase/query/getSupplierProfile.test.ts +50 -0
  529. package/src/modules/purchase/query/getSupplierProfile.ts +18 -0
  530. package/src/modules/purchase/tailor.config.ts +13 -0
  531. package/src/modules/purchase/tailor.d.ts +13 -0
  532. package/src/modules/purchase/testing/commandTestUtils.ts +35 -0
  533. package/src/modules/purchase/testing/fixtures.ts +317 -0
  534. package/src/modules/sales/README.md +69 -0
  535. package/src/modules/sales/command/.gitkeep +0 -0
  536. package/src/modules/sales/command/activateChannel.generated.ts +6 -0
  537. package/src/modules/sales/command/activateChannel.test.ts +70 -0
  538. package/src/modules/sales/command/activateChannel.ts +48 -0
  539. package/src/modules/sales/command/activateListing.generated.ts +6 -0
  540. package/src/modules/sales/command/activateListing.test.ts +87 -0
  541. package/src/modules/sales/command/activateListing.ts +49 -0
  542. package/src/modules/sales/command/activateSalesPaymentTerm.generated.ts +6 -0
  543. package/src/modules/sales/command/activateSalesPaymentTerm.test.ts +58 -0
  544. package/src/modules/sales/command/activateSalesPaymentTerm.ts +50 -0
  545. package/src/modules/sales/command/activateSalesPriceList.generated.ts +6 -0
  546. package/src/modules/sales/command/activateSalesPriceList.test.ts +55 -0
  547. package/src/modules/sales/command/activateSalesPriceList.ts +46 -0
  548. package/src/modules/sales/command/activateSalesPriceRule.generated.ts +6 -0
  549. package/src/modules/sales/command/activateSalesPriceRule.test.ts +83 -0
  550. package/src/modules/sales/command/activateSalesPriceRule.ts +58 -0
  551. package/src/modules/sales/command/cancelChannelOrder.generated.ts +6 -0
  552. package/src/modules/sales/command/cancelChannelOrder.test.ts +47 -0
  553. package/src/modules/sales/command/cancelChannelOrder.ts +30 -0
  554. package/src/modules/sales/command/cancelSalesInvoice.generated.ts +6 -0
  555. package/src/modules/sales/command/cancelSalesInvoice.test.ts +47 -0
  556. package/src/modules/sales/command/cancelSalesInvoice.ts +37 -0
  557. package/src/modules/sales/command/cancelSalesOrder.generated.ts +6 -0
  558. package/src/modules/sales/command/cancelSalesOrder.test.ts +70 -0
  559. package/src/modules/sales/command/cancelSalesOrder.ts +48 -0
  560. package/src/modules/sales/command/cancelSyncJob.generated.ts +6 -0
  561. package/src/modules/sales/command/cancelSyncJob.test.ts +58 -0
  562. package/src/modules/sales/command/cancelSyncJob.ts +30 -0
  563. package/src/modules/sales/command/closeSalesOrder.generated.ts +6 -0
  564. package/src/modules/sales/command/closeSalesOrder.test.ts +41 -0
  565. package/src/modules/sales/command/closeSalesOrder.ts +51 -0
  566. package/src/modules/sales/command/confirmSalesOrder.generated.ts +6 -0
  567. package/src/modules/sales/command/confirmSalesOrder.test.ts +68 -0
  568. package/src/modules/sales/command/confirmSalesOrder.ts +67 -0
  569. package/src/modules/sales/command/convertChannelOrder.generated.ts +6 -0
  570. package/src/modules/sales/command/convertChannelOrder.test.ts +118 -0
  571. package/src/modules/sales/command/convertChannelOrder.ts +151 -0
  572. package/src/modules/sales/command/createChannel.generated.ts +6 -0
  573. package/src/modules/sales/command/createChannel.test.ts +100 -0
  574. package/src/modules/sales/command/createChannel.ts +58 -0
  575. package/src/modules/sales/command/createListing.generated.ts +6 -0
  576. package/src/modules/sales/command/createListing.test.ts +88 -0
  577. package/src/modules/sales/command/createListing.ts +76 -0
  578. package/src/modules/sales/command/createSalesCreditNote.generated.ts +6 -0
  579. package/src/modules/sales/command/createSalesCreditNote.test.ts +56 -0
  580. package/src/modules/sales/command/createSalesCreditNote.ts +75 -0
  581. package/src/modules/sales/command/createSalesInvoice.generated.ts +6 -0
  582. package/src/modules/sales/command/createSalesInvoice.test.ts +85 -0
  583. package/src/modules/sales/command/createSalesInvoice.ts +94 -0
  584. package/src/modules/sales/command/createSalesOrder.generated.ts +6 -0
  585. package/src/modules/sales/command/createSalesOrder.test.ts +134 -0
  586. package/src/modules/sales/command/createSalesOrder.ts +140 -0
  587. package/src/modules/sales/command/createSalesPaymentTerm.generated.ts +6 -0
  588. package/src/modules/sales/command/createSalesPaymentTerm.test.ts +59 -0
  589. package/src/modules/sales/command/createSalesPaymentTerm.ts +50 -0
  590. package/src/modules/sales/command/createSalesPriceList.generated.ts +6 -0
  591. package/src/modules/sales/command/createSalesPriceList.test.ts +67 -0
  592. package/src/modules/sales/command/createSalesPriceList.ts +45 -0
  593. package/src/modules/sales/command/createSalesPriceRule.generated.ts +6 -0
  594. package/src/modules/sales/command/createSalesPriceRule.test.ts +137 -0
  595. package/src/modules/sales/command/createSalesPriceRule.ts +66 -0
  596. package/src/modules/sales/command/createShipment.generated.ts +6 -0
  597. package/src/modules/sales/command/createShipment.test.ts +75 -0
  598. package/src/modules/sales/command/createShipment.ts +86 -0
  599. package/src/modules/sales/command/deactivateChannel.generated.ts +6 -0
  600. package/src/modules/sales/command/deactivateChannel.test.ts +29 -0
  601. package/src/modules/sales/command/deactivateChannel.ts +30 -0
  602. package/src/modules/sales/command/deactivateSalesPaymentTerm.generated.ts +6 -0
  603. package/src/modules/sales/command/deactivateSalesPaymentTerm.test.ts +29 -0
  604. package/src/modules/sales/command/deactivateSalesPaymentTerm.ts +37 -0
  605. package/src/modules/sales/command/deactivateSalesPriceList.generated.ts +6 -0
  606. package/src/modules/sales/command/deactivateSalesPriceList.test.ts +33 -0
  607. package/src/modules/sales/command/deactivateSalesPriceList.ts +37 -0
  608. package/src/modules/sales/command/deactivateSalesPriceRule.generated.ts +6 -0
  609. package/src/modules/sales/command/deactivateSalesPriceRule.test.ts +33 -0
  610. package/src/modules/sales/command/deactivateSalesPriceRule.ts +37 -0
  611. package/src/modules/sales/command/issueSalesCreditNote.generated.ts +6 -0
  612. package/src/modules/sales/command/issueSalesCreditNote.test.ts +62 -0
  613. package/src/modules/sales/command/issueSalesCreditNote.ts +71 -0
  614. package/src/modules/sales/command/issueSalesInvoice.generated.ts +6 -0
  615. package/src/modules/sales/command/issueSalesInvoice.test.ts +88 -0
  616. package/src/modules/sales/command/issueSalesInvoice.ts +115 -0
  617. package/src/modules/sales/command/markChannelOrderException.generated.ts +6 -0
  618. package/src/modules/sales/command/markChannelOrderException.test.ts +59 -0
  619. package/src/modules/sales/command/markChannelOrderException.ts +49 -0
  620. package/src/modules/sales/command/pauseListing.generated.ts +6 -0
  621. package/src/modules/sales/command/pauseListing.test.ts +40 -0
  622. package/src/modules/sales/command/pauseListing.ts +30 -0
  623. package/src/modules/sales/command/placeSalesOrderOnCreditHold.generated.ts +6 -0
  624. package/src/modules/sales/command/placeSalesOrderOnCreditHold.test.ts +74 -0
  625. package/src/modules/sales/command/placeSalesOrderOnCreditHold.ts +46 -0
  626. package/src/modules/sales/command/postShipment.generated.ts +6 -0
  627. package/src/modules/sales/command/postShipment.test.ts +97 -0
  628. package/src/modules/sales/command/postShipment.ts +89 -0
  629. package/src/modules/sales/command/recordChannelOrder.generated.ts +6 -0
  630. package/src/modules/sales/command/recordChannelOrder.test.ts +124 -0
  631. package/src/modules/sales/command/recordChannelOrder.ts +93 -0
  632. package/src/modules/sales/command/rejectSalesOrder.generated.ts +6 -0
  633. package/src/modules/sales/command/rejectSalesOrder.test.ts +78 -0
  634. package/src/modules/sales/command/rejectSalesOrder.ts +42 -0
  635. package/src/modules/sales/command/releaseSalesOrderCreditHold.generated.ts +6 -0
  636. package/src/modules/sales/command/releaseSalesOrderCreditHold.test.ts +50 -0
  637. package/src/modules/sales/command/releaseSalesOrderCreditHold.ts +51 -0
  638. package/src/modules/sales/command/retireListing.generated.ts +6 -0
  639. package/src/modules/sales/command/retireListing.test.ts +42 -0
  640. package/src/modules/sales/command/retireListing.ts +30 -0
  641. package/src/modules/sales/command/retrySyncJob.generated.ts +6 -0
  642. package/src/modules/sales/command/retrySyncJob.test.ts +54 -0
  643. package/src/modules/sales/command/retrySyncJob.ts +44 -0
  644. package/src/modules/sales/command/sendSalesInvoice.generated.ts +6 -0
  645. package/src/modules/sales/command/sendSalesInvoice.test.ts +50 -0
  646. package/src/modules/sales/command/sendSalesInvoice.ts +43 -0
  647. package/src/modules/sales/command/startSyncJob.generated.ts +6 -0
  648. package/src/modules/sales/command/startSyncJob.test.ts +65 -0
  649. package/src/modules/sales/command/startSyncJob.ts +54 -0
  650. package/src/modules/sales/command/submitSalesOrder.generated.ts +6 -0
  651. package/src/modules/sales/command/submitSalesOrder.test.ts +58 -0
  652. package/src/modules/sales/command/submitSalesOrder.ts +49 -0
  653. package/src/modules/sales/command/updateChannel.generated.ts +6 -0
  654. package/src/modules/sales/command/updateChannel.test.ts +71 -0
  655. package/src/modules/sales/command/updateChannel.ts +68 -0
  656. package/src/modules/sales/command/updateListing.generated.ts +6 -0
  657. package/src/modules/sales/command/updateListing.test.ts +56 -0
  658. package/src/modules/sales/command/updateListing.ts +60 -0
  659. package/src/modules/sales/command/updateSalesCreditNote.generated.ts +6 -0
  660. package/src/modules/sales/command/updateSalesCreditNote.test.ts +68 -0
  661. package/src/modules/sales/command/updateSalesCreditNote.ts +68 -0
  662. package/src/modules/sales/command/updateSalesInvoice.generated.ts +6 -0
  663. package/src/modules/sales/command/updateSalesInvoice.test.ts +73 -0
  664. package/src/modules/sales/command/updateSalesInvoice.ts +80 -0
  665. package/src/modules/sales/command/updateSalesOrder.generated.ts +6 -0
  666. package/src/modules/sales/command/updateSalesOrder.test.ts +93 -0
  667. package/src/modules/sales/command/updateSalesOrder.ts +121 -0
  668. package/src/modules/sales/command/updateSalesPaymentTerm.generated.ts +6 -0
  669. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +66 -0
  670. package/src/modules/sales/command/updateSalesPaymentTerm.ts +59 -0
  671. package/src/modules/sales/command/updateSalesPriceList.generated.ts +6 -0
  672. package/src/modules/sales/command/updateSalesPriceList.test.ts +71 -0
  673. package/src/modules/sales/command/updateSalesPriceList.ts +52 -0
  674. package/src/modules/sales/command/updateSalesPriceRule.generated.ts +6 -0
  675. package/src/modules/sales/command/updateSalesPriceRule.test.ts +95 -0
  676. package/src/modules/sales/command/updateSalesPriceRule.ts +81 -0
  677. package/src/modules/sales/command/updateShipment.generated.ts +6 -0
  678. package/src/modules/sales/command/updateShipment.test.ts +78 -0
  679. package/src/modules/sales/command/updateShipment.ts +84 -0
  680. package/src/modules/sales/db/.gitkeep +0 -0
  681. package/src/modules/sales/db/channel.ts +43 -0
  682. package/src/modules/sales/db/channelOrder.ts +109 -0
  683. package/src/modules/sales/db/channelOrderLine.ts +84 -0
  684. package/src/modules/sales/db/listing.ts +81 -0
  685. package/src/modules/sales/db/salesCreditNote.ts +63 -0
  686. package/src/modules/sales/db/salesCreditNoteLine.ts +49 -0
  687. package/src/modules/sales/db/salesInvoice.ts +95 -0
  688. package/src/modules/sales/db/salesInvoiceLine.ts +64 -0
  689. package/src/modules/sales/db/salesOrder.ts +103 -0
  690. package/src/modules/sales/db/salesOrderLine.ts +82 -0
  691. package/src/modules/sales/db/salesPaymentTerm.ts +46 -0
  692. package/src/modules/sales/db/salesPriceList.ts +61 -0
  693. package/src/modules/sales/db/salesPriceRule.ts +96 -0
  694. package/src/modules/sales/db/shipment.ts +78 -0
  695. package/src/modules/sales/db/shipmentLine.ts +58 -0
  696. package/src/modules/sales/db/syncJob.ts +70 -0
  697. package/src/modules/sales/docs/commands/ActivateChannel.md +42 -0
  698. package/src/modules/sales/docs/commands/ActivateListing.md +46 -0
  699. package/src/modules/sales/docs/commands/ActivateSalesPaymentTerm.md +41 -0
  700. package/src/modules/sales/docs/commands/ActivateSalesPriceList.md +39 -0
  701. package/src/modules/sales/docs/commands/ActivateSalesPriceRule.md +48 -0
  702. package/src/modules/sales/docs/commands/CancelChannelOrder.md +37 -0
  703. package/src/modules/sales/docs/commands/CancelSalesInvoice.md +39 -0
  704. package/src/modules/sales/docs/commands/CancelSalesOrder.md +40 -0
  705. package/src/modules/sales/docs/commands/CancelSyncJob.md +36 -0
  706. package/src/modules/sales/docs/commands/CloseSalesOrder.md +39 -0
  707. package/src/modules/sales/docs/commands/ConfirmSalesOrder.md +43 -0
  708. package/src/modules/sales/docs/commands/ConvertChannelOrder.md +44 -0
  709. package/src/modules/sales/docs/commands/CreateChannel.md +40 -0
  710. package/src/modules/sales/docs/commands/CreateListing.md +40 -0
  711. package/src/modules/sales/docs/commands/CreateSalesCreditNote.md +37 -0
  712. package/src/modules/sales/docs/commands/CreateSalesInvoice.md +39 -0
  713. package/src/modules/sales/docs/commands/CreateSalesOrder.md +51 -0
  714. package/src/modules/sales/docs/commands/CreateSalesPaymentTerm.md +38 -0
  715. package/src/modules/sales/docs/commands/CreateSalesPriceList.md +37 -0
  716. package/src/modules/sales/docs/commands/CreateSalesPriceRule.md +46 -0
  717. package/src/modules/sales/docs/commands/CreateShipment.md +38 -0
  718. package/src/modules/sales/docs/commands/DeactivateChannel.md +35 -0
  719. package/src/modules/sales/docs/commands/DeactivateSalesPaymentTerm.md +35 -0
  720. package/src/modules/sales/docs/commands/DeactivateSalesPriceList.md +35 -0
  721. package/src/modules/sales/docs/commands/DeactivateSalesPriceRule.md +35 -0
  722. package/src/modules/sales/docs/commands/IssueSalesCreditNote.md +38 -0
  723. package/src/modules/sales/docs/commands/IssueSalesInvoice.md +43 -0
  724. package/src/modules/sales/docs/commands/MarkChannelOrderException.md +37 -0
  725. package/src/modules/sales/docs/commands/PauseListing.md +36 -0
  726. package/src/modules/sales/docs/commands/PlaceSalesOrderOnCreditHold.md +41 -0
  727. package/src/modules/sales/docs/commands/PostShipment.md +41 -0
  728. package/src/modules/sales/docs/commands/RecordChannelOrder.md +45 -0
  729. package/src/modules/sales/docs/commands/RejectSalesOrder.md +41 -0
  730. package/src/modules/sales/docs/commands/ReleaseSalesOrderCreditHold.md +36 -0
  731. package/src/modules/sales/docs/commands/RetireListing.md +36 -0
  732. package/src/modules/sales/docs/commands/RetrySyncJob.md +39 -0
  733. package/src/modules/sales/docs/commands/SendSalesInvoice.md +38 -0
  734. package/src/modules/sales/docs/commands/StartSyncJob.md +39 -0
  735. package/src/modules/sales/docs/commands/SubmitSalesOrder.md +43 -0
  736. package/src/modules/sales/docs/commands/UpdateChannel.md +43 -0
  737. package/src/modules/sales/docs/commands/UpdateListing.md +38 -0
  738. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +38 -0
  739. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +38 -0
  740. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +45 -0
  741. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +41 -0
  742. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +40 -0
  743. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +49 -0
  744. package/src/modules/sales/docs/commands/UpdateShipment.md +38 -0
  745. package/src/modules/sales/docs/commands/bin/rm.md +52 -0
  746. package/src/modules/sales/docs/commands/opt/homebrew/bin/codex.md +52 -0
  747. package/src/modules/sales/docs/commands/opt/homebrew/bin/ps2ps2.md +52 -0
  748. package/src/modules/sales/docs/commands/opt/homebrew/bin/rg.md +52 -0
  749. package/src/modules/sales/docs/commands/opt/homebrew/bin/sha384sum.md +52 -0
  750. package/src/modules/sales/docs/commands/opt/homebrew/opt/libpq/bin/pg_combinebackup.md +52 -0
  751. package/src/modules/sales/docs/commands/sbin/mount_msdos.md +52 -0
  752. package/src/modules/sales/docs/commands/sbin/mount_nfs.md +52 -0
  753. package/src/modules/sales/docs/commands/usr/bin/cupstestppd.md +52 -0
  754. package/src/modules/sales/docs/commands/usr/bin/enc2xs.md +52 -0
  755. package/src/modules/sales/docs/commands/usr/bin/hash.md +52 -0
  756. package/src/modules/sales/docs/commands/usr/bin/jarsigner.md +52 -0
  757. package/src/modules/sales/docs/commands/usr/bin/mpsgraphtool.md +52 -0
  758. package/src/modules/sales/docs/commands/usr/bin/nano.md +52 -0
  759. package/src/modules/sales/docs/commands/usr/bin/pod2html5.34.md +52 -0
  760. package/src/modules/sales/docs/commands/usr/bin/ri.md +52 -0
  761. package/src/modules/sales/docs/commands/usr/bin/rs.md +52 -0
  762. package/src/modules/sales/docs/commands/usr/bin/trustcachectl.md +52 -0
  763. package/src/modules/sales/docs/commands/usr/sbin/htpasswd.md +52 -0
  764. package/src/modules/sales/docs/commands/usr/sbin/lpadmin.md +52 -0
  765. package/src/modules/sales/docs/commands/usr/sbin/setkey.md +52 -0
  766. package/src/modules/sales/docs/features/channel-listing-management.md +68 -0
  767. package/src/modules/sales/docs/features/channel-order-sync.md +78 -0
  768. package/src/modules/sales/docs/features/customer-invoicing.md +89 -0
  769. package/src/modules/sales/docs/features/customer-sales-pricing.md +72 -0
  770. package/src/modules/sales/docs/features/sales-order-lifecycle.md +96 -0
  771. package/src/modules/sales/docs/features/sales-payment-terms.md +67 -0
  772. package/src/modules/sales/docs/features/shipment-fulfillment.md +71 -0
  773. package/src/modules/sales/docs/models/Channel.md +48 -0
  774. package/src/modules/sales/docs/models/ChannelOrder.md +56 -0
  775. package/src/modules/sales/docs/models/ChannelOrderLine.md +39 -0
  776. package/src/modules/sales/docs/models/Listing.md +56 -0
  777. package/src/modules/sales/docs/models/SalesCreditNote.md +47 -0
  778. package/src/modules/sales/docs/models/SalesCreditNoteLine.md +37 -0
  779. package/src/modules/sales/docs/models/SalesInvoice.md +55 -0
  780. package/src/modules/sales/docs/models/SalesInvoiceLine.md +39 -0
  781. package/src/modules/sales/docs/models/SalesOrder.md +79 -0
  782. package/src/modules/sales/docs/models/SalesOrderLine.md +42 -0
  783. package/src/modules/sales/docs/models/SalesPaymentTerm.md +53 -0
  784. package/src/modules/sales/docs/models/SalesPriceList.md +50 -0
  785. package/src/modules/sales/docs/models/SalesPriceRule.md +51 -0
  786. package/src/modules/sales/docs/models/Shipment.md +49 -0
  787. package/src/modules/sales/docs/models/ShipmentLine.md +38 -0
  788. package/src/modules/sales/docs/models/SyncJob.md +53 -0
  789. package/src/modules/sales/docs/queries/CalculateInvoiceDueSchedule.md +37 -0
  790. package/src/modules/sales/docs/queries/GetApplicableSalesPrice.md +38 -0
  791. package/src/modules/sales/docs/queries/GetChannel.md +34 -0
  792. package/src/modules/sales/docs/queries/GetChannelOrder.md +34 -0
  793. package/src/modules/sales/docs/queries/GetListing.md +34 -0
  794. package/src/modules/sales/docs/queries/GetListingByExternalIdentifier.md +35 -0
  795. package/src/modules/sales/docs/queries/GetSalesCreditNote.md +34 -0
  796. package/src/modules/sales/docs/queries/GetSalesInvoice.md +34 -0
  797. package/src/modules/sales/docs/queries/GetSalesOrder.md +36 -0
  798. package/src/modules/sales/docs/queries/GetSalesPaymentTerm.md +34 -0
  799. package/src/modules/sales/docs/queries/GetSalesPriceList.md +34 -0
  800. package/src/modules/sales/docs/queries/GetShipment.md +34 -0
  801. package/src/modules/sales/docs/queries/GetSyncJob.md +34 -0
  802. package/src/modules/sales/docs/queries/ListChannelOrdersByStatus.md +34 -0
  803. package/src/modules/sales/docs/queries/ListChannels.md +33 -0
  804. package/src/modules/sales/docs/queries/ListListingsByChannel.md +33 -0
  805. package/src/modules/sales/docs/queries/ListSalesCreditNotesByInvoice.md +33 -0
  806. package/src/modules/sales/docs/queries/ListSalesInvoicesBySalesOrder.md +33 -0
  807. package/src/modules/sales/docs/queries/ListSalesOrders.md +36 -0
  808. package/src/modules/sales/docs/queries/ListSalesPaymentTerms.md +33 -0
  809. package/src/modules/sales/docs/queries/ListSalesPriceLists.md +33 -0
  810. package/src/modules/sales/docs/queries/ListSalesPriceRulesByPriceList.md +33 -0
  811. package/src/modules/sales/docs/queries/ListShipmentsBySalesOrder.md +33 -0
  812. package/src/modules/sales/docs/queries/ListSyncJobs.md +34 -0
  813. package/src/modules/sales/executor/.gitkeep +0 -0
  814. package/src/modules/sales/generated/.gitkeep +0 -0
  815. package/src/modules/sales/generated/enums.ts +119 -0
  816. package/src/modules/sales/generated/kysely-tailordb.ts +332 -0
  817. package/src/modules/sales/index.ts +2 -0
  818. package/src/modules/sales/lib/_db_deps.ts +67 -0
  819. package/src/modules/sales/lib/domain.ts +354 -0
  820. package/src/modules/sales/lib/errors.generated.ts +417 -0
  821. package/src/modules/sales/lib/permissions.generated.ts +53 -0
  822. package/src/modules/sales/lib/repository.ts +137 -0
  823. package/src/modules/sales/lib/types.ts +105 -0
  824. package/src/modules/sales/module.ts +418 -0
  825. package/src/modules/sales/permissions.ts +3 -0
  826. package/src/modules/sales/query/.gitkeep +0 -0
  827. package/src/modules/sales/query/calculateInvoiceDueSchedule.generated.ts +5 -0
  828. package/src/modules/sales/query/calculateInvoiceDueSchedule.test.ts +107 -0
  829. package/src/modules/sales/query/calculateInvoiceDueSchedule.ts +35 -0
  830. package/src/modules/sales/query/getApplicableSalesPrice.generated.ts +5 -0
  831. package/src/modules/sales/query/getApplicableSalesPrice.test.ts +110 -0
  832. package/src/modules/sales/query/getApplicableSalesPrice.ts +81 -0
  833. package/src/modules/sales/query/getChannel.generated.ts +5 -0
  834. package/src/modules/sales/query/getChannel.test.ts +39 -0
  835. package/src/modules/sales/query/getChannel.ts +15 -0
  836. package/src/modules/sales/query/getChannelOrder.generated.ts +5 -0
  837. package/src/modules/sales/query/getChannelOrder.test.ts +50 -0
  838. package/src/modules/sales/query/getChannelOrder.ts +29 -0
  839. package/src/modules/sales/query/getListing.generated.ts +5 -0
  840. package/src/modules/sales/query/getListing.test.ts +39 -0
  841. package/src/modules/sales/query/getListing.ts +15 -0
  842. package/src/modules/sales/query/getListingByExternalIdentifier.generated.ts +5 -0
  843. package/src/modules/sales/query/getListingByExternalIdentifier.test.ts +61 -0
  844. package/src/modules/sales/query/getListingByExternalIdentifier.ts +23 -0
  845. package/src/modules/sales/query/getSalesCreditNote.generated.ts +5 -0
  846. package/src/modules/sales/query/getSalesCreditNote.test.ts +44 -0
  847. package/src/modules/sales/query/getSalesCreditNote.ts +14 -0
  848. package/src/modules/sales/query/getSalesInvoice.generated.ts +5 -0
  849. package/src/modules/sales/query/getSalesInvoice.test.ts +44 -0
  850. package/src/modules/sales/query/getSalesInvoice.ts +14 -0
  851. package/src/modules/sales/query/getSalesOrder.generated.ts +5 -0
  852. package/src/modules/sales/query/getSalesOrder.test.ts +57 -0
  853. package/src/modules/sales/query/getSalesOrder.ts +20 -0
  854. package/src/modules/sales/query/getSalesPaymentTerm.generated.ts +5 -0
  855. package/src/modules/sales/query/getSalesPaymentTerm.test.ts +44 -0
  856. package/src/modules/sales/query/getSalesPaymentTerm.ts +24 -0
  857. package/src/modules/sales/query/getSalesPriceList.generated.ts +5 -0
  858. package/src/modules/sales/query/getSalesPriceList.test.ts +39 -0
  859. package/src/modules/sales/query/getSalesPriceList.ts +15 -0
  860. package/src/modules/sales/query/getShipment.generated.ts +5 -0
  861. package/src/modules/sales/query/getShipment.test.ts +44 -0
  862. package/src/modules/sales/query/getShipment.ts +12 -0
  863. package/src/modules/sales/query/getSyncJob.generated.ts +5 -0
  864. package/src/modules/sales/query/getSyncJob.test.ts +43 -0
  865. package/src/modules/sales/query/getSyncJob.ts +24 -0
  866. package/src/modules/sales/query/listChannelOrdersByStatus.generated.ts +5 -0
  867. package/src/modules/sales/query/listChannelOrdersByStatus.test.ts +58 -0
  868. package/src/modules/sales/query/listChannelOrdersByStatus.ts +53 -0
  869. package/src/modules/sales/query/listChannels.generated.ts +5 -0
  870. package/src/modules/sales/query/listChannels.test.ts +36 -0
  871. package/src/modules/sales/query/listChannels.ts +39 -0
  872. package/src/modules/sales/query/listListingsByChannel.generated.ts +5 -0
  873. package/src/modules/sales/query/listListingsByChannel.test.ts +36 -0
  874. package/src/modules/sales/query/listListingsByChannel.ts +39 -0
  875. package/src/modules/sales/query/listSalesCreditNotesByInvoice.generated.ts +5 -0
  876. package/src/modules/sales/query/listSalesCreditNotesByInvoice.test.ts +36 -0
  877. package/src/modules/sales/query/listSalesCreditNotesByInvoice.ts +42 -0
  878. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.generated.ts +5 -0
  879. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.test.ts +36 -0
  880. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.ts +42 -0
  881. package/src/modules/sales/query/listSalesOrders.generated.ts +5 -0
  882. package/src/modules/sales/query/listSalesOrders.test.ts +79 -0
  883. package/src/modules/sales/query/listSalesOrders.ts +67 -0
  884. package/src/modules/sales/query/listSalesPaymentTerms.generated.ts +5 -0
  885. package/src/modules/sales/query/listSalesPaymentTerms.test.ts +36 -0
  886. package/src/modules/sales/query/listSalesPaymentTerms.ts +42 -0
  887. package/src/modules/sales/query/listSalesPriceLists.generated.ts +5 -0
  888. package/src/modules/sales/query/listSalesPriceLists.test.ts +36 -0
  889. package/src/modules/sales/query/listSalesPriceLists.ts +39 -0
  890. package/src/modules/sales/query/listSalesPriceRulesByPriceList.generated.ts +5 -0
  891. package/src/modules/sales/query/listSalesPriceRulesByPriceList.test.ts +39 -0
  892. package/src/modules/sales/query/listSalesPriceRulesByPriceList.ts +47 -0
  893. package/src/modules/sales/query/listShipmentsBySalesOrder.generated.ts +5 -0
  894. package/src/modules/sales/query/listShipmentsBySalesOrder.test.ts +36 -0
  895. package/src/modules/sales/query/listShipmentsBySalesOrder.ts +36 -0
  896. package/src/modules/sales/query/listSyncJobs.generated.ts +5 -0
  897. package/src/modules/sales/query/listSyncJobs.test.ts +50 -0
  898. package/src/modules/sales/query/listSyncJobs.ts +47 -0
  899. package/src/modules/sales/tailor.config.ts +13 -0
  900. package/src/modules/sales/tailor.d.ts +13 -0
  901. package/src/modules/sales/testing/commandTestUtils.ts +35 -0
  902. package/src/modules/sales/testing/fixtures.ts +520 -0
  903. package/src/modules/user-management/command/.gitkeep +0 -0
  904. package/src/modules/user-management/db/.gitkeep +0 -0
  905. package/src/modules/user-management/executor/.gitkeep +0 -0
  906. package/src/modules/user-management/generated/.gitkeep +0 -0
  907. package/src/modules/user-management/lib/errors.generated.ts +0 -5
  908. package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -2
  909. package/src/modules/user-management/permissions.ts +3 -0
  910. package/src/modules/user-management/query/.gitkeep +0 -0
  911. package/src/modules/user-management/query/listRolePermissionsByRole.generated.ts +5 -0
  912. package/src/modules/user-management/query/listRolePermissionsByRole.test.ts +20 -0
  913. package/src/modules/user-management/query/listRolePermissionsByRole.ts +28 -0
  914. package/src/modules/user-management/query/listUserRolesByUser.generated.ts +5 -0
  915. package/src/modules/user-management/query/listUserRolesByUser.test.ts +20 -0
  916. package/src/modules/user-management/query/listUserRolesByUser.ts +28 -0
  917. package/src/schemas.ts +6 -6
  918. package/src/shared/defineCommand.ts +1 -1
  919. package/src/shared/entityTypes.ts +1 -1
  920. package/src/shared/uuidv5.test.ts +18 -0
  921. package/src/shared/uuidv5.ts +23 -0
  922. package/src/testing/index.ts +1 -1
  923. package/templates/scaffold/app/backend/package.json +1 -3
  924. package/templates/scaffold/app/backend/seed/exec.mjs +7 -5
  925. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +0 -11
  926. package/templates/scaffold/module/__dot__gitignore +3 -0
  927. package/templates/scaffold/module/eslint.config.js +31 -0
  928. package/templates/scaffold/module/generated/kysely-tailordb.ts +3 -0
  929. package/templates/scaffold/module/lib/types.ts +1 -6
  930. package/templates/scaffold/module/package.json +26 -0
  931. package/templates/scaffold/module/seed/index.ts +19 -0
  932. package/templates/scaffold/module/tsconfig.json +16 -0
  933. /package/schemas/{app-compose → app}/actors.yml +0 -0
  934. /package/schemas/{app-compose → app}/business-flow.yml +0 -0
  935. /package/schemas/{app-compose → app}/requirements.yml +0 -0
  936. /package/schemas/{app-compose → app}/resolver.yml +0 -0
  937. /package/schemas/{app-compose → app}/screen.yml +0 -0
  938. /package/schemas/{app-compose → app}/story.yml +0 -0
  939. /package/src/modules/{purchase → inventory/command}/.gitkeep +0 -0
  940. /package/{templates/scaffold/module/generated → src/modules/inventory/db}/.gitkeep +0 -0
@@ -0,0 +1,49 @@
1
+ # CancelInventoryCount
2
+
3
+ ## Overview
4
+
5
+ cancelInventoryCount cancels an inventory count session that is in PLANNED or IN_PROGRESS status. Completed counts cannot be cancelled. Cancellation unfreezes any frozen stock movements for the counted locations and discards all count line data.
6
+
7
+ ## Business Rules
8
+
9
+ - Inventory count must exist
10
+ - Inventory count must be in PLANNED or IN_PROGRESS status (not COMPLETED or already CANCELLED)
11
+ - Cancellation unfreezes stock movements if the count had frozen them
12
+ - All count line data is discarded upon cancellation
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive cancel request] --> B{Count exists?}
19
+ B -->|No| C[Return error: COUNT_NOT_FOUND]
20
+ B -->|Yes| D{Status is COMPLETED?}
21
+ D -->|Yes| E[Return error: COUNT_ALREADY_COMPLETED]
22
+ D -->|No| F{Status is CANCELLED?}
23
+ F -->|Yes| G[Return error: COUNT_ALREADY_CANCELLED]
24
+ F -->|No| H{Count had frozen stock?}
25
+ H -->|Yes| I[Unfreeze stock movements for counted locations]
26
+ I --> J[Update status to CANCELLED]
27
+ H -->|No| J
28
+ J --> K[Return cancelled count]
29
+ ```
30
+
31
+ ## External Dependencies
32
+
33
+ - None
34
+
35
+ ## Error Scenarios
36
+
37
+ - **COUNT_NOT_FOUND**: Referenced inventory count does not exist
38
+ - **COUNT_ALREADY_COMPLETED**: Inventory count has already been completed and cannot be cancelled
39
+ - **COUNT_ALREADY_CANCELLED**: Inventory count has already been cancelled
40
+
41
+ ## Test Cases
42
+
43
+ - returns error when not found
44
+ - returns error when COMPLETED
45
+ - returns error when already cancelled
46
+ - cancels PLANNED count
47
+ - cancels IN_PROGRESS count
48
+ - unfreezes stock movements when count had frozen them
49
+ - discards count line data
@@ -0,0 +1,44 @@
1
+ # CancelStockMovement
2
+
3
+ ## Overview
4
+
5
+ cancelStockMovement cancels a stock movement that is in DRAFT or CONFIRMED status. Movements that have already been executed (DONE) cannot be cancelled. Cancellation does not affect any stock levels since stock is only modified during execution.
6
+
7
+ ## Business Rules
8
+
9
+ - Stock movement must exist
10
+ - Stock movement must be in DRAFT or CONFIRMED status (not DONE or already CANCELLED)
11
+ - Cancellation does not affect stock levels
12
+
13
+ ## Process Flow
14
+
15
+ ```mermaid
16
+ flowchart TD
17
+ A[Receive cancel request] --> B{Movement exists?}
18
+ B -->|No| C[Return error: STOCK_MOVEMENT_NOT_FOUND]
19
+ B -->|Yes| D{Status is DONE?}
20
+ D -->|Yes| E[Return error: STOCK_MOVEMENT_ALREADY_DONE]
21
+ D -->|No| F{Status is CANCELLED?}
22
+ F -->|Yes| G[Return error: STOCK_MOVEMENT_ALREADY_CANCELLED]
23
+ F -->|No| H[Update status to CANCELLED]
24
+ H --> I[Return cancelled movement]
25
+ ```
26
+
27
+ ## External Dependencies
28
+
29
+ - None
30
+
31
+ ## Error Scenarios
32
+
33
+ - **STOCK_MOVEMENT_NOT_FOUND**: Referenced stock movement does not exist
34
+ - **STOCK_MOVEMENT_ALREADY_DONE**: Stock movement has already been executed and cannot be cancelled
35
+ - **STOCK_MOVEMENT_ALREADY_CANCELLED**: Stock movement has already been cancelled
36
+
37
+ ## Test Cases
38
+
39
+ - returns error when not found
40
+ - returns error when DONE
41
+ - returns error when already cancelled
42
+ - cancels DRAFT movement
43
+ - cancels CONFIRMED movement
44
+ - does not affect stock levels
@@ -0,0 +1,47 @@
1
+ # CompleteInventoryCount
2
+
3
+ ## Overview
4
+
5
+ completeInventoryCount completes the inventory count process, transitioning it from IN_PROGRESS to COMPLETED status. All count lines must be in a terminal status (APPROVED or REJECTED) before the count can be completed. If stock was frozen during the count, it is unfrozen upon completion.
6
+
7
+ ## Business Rules
8
+
9
+ - Count must be in IN_PROGRESS status
10
+ - All count lines must be in terminal status (APPROVED or REJECTED)
11
+ - Unfreezes stock movements if they were frozen during the count
12
+ - Count becomes immutable after completion
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive complete request] --> B{Count exists?}
19
+ B -->|No| C[Return error: COUNT_NOT_FOUND]
20
+ B -->|Yes| D{Status is IN_PROGRESS?}
21
+ D -->|No| E[Return error: COUNT_NOT_IN_PROGRESS]
22
+ D -->|Yes| F{All lines resolved?}
23
+ F -->|No| G[Return error: UNRESOLVED_COUNT_LINES]
24
+ F -->|Yes| H{Stock was frozen?}
25
+ H -->|Yes| I[Unfreeze stock movements]
26
+ I --> J[Update status to COMPLETED]
27
+ H -->|No| J
28
+ J --> K[Return completed count]
29
+ ```
30
+
31
+ ## External Dependencies
32
+
33
+ - None
34
+
35
+ ## Error Scenarios
36
+
37
+ - **COUNT_NOT_FOUND**: Referenced count does not exist
38
+ - **COUNT_NOT_IN_PROGRESS**: Count is not in IN_PROGRESS status
39
+ - **UNRESOLVED_COUNT_LINES**: One or more count lines are not in a terminal status (APPROVED or REJECTED)
40
+
41
+ ## Test Cases
42
+
43
+ - returns error when not found
44
+ - returns error when not in progress
45
+ - returns error when unresolved lines exist
46
+ - completes count
47
+ - unfreezes stock after completion
@@ -0,0 +1,72 @@
1
+ # ConfirmInventoryAdjustment
2
+
3
+ ## Overview
4
+
5
+ confirmInventoryAdjustment confirms an inventory adjustment, generating a stock movement and updating on-hand quantities and valuation. This command can be called from either DRAFT (bypassing the approval workflow) or APPROVED status. Once confirmed, the adjustment is immutable. The behavior varies by adjustmentType:
6
+
7
+ - **CORRECTION**: Generates a stock movement to/from a virtual adjustment location.
8
+ - **SCRAP**: Generates a stock movement to a virtual scrap location. Updates lot stock levels if a lot is specified. Transitions serial number to SCRAPPED state if a serial number is specified.
9
+
10
+ ## Business Rules
11
+
12
+ - Adjustment must exist and be in DRAFT or APPROVED status
13
+ - For negative adjustments: on-hand quantity must be sufficient (unless the organization permits negative stock)
14
+ - CORRECTION: generates a stock movement to/from virtual adjustment location
15
+ - SCRAP: generates a stock movement to virtual scrap location
16
+ - SCRAP with lot: updates lot stock levels
17
+ - SCRAP with serial number: transitions serial to SCRAPPED state
18
+ - Updates on-hand quantity on the StockLevel record
19
+ - Updates inventory valuation
20
+ - Adjustment becomes immutable after confirmation
21
+
22
+ ## Process Flow
23
+
24
+ ```mermaid
25
+ flowchart TD
26
+ A[Receive confirm request] --> B{Adjustment exists?}
27
+ B -->|No| C[Return error: ADJUSTMENT_NOT_FOUND]
28
+ B -->|Yes| D{Status is DRAFT or APPROVED?}
29
+ D -->|No| E[Return error: ADJUSTMENT_INVALID_STATUS]
30
+ D -->|Yes| F{Sufficient on-hand stock?}
31
+ F -->|No| H[Return error: INSUFFICIENT_ON_HAND]
32
+ F -->|Yes| I{adjustmentType?}
33
+ I -->|CORRECTION| J[Generate stock movement to/from virtual adjustment location]
34
+ I -->|SCRAP| K[Generate stock movement to virtual scrap location]
35
+ K --> K1{Lot specified?}
36
+ K1 -->|Yes| K2[Update lot stock levels]
37
+ K2 --> K3{Serial specified?}
38
+ K1 -->|No| K3
39
+ K3 -->|Yes| K4[Transition serial to SCRAPPED]
40
+ K3 -->|No| L
41
+ K4 --> L
42
+ J --> L[Update on-hand quantity]
43
+ L --> M[Update inventory valuation]
44
+ M --> N[Update status to CONFIRMED]
45
+ N --> O[Return confirmed adjustment]
46
+ ```
47
+
48
+ ## External Dependencies
49
+
50
+ - None (internal models: [StockMovement](../models/StockMovement.md), [StockLevel](../models/StockLevel.md), [LotStockLevel](../models/LotStockLevel.md), [SerialNumber](../models/SerialNumber.md), [ItemValuation](../models/ItemValuation.md))
51
+
52
+ ## Error Scenarios
53
+
54
+ - **ADJUSTMENT_NOT_FOUND**: Referenced adjustment does not exist
55
+ - **ADJUSTMENT_INVALID_STATUS**: Adjustment is not in DRAFT or APPROVED status
56
+ - **INSUFFICIENT_ON_HAND**: Negative adjustment would reduce on-hand below zero
57
+
58
+ ## Test Cases
59
+
60
+ - returns error when not found
61
+ - returns error when already confirmed
62
+ - returns error when negative adjustment exceeds on-hand
63
+ - confirms CORRECTION from DRAFT (no approval)
64
+ - confirms CORRECTION from APPROVED
65
+ - confirms SCRAP from DRAFT
66
+ - confirms SCRAP from APPROVED
67
+ - CORRECTION generates stock movement to virtual adjustment location
68
+ - SCRAP generates stock movement to virtual scrap location
69
+ - SCRAP updates lot stock when applicable
70
+ - SCRAP transitions serial to SCRAPPED when applicable
71
+ - updates on-hand quantity
72
+ - updates inventory valuation
@@ -0,0 +1,43 @@
1
+ # ConfirmStockMovement
2
+
3
+ ## Overview
4
+
5
+ confirmStockMovement transitions a stock movement from DRAFT to CONFIRMED status. All move lines are revalidated before confirmation to ensure data integrity. A confirmed movement is ready for execution.
6
+
7
+ ## Business Rules
8
+
9
+ - Stock movement must exist
10
+ - Stock movement must be in DRAFT status
11
+ - All move lines must pass validation (items active, locations valid, quantities valid)
12
+
13
+ ## Process Flow
14
+
15
+ ```mermaid
16
+ flowchart TD
17
+ A[Receive confirm request] --> B{Movement exists?}
18
+ B -->|No| C[Return error: STOCK_MOVEMENT_NOT_FOUND]
19
+ B -->|Yes| D{Status is DRAFT?}
20
+ D -->|No| E[Return error: STOCK_MOVEMENT_NOT_DRAFT]
21
+ D -->|Yes| F{All lines valid?}
22
+ F -->|No| G[Return validation error]
23
+ F -->|Yes| H[Update status to CONFIRMED]
24
+ H --> I[Return confirmed movement]
25
+ ```
26
+
27
+ ## External Dependencies
28
+
29
+ - None
30
+
31
+ ## Error Scenarios
32
+
33
+ - **STOCK_MOVEMENT_NOT_FOUND**: Referenced stock movement does not exist
34
+ - **STOCK_MOVEMENT_NOT_DRAFT**: Stock movement is not in DRAFT status
35
+
36
+ ## Test Cases
37
+
38
+ - returns error when not found
39
+ - returns error when not DRAFT
40
+ - returns error when no move lines
41
+ - returns error when item not active
42
+ - returns error when destination location not found
43
+ - confirms valid movement
@@ -0,0 +1,75 @@
1
+ # CreateInventoryAdjustment
2
+
3
+ ## Overview
4
+
5
+ createInventoryAdjustment creates a new inventory adjustment record in DRAFT status. The `adjustmentType` determines the behavior:
6
+
7
+ - **CORRECTION** (default): Manual corrections to on-hand quantities. quantityDelta can be positive or negative.
8
+ - **SCRAP**: Controlled disposal of unusable stock. quantityDelta must be negative.
9
+
10
+ ## Business Rules
11
+
12
+ - adjustmentType is required (CORRECTION or SCRAP, defaults to CORRECTION)
13
+ - itemId is required and must reference an existing item
14
+ - storageLocationId is required and must reference an existing storage location
15
+ - quantityDelta is required
16
+ - For CORRECTION: quantityDelta can be positive or negative
17
+ - For SCRAP: quantityDelta must be negative
18
+ - reasonCode is required
19
+ - inventoryCountId is optional (links adjustment to a specific count, CORRECTION only)
20
+ - lotId is optional (must reference an existing lot if provided)
21
+ - serialNumberId is optional (must reference an existing serial number if provided)
22
+ - Adjustment is created in DRAFT status
23
+
24
+ ## Process Flow
25
+
26
+ ```mermaid
27
+ flowchart TD
28
+ A[Receive create request] --> B{Item exists?}
29
+ B -->|No| C[Return error: ITEM_NOT_FOUND]
30
+ B -->|Yes| D{Location exists?}
31
+ D -->|No| E[Return error: STORAGE_LOCATION_NOT_FOUND]
32
+ D -->|Yes| F{reasonCode provided?}
33
+ F -->|No| G[Return error: REASON_CODE_REQUIRED]
34
+ F -->|Yes| FA{adjustmentType is SCRAP?}
35
+ FA -->|Yes| FB{quantityDelta negative?}
36
+ FB -->|No| FC[Return error: SCRAP_QUANTITY_MUST_BE_NEGATIVE]
37
+ FB -->|Yes| H
38
+ FA -->|No| H{lotId provided?}
39
+ H -->|Yes| I{Lot exists?}
40
+ I -->|No| J[Return error: LOT_NOT_FOUND]
41
+ I -->|Yes| K{serialNumberId provided?}
42
+ H -->|No| K
43
+ K -->|Yes| L{Serial number exists?}
44
+ L -->|No| M[Return error: SERIAL_NUMBER_NOT_FOUND]
45
+ L -->|Yes| N[Create adjustment in DRAFT]
46
+ K -->|No| N
47
+ N --> O[Return created adjustment]
48
+ ```
49
+
50
+ ## External Dependencies
51
+
52
+ - [item-management::Item](../../../item-management/docs/models/Item.md) - Validates that the referenced item exists
53
+
54
+ ## Error Scenarios
55
+
56
+ - **ITEM_NOT_FOUND**: Referenced item does not exist
57
+ - **STORAGE_LOCATION_NOT_FOUND**: Referenced storage location does not exist
58
+ - **REASON_CODE_REQUIRED**: No reason code was provided
59
+ - **SCRAP_QUANTITY_MUST_BE_NEGATIVE**: SCRAP type adjustment must have a negative quantityDelta
60
+ - **LOT_NOT_FOUND**: Referenced lot does not exist
61
+ - **SERIAL_NUMBER_NOT_FOUND**: Referenced serial number does not exist
62
+
63
+ ## Test Cases
64
+
65
+ - returns error when item not found
66
+ - returns error when location not found
67
+ - returns error when reason code missing
68
+ - returns error when SCRAP type with positive quantityDelta
69
+ - returns error when lot not found
70
+ - returns error when serial number not found
71
+ - creates CORRECTION adjustment with positive quantityDelta
72
+ - creates CORRECTION adjustment with negative quantityDelta
73
+ - creates SCRAP adjustment with negative quantityDelta
74
+ - creates adjustment linked to inventory count
75
+ - defaults adjustmentType to CORRECTION when not specified
@@ -0,0 +1,49 @@
1
+ # CreateInventoryCount
2
+
3
+ ## Overview
4
+
5
+ createInventoryCount creates a new inventory count document in PLANNED status. Inventory counts are used to verify physical stock against system records. Counts can be full (entire warehouse) or cycle (specific storage locations).
6
+
7
+ ## Business Rules
8
+
9
+ - countType is required and must be one of: FULL, CYCLE
10
+ - Location scope is required — either warehouseId or storageLocationId must be specified
11
+ - plannedDate is required
12
+ - Count is created in PLANNED status
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive create request] --> B{Valid countType?}
19
+ B -->|No| C[Return error: INVALID_COUNT_TYPE]
20
+ B -->|Yes| D{warehouseId provided?}
21
+ D -->|Yes| E{Warehouse exists?}
22
+ E -->|No| F[Return error: WAREHOUSE_NOT_FOUND]
23
+ E -->|Yes| G[Create count in PLANNED status]
24
+ D -->|No| H{storageLocationId provided?}
25
+ H -->|Yes| I{Location exists?}
26
+ I -->|No| J[Return error: STORAGE_LOCATION_NOT_FOUND]
27
+ I -->|Yes| G
28
+ H -->|No| K[Return error: location scope required]
29
+ G --> L[Return created count]
30
+ ```
31
+
32
+ ## External Dependencies
33
+
34
+ - None (internal models: [Warehouse](../models/Warehouse.md), [StorageLocation](../models/StorageLocation.md))
35
+
36
+ ## Error Scenarios
37
+
38
+ - **WAREHOUSE_NOT_FOUND**: Referenced warehouse does not exist
39
+ - **STORAGE_LOCATION_NOT_FOUND**: Referenced storage location does not exist
40
+ - **INVALID_COUNT_TYPE**: countType is not FULL or CYCLE
41
+
42
+ ## Test Cases
43
+
44
+ - returns error when warehouse not found
45
+ - returns error when invalid count type
46
+ - returns error when no location scope provided
47
+ - returns error when storage location not found
48
+ - creates full count
49
+ - creates cycle count for specific location
@@ -0,0 +1,40 @@
1
+ # CreateLot
2
+
3
+ ## Overview
4
+
5
+ createLot creates a new lot/batch record for a lot-tracked item. Lots enable tracking of groups of items that share common characteristics such as manufacturing date, expiration date, and supplier lot references. Each lot is uniquely identified by its lot number within a specific item.
6
+
7
+ ## Business Rules
8
+
9
+ - lotNumber is required and must be unique per item
10
+ - itemId is required and must reference an existing item
11
+ - manufactureDate and expirationDate are optional
12
+ - supplierLotReference is optional
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive create request] --> B{Item exists?}
19
+ B -->|No| C[Return error: ITEM_NOT_FOUND]
20
+ B -->|Yes| D{lotNumber unique for item?}
21
+ D -->|No| E[Return error: DUPLICATE_LOT_NUMBER]
22
+ D -->|Yes| F[Create lot record]
23
+ F --> G[Return created lot]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - [item-management::Item](../../../item-management/docs/models/Item.md) - Validates that the referenced item exists
29
+
30
+ ## Error Scenarios
31
+
32
+ - **ITEM_NOT_FOUND**: Referenced item does not exist
33
+ - **DUPLICATE_LOT_NUMBER**: A lot with the same number already exists for this item
34
+
35
+ ## Test Cases
36
+
37
+ - returns error when item not found
38
+ - returns error when lot number already exists for item
39
+ - creates lot with all attributes
40
+ - creates lot with minimal attributes
@@ -0,0 +1,76 @@
1
+ # CreateStockMovement
2
+
3
+ ## Overview
4
+
5
+ createStockMovement creates a new stock movement in DRAFT status with one or more move lines. Stock movements track the physical flow of goods through the warehouse system and support multiple movement types: goods receipt, goods issue, internal transfer, block, and unblock.
6
+
7
+ ## Business Rules
8
+
9
+ - movementType is required and must be one of: GOODS_RECEIPT, GOODS_ISSUE, INTERNAL_TRANSFER, BLOCK, UNBLOCK
10
+ - At least one move line is required
11
+ - Each move line: quantity must be greater than zero
12
+ - Each move line: source location must not equal destination location
13
+ - Each move line: referenced item must be in ACTIVE status
14
+ - BLOCK and UNBLOCK movement types require a reasonCode
15
+ - For lot-tracked items, each move line must specify a lotId
16
+ - Movement is created in DRAFT status
17
+
18
+ ## Process Flow
19
+
20
+ ```mermaid
21
+ flowchart TD
22
+ A[Receive create request] --> B{Valid movementType?}
23
+ B -->|No| C[Return error: INVALID_MOVEMENT_TYPE]
24
+ B -->|Yes| D{Move lines provided?}
25
+ D -->|No| E[Return error: EMPTY_MOVE_LINES]
26
+ D -->|Yes| F{Validate each line}
27
+ F --> G{Item exists and ACTIVE?}
28
+ G -->|No - not found| H[Return error: ITEM_NOT_FOUND]
29
+ G -->|No - inactive| I[Return error: ITEM_NOT_ACTIVE]
30
+ G -->|Yes| J{Quantity > 0?}
31
+ J -->|No| K[Return error: INVALID_QUANTITY]
32
+ J -->|Yes| L{Source ≠ destination?}
33
+ L -->|No| M[Return error: SAME_SOURCE_DESTINATION]
34
+ L -->|Yes| N{Location exists?}
35
+ N -->|No| O[Return error: STORAGE_LOCATION_NOT_FOUND]
36
+ N -->|Yes| P{Lot-tracked item?}
37
+ P -->|Yes| Q{lotId provided?}
38
+ Q -->|No| R[Return error: LOT_REQUIRED_FOR_TRACKED_ITEM]
39
+ Q -->|Yes| S{Block/unblock type?}
40
+ P -->|No| S
41
+ S -->|Yes| T{reasonCode provided?}
42
+ T -->|No| U[Return error: REASON_CODE_REQUIRED]
43
+ T -->|Yes| V[Create movement + lines in DRAFT]
44
+ S -->|No| V
45
+ V --> W[Return created movement]
46
+ ```
47
+
48
+ ## External Dependencies
49
+
50
+ - [item-management::Item](../../../item-management/docs/models/Item.md) - Validates that each referenced item exists, is in ACTIVE status, and checks whether the item is lot-tracked
51
+
52
+ ## Error Scenarios
53
+
54
+ - **INVALID_MOVEMENT_TYPE**: movementType is not a recognized value
55
+ - **EMPTY_MOVE_LINES**: No move lines were provided
56
+ - **ITEM_NOT_FOUND**: Referenced item does not exist
57
+ - **ITEM_NOT_ACTIVE**: Referenced item is not in ACTIVE status
58
+ - **INVALID_QUANTITY**: Move line quantity is zero or negative
59
+ - **SAME_SOURCE_DESTINATION**: Source and destination locations are the same
60
+ - **STORAGE_LOCATION_NOT_FOUND**: Referenced storage location does not exist
61
+ - **REASON_CODE_REQUIRED**: Block or unblock movement type requires a reason code
62
+ - **LOT_REQUIRED_FOR_TRACKED_ITEM**: Move line references a lot-tracked item but no lotId was provided
63
+
64
+ ## Test Cases
65
+
66
+ - returns error when no move lines
67
+ - returns error when invalid movement type
68
+ - returns error when item not found
69
+ - returns error when item not active
70
+ - returns error when quantity is zero or negative
71
+ - returns error when source equals destination
72
+ - returns error when storage location not found
73
+ - returns error when block without reason code
74
+ - creates movement in DRAFT status
75
+ - returns error when lot-tracked item has no lotId
76
+ - creates movement with multiple lines
@@ -0,0 +1,66 @@
1
+ # CreateStorageLocation
2
+
3
+ ## Overview
4
+
5
+ createStorageLocation establishes a new storage location (zone or bin) within a warehouse. Zones are top-level divisions within a warehouse, while bins are subdivisions within a zone. This hierarchy enables granular stock tracking and placement.
6
+
7
+ ## Business Rules
8
+
9
+ - warehouseId is required and must reference an existing ACTIVE warehouse
10
+ - locationType is required and must be either 'zone' or 'bin'
11
+ - For zones: parentId must be null
12
+ - For bins: parentId is required and must reference a zone in the same warehouse
13
+ - Name and code must be unique within the warehouse
14
+ - storageCondition and capacity are optional
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive create request] --> B{Warehouse exists?}
21
+ B -->|No| C[Return error: WAREHOUSE_NOT_FOUND]
22
+ B -->|Yes| D{Warehouse ACTIVE?}
23
+ D -->|No| E[Return error: WAREHOUSE_INACTIVE]
24
+ D -->|Yes| F{Valid locationType?}
25
+ F -->|No| G[Return error: INVALID_LOCATION_TYPE]
26
+ F -->|Yes| H{locationType is bin?}
27
+ H -->|Yes| I{parentId provided?}
28
+ I -->|No| J[Return error: PARENT_ZONE_NOT_FOUND]
29
+ I -->|Yes| K{Parent exists and is a zone?}
30
+ K -->|No - not zone| L[Return error: PARENT_NOT_A_ZONE]
31
+ K -->|No - not found| J
32
+ K -->|Yes| M{Parent in same warehouse?}
33
+ M -->|No| N[Return error: PARENT_IN_DIFFERENT_WAREHOUSE]
34
+ M -->|Yes| O{Name/code unique in warehouse?}
35
+ H -->|No| O
36
+ O -->|No| P[Return error: DUPLICATE_LOCATION_NAME]
37
+ O -->|Yes| Q[Create storage location]
38
+ Q --> R[Return created location]
39
+ ```
40
+
41
+ ## External Dependencies
42
+
43
+ - None (internal warehouse reference via [Warehouse](../models/Warehouse.md))
44
+
45
+ ## Error Scenarios
46
+
47
+ - **WAREHOUSE_NOT_FOUND**: Referenced warehouse does not exist
48
+ - **WAREHOUSE_INACTIVE**: Referenced warehouse is not in ACTIVE status
49
+ - **INVALID_LOCATION_TYPE**: locationType is not 'zone' or 'bin'
50
+ - **PARENT_ZONE_NOT_FOUND**: Bin's parent zone does not exist
51
+ - **PARENT_NOT_A_ZONE**: Parent location is a bin, not a zone
52
+ - **PARENT_IN_DIFFERENT_WAREHOUSE**: Parent zone belongs to a different warehouse
53
+ - **DUPLICATE_LOCATION_NAME**: A location with the same name or code already exists in the warehouse
54
+
55
+ ## Test Cases
56
+
57
+ - returns error when warehouse not found
58
+ - returns error when warehouse inactive
59
+ - returns error when invalid location type
60
+ - returns error when bin has no parent
61
+ - returns error when bin parent is another bin
62
+ - returns error when parent zone is in different warehouse
63
+ - returns error when location name already exists
64
+ - creates zone with null parentId
65
+ - creates bin with parent zone
66
+ - creates location with storage condition
@@ -0,0 +1,45 @@
1
+ # CreateValuationPolicy
2
+
3
+ ## Overview
4
+
5
+ createValuationPolicy creates a new valuation policy that defines the costing method used to calculate inventory value. Supported costing methods are FIFO (First In, First Out), AVCO (Average Cost), and STANDARD_COST (fixed standard cost rate).
6
+
7
+ ## Business Rules
8
+
9
+ - Name is required
10
+ - costingMethod is required and must be one of: FIFO, AVCO, STANDARD_COST
11
+ - standardCostRate is required when costingMethod is STANDARD_COST
12
+ - standardCostRate is not required for FIFO or AVCO methods
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive create request] --> B{Name provided?}
19
+ B -->|No| C[Return error: name required]
20
+ B -->|Yes| D{Valid costingMethod?}
21
+ D -->|No| E[Return error: INVALID_COSTING_METHOD]
22
+ D -->|Yes| F{costingMethod is STANDARD_COST?}
23
+ F -->|Yes| G{standardCostRate provided?}
24
+ G -->|No| H[Return error: STANDARD_COST_RATE_REQUIRED]
25
+ G -->|Yes| I[Create valuation policy]
26
+ F -->|No| I
27
+ I --> J[Return created policy]
28
+ ```
29
+
30
+ ## External Dependencies
31
+
32
+ - None
33
+
34
+ ## Error Scenarios
35
+
36
+ - **INVALID_COSTING_METHOD**: costingMethod is not a recognized value (must be FIFO, AVCO, or STANDARD_COST)
37
+ - **STANDARD_COST_RATE_REQUIRED**: costingMethod is STANDARD_COST but no standardCostRate was provided
38
+
39
+ ## Test Cases
40
+
41
+ - returns error when invalid costing method
42
+ - returns error when standard cost without rate
43
+ - creates FIFO policy
44
+ - creates AVCO policy
45
+ - creates standard cost policy with rate
@@ -0,0 +1,47 @@
1
+ # CreateWarehouse
2
+
3
+ ## Overview
4
+
5
+ createWarehouse establishes a new warehouse linked to an organizational site. The warehouse is created in ACTIVE status and is immediately available for storage location creation and stock operations. Each warehouse must have a unique name within its associated site.
6
+
7
+ ## Business Rules
8
+
9
+ - Name is required and must be unique within the same site
10
+ - siteId is required and must reference an existing ACTIVE site
11
+ - storageCondition is optional
12
+ - capacity is optional
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive create request] --> B{Validate name provided?}
19
+ B -->|No| C[Return error: name required]
20
+ B -->|Yes| D{Site exists?}
21
+ D -->|No| E[Return error: SITE_NOT_FOUND]
22
+ D -->|Yes| F{Site ACTIVE?}
23
+ F -->|No| G[Return error: SITE_INACTIVE]
24
+ F -->|Yes| H{Name unique within site?}
25
+ H -->|No| I[Return error: DUPLICATE_WAREHOUSE_NAME]
26
+ H -->|Yes| J[Create warehouse with ACTIVE status]
27
+ J --> K[Return created warehouse]
28
+ ```
29
+
30
+ ## External Dependencies
31
+
32
+ - [organization::Site](../../../organization/docs/models/Site.md) - Validates that the referenced site exists and is active
33
+
34
+ ## Error Scenarios
35
+
36
+ - **SITE_NOT_FOUND**: Referenced site does not exist
37
+ - **SITE_INACTIVE**: Referenced site exists but is not in ACTIVE status
38
+ - **DUPLICATE_WAREHOUSE_NAME**: A warehouse with the same name already exists at the given site
39
+
40
+ ## Test Cases
41
+
42
+ - returns error when site not found
43
+ - returns error when site is inactive
44
+ - returns error when warehouse name already exists at site
45
+ - creates warehouse with ACTIVE status
46
+ - creates warehouse with optional storage condition
47
+ - creates warehouse with optional capacity