@tailor-platform/erp-kit 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (929) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +12 -12
  3. package/dist/cli.mjs +467 -20
  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 +12 -3
  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.ts +4 -0
  37. package/src/commands/lib/distribute.test.ts +32 -1
  38. package/src/commands/lib/distribute.ts +47 -5
  39. package/src/commands/lib/sync-check-source.test.ts +1 -1
  40. package/src/commands/update.test.ts +16 -0
  41. package/src/commands/update.ts +4 -1
  42. package/src/generator/generate-seed.ts +69 -0
  43. package/src/module.ts +56 -0
  44. package/src/modules/business-partner/README.md +2 -2
  45. package/src/modules/inventory/README.md +65 -0
  46. package/src/modules/inventory/command/approveCountLine.generated.ts +6 -0
  47. package/src/modules/inventory/command/approveCountLine.test.ts +89 -0
  48. package/src/modules/inventory/command/approveCountLine.ts +68 -0
  49. package/src/modules/inventory/command/approveInventoryAdjustment.generated.ts +6 -0
  50. package/src/modules/inventory/command/approveInventoryAdjustment.test.ts +56 -0
  51. package/src/modules/inventory/command/approveInventoryAdjustment.ts +50 -0
  52. package/src/modules/inventory/command/assignSerialNumber.generated.ts +6 -0
  53. package/src/modules/inventory/command/assignSerialNumber.test.ts +133 -0
  54. package/src/modules/inventory/command/assignSerialNumber.ts +83 -0
  55. package/src/modules/inventory/command/cancelInventoryCount.generated.ts +6 -0
  56. package/src/modules/inventory/command/cancelInventoryCount.test.ts +114 -0
  57. package/src/modules/inventory/command/cancelInventoryCount.ts +62 -0
  58. package/src/modules/inventory/command/cancelStockMovement.generated.ts +6 -0
  59. package/src/modules/inventory/command/cancelStockMovement.test.ts +102 -0
  60. package/src/modules/inventory/command/cancelStockMovement.ts +56 -0
  61. package/src/modules/inventory/command/completeInventoryCount.generated.ts +6 -0
  62. package/src/modules/inventory/command/completeInventoryCount.test.ts +99 -0
  63. package/src/modules/inventory/command/completeInventoryCount.ts +70 -0
  64. package/src/modules/inventory/command/confirmInventoryAdjustment.generated.ts +6 -0
  65. package/src/modules/inventory/command/confirmInventoryAdjustment.test.ts +324 -0
  66. package/src/modules/inventory/command/confirmInventoryAdjustment.ts +194 -0
  67. package/src/modules/inventory/command/confirmStockMovement.generated.ts +6 -0
  68. package/src/modules/inventory/command/confirmStockMovement.test.ts +126 -0
  69. package/src/modules/inventory/command/confirmStockMovement.ts +131 -0
  70. package/src/modules/inventory/command/createInventoryAdjustment.generated.ts +6 -0
  71. package/src/modules/inventory/command/createInventoryAdjustment.test.ts +298 -0
  72. package/src/modules/inventory/command/createInventoryAdjustment.ts +124 -0
  73. package/src/modules/inventory/command/createInventoryCount.generated.ts +6 -0
  74. package/src/modules/inventory/command/createInventoryCount.test.ts +157 -0
  75. package/src/modules/inventory/command/createInventoryCount.ts +72 -0
  76. package/src/modules/inventory/command/createLot.generated.ts +6 -0
  77. package/src/modules/inventory/command/createLot.test.ts +106 -0
  78. package/src/modules/inventory/command/createLot.ts +72 -0
  79. package/src/modules/inventory/command/createStockMovement.generated.ts +6 -0
  80. package/src/modules/inventory/command/createStockMovement.test.ts +342 -0
  81. package/src/modules/inventory/command/createStockMovement.ts +172 -0
  82. package/src/modules/inventory/command/createStorageLocation.generated.ts +6 -0
  83. package/src/modules/inventory/command/createStorageLocation.test.ts +246 -0
  84. package/src/modules/inventory/command/createStorageLocation.ts +126 -0
  85. package/src/modules/inventory/command/createValuationPolicy.generated.ts +6 -0
  86. package/src/modules/inventory/command/createValuationPolicy.test.ts +75 -0
  87. package/src/modules/inventory/command/createValuationPolicy.ts +52 -0
  88. package/src/modules/inventory/command/createWarehouse.generated.ts +6 -0
  89. package/src/modules/inventory/command/createWarehouse.test.ts +143 -0
  90. package/src/modules/inventory/command/createWarehouse.ts +76 -0
  91. package/src/modules/inventory/command/deactivateStorageLocation.generated.ts +6 -0
  92. package/src/modules/inventory/command/deactivateStorageLocation.test.ts +69 -0
  93. package/src/modules/inventory/command/deactivateStorageLocation.ts +51 -0
  94. package/src/modules/inventory/command/deactivateWarehouse.generated.ts +6 -0
  95. package/src/modules/inventory/command/deactivateWarehouse.test.ts +75 -0
  96. package/src/modules/inventory/command/deactivateWarehouse.ts +45 -0
  97. package/src/modules/inventory/command/executeStockMovement.generated.ts +6 -0
  98. package/src/modules/inventory/command/executeStockMovement.test.ts +502 -0
  99. package/src/modules/inventory/command/executeStockMovement.ts +303 -0
  100. package/src/modules/inventory/command/reactivateStorageLocation.generated.ts +6 -0
  101. package/src/modules/inventory/command/reactivateStorageLocation.test.ts +78 -0
  102. package/src/modules/inventory/command/reactivateStorageLocation.ts +63 -0
  103. package/src/modules/inventory/command/reactivateWarehouse.generated.ts +6 -0
  104. package/src/modules/inventory/command/reactivateWarehouse.test.ts +87 -0
  105. package/src/modules/inventory/command/reactivateWarehouse.ts +65 -0
  106. package/src/modules/inventory/command/recordCountLine.generated.ts +6 -0
  107. package/src/modules/inventory/command/recordCountLine.test.ts +211 -0
  108. package/src/modules/inventory/command/recordCountLine.ts +81 -0
  109. package/src/modules/inventory/command/rejectCountLine.generated.ts +6 -0
  110. package/src/modules/inventory/command/rejectCountLine.test.ts +66 -0
  111. package/src/modules/inventory/command/rejectCountLine.ts +50 -0
  112. package/src/modules/inventory/command/rejectInventoryAdjustment.generated.ts +6 -0
  113. package/src/modules/inventory/command/rejectInventoryAdjustment.test.ts +69 -0
  114. package/src/modules/inventory/command/rejectInventoryAdjustment.ts +50 -0
  115. package/src/modules/inventory/command/releaseReservation.generated.ts +6 -0
  116. package/src/modules/inventory/command/releaseReservation.test.ts +65 -0
  117. package/src/modules/inventory/command/releaseReservation.ts +50 -0
  118. package/src/modules/inventory/command/reserveStock.generated.ts +6 -0
  119. package/src/modules/inventory/command/reserveStock.test.ts +141 -0
  120. package/src/modules/inventory/command/reserveStock.ts +88 -0
  121. package/src/modules/inventory/command/reviseInventoryAdjustment.generated.ts +6 -0
  122. package/src/modules/inventory/command/reviseInventoryAdjustment.test.ts +68 -0
  123. package/src/modules/inventory/command/reviseInventoryAdjustment.ts +48 -0
  124. package/src/modules/inventory/command/startInventoryCount.generated.ts +6 -0
  125. package/src/modules/inventory/command/startInventoryCount.test.ts +100 -0
  126. package/src/modules/inventory/command/startInventoryCount.ts +90 -0
  127. package/src/modules/inventory/command/submitInventoryAdjustment.generated.ts +6 -0
  128. package/src/modules/inventory/command/submitInventoryAdjustment.test.ts +53 -0
  129. package/src/modules/inventory/command/submitInventoryAdjustment.ts +47 -0
  130. package/src/modules/inventory/command/updateLot.generated.ts +6 -0
  131. package/src/modules/inventory/command/updateLot.test.ts +88 -0
  132. package/src/modules/inventory/command/updateLot.ts +52 -0
  133. package/src/modules/inventory/command/updateStockMovement.generated.ts +6 -0
  134. package/src/modules/inventory/command/updateStockMovement.test.ts +250 -0
  135. package/src/modules/inventory/command/updateStockMovement.ts +164 -0
  136. package/src/modules/inventory/command/updateStorageLocation.generated.ts +6 -0
  137. package/src/modules/inventory/command/updateStorageLocation.test.ts +72 -0
  138. package/src/modules/inventory/command/updateStorageLocation.ts +77 -0
  139. package/src/modules/inventory/command/updateValuationPolicy.generated.ts +6 -0
  140. package/src/modules/inventory/command/updateValuationPolicy.test.ts +68 -0
  141. package/src/modules/inventory/command/updateValuationPolicy.ts +74 -0
  142. package/src/modules/inventory/command/updateWarehouse.generated.ts +6 -0
  143. package/src/modules/inventory/command/updateWarehouse.test.ts +88 -0
  144. package/src/modules/inventory/command/updateWarehouse.ts +64 -0
  145. package/src/modules/inventory/db/.gitkeep +0 -0
  146. package/src/modules/inventory/db/costLayer.ts +54 -0
  147. package/src/modules/inventory/db/inventoryAdjustment.ts +88 -0
  148. package/src/modules/inventory/db/inventoryCount.ts +58 -0
  149. package/src/modules/inventory/db/inventoryCountLine.ts +61 -0
  150. package/src/modules/inventory/db/itemValuation.ts +50 -0
  151. package/src/modules/inventory/db/lot.ts +51 -0
  152. package/src/modules/inventory/db/lotStockLevel.ts +48 -0
  153. package/src/modules/inventory/db/serialNumber.ts +53 -0
  154. package/src/modules/inventory/db/stockLevel.ts +51 -0
  155. package/src/modules/inventory/db/stockMoveLine.ts +78 -0
  156. package/src/modules/inventory/db/stockMovement.ts +48 -0
  157. package/src/modules/inventory/db/storageLocation.ts +56 -0
  158. package/src/modules/inventory/db/valuationPolicy.ts +33 -0
  159. package/src/modules/inventory/db/warehouse.ts +45 -0
  160. package/src/modules/inventory/docs/commands/ApproveCountLine.md +44 -0
  161. package/src/modules/inventory/docs/commands/ApproveInventoryAdjustment.md +37 -0
  162. package/src/modules/inventory/docs/commands/AssignSerialNumber.md +46 -0
  163. package/src/modules/inventory/docs/commands/CancelInventoryCount.md +49 -0
  164. package/src/modules/inventory/docs/commands/CancelStockMovement.md +44 -0
  165. package/src/modules/inventory/docs/commands/CompleteInventoryCount.md +47 -0
  166. package/src/modules/inventory/docs/commands/ConfirmInventoryAdjustment.md +72 -0
  167. package/src/modules/inventory/docs/commands/ConfirmStockMovement.md +43 -0
  168. package/src/modules/inventory/docs/commands/CreateInventoryAdjustment.md +75 -0
  169. package/src/modules/inventory/docs/commands/CreateInventoryCount.md +49 -0
  170. package/src/modules/inventory/docs/commands/CreateLot.md +40 -0
  171. package/src/modules/inventory/docs/commands/CreateStockMovement.md +76 -0
  172. package/src/modules/inventory/docs/commands/CreateStorageLocation.md +66 -0
  173. package/src/modules/inventory/docs/commands/CreateValuationPolicy.md +45 -0
  174. package/src/modules/inventory/docs/commands/CreateWarehouse.md +47 -0
  175. package/src/modules/inventory/docs/commands/DeactivateStorageLocation.md +39 -0
  176. package/src/modules/inventory/docs/commands/DeactivateWarehouse.md +38 -0
  177. package/src/modules/inventory/docs/commands/ExecuteStockMovement.md +82 -0
  178. package/src/modules/inventory/docs/commands/ReactivateStorageLocation.md +42 -0
  179. package/src/modules/inventory/docs/commands/ReactivateWarehouse.md +42 -0
  180. package/src/modules/inventory/docs/commands/RecordCountLine.md +52 -0
  181. package/src/modules/inventory/docs/commands/RejectCountLine.md +42 -0
  182. package/src/modules/inventory/docs/commands/RejectInventoryAdjustment.md +38 -0
  183. package/src/modules/inventory/docs/commands/ReleaseReservation.md +37 -0
  184. package/src/modules/inventory/docs/commands/ReserveStock.md +49 -0
  185. package/src/modules/inventory/docs/commands/ReviseInventoryAdjustment.md +38 -0
  186. package/src/modules/inventory/docs/commands/StartInventoryCount.md +47 -0
  187. package/src/modules/inventory/docs/commands/SubmitInventoryAdjustment.md +37 -0
  188. package/src/modules/inventory/docs/commands/UpdateLot.md +41 -0
  189. package/src/modules/inventory/docs/commands/UpdateStockMovement.md +45 -0
  190. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +41 -0
  191. package/src/modules/inventory/docs/commands/UpdateValuationPolicy.md +44 -0
  192. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +42 -0
  193. package/src/modules/inventory/docs/features/inventory-adjustment.md +64 -0
  194. package/src/modules/inventory/docs/features/inventory-count.md +78 -0
  195. package/src/modules/inventory/docs/features/inventory-valuation.md +77 -0
  196. package/src/modules/inventory/docs/features/lot-and-batch-tracking.md +81 -0
  197. package/src/modules/inventory/docs/features/scrap-management.md +63 -0
  198. package/src/modules/inventory/docs/features/serial-number-tracking.md +68 -0
  199. package/src/modules/inventory/docs/features/stock-movement.md +72 -0
  200. package/src/modules/inventory/docs/features/stock-tracking.md +78 -0
  201. package/src/modules/inventory/docs/features/warehouse-management.md +97 -0
  202. package/src/modules/inventory/docs/models/CostLayer.md +37 -0
  203. package/src/modules/inventory/docs/models/InventoryAdjustment.md +69 -0
  204. package/src/modules/inventory/docs/models/InventoryCount.md +53 -0
  205. package/src/modules/inventory/docs/models/InventoryCountLine.md +53 -0
  206. package/src/modules/inventory/docs/models/ItemValuation.md +38 -0
  207. package/src/modules/inventory/docs/models/Lot.md +45 -0
  208. package/src/modules/inventory/docs/models/LotStockLevel.md +34 -0
  209. package/src/modules/inventory/docs/models/SerialNumber.md +53 -0
  210. package/src/modules/inventory/docs/models/StockLevel.md +41 -0
  211. package/src/modules/inventory/docs/models/StockMoveLine.md +44 -0
  212. package/src/modules/inventory/docs/models/StockMovement.md +52 -0
  213. package/src/modules/inventory/docs/models/StorageLocation.md +55 -0
  214. package/src/modules/inventory/docs/models/ValuationPolicy.md +38 -0
  215. package/src/modules/inventory/docs/models/Warehouse.md +50 -0
  216. package/src/modules/inventory/docs/queries/GetInventoryAdjustment.md +40 -0
  217. package/src/modules/inventory/docs/queries/GetInventoryCount.md +43 -0
  218. package/src/modules/inventory/docs/queries/GetItemValuation.md +42 -0
  219. package/src/modules/inventory/docs/queries/GetLot.md +42 -0
  220. package/src/modules/inventory/docs/queries/GetSerialNumber.md +43 -0
  221. package/src/modules/inventory/docs/queries/GetSerialNumberHistory.md +50 -0
  222. package/src/modules/inventory/docs/queries/GetStockLevel.md +42 -0
  223. package/src/modules/inventory/docs/queries/GetStockMovement.md +41 -0
  224. package/src/modules/inventory/docs/queries/GetStorageLocation.md +40 -0
  225. package/src/modules/inventory/docs/queries/GetValuationPolicy.md +38 -0
  226. package/src/modules/inventory/docs/queries/GetWarehouse.md +40 -0
  227. package/src/modules/inventory/docs/queries/GetWarehouseStockSummary.md +50 -0
  228. package/src/modules/inventory/docs/queries/ListCostLayers.md +49 -0
  229. package/src/modules/inventory/docs/queries/ListExpiringLots.md +51 -0
  230. package/src/modules/inventory/docs/queries/ListInventoryAdjustments.md +47 -0
  231. package/src/modules/inventory/docs/queries/ListInventoryCounts.md +57 -0
  232. package/src/modules/inventory/docs/queries/ListItemValuations.md +44 -0
  233. package/src/modules/inventory/docs/queries/ListLots.md +57 -0
  234. package/src/modules/inventory/docs/queries/ListSerialNumbers.md +44 -0
  235. package/src/modules/inventory/docs/queries/ListStockLevels.md +49 -0
  236. package/src/modules/inventory/docs/queries/ListStockMovements.md +47 -0
  237. package/src/modules/inventory/docs/queries/ListStorageLocations.md +47 -0
  238. package/src/modules/inventory/docs/queries/ListValuationPolicies.md +38 -0
  239. package/src/modules/inventory/docs/queries/ListWarehouses.md +42 -0
  240. package/src/modules/inventory/docs/queries/TraceLotBackward.md +46 -0
  241. package/src/modules/inventory/docs/queries/TraceLotForward.md +46 -0
  242. package/src/modules/inventory/executor/.gitkeep +0 -0
  243. package/src/modules/inventory/generated/.gitkeep +0 -0
  244. package/src/modules/inventory/generated/enums.ts +131 -0
  245. package/src/modules/inventory/generated/kysely-tailordb.ts +201 -0
  246. package/src/modules/inventory/index.ts +2 -0
  247. package/src/modules/inventory/lib/_db_deps.ts +17 -0
  248. package/src/modules/inventory/lib/errors.generated.ts +317 -0
  249. package/src/modules/inventory/lib/permissions.generated.ts +38 -0
  250. package/src/modules/inventory/lib/types.ts +92 -0
  251. package/src/modules/inventory/module.ts +202 -0
  252. package/src/modules/inventory/permissions.ts +3 -0
  253. package/src/modules/inventory/query/.gitkeep +0 -0
  254. package/src/modules/inventory/query/getInventoryAdjustment.generated.ts +5 -0
  255. package/src/modules/inventory/query/getInventoryAdjustment.test.ts +58 -0
  256. package/src/modules/inventory/query/getInventoryAdjustment.ts +16 -0
  257. package/src/modules/inventory/query/getInventoryCount.generated.ts +5 -0
  258. package/src/modules/inventory/query/getInventoryCount.test.ts +65 -0
  259. package/src/modules/inventory/query/getInventoryCount.ts +27 -0
  260. package/src/modules/inventory/query/getItemValuation.generated.ts +5 -0
  261. package/src/modules/inventory/query/getItemValuation.test.ts +72 -0
  262. package/src/modules/inventory/query/getItemValuation.ts +29 -0
  263. package/src/modules/inventory/query/getLot.generated.ts +5 -0
  264. package/src/modules/inventory/query/getLot.test.ts +62 -0
  265. package/src/modules/inventory/query/getLot.ts +28 -0
  266. package/src/modules/inventory/query/getSerialNumber.generated.ts +5 -0
  267. package/src/modules/inventory/query/getSerialNumber.test.ts +59 -0
  268. package/src/modules/inventory/query/getSerialNumber.ts +18 -0
  269. package/src/modules/inventory/query/getSerialNumberHistory.generated.ts +5 -0
  270. package/src/modules/inventory/query/getSerialNumberHistory.test.ts +80 -0
  271. package/src/modules/inventory/query/getSerialNumberHistory.ts +30 -0
  272. package/src/modules/inventory/query/getStockLevel.generated.ts +5 -0
  273. package/src/modules/inventory/query/getStockLevel.test.ts +70 -0
  274. package/src/modules/inventory/query/getStockLevel.ts +24 -0
  275. package/src/modules/inventory/query/getStockMovement.generated.ts +5 -0
  276. package/src/modules/inventory/query/getStockMovement.test.ts +62 -0
  277. package/src/modules/inventory/query/getStockMovement.ts +26 -0
  278. package/src/modules/inventory/query/getStorageLocation.generated.ts +5 -0
  279. package/src/modules/inventory/query/getStorageLocation.test.ts +54 -0
  280. package/src/modules/inventory/query/getStorageLocation.ts +26 -0
  281. package/src/modules/inventory/query/getValuationPolicy.generated.ts +5 -0
  282. package/src/modules/inventory/query/getValuationPolicy.test.ts +42 -0
  283. package/src/modules/inventory/query/getValuationPolicy.ts +16 -0
  284. package/src/modules/inventory/query/getWarehouse.generated.ts +5 -0
  285. package/src/modules/inventory/query/getWarehouse.test.ts +61 -0
  286. package/src/modules/inventory/query/getWarehouse.ts +26 -0
  287. package/src/modules/inventory/query/getWarehouseStockSummary.generated.ts +5 -0
  288. package/src/modules/inventory/query/getWarehouseStockSummary.test.ts +97 -0
  289. package/src/modules/inventory/query/getWarehouseStockSummary.ts +82 -0
  290. package/src/modules/inventory/query/listCostLayers.generated.ts +5 -0
  291. package/src/modules/inventory/query/listCostLayers.test.ts +58 -0
  292. package/src/modules/inventory/query/listCostLayers.ts +45 -0
  293. package/src/modules/inventory/query/listExpiringLots.generated.ts +5 -0
  294. package/src/modules/inventory/query/listExpiringLots.test.ts +70 -0
  295. package/src/modules/inventory/query/listExpiringLots.ts +74 -0
  296. package/src/modules/inventory/query/listInventoryAdjustments.generated.ts +5 -0
  297. package/src/modules/inventory/query/listInventoryAdjustments.test.ts +89 -0
  298. package/src/modules/inventory/query/listInventoryAdjustments.ts +59 -0
  299. package/src/modules/inventory/query/listInventoryCounts.generated.ts +5 -0
  300. package/src/modules/inventory/query/listInventoryCounts.test.ts +78 -0
  301. package/src/modules/inventory/query/listInventoryCounts.ts +55 -0
  302. package/src/modules/inventory/query/listItemValuations.generated.ts +5 -0
  303. package/src/modules/inventory/query/listItemValuations.test.ts +54 -0
  304. package/src/modules/inventory/query/listItemValuations.ts +39 -0
  305. package/src/modules/inventory/query/listLots.generated.ts +5 -0
  306. package/src/modules/inventory/query/listLots.test.ts +120 -0
  307. package/src/modules/inventory/query/listLots.ts +68 -0
  308. package/src/modules/inventory/query/listSerialNumbers.generated.ts +5 -0
  309. package/src/modules/inventory/query/listSerialNumbers.test.ts +58 -0
  310. package/src/modules/inventory/query/listSerialNumbers.ts +53 -0
  311. package/src/modules/inventory/query/listStockLevels.generated.ts +5 -0
  312. package/src/modules/inventory/query/listStockLevels.test.ts +73 -0
  313. package/src/modules/inventory/query/listStockLevels.ts +79 -0
  314. package/src/modules/inventory/query/listStockMovements.generated.ts +5 -0
  315. package/src/modules/inventory/query/listStockMovements.test.ts +98 -0
  316. package/src/modules/inventory/query/listStockMovements.ts +105 -0
  317. package/src/modules/inventory/query/listStorageLocations.generated.ts +5 -0
  318. package/src/modules/inventory/query/listStorageLocations.test.ts +70 -0
  319. package/src/modules/inventory/query/listStorageLocations.ts +53 -0
  320. package/src/modules/inventory/query/listValuationPolicies.generated.ts +5 -0
  321. package/src/modules/inventory/query/listValuationPolicies.test.ts +38 -0
  322. package/src/modules/inventory/query/listValuationPolicies.ts +39 -0
  323. package/src/modules/inventory/query/listWarehouses.generated.ts +5 -0
  324. package/src/modules/inventory/query/listWarehouses.test.ts +60 -0
  325. package/src/modules/inventory/query/listWarehouses.ts +39 -0
  326. package/src/modules/inventory/query/traceLotBackward.generated.ts +5 -0
  327. package/src/modules/inventory/query/traceLotBackward.test.ts +63 -0
  328. package/src/modules/inventory/query/traceLotBackward.ts +36 -0
  329. package/src/modules/inventory/query/traceLotForward.generated.ts +5 -0
  330. package/src/modules/inventory/query/traceLotForward.test.ts +63 -0
  331. package/src/modules/inventory/query/traceLotForward.ts +36 -0
  332. package/src/modules/inventory/tailor.config.ts +13 -0
  333. package/src/modules/inventory/tailor.d.ts +13 -0
  334. package/src/modules/inventory/testing/commandTestUtils.ts +29 -0
  335. package/src/modules/inventory/testing/fixtures.ts +412 -0
  336. package/src/modules/item-management/docs/models/{item.md → Item.md} +1 -1
  337. package/src/modules/primitives/seed/currencies.ts +22 -0
  338. package/src/modules/primitives/seed/exchangeRates.ts +22 -0
  339. package/src/modules/primitives/seed/index.ts +4 -0
  340. package/src/modules/primitives/seed/seed.test.ts +80 -0
  341. package/src/modules/primitives/seed/units.ts +62 -0
  342. package/src/modules/primitives/seed/uomCategories.ts +24 -0
  343. package/src/modules/purchase/README.md +63 -0
  344. package/src/modules/purchase/command/.gitkeep +0 -0
  345. package/src/modules/purchase/command/activatePurchasePaymentTerm.generated.ts +6 -0
  346. package/src/modules/purchase/command/activatePurchasePaymentTerm.test.ts +53 -0
  347. package/src/modules/purchase/command/activatePurchasePaymentTerm.ts +39 -0
  348. package/src/modules/purchase/command/activatePurchasePriceList.generated.ts +6 -0
  349. package/src/modules/purchase/command/activatePurchasePriceList.test.ts +39 -0
  350. package/src/modules/purchase/command/activatePurchasePriceList.ts +32 -0
  351. package/src/modules/purchase/command/activatePurchasePriceRule.generated.ts +6 -0
  352. package/src/modules/purchase/command/activatePurchasePriceRule.test.ts +133 -0
  353. package/src/modules/purchase/command/activatePurchasePriceRule.ts +75 -0
  354. package/src/modules/purchase/command/approvePurchaseOrder.generated.ts +6 -0
  355. package/src/modules/purchase/command/approvePurchaseOrder.test.ts +161 -0
  356. package/src/modules/purchase/command/approvePurchaseOrder.ts +89 -0
  357. package/src/modules/purchase/command/cancelGoodsReceipt.generated.ts +6 -0
  358. package/src/modules/purchase/command/cancelGoodsReceipt.test.ts +37 -0
  359. package/src/modules/purchase/command/cancelGoodsReceipt.ts +29 -0
  360. package/src/modules/purchase/command/cancelPurchaseBill.generated.ts +6 -0
  361. package/src/modules/purchase/command/cancelPurchaseBill.test.ts +101 -0
  362. package/src/modules/purchase/command/cancelPurchaseBill.ts +84 -0
  363. package/src/modules/purchase/command/cancelPurchaseOrder.generated.ts +6 -0
  364. package/src/modules/purchase/command/cancelPurchaseOrder.test.ts +119 -0
  365. package/src/modules/purchase/command/cancelPurchaseOrder.ts +65 -0
  366. package/src/modules/purchase/command/closePurchaseOrder.generated.ts +6 -0
  367. package/src/modules/purchase/command/closePurchaseOrder.test.ts +128 -0
  368. package/src/modules/purchase/command/closePurchaseOrder.ts +58 -0
  369. package/src/modules/purchase/command/createGoodsReceipt.generated.ts +6 -0
  370. package/src/modules/purchase/command/createGoodsReceipt.test.ts +233 -0
  371. package/src/modules/purchase/command/createGoodsReceipt.ts +93 -0
  372. package/src/modules/purchase/command/createPurchaseBill.generated.ts +6 -0
  373. package/src/modules/purchase/command/createPurchaseBill.test.ts +277 -0
  374. package/src/modules/purchase/command/createPurchaseBill.ts +107 -0
  375. package/src/modules/purchase/command/createPurchaseOrder.generated.ts +6 -0
  376. package/src/modules/purchase/command/createPurchaseOrder.test.ts +291 -0
  377. package/src/modules/purchase/command/createPurchaseOrder.ts +131 -0
  378. package/src/modules/purchase/command/createPurchasePaymentTerm.generated.ts +6 -0
  379. package/src/modules/purchase/command/createPurchasePaymentTerm.test.ts +140 -0
  380. package/src/modules/purchase/command/createPurchasePaymentTerm.ts +66 -0
  381. package/src/modules/purchase/command/createPurchasePriceList.generated.ts +6 -0
  382. package/src/modules/purchase/command/createPurchasePriceList.test.ts +108 -0
  383. package/src/modules/purchase/command/createPurchasePriceList.ts +63 -0
  384. package/src/modules/purchase/command/createPurchasePriceRule.generated.ts +6 -0
  385. package/src/modules/purchase/command/createPurchasePriceRule.test.ts +139 -0
  386. package/src/modules/purchase/command/createPurchasePriceRule.ts +95 -0
  387. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.generated.ts +6 -0
  388. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.test.ts +49 -0
  389. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.ts +41 -0
  390. package/src/modules/purchase/command/deactivatePurchasePriceList.generated.ts +6 -0
  391. package/src/modules/purchase/command/deactivatePurchasePriceList.test.ts +50 -0
  392. package/src/modules/purchase/command/deactivatePurchasePriceList.ts +32 -0
  393. package/src/modules/purchase/command/deactivatePurchasePriceRule.generated.ts +6 -0
  394. package/src/modules/purchase/command/deactivatePurchasePriceRule.test.ts +50 -0
  395. package/src/modules/purchase/command/deactivatePurchasePriceRule.ts +32 -0
  396. package/src/modules/purchase/command/matchPurchaseBill.generated.ts +6 -0
  397. package/src/modules/purchase/command/matchPurchaseBill.test.ts +188 -0
  398. package/src/modules/purchase/command/matchPurchaseBill.ts +146 -0
  399. package/src/modules/purchase/command/postGoodsReceipt.generated.ts +6 -0
  400. package/src/modules/purchase/command/postGoodsReceipt.test.ts +210 -0
  401. package/src/modules/purchase/command/postGoodsReceipt.ts +143 -0
  402. package/src/modules/purchase/command/rejectPurchaseOrder.generated.ts +6 -0
  403. package/src/modules/purchase/command/rejectPurchaseOrder.test.ts +79 -0
  404. package/src/modules/purchase/command/rejectPurchaseOrder.ts +41 -0
  405. package/src/modules/purchase/command/releasePurchaseBill.generated.ts +6 -0
  406. package/src/modules/purchase/command/releasePurchaseBill.test.ts +94 -0
  407. package/src/modules/purchase/command/releasePurchaseBill.ts +111 -0
  408. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.generated.ts +6 -0
  409. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.test.ts +171 -0
  410. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.ts +90 -0
  411. package/src/modules/purchase/command/submitPurchaseOrder.generated.ts +6 -0
  412. package/src/modules/purchase/command/submitPurchaseOrder.test.ts +98 -0
  413. package/src/modules/purchase/command/submitPurchaseOrder.ts +73 -0
  414. package/src/modules/purchase/command/updateGoodsReceipt.generated.ts +6 -0
  415. package/src/modules/purchase/command/updateGoodsReceipt.test.ts +115 -0
  416. package/src/modules/purchase/command/updateGoodsReceipt.ts +73 -0
  417. package/src/modules/purchase/command/updatePurchaseBill.generated.ts +6 -0
  418. package/src/modules/purchase/command/updatePurchaseBill.test.ts +137 -0
  419. package/src/modules/purchase/command/updatePurchaseBill.ts +89 -0
  420. package/src/modules/purchase/command/updatePurchaseOrder.generated.ts +6 -0
  421. package/src/modules/purchase/command/updatePurchaseOrder.test.ts +195 -0
  422. package/src/modules/purchase/command/updatePurchaseOrder.ts +121 -0
  423. package/src/modules/purchase/command/updatePurchasePaymentTerm.generated.ts +6 -0
  424. package/src/modules/purchase/command/updatePurchasePaymentTerm.test.ts +154 -0
  425. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +73 -0
  426. package/src/modules/purchase/command/updatePurchasePriceList.generated.ts +6 -0
  427. package/src/modules/purchase/command/updatePurchasePriceList.test.ts +73 -0
  428. package/src/modules/purchase/command/updatePurchasePriceList.ts +55 -0
  429. package/src/modules/purchase/command/updatePurchasePriceRule.generated.ts +6 -0
  430. package/src/modules/purchase/command/updatePurchasePriceRule.test.ts +191 -0
  431. package/src/modules/purchase/command/updatePurchasePriceRule.ts +104 -0
  432. package/src/modules/purchase/db/.gitkeep +0 -0
  433. package/src/modules/purchase/db/goodsReceipt.ts +62 -0
  434. package/src/modules/purchase/db/purchaseBill.ts +74 -0
  435. package/src/modules/purchase/db/purchaseOrder.ts +100 -0
  436. package/src/modules/purchase/db/purchasePaymentTerm.ts +46 -0
  437. package/src/modules/purchase/db/purchasePriceList.ts +53 -0
  438. package/src/modules/purchase/db/purchasePriceRule.ts +74 -0
  439. package/src/modules/purchase/db/supplierProfile.ts +59 -0
  440. package/src/modules/purchase/docs/commands/ActivatePurchasePaymentTerm.md +39 -0
  441. package/src/modules/purchase/docs/commands/ActivatePurchasePriceList.md +37 -0
  442. package/src/modules/purchase/docs/commands/ActivatePurchasePriceRule.md +47 -0
  443. package/src/modules/purchase/docs/commands/ApprovePurchaseOrder.md +55 -0
  444. package/src/modules/purchase/docs/commands/CancelGoodsReceipt.md +39 -0
  445. package/src/modules/purchase/docs/commands/CancelPurchaseBill.md +49 -0
  446. package/src/modules/purchase/docs/commands/CancelPurchaseOrder.md +47 -0
  447. package/src/modules/purchase/docs/commands/ClosePurchaseOrder.md +49 -0
  448. package/src/modules/purchase/docs/commands/CreateGoodsReceipt.md +54 -0
  449. package/src/modules/purchase/docs/commands/CreatePurchaseBill.md +59 -0
  450. package/src/modules/purchase/docs/commands/CreatePurchaseOrder.md +66 -0
  451. package/src/modules/purchase/docs/commands/CreatePurchasePaymentTerm.md +52 -0
  452. package/src/modules/purchase/docs/commands/CreatePurchasePriceList.md +48 -0
  453. package/src/modules/purchase/docs/commands/CreatePurchasePriceRule.md +62 -0
  454. package/src/modules/purchase/docs/commands/DeactivatePurchasePaymentTerm.md +42 -0
  455. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceList.md +39 -0
  456. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceRule.md +39 -0
  457. package/src/modules/purchase/docs/commands/MatchPurchaseBill.md +63 -0
  458. package/src/modules/purchase/docs/commands/PostGoodsReceipt.md +61 -0
  459. package/src/modules/purchase/docs/commands/RejectPurchaseOrder.md +44 -0
  460. package/src/modules/purchase/docs/commands/ReleasePurchaseBill.md +48 -0
  461. package/src/modules/purchase/docs/commands/SetSupplierDefaultPurchasePaymentTerm.md +50 -0
  462. package/src/modules/purchase/docs/commands/SubmitPurchaseOrder.md +51 -0
  463. package/src/modules/purchase/docs/commands/UpdateGoodsReceipt.md +48 -0
  464. package/src/modules/purchase/docs/commands/UpdatePurchaseBill.md +51 -0
  465. package/src/modules/purchase/docs/commands/UpdatePurchaseOrder.md +59 -0
  466. package/src/modules/purchase/docs/commands/UpdatePurchasePaymentTerm.md +51 -0
  467. package/src/modules/purchase/docs/commands/UpdatePurchasePriceList.md +43 -0
  468. package/src/modules/purchase/docs/commands/UpdatePurchasePriceRule.md +60 -0
  469. package/src/modules/purchase/docs/features/goods-receipt-matching.md +71 -0
  470. package/src/modules/purchase/docs/features/purchase-order-lifecycle.md +87 -0
  471. package/src/modules/purchase/docs/features/purchase-payment-terms.md +67 -0
  472. package/src/modules/purchase/docs/features/supplier-bill-matching.md +79 -0
  473. package/src/modules/purchase/docs/features/supplier-purchase-pricing.md +72 -0
  474. package/src/modules/purchase/docs/models/GoodsReceipt.md +58 -0
  475. package/src/modules/purchase/docs/models/PurchaseBill.md +68 -0
  476. package/src/modules/purchase/docs/models/PurchaseOrder.md +88 -0
  477. package/src/modules/purchase/docs/models/PurchasePaymentTerm.md +59 -0
  478. package/src/modules/purchase/docs/models/PurchasePriceList.md +53 -0
  479. package/src/modules/purchase/docs/models/PurchasePriceRule.md +58 -0
  480. package/src/modules/purchase/docs/models/SupplierProfile.md +37 -0
  481. package/src/modules/purchase/docs/queries/CalculatePurchaseBillDueSchedule.md +47 -0
  482. package/src/modules/purchase/docs/queries/CalculatePurchasePrice.md +53 -0
  483. package/src/modules/purchase/docs/queries/GetGoodsReceipt.md +36 -0
  484. package/src/modules/purchase/docs/queries/GetPurchaseBill.md +41 -0
  485. package/src/modules/purchase/docs/queries/GetPurchaseOrder.md +42 -0
  486. package/src/modules/purchase/docs/queries/GetPurchasePaymentTerm.md +36 -0
  487. package/src/modules/purchase/docs/queries/GetPurchasePriceList.md +36 -0
  488. package/src/modules/purchase/docs/queries/GetSupplierProfile.md +36 -0
  489. package/src/modules/purchase/executor/.gitkeep +0 -0
  490. package/src/modules/purchase/generated/.gitkeep +0 -0
  491. package/src/modules/purchase/generated/enums.ts +63 -0
  492. package/src/modules/purchase/generated/kysely-tailordb.ts +186 -0
  493. package/src/modules/purchase/index.ts +2 -0
  494. package/src/modules/purchase/lib/_db_deps.ts +77 -0
  495. package/src/modules/purchase/lib/domain.ts +467 -0
  496. package/src/modules/purchase/lib/errors.generated.ts +367 -0
  497. package/src/modules/purchase/lib/permissions.generated.ts +34 -0
  498. package/src/modules/purchase/lib/types.ts +65 -0
  499. package/src/modules/purchase/module.ts +218 -0
  500. package/src/modules/purchase/permissions.ts +1 -0
  501. package/src/modules/purchase/query/.gitkeep +0 -0
  502. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.generated.ts +5 -0
  503. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.test.ts +183 -0
  504. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.ts +41 -0
  505. package/src/modules/purchase/query/calculatePurchasePrice.generated.ts +5 -0
  506. package/src/modules/purchase/query/calculatePurchasePrice.test.ts +143 -0
  507. package/src/modules/purchase/query/calculatePurchasePrice.ts +113 -0
  508. package/src/modules/purchase/query/getGoodsReceipt.generated.ts +5 -0
  509. package/src/modules/purchase/query/getGoodsReceipt.test.ts +42 -0
  510. package/src/modules/purchase/query/getGoodsReceipt.ts +27 -0
  511. package/src/modules/purchase/query/getPurchaseBill.generated.ts +5 -0
  512. package/src/modules/purchase/query/getPurchaseBill.test.ts +69 -0
  513. package/src/modules/purchase/query/getPurchaseBill.ts +35 -0
  514. package/src/modules/purchase/query/getPurchaseOrder.generated.ts +5 -0
  515. package/src/modules/purchase/query/getPurchaseOrder.test.ts +65 -0
  516. package/src/modules/purchase/query/getPurchaseOrder.ts +33 -0
  517. package/src/modules/purchase/query/getPurchasePaymentTerm.generated.ts +5 -0
  518. package/src/modules/purchase/query/getPurchasePaymentTerm.test.ts +44 -0
  519. package/src/modules/purchase/query/getPurchasePaymentTerm.ts +30 -0
  520. package/src/modules/purchase/query/getPurchasePriceList.generated.ts +5 -0
  521. package/src/modules/purchase/query/getPurchasePriceList.test.ts +48 -0
  522. package/src/modules/purchase/query/getPurchasePriceList.ts +30 -0
  523. package/src/modules/purchase/query/getSupplierProfile.generated.ts +5 -0
  524. package/src/modules/purchase/query/getSupplierProfile.test.ts +50 -0
  525. package/src/modules/purchase/query/getSupplierProfile.ts +18 -0
  526. package/src/modules/purchase/tailor.config.ts +13 -0
  527. package/src/modules/purchase/tailor.d.ts +13 -0
  528. package/src/modules/purchase/testing/commandTestUtils.ts +35 -0
  529. package/src/modules/purchase/testing/fixtures.ts +317 -0
  530. package/src/modules/sales/README.md +69 -0
  531. package/src/modules/sales/command/.gitkeep +0 -0
  532. package/src/modules/sales/command/activateChannel.generated.ts +6 -0
  533. package/src/modules/sales/command/activateChannel.test.ts +70 -0
  534. package/src/modules/sales/command/activateChannel.ts +48 -0
  535. package/src/modules/sales/command/activateListing.generated.ts +6 -0
  536. package/src/modules/sales/command/activateListing.test.ts +87 -0
  537. package/src/modules/sales/command/activateListing.ts +49 -0
  538. package/src/modules/sales/command/activateSalesPaymentTerm.generated.ts +6 -0
  539. package/src/modules/sales/command/activateSalesPaymentTerm.test.ts +58 -0
  540. package/src/modules/sales/command/activateSalesPaymentTerm.ts +50 -0
  541. package/src/modules/sales/command/activateSalesPriceList.generated.ts +6 -0
  542. package/src/modules/sales/command/activateSalesPriceList.test.ts +55 -0
  543. package/src/modules/sales/command/activateSalesPriceList.ts +46 -0
  544. package/src/modules/sales/command/activateSalesPriceRule.generated.ts +6 -0
  545. package/src/modules/sales/command/activateSalesPriceRule.test.ts +83 -0
  546. package/src/modules/sales/command/activateSalesPriceRule.ts +58 -0
  547. package/src/modules/sales/command/cancelChannelOrder.generated.ts +6 -0
  548. package/src/modules/sales/command/cancelChannelOrder.test.ts +47 -0
  549. package/src/modules/sales/command/cancelChannelOrder.ts +30 -0
  550. package/src/modules/sales/command/cancelSalesInvoice.generated.ts +6 -0
  551. package/src/modules/sales/command/cancelSalesInvoice.test.ts +47 -0
  552. package/src/modules/sales/command/cancelSalesInvoice.ts +37 -0
  553. package/src/modules/sales/command/cancelSalesOrder.generated.ts +6 -0
  554. package/src/modules/sales/command/cancelSalesOrder.test.ts +70 -0
  555. package/src/modules/sales/command/cancelSalesOrder.ts +48 -0
  556. package/src/modules/sales/command/cancelSyncJob.generated.ts +6 -0
  557. package/src/modules/sales/command/cancelSyncJob.test.ts +58 -0
  558. package/src/modules/sales/command/cancelSyncJob.ts +30 -0
  559. package/src/modules/sales/command/closeSalesOrder.generated.ts +6 -0
  560. package/src/modules/sales/command/closeSalesOrder.test.ts +41 -0
  561. package/src/modules/sales/command/closeSalesOrder.ts +51 -0
  562. package/src/modules/sales/command/confirmSalesOrder.generated.ts +6 -0
  563. package/src/modules/sales/command/confirmSalesOrder.test.ts +68 -0
  564. package/src/modules/sales/command/confirmSalesOrder.ts +67 -0
  565. package/src/modules/sales/command/convertChannelOrder.generated.ts +6 -0
  566. package/src/modules/sales/command/convertChannelOrder.test.ts +118 -0
  567. package/src/modules/sales/command/convertChannelOrder.ts +151 -0
  568. package/src/modules/sales/command/createChannel.generated.ts +6 -0
  569. package/src/modules/sales/command/createChannel.test.ts +100 -0
  570. package/src/modules/sales/command/createChannel.ts +58 -0
  571. package/src/modules/sales/command/createListing.generated.ts +6 -0
  572. package/src/modules/sales/command/createListing.test.ts +88 -0
  573. package/src/modules/sales/command/createListing.ts +76 -0
  574. package/src/modules/sales/command/createSalesCreditNote.generated.ts +6 -0
  575. package/src/modules/sales/command/createSalesCreditNote.test.ts +56 -0
  576. package/src/modules/sales/command/createSalesCreditNote.ts +75 -0
  577. package/src/modules/sales/command/createSalesInvoice.generated.ts +6 -0
  578. package/src/modules/sales/command/createSalesInvoice.test.ts +85 -0
  579. package/src/modules/sales/command/createSalesInvoice.ts +94 -0
  580. package/src/modules/sales/command/createSalesOrder.generated.ts +6 -0
  581. package/src/modules/sales/command/createSalesOrder.test.ts +134 -0
  582. package/src/modules/sales/command/createSalesOrder.ts +140 -0
  583. package/src/modules/sales/command/createSalesPaymentTerm.generated.ts +6 -0
  584. package/src/modules/sales/command/createSalesPaymentTerm.test.ts +59 -0
  585. package/src/modules/sales/command/createSalesPaymentTerm.ts +50 -0
  586. package/src/modules/sales/command/createSalesPriceList.generated.ts +6 -0
  587. package/src/modules/sales/command/createSalesPriceList.test.ts +67 -0
  588. package/src/modules/sales/command/createSalesPriceList.ts +45 -0
  589. package/src/modules/sales/command/createSalesPriceRule.generated.ts +6 -0
  590. package/src/modules/sales/command/createSalesPriceRule.test.ts +137 -0
  591. package/src/modules/sales/command/createSalesPriceRule.ts +66 -0
  592. package/src/modules/sales/command/createShipment.generated.ts +6 -0
  593. package/src/modules/sales/command/createShipment.test.ts +75 -0
  594. package/src/modules/sales/command/createShipment.ts +86 -0
  595. package/src/modules/sales/command/deactivateChannel.generated.ts +6 -0
  596. package/src/modules/sales/command/deactivateChannel.test.ts +29 -0
  597. package/src/modules/sales/command/deactivateChannel.ts +30 -0
  598. package/src/modules/sales/command/deactivateSalesPaymentTerm.generated.ts +6 -0
  599. package/src/modules/sales/command/deactivateSalesPaymentTerm.test.ts +29 -0
  600. package/src/modules/sales/command/deactivateSalesPaymentTerm.ts +37 -0
  601. package/src/modules/sales/command/deactivateSalesPriceList.generated.ts +6 -0
  602. package/src/modules/sales/command/deactivateSalesPriceList.test.ts +33 -0
  603. package/src/modules/sales/command/deactivateSalesPriceList.ts +37 -0
  604. package/src/modules/sales/command/deactivateSalesPriceRule.generated.ts +6 -0
  605. package/src/modules/sales/command/deactivateSalesPriceRule.test.ts +33 -0
  606. package/src/modules/sales/command/deactivateSalesPriceRule.ts +37 -0
  607. package/src/modules/sales/command/issueSalesCreditNote.generated.ts +6 -0
  608. package/src/modules/sales/command/issueSalesCreditNote.test.ts +62 -0
  609. package/src/modules/sales/command/issueSalesCreditNote.ts +71 -0
  610. package/src/modules/sales/command/issueSalesInvoice.generated.ts +6 -0
  611. package/src/modules/sales/command/issueSalesInvoice.test.ts +88 -0
  612. package/src/modules/sales/command/issueSalesInvoice.ts +115 -0
  613. package/src/modules/sales/command/markChannelOrderException.generated.ts +6 -0
  614. package/src/modules/sales/command/markChannelOrderException.test.ts +59 -0
  615. package/src/modules/sales/command/markChannelOrderException.ts +49 -0
  616. package/src/modules/sales/command/pauseListing.generated.ts +6 -0
  617. package/src/modules/sales/command/pauseListing.test.ts +40 -0
  618. package/src/modules/sales/command/pauseListing.ts +30 -0
  619. package/src/modules/sales/command/placeSalesOrderOnCreditHold.generated.ts +6 -0
  620. package/src/modules/sales/command/placeSalesOrderOnCreditHold.test.ts +74 -0
  621. package/src/modules/sales/command/placeSalesOrderOnCreditHold.ts +46 -0
  622. package/src/modules/sales/command/postShipment.generated.ts +6 -0
  623. package/src/modules/sales/command/postShipment.test.ts +97 -0
  624. package/src/modules/sales/command/postShipment.ts +89 -0
  625. package/src/modules/sales/command/recordChannelOrder.generated.ts +6 -0
  626. package/src/modules/sales/command/recordChannelOrder.test.ts +124 -0
  627. package/src/modules/sales/command/recordChannelOrder.ts +93 -0
  628. package/src/modules/sales/command/rejectSalesOrder.generated.ts +6 -0
  629. package/src/modules/sales/command/rejectSalesOrder.test.ts +78 -0
  630. package/src/modules/sales/command/rejectSalesOrder.ts +42 -0
  631. package/src/modules/sales/command/releaseSalesOrderCreditHold.generated.ts +6 -0
  632. package/src/modules/sales/command/releaseSalesOrderCreditHold.test.ts +50 -0
  633. package/src/modules/sales/command/releaseSalesOrderCreditHold.ts +51 -0
  634. package/src/modules/sales/command/retireListing.generated.ts +6 -0
  635. package/src/modules/sales/command/retireListing.test.ts +42 -0
  636. package/src/modules/sales/command/retireListing.ts +30 -0
  637. package/src/modules/sales/command/retrySyncJob.generated.ts +6 -0
  638. package/src/modules/sales/command/retrySyncJob.test.ts +54 -0
  639. package/src/modules/sales/command/retrySyncJob.ts +44 -0
  640. package/src/modules/sales/command/sendSalesInvoice.generated.ts +6 -0
  641. package/src/modules/sales/command/sendSalesInvoice.test.ts +50 -0
  642. package/src/modules/sales/command/sendSalesInvoice.ts +43 -0
  643. package/src/modules/sales/command/startSyncJob.generated.ts +6 -0
  644. package/src/modules/sales/command/startSyncJob.test.ts +65 -0
  645. package/src/modules/sales/command/startSyncJob.ts +54 -0
  646. package/src/modules/sales/command/submitSalesOrder.generated.ts +6 -0
  647. package/src/modules/sales/command/submitSalesOrder.test.ts +58 -0
  648. package/src/modules/sales/command/submitSalesOrder.ts +49 -0
  649. package/src/modules/sales/command/updateChannel.generated.ts +6 -0
  650. package/src/modules/sales/command/updateChannel.test.ts +71 -0
  651. package/src/modules/sales/command/updateChannel.ts +68 -0
  652. package/src/modules/sales/command/updateListing.generated.ts +6 -0
  653. package/src/modules/sales/command/updateListing.test.ts +56 -0
  654. package/src/modules/sales/command/updateListing.ts +60 -0
  655. package/src/modules/sales/command/updateSalesCreditNote.generated.ts +6 -0
  656. package/src/modules/sales/command/updateSalesCreditNote.test.ts +68 -0
  657. package/src/modules/sales/command/updateSalesCreditNote.ts +68 -0
  658. package/src/modules/sales/command/updateSalesInvoice.generated.ts +6 -0
  659. package/src/modules/sales/command/updateSalesInvoice.test.ts +73 -0
  660. package/src/modules/sales/command/updateSalesInvoice.ts +80 -0
  661. package/src/modules/sales/command/updateSalesOrder.generated.ts +6 -0
  662. package/src/modules/sales/command/updateSalesOrder.test.ts +93 -0
  663. package/src/modules/sales/command/updateSalesOrder.ts +121 -0
  664. package/src/modules/sales/command/updateSalesPaymentTerm.generated.ts +6 -0
  665. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +66 -0
  666. package/src/modules/sales/command/updateSalesPaymentTerm.ts +59 -0
  667. package/src/modules/sales/command/updateSalesPriceList.generated.ts +6 -0
  668. package/src/modules/sales/command/updateSalesPriceList.test.ts +71 -0
  669. package/src/modules/sales/command/updateSalesPriceList.ts +52 -0
  670. package/src/modules/sales/command/updateSalesPriceRule.generated.ts +6 -0
  671. package/src/modules/sales/command/updateSalesPriceRule.test.ts +95 -0
  672. package/src/modules/sales/command/updateSalesPriceRule.ts +81 -0
  673. package/src/modules/sales/command/updateShipment.generated.ts +6 -0
  674. package/src/modules/sales/command/updateShipment.test.ts +78 -0
  675. package/src/modules/sales/command/updateShipment.ts +84 -0
  676. package/src/modules/sales/db/.gitkeep +0 -0
  677. package/src/modules/sales/db/channel.ts +43 -0
  678. package/src/modules/sales/db/channelOrder.ts +109 -0
  679. package/src/modules/sales/db/channelOrderLine.ts +84 -0
  680. package/src/modules/sales/db/listing.ts +81 -0
  681. package/src/modules/sales/db/salesCreditNote.ts +63 -0
  682. package/src/modules/sales/db/salesCreditNoteLine.ts +49 -0
  683. package/src/modules/sales/db/salesInvoice.ts +95 -0
  684. package/src/modules/sales/db/salesInvoiceLine.ts +64 -0
  685. package/src/modules/sales/db/salesOrder.ts +103 -0
  686. package/src/modules/sales/db/salesOrderLine.ts +82 -0
  687. package/src/modules/sales/db/salesPaymentTerm.ts +46 -0
  688. package/src/modules/sales/db/salesPriceList.ts +61 -0
  689. package/src/modules/sales/db/salesPriceRule.ts +96 -0
  690. package/src/modules/sales/db/shipment.ts +78 -0
  691. package/src/modules/sales/db/shipmentLine.ts +58 -0
  692. package/src/modules/sales/db/syncJob.ts +70 -0
  693. package/src/modules/sales/docs/commands/ActivateChannel.md +42 -0
  694. package/src/modules/sales/docs/commands/ActivateListing.md +46 -0
  695. package/src/modules/sales/docs/commands/ActivateSalesPaymentTerm.md +41 -0
  696. package/src/modules/sales/docs/commands/ActivateSalesPriceList.md +39 -0
  697. package/src/modules/sales/docs/commands/ActivateSalesPriceRule.md +48 -0
  698. package/src/modules/sales/docs/commands/CancelChannelOrder.md +37 -0
  699. package/src/modules/sales/docs/commands/CancelSalesInvoice.md +39 -0
  700. package/src/modules/sales/docs/commands/CancelSalesOrder.md +40 -0
  701. package/src/modules/sales/docs/commands/CancelSyncJob.md +36 -0
  702. package/src/modules/sales/docs/commands/CloseSalesOrder.md +39 -0
  703. package/src/modules/sales/docs/commands/ConfirmSalesOrder.md +43 -0
  704. package/src/modules/sales/docs/commands/ConvertChannelOrder.md +44 -0
  705. package/src/modules/sales/docs/commands/CreateChannel.md +40 -0
  706. package/src/modules/sales/docs/commands/CreateListing.md +40 -0
  707. package/src/modules/sales/docs/commands/CreateSalesCreditNote.md +37 -0
  708. package/src/modules/sales/docs/commands/CreateSalesInvoice.md +39 -0
  709. package/src/modules/sales/docs/commands/CreateSalesOrder.md +51 -0
  710. package/src/modules/sales/docs/commands/CreateSalesPaymentTerm.md +38 -0
  711. package/src/modules/sales/docs/commands/CreateSalesPriceList.md +37 -0
  712. package/src/modules/sales/docs/commands/CreateSalesPriceRule.md +46 -0
  713. package/src/modules/sales/docs/commands/CreateShipment.md +38 -0
  714. package/src/modules/sales/docs/commands/DeactivateChannel.md +35 -0
  715. package/src/modules/sales/docs/commands/DeactivateSalesPaymentTerm.md +35 -0
  716. package/src/modules/sales/docs/commands/DeactivateSalesPriceList.md +35 -0
  717. package/src/modules/sales/docs/commands/DeactivateSalesPriceRule.md +35 -0
  718. package/src/modules/sales/docs/commands/IssueSalesCreditNote.md +38 -0
  719. package/src/modules/sales/docs/commands/IssueSalesInvoice.md +43 -0
  720. package/src/modules/sales/docs/commands/MarkChannelOrderException.md +37 -0
  721. package/src/modules/sales/docs/commands/PauseListing.md +36 -0
  722. package/src/modules/sales/docs/commands/PlaceSalesOrderOnCreditHold.md +41 -0
  723. package/src/modules/sales/docs/commands/PostShipment.md +41 -0
  724. package/src/modules/sales/docs/commands/RecordChannelOrder.md +45 -0
  725. package/src/modules/sales/docs/commands/RejectSalesOrder.md +41 -0
  726. package/src/modules/sales/docs/commands/ReleaseSalesOrderCreditHold.md +36 -0
  727. package/src/modules/sales/docs/commands/RetireListing.md +36 -0
  728. package/src/modules/sales/docs/commands/RetrySyncJob.md +39 -0
  729. package/src/modules/sales/docs/commands/SendSalesInvoice.md +38 -0
  730. package/src/modules/sales/docs/commands/StartSyncJob.md +39 -0
  731. package/src/modules/sales/docs/commands/SubmitSalesOrder.md +43 -0
  732. package/src/modules/sales/docs/commands/UpdateChannel.md +43 -0
  733. package/src/modules/sales/docs/commands/UpdateListing.md +38 -0
  734. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +38 -0
  735. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +38 -0
  736. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +45 -0
  737. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +41 -0
  738. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +40 -0
  739. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +49 -0
  740. package/src/modules/sales/docs/commands/UpdateShipment.md +38 -0
  741. package/src/modules/sales/docs/commands/bin/rm.md +52 -0
  742. package/src/modules/sales/docs/commands/opt/homebrew/bin/codex.md +52 -0
  743. package/src/modules/sales/docs/commands/opt/homebrew/bin/ps2ps2.md +52 -0
  744. package/src/modules/sales/docs/commands/opt/homebrew/bin/rg.md +52 -0
  745. package/src/modules/sales/docs/commands/opt/homebrew/bin/sha384sum.md +52 -0
  746. package/src/modules/sales/docs/commands/opt/homebrew/opt/libpq/bin/pg_combinebackup.md +52 -0
  747. package/src/modules/sales/docs/commands/sbin/mount_msdos.md +52 -0
  748. package/src/modules/sales/docs/commands/sbin/mount_nfs.md +52 -0
  749. package/src/modules/sales/docs/commands/usr/bin/cupstestppd.md +52 -0
  750. package/src/modules/sales/docs/commands/usr/bin/enc2xs.md +52 -0
  751. package/src/modules/sales/docs/commands/usr/bin/hash.md +52 -0
  752. package/src/modules/sales/docs/commands/usr/bin/jarsigner.md +52 -0
  753. package/src/modules/sales/docs/commands/usr/bin/mpsgraphtool.md +52 -0
  754. package/src/modules/sales/docs/commands/usr/bin/nano.md +52 -0
  755. package/src/modules/sales/docs/commands/usr/bin/pod2html5.34.md +52 -0
  756. package/src/modules/sales/docs/commands/usr/bin/ri.md +52 -0
  757. package/src/modules/sales/docs/commands/usr/bin/rs.md +52 -0
  758. package/src/modules/sales/docs/commands/usr/bin/trustcachectl.md +52 -0
  759. package/src/modules/sales/docs/commands/usr/sbin/htpasswd.md +52 -0
  760. package/src/modules/sales/docs/commands/usr/sbin/lpadmin.md +52 -0
  761. package/src/modules/sales/docs/commands/usr/sbin/setkey.md +52 -0
  762. package/src/modules/sales/docs/features/channel-listing-management.md +68 -0
  763. package/src/modules/sales/docs/features/channel-order-sync.md +78 -0
  764. package/src/modules/sales/docs/features/customer-invoicing.md +89 -0
  765. package/src/modules/sales/docs/features/customer-sales-pricing.md +72 -0
  766. package/src/modules/sales/docs/features/sales-order-lifecycle.md +96 -0
  767. package/src/modules/sales/docs/features/sales-payment-terms.md +67 -0
  768. package/src/modules/sales/docs/features/shipment-fulfillment.md +71 -0
  769. package/src/modules/sales/docs/models/Channel.md +48 -0
  770. package/src/modules/sales/docs/models/ChannelOrder.md +56 -0
  771. package/src/modules/sales/docs/models/ChannelOrderLine.md +39 -0
  772. package/src/modules/sales/docs/models/Listing.md +56 -0
  773. package/src/modules/sales/docs/models/SalesCreditNote.md +47 -0
  774. package/src/modules/sales/docs/models/SalesCreditNoteLine.md +37 -0
  775. package/src/modules/sales/docs/models/SalesInvoice.md +55 -0
  776. package/src/modules/sales/docs/models/SalesInvoiceLine.md +39 -0
  777. package/src/modules/sales/docs/models/SalesOrder.md +79 -0
  778. package/src/modules/sales/docs/models/SalesOrderLine.md +42 -0
  779. package/src/modules/sales/docs/models/SalesPaymentTerm.md +53 -0
  780. package/src/modules/sales/docs/models/SalesPriceList.md +50 -0
  781. package/src/modules/sales/docs/models/SalesPriceRule.md +51 -0
  782. package/src/modules/sales/docs/models/Shipment.md +49 -0
  783. package/src/modules/sales/docs/models/ShipmentLine.md +38 -0
  784. package/src/modules/sales/docs/models/SyncJob.md +53 -0
  785. package/src/modules/sales/docs/queries/CalculateInvoiceDueSchedule.md +37 -0
  786. package/src/modules/sales/docs/queries/GetApplicableSalesPrice.md +38 -0
  787. package/src/modules/sales/docs/queries/GetChannel.md +34 -0
  788. package/src/modules/sales/docs/queries/GetChannelOrder.md +34 -0
  789. package/src/modules/sales/docs/queries/GetListing.md +34 -0
  790. package/src/modules/sales/docs/queries/GetListingByExternalIdentifier.md +35 -0
  791. package/src/modules/sales/docs/queries/GetSalesCreditNote.md +34 -0
  792. package/src/modules/sales/docs/queries/GetSalesInvoice.md +34 -0
  793. package/src/modules/sales/docs/queries/GetSalesOrder.md +36 -0
  794. package/src/modules/sales/docs/queries/GetSalesPaymentTerm.md +34 -0
  795. package/src/modules/sales/docs/queries/GetSalesPriceList.md +34 -0
  796. package/src/modules/sales/docs/queries/GetShipment.md +34 -0
  797. package/src/modules/sales/docs/queries/GetSyncJob.md +34 -0
  798. package/src/modules/sales/docs/queries/ListChannelOrdersByStatus.md +34 -0
  799. package/src/modules/sales/docs/queries/ListChannels.md +33 -0
  800. package/src/modules/sales/docs/queries/ListListingsByChannel.md +33 -0
  801. package/src/modules/sales/docs/queries/ListSalesCreditNotesByInvoice.md +33 -0
  802. package/src/modules/sales/docs/queries/ListSalesInvoicesBySalesOrder.md +33 -0
  803. package/src/modules/sales/docs/queries/ListSalesOrders.md +36 -0
  804. package/src/modules/sales/docs/queries/ListSalesPaymentTerms.md +33 -0
  805. package/src/modules/sales/docs/queries/ListSalesPriceLists.md +33 -0
  806. package/src/modules/sales/docs/queries/ListSalesPriceRulesByPriceList.md +33 -0
  807. package/src/modules/sales/docs/queries/ListShipmentsBySalesOrder.md +33 -0
  808. package/src/modules/sales/docs/queries/ListSyncJobs.md +34 -0
  809. package/src/modules/sales/executor/.gitkeep +0 -0
  810. package/src/modules/sales/generated/.gitkeep +0 -0
  811. package/src/modules/sales/generated/enums.ts +119 -0
  812. package/src/modules/sales/generated/kysely-tailordb.ts +332 -0
  813. package/src/modules/sales/index.ts +2 -0
  814. package/src/modules/sales/lib/_db_deps.ts +67 -0
  815. package/src/modules/sales/lib/domain.ts +354 -0
  816. package/src/modules/sales/lib/errors.generated.ts +417 -0
  817. package/src/modules/sales/lib/permissions.generated.ts +53 -0
  818. package/src/modules/sales/lib/repository.ts +137 -0
  819. package/src/modules/sales/lib/types.ts +105 -0
  820. package/src/modules/sales/module.ts +418 -0
  821. package/src/modules/sales/permissions.ts +3 -0
  822. package/src/modules/sales/query/.gitkeep +0 -0
  823. package/src/modules/sales/query/calculateInvoiceDueSchedule.generated.ts +5 -0
  824. package/src/modules/sales/query/calculateInvoiceDueSchedule.test.ts +107 -0
  825. package/src/modules/sales/query/calculateInvoiceDueSchedule.ts +35 -0
  826. package/src/modules/sales/query/getApplicableSalesPrice.generated.ts +5 -0
  827. package/src/modules/sales/query/getApplicableSalesPrice.test.ts +110 -0
  828. package/src/modules/sales/query/getApplicableSalesPrice.ts +81 -0
  829. package/src/modules/sales/query/getChannel.generated.ts +5 -0
  830. package/src/modules/sales/query/getChannel.test.ts +39 -0
  831. package/src/modules/sales/query/getChannel.ts +15 -0
  832. package/src/modules/sales/query/getChannelOrder.generated.ts +5 -0
  833. package/src/modules/sales/query/getChannelOrder.test.ts +50 -0
  834. package/src/modules/sales/query/getChannelOrder.ts +29 -0
  835. package/src/modules/sales/query/getListing.generated.ts +5 -0
  836. package/src/modules/sales/query/getListing.test.ts +39 -0
  837. package/src/modules/sales/query/getListing.ts +15 -0
  838. package/src/modules/sales/query/getListingByExternalIdentifier.generated.ts +5 -0
  839. package/src/modules/sales/query/getListingByExternalIdentifier.test.ts +61 -0
  840. package/src/modules/sales/query/getListingByExternalIdentifier.ts +23 -0
  841. package/src/modules/sales/query/getSalesCreditNote.generated.ts +5 -0
  842. package/src/modules/sales/query/getSalesCreditNote.test.ts +44 -0
  843. package/src/modules/sales/query/getSalesCreditNote.ts +14 -0
  844. package/src/modules/sales/query/getSalesInvoice.generated.ts +5 -0
  845. package/src/modules/sales/query/getSalesInvoice.test.ts +44 -0
  846. package/src/modules/sales/query/getSalesInvoice.ts +14 -0
  847. package/src/modules/sales/query/getSalesOrder.generated.ts +5 -0
  848. package/src/modules/sales/query/getSalesOrder.test.ts +57 -0
  849. package/src/modules/sales/query/getSalesOrder.ts +20 -0
  850. package/src/modules/sales/query/getSalesPaymentTerm.generated.ts +5 -0
  851. package/src/modules/sales/query/getSalesPaymentTerm.test.ts +44 -0
  852. package/src/modules/sales/query/getSalesPaymentTerm.ts +24 -0
  853. package/src/modules/sales/query/getSalesPriceList.generated.ts +5 -0
  854. package/src/modules/sales/query/getSalesPriceList.test.ts +39 -0
  855. package/src/modules/sales/query/getSalesPriceList.ts +15 -0
  856. package/src/modules/sales/query/getShipment.generated.ts +5 -0
  857. package/src/modules/sales/query/getShipment.test.ts +44 -0
  858. package/src/modules/sales/query/getShipment.ts +12 -0
  859. package/src/modules/sales/query/getSyncJob.generated.ts +5 -0
  860. package/src/modules/sales/query/getSyncJob.test.ts +43 -0
  861. package/src/modules/sales/query/getSyncJob.ts +24 -0
  862. package/src/modules/sales/query/listChannelOrdersByStatus.generated.ts +5 -0
  863. package/src/modules/sales/query/listChannelOrdersByStatus.test.ts +58 -0
  864. package/src/modules/sales/query/listChannelOrdersByStatus.ts +53 -0
  865. package/src/modules/sales/query/listChannels.generated.ts +5 -0
  866. package/src/modules/sales/query/listChannels.test.ts +36 -0
  867. package/src/modules/sales/query/listChannels.ts +39 -0
  868. package/src/modules/sales/query/listListingsByChannel.generated.ts +5 -0
  869. package/src/modules/sales/query/listListingsByChannel.test.ts +36 -0
  870. package/src/modules/sales/query/listListingsByChannel.ts +39 -0
  871. package/src/modules/sales/query/listSalesCreditNotesByInvoice.generated.ts +5 -0
  872. package/src/modules/sales/query/listSalesCreditNotesByInvoice.test.ts +36 -0
  873. package/src/modules/sales/query/listSalesCreditNotesByInvoice.ts +42 -0
  874. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.generated.ts +5 -0
  875. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.test.ts +36 -0
  876. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.ts +42 -0
  877. package/src/modules/sales/query/listSalesOrders.generated.ts +5 -0
  878. package/src/modules/sales/query/listSalesOrders.test.ts +79 -0
  879. package/src/modules/sales/query/listSalesOrders.ts +67 -0
  880. package/src/modules/sales/query/listSalesPaymentTerms.generated.ts +5 -0
  881. package/src/modules/sales/query/listSalesPaymentTerms.test.ts +36 -0
  882. package/src/modules/sales/query/listSalesPaymentTerms.ts +42 -0
  883. package/src/modules/sales/query/listSalesPriceLists.generated.ts +5 -0
  884. package/src/modules/sales/query/listSalesPriceLists.test.ts +36 -0
  885. package/src/modules/sales/query/listSalesPriceLists.ts +39 -0
  886. package/src/modules/sales/query/listSalesPriceRulesByPriceList.generated.ts +5 -0
  887. package/src/modules/sales/query/listSalesPriceRulesByPriceList.test.ts +39 -0
  888. package/src/modules/sales/query/listSalesPriceRulesByPriceList.ts +47 -0
  889. package/src/modules/sales/query/listShipmentsBySalesOrder.generated.ts +5 -0
  890. package/src/modules/sales/query/listShipmentsBySalesOrder.test.ts +36 -0
  891. package/src/modules/sales/query/listShipmentsBySalesOrder.ts +36 -0
  892. package/src/modules/sales/query/listSyncJobs.generated.ts +5 -0
  893. package/src/modules/sales/query/listSyncJobs.test.ts +50 -0
  894. package/src/modules/sales/query/listSyncJobs.ts +47 -0
  895. package/src/modules/sales/tailor.config.ts +13 -0
  896. package/src/modules/sales/tailor.d.ts +13 -0
  897. package/src/modules/sales/testing/commandTestUtils.ts +35 -0
  898. package/src/modules/sales/testing/fixtures.ts +520 -0
  899. package/src/modules/user-management/command/.gitkeep +0 -0
  900. package/src/modules/user-management/db/.gitkeep +0 -0
  901. package/src/modules/user-management/executor/.gitkeep +0 -0
  902. package/src/modules/user-management/generated/.gitkeep +0 -0
  903. package/src/modules/user-management/lib/errors.generated.ts +0 -5
  904. package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -2
  905. package/src/modules/user-management/permissions.ts +3 -0
  906. package/src/modules/user-management/query/.gitkeep +0 -0
  907. package/src/modules/user-management/query/listRolePermissionsByRole.generated.ts +5 -0
  908. package/src/modules/user-management/query/listRolePermissionsByRole.test.ts +20 -0
  909. package/src/modules/user-management/query/listRolePermissionsByRole.ts +28 -0
  910. package/src/modules/user-management/query/listUserRolesByUser.generated.ts +5 -0
  911. package/src/modules/user-management/query/listUserRolesByUser.test.ts +20 -0
  912. package/src/modules/user-management/query/listUserRolesByUser.ts +28 -0
  913. package/src/schemas.ts +6 -6
  914. package/src/shared/defineCommand.ts +1 -1
  915. package/src/shared/entityTypes.ts +1 -1
  916. package/src/shared/uuidv5.test.ts +18 -0
  917. package/src/shared/uuidv5.ts +23 -0
  918. package/src/testing/index.ts +1 -1
  919. package/templates/scaffold/app/backend/package.json +1 -3
  920. package/templates/scaffold/app/backend/seed/exec.mjs +7 -5
  921. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +0 -11
  922. package/templates/scaffold/module/seed/index.ts +19 -0
  923. /package/schemas/{app-compose → app}/actors.yml +0 -0
  924. /package/schemas/{app-compose → app}/business-flow.yml +0 -0
  925. /package/schemas/{app-compose → app}/requirements.yml +0 -0
  926. /package/schemas/{app-compose → app}/resolver.yml +0 -0
  927. /package/schemas/{app-compose → app}/screen.yml +0 -0
  928. /package/schemas/{app-compose → app}/story.yml +0 -0
  929. /package/src/modules/{purchase → inventory/command}/.gitkeep +0 -0
@@ -0,0 +1,79 @@
1
+ # SalesOrder
2
+
3
+ ## Description
4
+
5
+ SalesOrder is the primary commercial commitment between one company and one customer. It captures customer, channel, billing, shipping, payment-term, and pricing context before downstream fulfillment or invoicing occurs, and it preserves the commercial baseline that shipment, invoice, and credit-note records must reference later. The aggregate includes one or more SalesOrderLine children that track ordered, shipped, invoiced, and remaining quantities per sellable item.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createSalesOrder
18
+ Draft --> Submitted: submitSalesOrder
19
+ Submitted --> Draft: rejectSalesOrder
20
+ Submitted --> Confirmed: confirmSalesOrder
21
+ Confirmed --> CreditHold: placeSalesOrderOnCreditHold
22
+ CreditHold --> Confirmed: releaseSalesOrderCreditHold
23
+ Confirmed --> PartiallyShipped: postShipment
24
+ PartiallyShipped --> Shipped: postShipment
25
+ Confirmed --> PartiallyInvoiced: issueSalesInvoice
26
+ PartiallyShipped --> PartiallyInvoiced: issueSalesInvoice
27
+ Shipped --> PartiallyInvoiced: issueSalesInvoice
28
+ PartiallyInvoiced --> Invoiced: issueSalesInvoice
29
+ Confirmed --> Cancelled: cancelSalesOrder
30
+ CreditHold --> Cancelled: cancelSalesOrder
31
+ Draft --> Cancelled: cancelSalesOrder
32
+ Submitted --> Cancelled: cancelSalesOrder
33
+ Shipped --> Closed: closeSalesOrder
34
+ Invoiced --> Closed: closeSalesOrder
35
+ PartiallyShipped --> Closed: closeSalesOrder
36
+ PartiallyInvoiced --> Closed: closeSalesOrder
37
+ ```
38
+
39
+ ### Command Definitions
40
+
41
+ - [createSalesOrder](../commands/CreateSalesOrder.md) - Create a new draft sales order with initial line-level commercial context.
42
+ - [updateSalesOrder](../commands/UpdateSalesOrder.md) - Revise mutable draft fields and line details before submission or explicit revision flow.
43
+ - [submitSalesOrder](../commands/SubmitSalesOrder.md) - Move a draft order into review-ready submitted status.
44
+ - [rejectSalesOrder](../commands/RejectSalesOrder.md) - Return a submitted order to draft with a preserved rejection reason.
45
+ - [confirmSalesOrder](../commands/ConfirmSalesOrder.md) - Freeze commercial terms and make the order executable.
46
+ - [placeSalesOrderOnCreditHold](../commands/PlaceSalesOrderOnCreditHold.md) - Suspend further shipment or invoice release with an explicit commercial hold reason.
47
+ - [releaseSalesOrderCreditHold](../commands/ReleaseSalesOrderCreditHold.md) - Restore an order from credit hold to the executable confirmed lifecycle.
48
+ - [cancelSalesOrder](../commands/CancelSalesOrder.md) - Cancel an order that has not progressed into an irreversible downstream state.
49
+ - [closeSalesOrder](../commands/CloseSalesOrder.md) - Close the remaining open balance when execution is complete or written off by policy.
50
+
51
+ ### Query Definitions
52
+
53
+ - [getSalesOrder](../queries/GetSalesOrder.md) - Retrieve one sales order with customer, status, line, and progress details.
54
+ - [listSalesOrders](../queries/ListSalesOrders.md) - List sales orders for operational work queues and sales monitoring.
55
+
56
+ ### Models
57
+
58
+ - SalesOrder
59
+ - SalesOrderLine
60
+
61
+ ### Invariants
62
+
63
+ - Every sales order belongs to exactly one company and one customer, and all child lines stay within that same company scope.
64
+ - A sales order always contains at least one sales order line before it can leave DRAFT.
65
+ - Only ACTIVE business partners carrying the CUSTOMER role can be used as the customer on a new or confirmed sales order.
66
+ - Each line preserves the applied unit price, currency, matched price-rule reference, and payment-term snapshot so later master-data edits do not rewrite the confirmed commercial baseline.
67
+ - When the order is in CREDIT_HOLD, no new shipment posting or invoice issuance may proceed until the hold is released.
68
+ - The cumulative shipped quantity and cumulative invoiced quantity for each line can never exceed the ordered quantity unless a documented override flow is introduced later.
69
+ - An order can move to CLOSED only when every remaining obligation is fulfilled, cancelled, or explicitly written off by policy.
70
+
71
+ ### Relationships
72
+
73
+ - **Owns SalesOrderLine**: SalesOrder is the aggregate root for one or more SalesOrderLine children.
74
+ - **References BusinessPartner (cross-module)**: `customerId`, billing address snapshot, shipping address snapshot, and customer tax identifiers come from business-partner.
75
+ - **References SalesPaymentTerm**: `paymentTermId` and a normalized payment-term snapshot drive downstream invoice due schedules.
76
+ - **References Channel**: `channelId` is optional and links internally entered or channel-originated demand to its commercial channel context.
77
+ - **Referenced By Shipment**: Shipment records consume open sales-order quantities for fulfillment evidence.
78
+ - **Referenced By SalesInvoice and SalesCreditNote**: Billing documents must point back to the originating commercial commitment.
79
+ - **Referenced By ChannelOrder**: Converted channel orders store the internal sales-order linkage after normalization succeeds.
@@ -0,0 +1,42 @@
1
+ # SalesOrderLine
2
+
3
+ ## Description
4
+
5
+ SalesOrderLine represents one sellable obligation within a sales order. It stores the item, ordered quantity, selling unit, commercial price snapshot, requested fulfillment date, billing policy hints, and cumulative shipped or invoiced progress needed to calculate what remains to ship or invoice.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createSalesOrder](../commands/CreateSalesOrder.md) - Create initial order lines when the sales order is first drafted.
16
+ - [updateSalesOrder](../commands/UpdateSalesOrder.md) - Add, remove, or revise draft order lines before the commercial baseline is confirmed.
17
+ - [confirmSalesOrder](../commands/ConfirmSalesOrder.md) - Freeze line-level pricing, payment, and fulfillment snapshots at confirmation time.
18
+ - [closeSalesOrder](../commands/CloseSalesOrder.md) - Mark remaining line balance as complete, cancelled, or written off when the order closes.
19
+
20
+ ### Query Definitions
21
+
22
+ - [getSalesOrder](../queries/GetSalesOrder.md) - Return line-level item, quantity, and progress details inside one sales order.
23
+ - [listSalesOrders](../queries/ListSalesOrders.md) - Expose line summaries for sales and fulfillment work queues.
24
+
25
+ ### Models
26
+
27
+ - SalesOrderLine
28
+
29
+ ### Invariants
30
+
31
+ - Every sales order line belongs to exactly one sales order and inherits its company scope.
32
+ - Each line must reference one ACTIVE sellable item, a positive ordered quantity, and a non-negative unit price.
33
+ - Remaining quantity to ship and remaining quantity to invoice are derived from the immutable ordered quantity and the cumulative posted shipment or issued invoice evidence.
34
+ - Once the parent order is confirmed, line-level commercial fields are immutable unless an explicit revision workflow is introduced.
35
+
36
+ ### Relationships
37
+
38
+ - **Belongs To SalesOrder**: `salesOrderId` ties the line to its parent order aggregate.
39
+ - **References Item (cross-module)**: `itemId` must point to an ACTIVE item from item-management.
40
+ - **References SalesPriceRule**: `matchedPriceRuleId` is optional and records which rule defaulted the commercial price.
41
+ - **Referenced By ShipmentLine**: Shipment lines consume open shippable quantity from one order line.
42
+ - **Referenced By SalesInvoiceLine**: Invoice lines validate billed quantity and price against one order line.
@@ -0,0 +1,53 @@
1
+ # SalesPaymentTerm
2
+
3
+ ## Description
4
+
5
+ SalesPaymentTerm defines reusable receivable timing rules for sales orders and invoices. It stores one or more schedule lines plus optional early-payment discount metadata so invoice due schedules can be calculated deterministically from the invoice date without embedding finance logic into the customer master.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createSalesPaymentTerm
18
+ Draft --> Active: activateSalesPaymentTerm
19
+ Active --> Inactive: deactivateSalesPaymentTerm
20
+ ```
21
+
22
+ ### Command Definitions
23
+
24
+ - [createSalesPaymentTerm](../commands/CreateSalesPaymentTerm.md) - Create a draft payment term with one or more schedule lines.
25
+ - [updateSalesPaymentTerm](../commands/UpdateSalesPaymentTerm.md) - Revise schedule lines or discount metadata while the term remains editable.
26
+ - [activateSalesPaymentTerm](../commands/ActivateSalesPaymentTerm.md) - Make the term assignable to new orders and invoices.
27
+ - [deactivateSalesPaymentTerm](../commands/DeactivateSalesPaymentTerm.md) - Prevent future assignment while preserving historical snapshots.
28
+
29
+ ### Query Definitions
30
+
31
+ - [getSalesPaymentTerm](../queries/GetSalesPaymentTerm.md) - Retrieve one payment term and its schedule definition.
32
+ - [listSalesPaymentTerms](../queries/ListSalesPaymentTerms.md) - List payment terms available for commercial assignment.
33
+ - [calculateInvoiceDueSchedule](../queries/CalculateInvoiceDueSchedule.md) - Calculate the receivable schedule from an invoice date and term definition.
34
+
35
+ ### Models
36
+
37
+ - SalesPaymentTerm
38
+ - SalesPaymentTermScheduleLine
39
+
40
+ ### Invariants
41
+
42
+ - Every payment term belongs to exactly one company.
43
+ - A payment term must contain at least one schedule line.
44
+ - Percentage-based schedule lines must sum to 100 percent across the term definition.
45
+ - When early-payment discount metadata exists, its cutoff date logic must not fall after the final due date.
46
+ - Only ACTIVE payment terms may be assigned to new draft sales orders or invoices.
47
+
48
+ ### Relationships
49
+
50
+ - **Owns Payment-Term Schedule Lines**: A payment term contains one or more schedule definitions used to calculate due schedules.
51
+ - **References Company (cross-module)**: `companyId` isolates receivable policy by legal entity.
52
+ - **Referenced By SalesOrder**: Orders snapshot the assigned payment term for downstream billing.
53
+ - **Referenced By SalesInvoice**: Issued invoices carry the normalized due schedule derived from the term.
@@ -0,0 +1,50 @@
1
+ # SalesPriceList
2
+
3
+ ## Description
4
+
5
+ SalesPriceList groups reusable customer-facing price rules for one company. It provides the administrative boundary for activating, retiring, and auditing a commercial pricing set without forcing price logic into the item master itself.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createSalesPriceList
18
+ Draft --> Active: activateSalesPriceList
19
+ Active --> Inactive: deactivateSalesPriceList
20
+ ```
21
+
22
+ ### Command Definitions
23
+
24
+ - [createSalesPriceList](../commands/CreateSalesPriceList.md) - Create a draft price list for one company and commercial context.
25
+ - [updateSalesPriceList](../commands/UpdateSalesPriceList.md) - Revise list metadata while it remains editable.
26
+ - [activateSalesPriceList](../commands/ActivateSalesPriceList.md) - Make the list available for price-rule resolution on new orders.
27
+ - [deactivateSalesPriceList](../commands/DeactivateSalesPriceList.md) - Prevent future orders from using the list while preserving history.
28
+
29
+ ### Query Definitions
30
+
31
+ - [getSalesPriceList](../queries/GetSalesPriceList.md) - Retrieve one price list with its company scope and activation state.
32
+ - [listSalesPriceLists](../queries/ListSalesPriceLists.md) - List price lists for pricing administration and audit.
33
+ - [listSalesPriceRulesByPriceList](../queries/ListSalesPriceRulesByPriceList.md) - List the rules maintained under a selected price list.
34
+
35
+ ### Models
36
+
37
+ - SalesPriceList
38
+ - SalesPriceRule
39
+
40
+ ### Invariants
41
+
42
+ - Every price list belongs to exactly one company.
43
+ - Only ACTIVE price lists may participate in new price resolution.
44
+ - Deactivating a price list never mutates the snapshotted prices already stored on confirmed sales orders or issued invoices.
45
+
46
+ ### Relationships
47
+
48
+ - **Owns SalesPriceRule**: A price list groups one or more SalesPriceRule records.
49
+ - **References Company (cross-module)**: `companyId` scopes the list to a single legal entity.
50
+ - **Referenced By SalesOrderLine**: Order lines may store the matched rule that came from a given list at defaulting time.
@@ -0,0 +1,51 @@
1
+ # SalesPriceRule
2
+
3
+ ## Description
4
+
5
+ SalesPriceRule is the actual commercial pricing condition resolved during sales-order entry. It captures the item scope, optional customer or channel scope, minimum quantity, effective dates, unit of measure, currency, explicit priority, and selling price that determine whether the rule is applicable to a draft order line.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createSalesPriceRule
18
+ Draft --> Active: activateSalesPriceRule
19
+ Active --> Inactive: deactivateSalesPriceRule
20
+ ```
21
+
22
+ ### Command Definitions
23
+
24
+ - [createSalesPriceRule](../commands/CreateSalesPriceRule.md) - Create a draft pricing rule inside a company-scoped price list.
25
+ - [updateSalesPriceRule](../commands/UpdateSalesPriceRule.md) - Adjust scope, price, dates, or quantity break before or after activation under controlled rules.
26
+ - [activateSalesPriceRule](../commands/ActivateSalesPriceRule.md) - Make the rule eligible for deterministic price selection.
27
+ - [deactivateSalesPriceRule](../commands/DeactivateSalesPriceRule.md) - Remove the rule from future matching without rewriting history.
28
+
29
+ ### Query Definitions
30
+
31
+ - [getApplicableSalesPrice](../queries/GetApplicableSalesPrice.md) - Resolve the best matching rule and effective unit price for a draft sales-order context.
32
+ - [listSalesPriceRulesByPriceList](../queries/ListSalesPriceRulesByPriceList.md) - List rules maintained under a selected price list.
33
+
34
+ ### Models
35
+
36
+ - SalesPriceRule
37
+
38
+ ### Invariants
39
+
40
+ - Every rule belongs to exactly one sales price list and one company context.
41
+ - A rule must specify a non-negative minimum quantity, a positive unit price, a valid currency, and a valid sellable item scope.
42
+ - If both effective start and end dates are present, the end date cannot precede the start date.
43
+ - Two ACTIVE rules with indistinguishable precedence for the same commercial context are not allowed without an explicit tie-breaker priority.
44
+
45
+ ### Relationships
46
+
47
+ - **Belongs To SalesPriceList**: `salesPriceListId` assigns the rule to a reusable pricing set.
48
+ - **References Item (cross-module)**: `itemId` points to the sellable item being priced.
49
+ - **References BusinessPartner (cross-module)**: `customerId` is optional for customer-specific commercial agreements.
50
+ - **References Channel**: `channelId` is optional for marketplace or storefront-specific pricing.
51
+ - **References primitives**: `currencyId` and `uomId` must align with primitives conversion support.
@@ -0,0 +1,49 @@
1
+ # Shipment
2
+
3
+ ## Description
4
+
5
+ Shipment is the sales-side fulfillment document that proves which order quantities were shipped, when they shipped, and from which site. It is the commercial handoff to inventory execution and the billing evidence for shipment-gated invoicing policies.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Draft: createShipment
18
+ Draft --> Posted: postShipment
19
+ ```
20
+
21
+ ### Command Definitions
22
+
23
+ - [createShipment](../commands/CreateShipment.md) - Create a draft shipment against open sales-order lines.
24
+ - [updateShipment](../commands/UpdateShipment.md) - Correct draft shipment details such as quantities, addresses, or tracking data before posting.
25
+ - [postShipment](../commands/PostShipment.md) - Post the shipment, update order progress, and emit the outbound inventory handoff.
26
+
27
+ ### Query Definitions
28
+
29
+ - [getShipment](../queries/GetShipment.md) - Retrieve one shipment with posted quantities, addresses, and tracking context.
30
+ - [listShipmentsBySalesOrder](../queries/ListShipmentsBySalesOrder.md) - List shipments associated with a selected sales order.
31
+
32
+ ### Models
33
+
34
+ - Shipment
35
+ - ShipmentLine
36
+
37
+ ### Invariants
38
+
39
+ - Every shipment belongs to exactly one company and references exactly one sales order.
40
+ - Only DRAFT shipments may be edited directly.
41
+ - Only POSTED shipment quantities contribute to sales-order shipped progress or shipment-gated invoice eligibility.
42
+ - For stock items, posting emits exactly one outbound shipment handoff for each posted shipment line.
43
+
44
+ ### Relationships
45
+
46
+ - **Owns ShipmentLine**: Each shipment contains one or more shipment lines tied to order lines.
47
+ - **References SalesOrder**: `salesOrderId` identifies the originating commercial commitment.
48
+ - **References Site (cross-module)**: `shipFromSiteId` comes from organization and records fulfillment origin.
49
+ - **References inventory handoff contract**: Posting produces the `OutboundShipmentHandoff` payload for downstream stock execution.
@@ -0,0 +1,38 @@
1
+ # ShipmentLine
2
+
3
+ ## Description
4
+
5
+ ShipmentLine records the quantity from one sales-order line that is included in a shipment. It preserves the shipped quantity, unit of measure, and customer-facing shipment context needed to calculate remaining open balance on the order.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Standard
12
+
13
+ ### Command Definitions
14
+
15
+ - [createShipment](../commands/CreateShipment.md) - Create initial shipment lines from open sales-order lines.
16
+ - [updateShipment](../commands/UpdateShipment.md) - Revise draft shipment quantities or tracking context before posting.
17
+ - [postShipment](../commands/PostShipment.md) - Lock shipment quantities as posted fulfillment evidence.
18
+
19
+ ### Query Definitions
20
+
21
+ - [getShipment](../queries/GetShipment.md) - Return line-level shipment evidence for one posted or draft shipment.
22
+ - [listShipmentsBySalesOrder](../queries/ListShipmentsBySalesOrder.md) - Return shipment-line history under one sales order.
23
+
24
+ ### Models
25
+
26
+ - ShipmentLine
27
+
28
+ ### Invariants
29
+
30
+ - Every shipment line belongs to exactly one shipment and one sales-order line.
31
+ - Shipped quantity must be greater than zero and may not exceed the remaining shippable quantity unless an explicit override policy is introduced later.
32
+ - Service or non-stock lines may be recorded for customer traceability but do not require downstream inventory execution.
33
+
34
+ ### Relationships
35
+
36
+ - **Belongs To Shipment**: `shipmentId` ties the line to its parent shipment.
37
+ - **References SalesOrderLine**: `salesOrderLineId` identifies the commercial quantity being fulfilled.
38
+ - **Referenced By SalesInvoiceLine**: Shipment-gated invoices may cite posted shipment lines as billing evidence.
@@ -0,0 +1,53 @@
1
+ # SyncJob
2
+
3
+ ## Description
4
+
5
+ SyncJob records one import, export, retry, or replay execution against a channel integration. It is the operational log that captures timing, direction, counts, and error outcome separately from ChannelOrder business state so integration reliability can be managed without blurring demand semantics.
6
+
7
+ ## Domain Model Definitions
8
+
9
+ ### Model type
10
+
11
+ Stateful
12
+
13
+ #### State Transitions
14
+
15
+ ```mermaid
16
+ stateDiagram-v2
17
+ [*] --> Running: startSyncJob
18
+ Running --> Succeeded: startSyncJob
19
+ Running --> PartiallySucceeded: startSyncJob
20
+ Running --> Failed: startSyncJob
21
+ Running --> Cancelled: cancelSyncJob
22
+ Failed --> Running: retrySyncJob
23
+ PartiallySucceeded --> Running: retrySyncJob
24
+ Cancelled --> Running: retrySyncJob
25
+ ```
26
+
27
+ ### Command Definitions
28
+
29
+ - [startSyncJob](../commands/StartSyncJob.md) - Create and start a sync execution for one channel and direction.
30
+ - [retrySyncJob](../commands/RetrySyncJob.md) - Replay a failed or partial sync job with controlled idempotency.
31
+ - [cancelSyncJob](../commands/CancelSyncJob.md) - Stop a running or queued sync job when policy allows.
32
+
33
+ ### Query Definitions
34
+
35
+ - [getSyncJob](../queries/GetSyncJob.md) - Retrieve one sync job with timing, counts, and error summary.
36
+ - [listSyncJobs](../queries/ListSyncJobs.md) - List sync jobs for monitoring, support, and replay management.
37
+
38
+ ### Models
39
+
40
+ - SyncJob
41
+
42
+ ### Invariants
43
+
44
+ - Every sync job belongs to exactly one company and one channel.
45
+ - A sync job records one direction at a time, such as import or outbound status push.
46
+ - Processed, succeeded, failed, and retried counts reflect one execution attempt and do not silently merge unrelated runs.
47
+ - Terminal sync-job outcome is tracked independently from ChannelOrder business state.
48
+
49
+ ### Relationships
50
+
51
+ - **References Channel**: `channelId` scopes the integration execution context.
52
+ - **References Company (cross-module)**: `companyId` ensures tenant-safe sync isolation.
53
+ - **Referenced By ChannelOrder**: channel orders may store the originating or latest sync job for support traceability.
@@ -0,0 +1,37 @@
1
+ # CalculateInvoiceDueSchedule
2
+
3
+ ## Overview
4
+
5
+ CalculateInvoiceDueSchedule computes the receivable due schedule for an invoice date and sales payment term. It expands installment lines, end-of-month rules, and early-payment discount windows into deterministic due-schedule output.
6
+
7
+ ## Business Rules
8
+
9
+ - Invoice date and payment-term reference are required inputs.
10
+ - Percentage-based schedules must resolve to a full payable baseline.
11
+ - End-of-month rules must use calendar-month logic rather than a fixed offset shortcut.
12
+
13
+ ## Process Flow
14
+
15
+ ```mermaid
16
+ flowchart TD
17
+ A[Receive invoice date and payment term] --> B[Load payment-term definition]
18
+ B --> C[Expand schedule-line rules]
19
+ C --> D[Calculate due dates and discount windows]
20
+ D --> E[Return computed due schedule]
21
+ ```
22
+
23
+ ## External Dependencies
24
+
25
+ - [getSalesPaymentTerm](../queries/GetSalesPaymentTerm.md) - Load the assigned payment-term definition.
26
+
27
+ ## Error Scenarios
28
+
29
+ - **PAYMENT_TERM_NOT_FOUND**: Referenced payment term does not exist.
30
+ - **INVALID_PAYMENT_TERM_DEFINITION**: Payment term definition cannot produce a deterministic due schedule.
31
+
32
+ ## Test Cases
33
+
34
+ - calculates net-day due schedule
35
+ - calculates installment due schedule
36
+ - calculates end-of-month due schedule
37
+ - throws when payment term definition is invalid
@@ -0,0 +1,38 @@
1
+ # GetApplicableSalesPrice
2
+
3
+ ## Overview
4
+
5
+ GetApplicableSalesPrice resolves the best matching commercial price for a draft sales-order line context. It evaluates active rules across price list, customer, channel, item, quantity, date, currency, unit of measure, and explicit priority to return a deterministic result or an unmatched outcome.
6
+
7
+ ## Business Rules
8
+
9
+ - Only ACTIVE price lists and ACTIVE price rules participate in matching.
10
+ - Rule precedence is deterministic across company, customer, channel, item, quantity break, date, and priority.
11
+ - When no rule matches, the query returns an unmatched result rather than throwing so manual pricing remains possible.
12
+
13
+ ## Process Flow
14
+
15
+ ```mermaid
16
+ flowchart TD
17
+ A[Receive draft pricing context] --> B[Load active price lists and rules]
18
+ B --> C[Filter by company, item, customer, channel, date, quantity, currency, and UoM]
19
+ C --> D{Match found?}
20
+ D -->|No| E[Return unmatched result]
21
+ D -->|Yes| F[Apply deterministic precedence]
22
+ F --> G[Return selected rule and effective unit price]
23
+ ```
24
+
25
+ ## External Dependencies
26
+
27
+ - [primitives::ConvertQuantity](../../../primitives/docs/queries/ConvertQuantity.md) - Support quantity-break comparison across compatible UoMs when needed.
28
+
29
+ ## Error Scenarios
30
+
31
+ - **INVALID_PRICING_CONTEXT**: Required pricing inputs are missing or inconsistent.
32
+
33
+ ## Test Cases
34
+
35
+ - returns the highest-precedence matching price rule
36
+ - returns unmatched result when no active rule applies
37
+ - resolves quantity-break pricing with compatible UoM conversion
38
+ - throws when required pricing context is missing
@@ -0,0 +1,34 @@
1
+ # GetChannel
2
+
3
+ ## Overview
4
+
5
+ GetChannel retrieves one sales channel with company scope, type, and lifecycle status.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup by id performs an exact channel match.
10
+ - The query returns DRAFT, ACTIVE, and INACTIVE channels.
11
+
12
+ ## Process Flow
13
+
14
+ ```mermaid
15
+ flowchart TD
16
+ A[Receive channel id] --> B[Query Channel]
17
+ B --> C{Found?}
18
+ C -->|No| D[Return null]
19
+ C -->|Yes| E[Return channel]
20
+ ```
21
+
22
+ ## External Dependencies
23
+
24
+ - None
25
+
26
+ ## Error Scenarios
27
+
28
+ - **NONE**: Returns null when no matching channel exists.
29
+
30
+ ## Test Cases
31
+
32
+ - returns channel when found by id
33
+ - returns inactive channel when requested directly
34
+ - returns null when channel is not found
@@ -0,0 +1,34 @@
1
+ # GetChannelOrder
2
+
3
+ ## Overview
4
+
5
+ GetChannelOrder retrieves one normalized channel order with mapping, linked sales-order, and troubleshooting context.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup by id performs an exact channel-order match.
10
+ - The query returns any channel-order lifecycle status, including EXCEPTION and CANCELLED_BY_CHANNEL.
11
+
12
+ ## Process Flow
13
+
14
+ ```mermaid
15
+ flowchart TD
16
+ A[Receive channel-order id] --> B[Query ChannelOrder]
17
+ B --> C{Found?}
18
+ C -->|No| D[Return null]
19
+ C -->|Yes| E[Return channel order]
20
+ ```
21
+
22
+ ## External Dependencies
23
+
24
+ - None
25
+
26
+ ## Error Scenarios
27
+
28
+ - **NONE**: Returns null when no matching channel order exists.
29
+
30
+ ## Test Cases
31
+
32
+ - returns channel order when found by id
33
+ - returns channel order with linked sales-order reference when converted
34
+ - returns null when channel order is not found
@@ -0,0 +1,34 @@
1
+ # GetListing
2
+
3
+ ## Overview
4
+
5
+ GetListing retrieves one listing with channel, item, identifier, and sellability detail.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup by id performs an exact listing match.
10
+ - The query returns DRAFT, ACTIVE, PAUSED, and RETIRED listings.
11
+
12
+ ## Process Flow
13
+
14
+ ```mermaid
15
+ flowchart TD
16
+ A[Receive listing id] --> B[Query Listing]
17
+ B --> C{Found?}
18
+ C -->|No| D[Return null]
19
+ C -->|Yes| E[Return listing]
20
+ ```
21
+
22
+ ## External Dependencies
23
+
24
+ - None
25
+
26
+ ## Error Scenarios
27
+
28
+ - **NONE**: Returns null when no matching listing exists.
29
+
30
+ ## Test Cases
31
+
32
+ - returns listing when found by id
33
+ - returns retired listing when requested directly
34
+ - returns null when listing is not found
@@ -0,0 +1,35 @@
1
+ # GetListingByExternalIdentifier
2
+
3
+ ## Overview
4
+
5
+ GetListingByExternalIdentifier resolves the internal listing record from an external channel identifier. It is the lookup bridge used by channel-order ingestion and support tooling.
6
+
7
+ ## Business Rules
8
+
9
+ - Channel identifier and external listing identifier are required.
10
+ - The query returns retired listings when they must remain referenceable for historical support.
11
+
12
+ ## Process Flow
13
+
14
+ ```mermaid
15
+ flowchart TD
16
+ A[Receive channel id and external identifier] --> B[Query listing by channel and external identifier]
17
+ B --> C{Found?}
18
+ C -->|No| D[Return null]
19
+ C -->|Yes| E[Return listing]
20
+ ```
21
+
22
+ ## External Dependencies
23
+
24
+ - None
25
+
26
+ ## Error Scenarios
27
+
28
+ - **IDENTIFIER_REQUIRED**: Channel id and external identifier are required.
29
+
30
+ ## Test Cases
31
+
32
+ - returns listing by external identifier
33
+ - returns retired listing when historical reference is needed
34
+ - returns null when no listing matches the external identifier
35
+ - throws when channel id or external identifier is missing
@@ -0,0 +1,34 @@
1
+ # GetSalesCreditNote
2
+
3
+ ## Overview
4
+
5
+ GetSalesCreditNote retrieves one credit note with correction-line detail and linked invoice context.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup by id performs an exact credit-note match.
10
+ - The query returns DRAFT and ISSUED credit notes.
11
+
12
+ ## Process Flow
13
+
14
+ ```mermaid
15
+ flowchart TD
16
+ A[Receive credit-note id] --> B[Query SalesCreditNote and lines]
17
+ B --> C{Found?}
18
+ C -->|No| D[Return null]
19
+ C -->|Yes| E[Return credit note]
20
+ ```
21
+
22
+ ## External Dependencies
23
+
24
+ - None
25
+
26
+ ## Error Scenarios
27
+
28
+ - **NONE**: Returns null when no matching sales credit note exists.
29
+
30
+ ## Test Cases
31
+
32
+ - returns credit note when found by id
33
+ - returns issued credit note with correction lines
34
+ - returns null when credit note is not found