@tailor-platform/erp-kit 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (940) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +12 -12
  3. package/dist/cli.mjs +503 -32
  4. package/package.json +2 -11
  5. package/skills/erp-kit-app-2-requirements-review/SKILL.md +2 -2
  6. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +1 -1
  7. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +6 -3
  8. package/skills/erp-kit-app-4-plan-review/SKILL.md +5 -3
  9. package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +3 -0
  10. package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +21 -3
  11. package/skills/erp-kit-app-5-impl-backend/SKILL.md +15 -4
  12. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +8 -4
  13. package/skills/erp-kit-app-7-impl-review/SKILL.md +1 -1
  14. package/skills/erp-kit-app-shared/references/resolver-classification.md +3 -0
  15. package/skills/erp-kit-module-2-requirements-review/SKILL.md +3 -30
  16. package/skills/erp-kit-module-3-update-plan/SKILL.md +132 -0
  17. package/skills/erp-kit-module-3-update-plan/references/command-extraction.md +87 -0
  18. package/skills/erp-kit-module-3-update-plan/references/model-extraction.md +72 -0
  19. package/skills/erp-kit-module-3-update-plan/references/naming.md +73 -0
  20. package/skills/erp-kit-module-3-update-plan/references/query-extraction.md +59 -0
  21. package/skills/erp-kit-module-4-plan-review/SKILL.md +3 -69
  22. package/skills/erp-kit-module-5-impl/SKILL.md +1 -0
  23. package/skills/erp-kit-module-6-impl-review/SKILL.md +42 -120
  24. package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +1 -1
  25. package/skills/erp-kit-module-6-impl-review/references/{error-implementation-parity.md → command-error-implementation-parity.md} +3 -3
  26. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +1 -1
  27. package/skills/erp-kit-module-6-impl-review/references/query-doc-code-parity.md +110 -0
  28. package/skills/erp-kit-module-6-impl-review/references/query-doc-test-parity.md +108 -0
  29. package/skills/erp-kit-module-6-impl-review/references/query-error-implementation-parity.md +100 -0
  30. package/src/commands/app/index.ts +18 -3
  31. package/src/commands/check.test.ts +1 -1
  32. package/src/commands/doc/module.ts +2 -3
  33. package/src/commands/doc/modules.test.ts +0 -7
  34. package/src/commands/doc/modules.ts +1 -2
  35. package/src/commands/doc/search.ts +1 -2
  36. package/src/commands/init-module.test.ts +17 -3
  37. package/src/commands/init-module.ts +0 -12
  38. package/src/commands/init.ts +4 -0
  39. package/src/commands/lib/distribute.test.ts +32 -1
  40. package/src/commands/lib/distribute.ts +47 -5
  41. package/src/commands/lib/sync-check-source.test.ts +1 -1
  42. package/src/commands/update.test.ts +16 -0
  43. package/src/commands/update.ts +4 -1
  44. package/src/generator/generate-code-boilerplate.test.ts +9 -1
  45. package/src/generator/generate-seed.ts +69 -0
  46. package/src/generator/scaffold.ts +6 -2
  47. package/src/mdschema.ts +39 -3
  48. package/src/module.ts +56 -0
  49. package/src/modules/business-partner/README.md +2 -2
  50. package/src/modules/inventory/README.md +65 -0
  51. package/src/modules/inventory/command/approveCountLine.generated.ts +6 -0
  52. package/src/modules/inventory/command/approveCountLine.test.ts +89 -0
  53. package/src/modules/inventory/command/approveCountLine.ts +68 -0
  54. package/src/modules/inventory/command/approveInventoryAdjustment.generated.ts +6 -0
  55. package/src/modules/inventory/command/approveInventoryAdjustment.test.ts +56 -0
  56. package/src/modules/inventory/command/approveInventoryAdjustment.ts +50 -0
  57. package/src/modules/inventory/command/assignSerialNumber.generated.ts +6 -0
  58. package/src/modules/inventory/command/assignSerialNumber.test.ts +133 -0
  59. package/src/modules/inventory/command/assignSerialNumber.ts +83 -0
  60. package/src/modules/inventory/command/cancelInventoryCount.generated.ts +6 -0
  61. package/src/modules/inventory/command/cancelInventoryCount.test.ts +114 -0
  62. package/src/modules/inventory/command/cancelInventoryCount.ts +62 -0
  63. package/src/modules/inventory/command/cancelStockMovement.generated.ts +6 -0
  64. package/src/modules/inventory/command/cancelStockMovement.test.ts +102 -0
  65. package/src/modules/inventory/command/cancelStockMovement.ts +56 -0
  66. package/src/modules/inventory/command/completeInventoryCount.generated.ts +6 -0
  67. package/src/modules/inventory/command/completeInventoryCount.test.ts +99 -0
  68. package/src/modules/inventory/command/completeInventoryCount.ts +70 -0
  69. package/src/modules/inventory/command/confirmInventoryAdjustment.generated.ts +6 -0
  70. package/src/modules/inventory/command/confirmInventoryAdjustment.test.ts +324 -0
  71. package/src/modules/inventory/command/confirmInventoryAdjustment.ts +194 -0
  72. package/src/modules/inventory/command/confirmStockMovement.generated.ts +6 -0
  73. package/src/modules/inventory/command/confirmStockMovement.test.ts +126 -0
  74. package/src/modules/inventory/command/confirmStockMovement.ts +131 -0
  75. package/src/modules/inventory/command/createInventoryAdjustment.generated.ts +6 -0
  76. package/src/modules/inventory/command/createInventoryAdjustment.test.ts +298 -0
  77. package/src/modules/inventory/command/createInventoryAdjustment.ts +124 -0
  78. package/src/modules/inventory/command/createInventoryCount.generated.ts +6 -0
  79. package/src/modules/inventory/command/createInventoryCount.test.ts +157 -0
  80. package/src/modules/inventory/command/createInventoryCount.ts +72 -0
  81. package/src/modules/inventory/command/createLot.generated.ts +6 -0
  82. package/src/modules/inventory/command/createLot.test.ts +106 -0
  83. package/src/modules/inventory/command/createLot.ts +72 -0
  84. package/src/modules/inventory/command/createStockMovement.generated.ts +6 -0
  85. package/src/modules/inventory/command/createStockMovement.test.ts +342 -0
  86. package/src/modules/inventory/command/createStockMovement.ts +172 -0
  87. package/src/modules/inventory/command/createStorageLocation.generated.ts +6 -0
  88. package/src/modules/inventory/command/createStorageLocation.test.ts +246 -0
  89. package/src/modules/inventory/command/createStorageLocation.ts +126 -0
  90. package/src/modules/inventory/command/createValuationPolicy.generated.ts +6 -0
  91. package/src/modules/inventory/command/createValuationPolicy.test.ts +75 -0
  92. package/src/modules/inventory/command/createValuationPolicy.ts +52 -0
  93. package/src/modules/inventory/command/createWarehouse.generated.ts +6 -0
  94. package/src/modules/inventory/command/createWarehouse.test.ts +143 -0
  95. package/src/modules/inventory/command/createWarehouse.ts +76 -0
  96. package/src/modules/inventory/command/deactivateStorageLocation.generated.ts +6 -0
  97. package/src/modules/inventory/command/deactivateStorageLocation.test.ts +69 -0
  98. package/src/modules/inventory/command/deactivateStorageLocation.ts +51 -0
  99. package/src/modules/inventory/command/deactivateWarehouse.generated.ts +6 -0
  100. package/src/modules/inventory/command/deactivateWarehouse.test.ts +75 -0
  101. package/src/modules/inventory/command/deactivateWarehouse.ts +45 -0
  102. package/src/modules/inventory/command/executeStockMovement.generated.ts +6 -0
  103. package/src/modules/inventory/command/executeStockMovement.test.ts +502 -0
  104. package/src/modules/inventory/command/executeStockMovement.ts +303 -0
  105. package/src/modules/inventory/command/reactivateStorageLocation.generated.ts +6 -0
  106. package/src/modules/inventory/command/reactivateStorageLocation.test.ts +78 -0
  107. package/src/modules/inventory/command/reactivateStorageLocation.ts +63 -0
  108. package/src/modules/inventory/command/reactivateWarehouse.generated.ts +6 -0
  109. package/src/modules/inventory/command/reactivateWarehouse.test.ts +87 -0
  110. package/src/modules/inventory/command/reactivateWarehouse.ts +65 -0
  111. package/src/modules/inventory/command/recordCountLine.generated.ts +6 -0
  112. package/src/modules/inventory/command/recordCountLine.test.ts +211 -0
  113. package/src/modules/inventory/command/recordCountLine.ts +81 -0
  114. package/src/modules/inventory/command/rejectCountLine.generated.ts +6 -0
  115. package/src/modules/inventory/command/rejectCountLine.test.ts +66 -0
  116. package/src/modules/inventory/command/rejectCountLine.ts +50 -0
  117. package/src/modules/inventory/command/rejectInventoryAdjustment.generated.ts +6 -0
  118. package/src/modules/inventory/command/rejectInventoryAdjustment.test.ts +69 -0
  119. package/src/modules/inventory/command/rejectInventoryAdjustment.ts +50 -0
  120. package/src/modules/inventory/command/releaseReservation.generated.ts +6 -0
  121. package/src/modules/inventory/command/releaseReservation.test.ts +65 -0
  122. package/src/modules/inventory/command/releaseReservation.ts +50 -0
  123. package/src/modules/inventory/command/reserveStock.generated.ts +6 -0
  124. package/src/modules/inventory/command/reserveStock.test.ts +141 -0
  125. package/src/modules/inventory/command/reserveStock.ts +88 -0
  126. package/src/modules/inventory/command/reviseInventoryAdjustment.generated.ts +6 -0
  127. package/src/modules/inventory/command/reviseInventoryAdjustment.test.ts +68 -0
  128. package/src/modules/inventory/command/reviseInventoryAdjustment.ts +48 -0
  129. package/src/modules/inventory/command/startInventoryCount.generated.ts +6 -0
  130. package/src/modules/inventory/command/startInventoryCount.test.ts +100 -0
  131. package/src/modules/inventory/command/startInventoryCount.ts +90 -0
  132. package/src/modules/inventory/command/submitInventoryAdjustment.generated.ts +6 -0
  133. package/src/modules/inventory/command/submitInventoryAdjustment.test.ts +53 -0
  134. package/src/modules/inventory/command/submitInventoryAdjustment.ts +47 -0
  135. package/src/modules/inventory/command/updateLot.generated.ts +6 -0
  136. package/src/modules/inventory/command/updateLot.test.ts +88 -0
  137. package/src/modules/inventory/command/updateLot.ts +52 -0
  138. package/src/modules/inventory/command/updateStockMovement.generated.ts +6 -0
  139. package/src/modules/inventory/command/updateStockMovement.test.ts +250 -0
  140. package/src/modules/inventory/command/updateStockMovement.ts +164 -0
  141. package/src/modules/inventory/command/updateStorageLocation.generated.ts +6 -0
  142. package/src/modules/inventory/command/updateStorageLocation.test.ts +72 -0
  143. package/src/modules/inventory/command/updateStorageLocation.ts +77 -0
  144. package/src/modules/inventory/command/updateValuationPolicy.generated.ts +6 -0
  145. package/src/modules/inventory/command/updateValuationPolicy.test.ts +68 -0
  146. package/src/modules/inventory/command/updateValuationPolicy.ts +74 -0
  147. package/src/modules/inventory/command/updateWarehouse.generated.ts +6 -0
  148. package/src/modules/inventory/command/updateWarehouse.test.ts +88 -0
  149. package/src/modules/inventory/command/updateWarehouse.ts +64 -0
  150. package/src/modules/inventory/db/costLayer.ts +54 -0
  151. package/src/modules/inventory/db/inventoryAdjustment.ts +88 -0
  152. package/src/modules/inventory/db/inventoryCount.ts +58 -0
  153. package/src/modules/inventory/db/inventoryCountLine.ts +61 -0
  154. package/src/modules/inventory/db/itemValuation.ts +50 -0
  155. package/src/modules/inventory/db/lot.ts +51 -0
  156. package/src/modules/inventory/db/lotStockLevel.ts +48 -0
  157. package/src/modules/inventory/db/serialNumber.ts +53 -0
  158. package/src/modules/inventory/db/stockLevel.ts +51 -0
  159. package/src/modules/inventory/db/stockMoveLine.ts +78 -0
  160. package/src/modules/inventory/db/stockMovement.ts +48 -0
  161. package/src/modules/inventory/db/storageLocation.ts +56 -0
  162. package/src/modules/inventory/db/valuationPolicy.ts +33 -0
  163. package/src/modules/inventory/db/warehouse.ts +45 -0
  164. package/src/modules/inventory/docs/commands/ApproveCountLine.md +44 -0
  165. package/src/modules/inventory/docs/commands/ApproveInventoryAdjustment.md +37 -0
  166. package/src/modules/inventory/docs/commands/AssignSerialNumber.md +46 -0
  167. package/src/modules/inventory/docs/commands/CancelInventoryCount.md +49 -0
  168. package/src/modules/inventory/docs/commands/CancelStockMovement.md +44 -0
  169. package/src/modules/inventory/docs/commands/CompleteInventoryCount.md +47 -0
  170. package/src/modules/inventory/docs/commands/ConfirmInventoryAdjustment.md +72 -0
  171. package/src/modules/inventory/docs/commands/ConfirmStockMovement.md +43 -0
  172. package/src/modules/inventory/docs/commands/CreateInventoryAdjustment.md +75 -0
  173. package/src/modules/inventory/docs/commands/CreateInventoryCount.md +49 -0
  174. package/src/modules/inventory/docs/commands/CreateLot.md +40 -0
  175. package/src/modules/inventory/docs/commands/CreateStockMovement.md +76 -0
  176. package/src/modules/inventory/docs/commands/CreateStorageLocation.md +66 -0
  177. package/src/modules/inventory/docs/commands/CreateValuationPolicy.md +45 -0
  178. package/src/modules/inventory/docs/commands/CreateWarehouse.md +47 -0
  179. package/src/modules/inventory/docs/commands/DeactivateStorageLocation.md +39 -0
  180. package/src/modules/inventory/docs/commands/DeactivateWarehouse.md +38 -0
  181. package/src/modules/inventory/docs/commands/ExecuteStockMovement.md +82 -0
  182. package/src/modules/inventory/docs/commands/ReactivateStorageLocation.md +42 -0
  183. package/src/modules/inventory/docs/commands/ReactivateWarehouse.md +42 -0
  184. package/src/modules/inventory/docs/commands/RecordCountLine.md +52 -0
  185. package/src/modules/inventory/docs/commands/RejectCountLine.md +42 -0
  186. package/src/modules/inventory/docs/commands/RejectInventoryAdjustment.md +38 -0
  187. package/src/modules/inventory/docs/commands/ReleaseReservation.md +37 -0
  188. package/src/modules/inventory/docs/commands/ReserveStock.md +49 -0
  189. package/src/modules/inventory/docs/commands/ReviseInventoryAdjustment.md +38 -0
  190. package/src/modules/inventory/docs/commands/StartInventoryCount.md +47 -0
  191. package/src/modules/inventory/docs/commands/SubmitInventoryAdjustment.md +37 -0
  192. package/src/modules/inventory/docs/commands/UpdateLot.md +41 -0
  193. package/src/modules/inventory/docs/commands/UpdateStockMovement.md +45 -0
  194. package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +41 -0
  195. package/src/modules/inventory/docs/commands/UpdateValuationPolicy.md +44 -0
  196. package/src/modules/inventory/docs/commands/UpdateWarehouse.md +42 -0
  197. package/src/modules/inventory/docs/features/inventory-adjustment.md +64 -0
  198. package/src/modules/inventory/docs/features/inventory-count.md +78 -0
  199. package/src/modules/inventory/docs/features/inventory-valuation.md +77 -0
  200. package/src/modules/inventory/docs/features/lot-and-batch-tracking.md +81 -0
  201. package/src/modules/inventory/docs/features/scrap-management.md +63 -0
  202. package/src/modules/inventory/docs/features/serial-number-tracking.md +68 -0
  203. package/src/modules/inventory/docs/features/stock-movement.md +72 -0
  204. package/src/modules/inventory/docs/features/stock-tracking.md +78 -0
  205. package/src/modules/inventory/docs/features/warehouse-management.md +97 -0
  206. package/src/modules/inventory/docs/models/CostLayer.md +37 -0
  207. package/src/modules/inventory/docs/models/InventoryAdjustment.md +69 -0
  208. package/src/modules/inventory/docs/models/InventoryCount.md +53 -0
  209. package/src/modules/inventory/docs/models/InventoryCountLine.md +53 -0
  210. package/src/modules/inventory/docs/models/ItemValuation.md +38 -0
  211. package/src/modules/inventory/docs/models/Lot.md +45 -0
  212. package/src/modules/inventory/docs/models/LotStockLevel.md +34 -0
  213. package/src/modules/inventory/docs/models/SerialNumber.md +53 -0
  214. package/src/modules/inventory/docs/models/StockLevel.md +41 -0
  215. package/src/modules/inventory/docs/models/StockMoveLine.md +44 -0
  216. package/src/modules/inventory/docs/models/StockMovement.md +52 -0
  217. package/src/modules/inventory/docs/models/StorageLocation.md +55 -0
  218. package/src/modules/inventory/docs/models/ValuationPolicy.md +38 -0
  219. package/src/modules/inventory/docs/models/Warehouse.md +50 -0
  220. package/src/modules/inventory/docs/queries/GetInventoryAdjustment.md +40 -0
  221. package/src/modules/inventory/docs/queries/GetInventoryCount.md +43 -0
  222. package/src/modules/inventory/docs/queries/GetItemValuation.md +42 -0
  223. package/src/modules/inventory/docs/queries/GetLot.md +42 -0
  224. package/src/modules/inventory/docs/queries/GetSerialNumber.md +43 -0
  225. package/src/modules/inventory/docs/queries/GetSerialNumberHistory.md +50 -0
  226. package/src/modules/inventory/docs/queries/GetStockLevel.md +42 -0
  227. package/src/modules/inventory/docs/queries/GetStockMovement.md +41 -0
  228. package/src/modules/inventory/docs/queries/GetStorageLocation.md +40 -0
  229. package/src/modules/inventory/docs/queries/GetValuationPolicy.md +38 -0
  230. package/src/modules/inventory/docs/queries/GetWarehouse.md +40 -0
  231. package/src/modules/inventory/docs/queries/GetWarehouseStockSummary.md +50 -0
  232. package/src/modules/inventory/docs/queries/ListCostLayers.md +49 -0
  233. package/src/modules/inventory/docs/queries/ListExpiringLots.md +51 -0
  234. package/src/modules/inventory/docs/queries/ListInventoryAdjustments.md +47 -0
  235. package/src/modules/inventory/docs/queries/ListInventoryCounts.md +57 -0
  236. package/src/modules/inventory/docs/queries/ListItemValuations.md +44 -0
  237. package/src/modules/inventory/docs/queries/ListLots.md +57 -0
  238. package/src/modules/inventory/docs/queries/ListSerialNumbers.md +44 -0
  239. package/src/modules/inventory/docs/queries/ListStockLevels.md +49 -0
  240. package/src/modules/inventory/docs/queries/ListStockMovements.md +47 -0
  241. package/src/modules/inventory/docs/queries/ListStorageLocations.md +47 -0
  242. package/src/modules/inventory/docs/queries/ListValuationPolicies.md +38 -0
  243. package/src/modules/inventory/docs/queries/ListWarehouses.md +42 -0
  244. package/src/modules/inventory/docs/queries/TraceLotBackward.md +46 -0
  245. package/src/modules/inventory/docs/queries/TraceLotForward.md +46 -0
  246. package/src/modules/inventory/executor/.gitkeep +0 -0
  247. package/src/modules/inventory/generated/.gitkeep +0 -0
  248. package/src/modules/inventory/generated/enums.ts +131 -0
  249. package/src/modules/inventory/generated/kysely-tailordb.ts +201 -0
  250. package/src/modules/inventory/index.ts +2 -0
  251. package/src/modules/inventory/lib/_db_deps.ts +17 -0
  252. package/src/modules/inventory/lib/errors.generated.ts +317 -0
  253. package/src/modules/inventory/lib/permissions.generated.ts +38 -0
  254. package/src/modules/inventory/lib/types.ts +92 -0
  255. package/src/modules/inventory/module.ts +202 -0
  256. package/src/modules/inventory/permissions.ts +3 -0
  257. package/src/modules/inventory/query/.gitkeep +0 -0
  258. package/src/modules/inventory/query/getInventoryAdjustment.generated.ts +5 -0
  259. package/src/modules/inventory/query/getInventoryAdjustment.test.ts +58 -0
  260. package/src/modules/inventory/query/getInventoryAdjustment.ts +16 -0
  261. package/src/modules/inventory/query/getInventoryCount.generated.ts +5 -0
  262. package/src/modules/inventory/query/getInventoryCount.test.ts +65 -0
  263. package/src/modules/inventory/query/getInventoryCount.ts +27 -0
  264. package/src/modules/inventory/query/getItemValuation.generated.ts +5 -0
  265. package/src/modules/inventory/query/getItemValuation.test.ts +72 -0
  266. package/src/modules/inventory/query/getItemValuation.ts +29 -0
  267. package/src/modules/inventory/query/getLot.generated.ts +5 -0
  268. package/src/modules/inventory/query/getLot.test.ts +62 -0
  269. package/src/modules/inventory/query/getLot.ts +28 -0
  270. package/src/modules/inventory/query/getSerialNumber.generated.ts +5 -0
  271. package/src/modules/inventory/query/getSerialNumber.test.ts +59 -0
  272. package/src/modules/inventory/query/getSerialNumber.ts +18 -0
  273. package/src/modules/inventory/query/getSerialNumberHistory.generated.ts +5 -0
  274. package/src/modules/inventory/query/getSerialNumberHistory.test.ts +80 -0
  275. package/src/modules/inventory/query/getSerialNumberHistory.ts +30 -0
  276. package/src/modules/inventory/query/getStockLevel.generated.ts +5 -0
  277. package/src/modules/inventory/query/getStockLevel.test.ts +70 -0
  278. package/src/modules/inventory/query/getStockLevel.ts +24 -0
  279. package/src/modules/inventory/query/getStockMovement.generated.ts +5 -0
  280. package/src/modules/inventory/query/getStockMovement.test.ts +62 -0
  281. package/src/modules/inventory/query/getStockMovement.ts +26 -0
  282. package/src/modules/inventory/query/getStorageLocation.generated.ts +5 -0
  283. package/src/modules/inventory/query/getStorageLocation.test.ts +54 -0
  284. package/src/modules/inventory/query/getStorageLocation.ts +26 -0
  285. package/src/modules/inventory/query/getValuationPolicy.generated.ts +5 -0
  286. package/src/modules/inventory/query/getValuationPolicy.test.ts +42 -0
  287. package/src/modules/inventory/query/getValuationPolicy.ts +16 -0
  288. package/src/modules/inventory/query/getWarehouse.generated.ts +5 -0
  289. package/src/modules/inventory/query/getWarehouse.test.ts +61 -0
  290. package/src/modules/inventory/query/getWarehouse.ts +26 -0
  291. package/src/modules/inventory/query/getWarehouseStockSummary.generated.ts +5 -0
  292. package/src/modules/inventory/query/getWarehouseStockSummary.test.ts +97 -0
  293. package/src/modules/inventory/query/getWarehouseStockSummary.ts +82 -0
  294. package/src/modules/inventory/query/listCostLayers.generated.ts +5 -0
  295. package/src/modules/inventory/query/listCostLayers.test.ts +58 -0
  296. package/src/modules/inventory/query/listCostLayers.ts +45 -0
  297. package/src/modules/inventory/query/listExpiringLots.generated.ts +5 -0
  298. package/src/modules/inventory/query/listExpiringLots.test.ts +70 -0
  299. package/src/modules/inventory/query/listExpiringLots.ts +74 -0
  300. package/src/modules/inventory/query/listInventoryAdjustments.generated.ts +5 -0
  301. package/src/modules/inventory/query/listInventoryAdjustments.test.ts +89 -0
  302. package/src/modules/inventory/query/listInventoryAdjustments.ts +59 -0
  303. package/src/modules/inventory/query/listInventoryCounts.generated.ts +5 -0
  304. package/src/modules/inventory/query/listInventoryCounts.test.ts +78 -0
  305. package/src/modules/inventory/query/listInventoryCounts.ts +55 -0
  306. package/src/modules/inventory/query/listItemValuations.generated.ts +5 -0
  307. package/src/modules/inventory/query/listItemValuations.test.ts +54 -0
  308. package/src/modules/inventory/query/listItemValuations.ts +39 -0
  309. package/src/modules/inventory/query/listLots.generated.ts +5 -0
  310. package/src/modules/inventory/query/listLots.test.ts +120 -0
  311. package/src/modules/inventory/query/listLots.ts +68 -0
  312. package/src/modules/inventory/query/listSerialNumbers.generated.ts +5 -0
  313. package/src/modules/inventory/query/listSerialNumbers.test.ts +58 -0
  314. package/src/modules/inventory/query/listSerialNumbers.ts +53 -0
  315. package/src/modules/inventory/query/listStockLevels.generated.ts +5 -0
  316. package/src/modules/inventory/query/listStockLevels.test.ts +73 -0
  317. package/src/modules/inventory/query/listStockLevels.ts +79 -0
  318. package/src/modules/inventory/query/listStockMovements.generated.ts +5 -0
  319. package/src/modules/inventory/query/listStockMovements.test.ts +98 -0
  320. package/src/modules/inventory/query/listStockMovements.ts +105 -0
  321. package/src/modules/inventory/query/listStorageLocations.generated.ts +5 -0
  322. package/src/modules/inventory/query/listStorageLocations.test.ts +70 -0
  323. package/src/modules/inventory/query/listStorageLocations.ts +53 -0
  324. package/src/modules/inventory/query/listValuationPolicies.generated.ts +5 -0
  325. package/src/modules/inventory/query/listValuationPolicies.test.ts +38 -0
  326. package/src/modules/inventory/query/listValuationPolicies.ts +39 -0
  327. package/src/modules/inventory/query/listWarehouses.generated.ts +5 -0
  328. package/src/modules/inventory/query/listWarehouses.test.ts +60 -0
  329. package/src/modules/inventory/query/listWarehouses.ts +39 -0
  330. package/src/modules/inventory/query/traceLotBackward.generated.ts +5 -0
  331. package/src/modules/inventory/query/traceLotBackward.test.ts +63 -0
  332. package/src/modules/inventory/query/traceLotBackward.ts +36 -0
  333. package/src/modules/inventory/query/traceLotForward.generated.ts +5 -0
  334. package/src/modules/inventory/query/traceLotForward.test.ts +63 -0
  335. package/src/modules/inventory/query/traceLotForward.ts +36 -0
  336. package/src/modules/inventory/tailor.config.ts +13 -0
  337. package/src/modules/inventory/tailor.d.ts +13 -0
  338. package/src/modules/inventory/testing/commandTestUtils.ts +29 -0
  339. package/src/modules/inventory/testing/fixtures.ts +412 -0
  340. package/src/modules/item-management/docs/models/{item.md → Item.md} +1 -1
  341. package/src/modules/primitives/seed/currencies.ts +22 -0
  342. package/src/modules/primitives/seed/exchangeRates.ts +22 -0
  343. package/src/modules/primitives/seed/index.ts +4 -0
  344. package/src/modules/primitives/seed/seed.test.ts +80 -0
  345. package/src/modules/primitives/seed/units.ts +62 -0
  346. package/src/modules/primitives/seed/uomCategories.ts +24 -0
  347. package/src/modules/purchase/README.md +63 -0
  348. package/src/modules/purchase/command/.gitkeep +0 -0
  349. package/src/modules/purchase/command/activatePurchasePaymentTerm.generated.ts +6 -0
  350. package/src/modules/purchase/command/activatePurchasePaymentTerm.test.ts +53 -0
  351. package/src/modules/purchase/command/activatePurchasePaymentTerm.ts +39 -0
  352. package/src/modules/purchase/command/activatePurchasePriceList.generated.ts +6 -0
  353. package/src/modules/purchase/command/activatePurchasePriceList.test.ts +39 -0
  354. package/src/modules/purchase/command/activatePurchasePriceList.ts +32 -0
  355. package/src/modules/purchase/command/activatePurchasePriceRule.generated.ts +6 -0
  356. package/src/modules/purchase/command/activatePurchasePriceRule.test.ts +133 -0
  357. package/src/modules/purchase/command/activatePurchasePriceRule.ts +75 -0
  358. package/src/modules/purchase/command/approvePurchaseOrder.generated.ts +6 -0
  359. package/src/modules/purchase/command/approvePurchaseOrder.test.ts +161 -0
  360. package/src/modules/purchase/command/approvePurchaseOrder.ts +89 -0
  361. package/src/modules/purchase/command/cancelGoodsReceipt.generated.ts +6 -0
  362. package/src/modules/purchase/command/cancelGoodsReceipt.test.ts +37 -0
  363. package/src/modules/purchase/command/cancelGoodsReceipt.ts +29 -0
  364. package/src/modules/purchase/command/cancelPurchaseBill.generated.ts +6 -0
  365. package/src/modules/purchase/command/cancelPurchaseBill.test.ts +101 -0
  366. package/src/modules/purchase/command/cancelPurchaseBill.ts +84 -0
  367. package/src/modules/purchase/command/cancelPurchaseOrder.generated.ts +6 -0
  368. package/src/modules/purchase/command/cancelPurchaseOrder.test.ts +119 -0
  369. package/src/modules/purchase/command/cancelPurchaseOrder.ts +65 -0
  370. package/src/modules/purchase/command/closePurchaseOrder.generated.ts +6 -0
  371. package/src/modules/purchase/command/closePurchaseOrder.test.ts +128 -0
  372. package/src/modules/purchase/command/closePurchaseOrder.ts +58 -0
  373. package/src/modules/purchase/command/createGoodsReceipt.generated.ts +6 -0
  374. package/src/modules/purchase/command/createGoodsReceipt.test.ts +233 -0
  375. package/src/modules/purchase/command/createGoodsReceipt.ts +93 -0
  376. package/src/modules/purchase/command/createPurchaseBill.generated.ts +6 -0
  377. package/src/modules/purchase/command/createPurchaseBill.test.ts +277 -0
  378. package/src/modules/purchase/command/createPurchaseBill.ts +107 -0
  379. package/src/modules/purchase/command/createPurchaseOrder.generated.ts +6 -0
  380. package/src/modules/purchase/command/createPurchaseOrder.test.ts +291 -0
  381. package/src/modules/purchase/command/createPurchaseOrder.ts +131 -0
  382. package/src/modules/purchase/command/createPurchasePaymentTerm.generated.ts +6 -0
  383. package/src/modules/purchase/command/createPurchasePaymentTerm.test.ts +140 -0
  384. package/src/modules/purchase/command/createPurchasePaymentTerm.ts +66 -0
  385. package/src/modules/purchase/command/createPurchasePriceList.generated.ts +6 -0
  386. package/src/modules/purchase/command/createPurchasePriceList.test.ts +108 -0
  387. package/src/modules/purchase/command/createPurchasePriceList.ts +63 -0
  388. package/src/modules/purchase/command/createPurchasePriceRule.generated.ts +6 -0
  389. package/src/modules/purchase/command/createPurchasePriceRule.test.ts +139 -0
  390. package/src/modules/purchase/command/createPurchasePriceRule.ts +95 -0
  391. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.generated.ts +6 -0
  392. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.test.ts +49 -0
  393. package/src/modules/purchase/command/deactivatePurchasePaymentTerm.ts +41 -0
  394. package/src/modules/purchase/command/deactivatePurchasePriceList.generated.ts +6 -0
  395. package/src/modules/purchase/command/deactivatePurchasePriceList.test.ts +50 -0
  396. package/src/modules/purchase/command/deactivatePurchasePriceList.ts +32 -0
  397. package/src/modules/purchase/command/deactivatePurchasePriceRule.generated.ts +6 -0
  398. package/src/modules/purchase/command/deactivatePurchasePriceRule.test.ts +50 -0
  399. package/src/modules/purchase/command/deactivatePurchasePriceRule.ts +32 -0
  400. package/src/modules/purchase/command/matchPurchaseBill.generated.ts +6 -0
  401. package/src/modules/purchase/command/matchPurchaseBill.test.ts +188 -0
  402. package/src/modules/purchase/command/matchPurchaseBill.ts +146 -0
  403. package/src/modules/purchase/command/postGoodsReceipt.generated.ts +6 -0
  404. package/src/modules/purchase/command/postGoodsReceipt.test.ts +210 -0
  405. package/src/modules/purchase/command/postGoodsReceipt.ts +143 -0
  406. package/src/modules/purchase/command/rejectPurchaseOrder.generated.ts +6 -0
  407. package/src/modules/purchase/command/rejectPurchaseOrder.test.ts +79 -0
  408. package/src/modules/purchase/command/rejectPurchaseOrder.ts +41 -0
  409. package/src/modules/purchase/command/releasePurchaseBill.generated.ts +6 -0
  410. package/src/modules/purchase/command/releasePurchaseBill.test.ts +94 -0
  411. package/src/modules/purchase/command/releasePurchaseBill.ts +111 -0
  412. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.generated.ts +6 -0
  413. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.test.ts +171 -0
  414. package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.ts +90 -0
  415. package/src/modules/purchase/command/submitPurchaseOrder.generated.ts +6 -0
  416. package/src/modules/purchase/command/submitPurchaseOrder.test.ts +98 -0
  417. package/src/modules/purchase/command/submitPurchaseOrder.ts +73 -0
  418. package/src/modules/purchase/command/updateGoodsReceipt.generated.ts +6 -0
  419. package/src/modules/purchase/command/updateGoodsReceipt.test.ts +115 -0
  420. package/src/modules/purchase/command/updateGoodsReceipt.ts +73 -0
  421. package/src/modules/purchase/command/updatePurchaseBill.generated.ts +6 -0
  422. package/src/modules/purchase/command/updatePurchaseBill.test.ts +137 -0
  423. package/src/modules/purchase/command/updatePurchaseBill.ts +89 -0
  424. package/src/modules/purchase/command/updatePurchaseOrder.generated.ts +6 -0
  425. package/src/modules/purchase/command/updatePurchaseOrder.test.ts +195 -0
  426. package/src/modules/purchase/command/updatePurchaseOrder.ts +121 -0
  427. package/src/modules/purchase/command/updatePurchasePaymentTerm.generated.ts +6 -0
  428. package/src/modules/purchase/command/updatePurchasePaymentTerm.test.ts +154 -0
  429. package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +73 -0
  430. package/src/modules/purchase/command/updatePurchasePriceList.generated.ts +6 -0
  431. package/src/modules/purchase/command/updatePurchasePriceList.test.ts +73 -0
  432. package/src/modules/purchase/command/updatePurchasePriceList.ts +55 -0
  433. package/src/modules/purchase/command/updatePurchasePriceRule.generated.ts +6 -0
  434. package/src/modules/purchase/command/updatePurchasePriceRule.test.ts +191 -0
  435. package/src/modules/purchase/command/updatePurchasePriceRule.ts +104 -0
  436. package/src/modules/purchase/db/.gitkeep +0 -0
  437. package/src/modules/purchase/db/goodsReceipt.ts +62 -0
  438. package/src/modules/purchase/db/purchaseBill.ts +74 -0
  439. package/src/modules/purchase/db/purchaseOrder.ts +100 -0
  440. package/src/modules/purchase/db/purchasePaymentTerm.ts +46 -0
  441. package/src/modules/purchase/db/purchasePriceList.ts +53 -0
  442. package/src/modules/purchase/db/purchasePriceRule.ts +74 -0
  443. package/src/modules/purchase/db/supplierProfile.ts +59 -0
  444. package/src/modules/purchase/docs/commands/ActivatePurchasePaymentTerm.md +39 -0
  445. package/src/modules/purchase/docs/commands/ActivatePurchasePriceList.md +37 -0
  446. package/src/modules/purchase/docs/commands/ActivatePurchasePriceRule.md +47 -0
  447. package/src/modules/purchase/docs/commands/ApprovePurchaseOrder.md +55 -0
  448. package/src/modules/purchase/docs/commands/CancelGoodsReceipt.md +39 -0
  449. package/src/modules/purchase/docs/commands/CancelPurchaseBill.md +49 -0
  450. package/src/modules/purchase/docs/commands/CancelPurchaseOrder.md +47 -0
  451. package/src/modules/purchase/docs/commands/ClosePurchaseOrder.md +49 -0
  452. package/src/modules/purchase/docs/commands/CreateGoodsReceipt.md +54 -0
  453. package/src/modules/purchase/docs/commands/CreatePurchaseBill.md +59 -0
  454. package/src/modules/purchase/docs/commands/CreatePurchaseOrder.md +66 -0
  455. package/src/modules/purchase/docs/commands/CreatePurchasePaymentTerm.md +52 -0
  456. package/src/modules/purchase/docs/commands/CreatePurchasePriceList.md +48 -0
  457. package/src/modules/purchase/docs/commands/CreatePurchasePriceRule.md +62 -0
  458. package/src/modules/purchase/docs/commands/DeactivatePurchasePaymentTerm.md +42 -0
  459. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceList.md +39 -0
  460. package/src/modules/purchase/docs/commands/DeactivatePurchasePriceRule.md +39 -0
  461. package/src/modules/purchase/docs/commands/MatchPurchaseBill.md +63 -0
  462. package/src/modules/purchase/docs/commands/PostGoodsReceipt.md +61 -0
  463. package/src/modules/purchase/docs/commands/RejectPurchaseOrder.md +44 -0
  464. package/src/modules/purchase/docs/commands/ReleasePurchaseBill.md +48 -0
  465. package/src/modules/purchase/docs/commands/SetSupplierDefaultPurchasePaymentTerm.md +50 -0
  466. package/src/modules/purchase/docs/commands/SubmitPurchaseOrder.md +51 -0
  467. package/src/modules/purchase/docs/commands/UpdateGoodsReceipt.md +48 -0
  468. package/src/modules/purchase/docs/commands/UpdatePurchaseBill.md +51 -0
  469. package/src/modules/purchase/docs/commands/UpdatePurchaseOrder.md +59 -0
  470. package/src/modules/purchase/docs/commands/UpdatePurchasePaymentTerm.md +51 -0
  471. package/src/modules/purchase/docs/commands/UpdatePurchasePriceList.md +43 -0
  472. package/src/modules/purchase/docs/commands/UpdatePurchasePriceRule.md +60 -0
  473. package/src/modules/purchase/docs/features/goods-receipt-matching.md +71 -0
  474. package/src/modules/purchase/docs/features/purchase-order-lifecycle.md +87 -0
  475. package/src/modules/purchase/docs/features/purchase-payment-terms.md +67 -0
  476. package/src/modules/purchase/docs/features/supplier-bill-matching.md +79 -0
  477. package/src/modules/purchase/docs/features/supplier-purchase-pricing.md +72 -0
  478. package/src/modules/purchase/docs/models/GoodsReceipt.md +58 -0
  479. package/src/modules/purchase/docs/models/PurchaseBill.md +68 -0
  480. package/src/modules/purchase/docs/models/PurchaseOrder.md +88 -0
  481. package/src/modules/purchase/docs/models/PurchasePaymentTerm.md +59 -0
  482. package/src/modules/purchase/docs/models/PurchasePriceList.md +53 -0
  483. package/src/modules/purchase/docs/models/PurchasePriceRule.md +58 -0
  484. package/src/modules/purchase/docs/models/SupplierProfile.md +37 -0
  485. package/src/modules/purchase/docs/queries/CalculatePurchaseBillDueSchedule.md +47 -0
  486. package/src/modules/purchase/docs/queries/CalculatePurchasePrice.md +53 -0
  487. package/src/modules/purchase/docs/queries/GetGoodsReceipt.md +36 -0
  488. package/src/modules/purchase/docs/queries/GetPurchaseBill.md +41 -0
  489. package/src/modules/purchase/docs/queries/GetPurchaseOrder.md +42 -0
  490. package/src/modules/purchase/docs/queries/GetPurchasePaymentTerm.md +36 -0
  491. package/src/modules/purchase/docs/queries/GetPurchasePriceList.md +36 -0
  492. package/src/modules/purchase/docs/queries/GetSupplierProfile.md +36 -0
  493. package/src/modules/purchase/executor/.gitkeep +0 -0
  494. package/src/modules/purchase/generated/.gitkeep +0 -0
  495. package/src/modules/purchase/generated/enums.ts +63 -0
  496. package/src/modules/purchase/generated/kysely-tailordb.ts +186 -0
  497. package/src/modules/purchase/index.ts +2 -0
  498. package/src/modules/purchase/lib/_db_deps.ts +77 -0
  499. package/src/modules/purchase/lib/domain.ts +467 -0
  500. package/src/modules/purchase/lib/errors.generated.ts +367 -0
  501. package/src/modules/purchase/lib/permissions.generated.ts +34 -0
  502. package/src/modules/purchase/lib/types.ts +65 -0
  503. package/src/modules/purchase/module.ts +218 -0
  504. package/src/modules/purchase/permissions.ts +1 -0
  505. package/src/modules/purchase/query/.gitkeep +0 -0
  506. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.generated.ts +5 -0
  507. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.test.ts +183 -0
  508. package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.ts +41 -0
  509. package/src/modules/purchase/query/calculatePurchasePrice.generated.ts +5 -0
  510. package/src/modules/purchase/query/calculatePurchasePrice.test.ts +143 -0
  511. package/src/modules/purchase/query/calculatePurchasePrice.ts +113 -0
  512. package/src/modules/purchase/query/getGoodsReceipt.generated.ts +5 -0
  513. package/src/modules/purchase/query/getGoodsReceipt.test.ts +42 -0
  514. package/src/modules/purchase/query/getGoodsReceipt.ts +27 -0
  515. package/src/modules/purchase/query/getPurchaseBill.generated.ts +5 -0
  516. package/src/modules/purchase/query/getPurchaseBill.test.ts +69 -0
  517. package/src/modules/purchase/query/getPurchaseBill.ts +35 -0
  518. package/src/modules/purchase/query/getPurchaseOrder.generated.ts +5 -0
  519. package/src/modules/purchase/query/getPurchaseOrder.test.ts +65 -0
  520. package/src/modules/purchase/query/getPurchaseOrder.ts +33 -0
  521. package/src/modules/purchase/query/getPurchasePaymentTerm.generated.ts +5 -0
  522. package/src/modules/purchase/query/getPurchasePaymentTerm.test.ts +44 -0
  523. package/src/modules/purchase/query/getPurchasePaymentTerm.ts +30 -0
  524. package/src/modules/purchase/query/getPurchasePriceList.generated.ts +5 -0
  525. package/src/modules/purchase/query/getPurchasePriceList.test.ts +48 -0
  526. package/src/modules/purchase/query/getPurchasePriceList.ts +30 -0
  527. package/src/modules/purchase/query/getSupplierProfile.generated.ts +5 -0
  528. package/src/modules/purchase/query/getSupplierProfile.test.ts +50 -0
  529. package/src/modules/purchase/query/getSupplierProfile.ts +18 -0
  530. package/src/modules/purchase/tailor.config.ts +13 -0
  531. package/src/modules/purchase/tailor.d.ts +13 -0
  532. package/src/modules/purchase/testing/commandTestUtils.ts +35 -0
  533. package/src/modules/purchase/testing/fixtures.ts +317 -0
  534. package/src/modules/sales/README.md +69 -0
  535. package/src/modules/sales/command/.gitkeep +0 -0
  536. package/src/modules/sales/command/activateChannel.generated.ts +6 -0
  537. package/src/modules/sales/command/activateChannel.test.ts +70 -0
  538. package/src/modules/sales/command/activateChannel.ts +48 -0
  539. package/src/modules/sales/command/activateListing.generated.ts +6 -0
  540. package/src/modules/sales/command/activateListing.test.ts +87 -0
  541. package/src/modules/sales/command/activateListing.ts +49 -0
  542. package/src/modules/sales/command/activateSalesPaymentTerm.generated.ts +6 -0
  543. package/src/modules/sales/command/activateSalesPaymentTerm.test.ts +58 -0
  544. package/src/modules/sales/command/activateSalesPaymentTerm.ts +50 -0
  545. package/src/modules/sales/command/activateSalesPriceList.generated.ts +6 -0
  546. package/src/modules/sales/command/activateSalesPriceList.test.ts +55 -0
  547. package/src/modules/sales/command/activateSalesPriceList.ts +46 -0
  548. package/src/modules/sales/command/activateSalesPriceRule.generated.ts +6 -0
  549. package/src/modules/sales/command/activateSalesPriceRule.test.ts +83 -0
  550. package/src/modules/sales/command/activateSalesPriceRule.ts +58 -0
  551. package/src/modules/sales/command/cancelChannelOrder.generated.ts +6 -0
  552. package/src/modules/sales/command/cancelChannelOrder.test.ts +47 -0
  553. package/src/modules/sales/command/cancelChannelOrder.ts +30 -0
  554. package/src/modules/sales/command/cancelSalesInvoice.generated.ts +6 -0
  555. package/src/modules/sales/command/cancelSalesInvoice.test.ts +47 -0
  556. package/src/modules/sales/command/cancelSalesInvoice.ts +37 -0
  557. package/src/modules/sales/command/cancelSalesOrder.generated.ts +6 -0
  558. package/src/modules/sales/command/cancelSalesOrder.test.ts +70 -0
  559. package/src/modules/sales/command/cancelSalesOrder.ts +48 -0
  560. package/src/modules/sales/command/cancelSyncJob.generated.ts +6 -0
  561. package/src/modules/sales/command/cancelSyncJob.test.ts +58 -0
  562. package/src/modules/sales/command/cancelSyncJob.ts +30 -0
  563. package/src/modules/sales/command/closeSalesOrder.generated.ts +6 -0
  564. package/src/modules/sales/command/closeSalesOrder.test.ts +41 -0
  565. package/src/modules/sales/command/closeSalesOrder.ts +51 -0
  566. package/src/modules/sales/command/confirmSalesOrder.generated.ts +6 -0
  567. package/src/modules/sales/command/confirmSalesOrder.test.ts +68 -0
  568. package/src/modules/sales/command/confirmSalesOrder.ts +67 -0
  569. package/src/modules/sales/command/convertChannelOrder.generated.ts +6 -0
  570. package/src/modules/sales/command/convertChannelOrder.test.ts +118 -0
  571. package/src/modules/sales/command/convertChannelOrder.ts +151 -0
  572. package/src/modules/sales/command/createChannel.generated.ts +6 -0
  573. package/src/modules/sales/command/createChannel.test.ts +100 -0
  574. package/src/modules/sales/command/createChannel.ts +58 -0
  575. package/src/modules/sales/command/createListing.generated.ts +6 -0
  576. package/src/modules/sales/command/createListing.test.ts +88 -0
  577. package/src/modules/sales/command/createListing.ts +76 -0
  578. package/src/modules/sales/command/createSalesCreditNote.generated.ts +6 -0
  579. package/src/modules/sales/command/createSalesCreditNote.test.ts +56 -0
  580. package/src/modules/sales/command/createSalesCreditNote.ts +75 -0
  581. package/src/modules/sales/command/createSalesInvoice.generated.ts +6 -0
  582. package/src/modules/sales/command/createSalesInvoice.test.ts +85 -0
  583. package/src/modules/sales/command/createSalesInvoice.ts +94 -0
  584. package/src/modules/sales/command/createSalesOrder.generated.ts +6 -0
  585. package/src/modules/sales/command/createSalesOrder.test.ts +134 -0
  586. package/src/modules/sales/command/createSalesOrder.ts +140 -0
  587. package/src/modules/sales/command/createSalesPaymentTerm.generated.ts +6 -0
  588. package/src/modules/sales/command/createSalesPaymentTerm.test.ts +59 -0
  589. package/src/modules/sales/command/createSalesPaymentTerm.ts +50 -0
  590. package/src/modules/sales/command/createSalesPriceList.generated.ts +6 -0
  591. package/src/modules/sales/command/createSalesPriceList.test.ts +67 -0
  592. package/src/modules/sales/command/createSalesPriceList.ts +45 -0
  593. package/src/modules/sales/command/createSalesPriceRule.generated.ts +6 -0
  594. package/src/modules/sales/command/createSalesPriceRule.test.ts +137 -0
  595. package/src/modules/sales/command/createSalesPriceRule.ts +66 -0
  596. package/src/modules/sales/command/createShipment.generated.ts +6 -0
  597. package/src/modules/sales/command/createShipment.test.ts +75 -0
  598. package/src/modules/sales/command/createShipment.ts +86 -0
  599. package/src/modules/sales/command/deactivateChannel.generated.ts +6 -0
  600. package/src/modules/sales/command/deactivateChannel.test.ts +29 -0
  601. package/src/modules/sales/command/deactivateChannel.ts +30 -0
  602. package/src/modules/sales/command/deactivateSalesPaymentTerm.generated.ts +6 -0
  603. package/src/modules/sales/command/deactivateSalesPaymentTerm.test.ts +29 -0
  604. package/src/modules/sales/command/deactivateSalesPaymentTerm.ts +37 -0
  605. package/src/modules/sales/command/deactivateSalesPriceList.generated.ts +6 -0
  606. package/src/modules/sales/command/deactivateSalesPriceList.test.ts +33 -0
  607. package/src/modules/sales/command/deactivateSalesPriceList.ts +37 -0
  608. package/src/modules/sales/command/deactivateSalesPriceRule.generated.ts +6 -0
  609. package/src/modules/sales/command/deactivateSalesPriceRule.test.ts +33 -0
  610. package/src/modules/sales/command/deactivateSalesPriceRule.ts +37 -0
  611. package/src/modules/sales/command/issueSalesCreditNote.generated.ts +6 -0
  612. package/src/modules/sales/command/issueSalesCreditNote.test.ts +62 -0
  613. package/src/modules/sales/command/issueSalesCreditNote.ts +71 -0
  614. package/src/modules/sales/command/issueSalesInvoice.generated.ts +6 -0
  615. package/src/modules/sales/command/issueSalesInvoice.test.ts +88 -0
  616. package/src/modules/sales/command/issueSalesInvoice.ts +115 -0
  617. package/src/modules/sales/command/markChannelOrderException.generated.ts +6 -0
  618. package/src/modules/sales/command/markChannelOrderException.test.ts +59 -0
  619. package/src/modules/sales/command/markChannelOrderException.ts +49 -0
  620. package/src/modules/sales/command/pauseListing.generated.ts +6 -0
  621. package/src/modules/sales/command/pauseListing.test.ts +40 -0
  622. package/src/modules/sales/command/pauseListing.ts +30 -0
  623. package/src/modules/sales/command/placeSalesOrderOnCreditHold.generated.ts +6 -0
  624. package/src/modules/sales/command/placeSalesOrderOnCreditHold.test.ts +74 -0
  625. package/src/modules/sales/command/placeSalesOrderOnCreditHold.ts +46 -0
  626. package/src/modules/sales/command/postShipment.generated.ts +6 -0
  627. package/src/modules/sales/command/postShipment.test.ts +97 -0
  628. package/src/modules/sales/command/postShipment.ts +89 -0
  629. package/src/modules/sales/command/recordChannelOrder.generated.ts +6 -0
  630. package/src/modules/sales/command/recordChannelOrder.test.ts +124 -0
  631. package/src/modules/sales/command/recordChannelOrder.ts +93 -0
  632. package/src/modules/sales/command/rejectSalesOrder.generated.ts +6 -0
  633. package/src/modules/sales/command/rejectSalesOrder.test.ts +78 -0
  634. package/src/modules/sales/command/rejectSalesOrder.ts +42 -0
  635. package/src/modules/sales/command/releaseSalesOrderCreditHold.generated.ts +6 -0
  636. package/src/modules/sales/command/releaseSalesOrderCreditHold.test.ts +50 -0
  637. package/src/modules/sales/command/releaseSalesOrderCreditHold.ts +51 -0
  638. package/src/modules/sales/command/retireListing.generated.ts +6 -0
  639. package/src/modules/sales/command/retireListing.test.ts +42 -0
  640. package/src/modules/sales/command/retireListing.ts +30 -0
  641. package/src/modules/sales/command/retrySyncJob.generated.ts +6 -0
  642. package/src/modules/sales/command/retrySyncJob.test.ts +54 -0
  643. package/src/modules/sales/command/retrySyncJob.ts +44 -0
  644. package/src/modules/sales/command/sendSalesInvoice.generated.ts +6 -0
  645. package/src/modules/sales/command/sendSalesInvoice.test.ts +50 -0
  646. package/src/modules/sales/command/sendSalesInvoice.ts +43 -0
  647. package/src/modules/sales/command/startSyncJob.generated.ts +6 -0
  648. package/src/modules/sales/command/startSyncJob.test.ts +65 -0
  649. package/src/modules/sales/command/startSyncJob.ts +54 -0
  650. package/src/modules/sales/command/submitSalesOrder.generated.ts +6 -0
  651. package/src/modules/sales/command/submitSalesOrder.test.ts +58 -0
  652. package/src/modules/sales/command/submitSalesOrder.ts +49 -0
  653. package/src/modules/sales/command/updateChannel.generated.ts +6 -0
  654. package/src/modules/sales/command/updateChannel.test.ts +71 -0
  655. package/src/modules/sales/command/updateChannel.ts +68 -0
  656. package/src/modules/sales/command/updateListing.generated.ts +6 -0
  657. package/src/modules/sales/command/updateListing.test.ts +56 -0
  658. package/src/modules/sales/command/updateListing.ts +60 -0
  659. package/src/modules/sales/command/updateSalesCreditNote.generated.ts +6 -0
  660. package/src/modules/sales/command/updateSalesCreditNote.test.ts +68 -0
  661. package/src/modules/sales/command/updateSalesCreditNote.ts +68 -0
  662. package/src/modules/sales/command/updateSalesInvoice.generated.ts +6 -0
  663. package/src/modules/sales/command/updateSalesInvoice.test.ts +73 -0
  664. package/src/modules/sales/command/updateSalesInvoice.ts +80 -0
  665. package/src/modules/sales/command/updateSalesOrder.generated.ts +6 -0
  666. package/src/modules/sales/command/updateSalesOrder.test.ts +93 -0
  667. package/src/modules/sales/command/updateSalesOrder.ts +121 -0
  668. package/src/modules/sales/command/updateSalesPaymentTerm.generated.ts +6 -0
  669. package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +66 -0
  670. package/src/modules/sales/command/updateSalesPaymentTerm.ts +59 -0
  671. package/src/modules/sales/command/updateSalesPriceList.generated.ts +6 -0
  672. package/src/modules/sales/command/updateSalesPriceList.test.ts +71 -0
  673. package/src/modules/sales/command/updateSalesPriceList.ts +52 -0
  674. package/src/modules/sales/command/updateSalesPriceRule.generated.ts +6 -0
  675. package/src/modules/sales/command/updateSalesPriceRule.test.ts +95 -0
  676. package/src/modules/sales/command/updateSalesPriceRule.ts +81 -0
  677. package/src/modules/sales/command/updateShipment.generated.ts +6 -0
  678. package/src/modules/sales/command/updateShipment.test.ts +78 -0
  679. package/src/modules/sales/command/updateShipment.ts +84 -0
  680. package/src/modules/sales/db/.gitkeep +0 -0
  681. package/src/modules/sales/db/channel.ts +43 -0
  682. package/src/modules/sales/db/channelOrder.ts +109 -0
  683. package/src/modules/sales/db/channelOrderLine.ts +84 -0
  684. package/src/modules/sales/db/listing.ts +81 -0
  685. package/src/modules/sales/db/salesCreditNote.ts +63 -0
  686. package/src/modules/sales/db/salesCreditNoteLine.ts +49 -0
  687. package/src/modules/sales/db/salesInvoice.ts +95 -0
  688. package/src/modules/sales/db/salesInvoiceLine.ts +64 -0
  689. package/src/modules/sales/db/salesOrder.ts +103 -0
  690. package/src/modules/sales/db/salesOrderLine.ts +82 -0
  691. package/src/modules/sales/db/salesPaymentTerm.ts +46 -0
  692. package/src/modules/sales/db/salesPriceList.ts +61 -0
  693. package/src/modules/sales/db/salesPriceRule.ts +96 -0
  694. package/src/modules/sales/db/shipment.ts +78 -0
  695. package/src/modules/sales/db/shipmentLine.ts +58 -0
  696. package/src/modules/sales/db/syncJob.ts +70 -0
  697. package/src/modules/sales/docs/commands/ActivateChannel.md +42 -0
  698. package/src/modules/sales/docs/commands/ActivateListing.md +46 -0
  699. package/src/modules/sales/docs/commands/ActivateSalesPaymentTerm.md +41 -0
  700. package/src/modules/sales/docs/commands/ActivateSalesPriceList.md +39 -0
  701. package/src/modules/sales/docs/commands/ActivateSalesPriceRule.md +48 -0
  702. package/src/modules/sales/docs/commands/CancelChannelOrder.md +37 -0
  703. package/src/modules/sales/docs/commands/CancelSalesInvoice.md +39 -0
  704. package/src/modules/sales/docs/commands/CancelSalesOrder.md +40 -0
  705. package/src/modules/sales/docs/commands/CancelSyncJob.md +36 -0
  706. package/src/modules/sales/docs/commands/CloseSalesOrder.md +39 -0
  707. package/src/modules/sales/docs/commands/ConfirmSalesOrder.md +43 -0
  708. package/src/modules/sales/docs/commands/ConvertChannelOrder.md +44 -0
  709. package/src/modules/sales/docs/commands/CreateChannel.md +40 -0
  710. package/src/modules/sales/docs/commands/CreateListing.md +40 -0
  711. package/src/modules/sales/docs/commands/CreateSalesCreditNote.md +37 -0
  712. package/src/modules/sales/docs/commands/CreateSalesInvoice.md +39 -0
  713. package/src/modules/sales/docs/commands/CreateSalesOrder.md +51 -0
  714. package/src/modules/sales/docs/commands/CreateSalesPaymentTerm.md +38 -0
  715. package/src/modules/sales/docs/commands/CreateSalesPriceList.md +37 -0
  716. package/src/modules/sales/docs/commands/CreateSalesPriceRule.md +46 -0
  717. package/src/modules/sales/docs/commands/CreateShipment.md +38 -0
  718. package/src/modules/sales/docs/commands/DeactivateChannel.md +35 -0
  719. package/src/modules/sales/docs/commands/DeactivateSalesPaymentTerm.md +35 -0
  720. package/src/modules/sales/docs/commands/DeactivateSalesPriceList.md +35 -0
  721. package/src/modules/sales/docs/commands/DeactivateSalesPriceRule.md +35 -0
  722. package/src/modules/sales/docs/commands/IssueSalesCreditNote.md +38 -0
  723. package/src/modules/sales/docs/commands/IssueSalesInvoice.md +43 -0
  724. package/src/modules/sales/docs/commands/MarkChannelOrderException.md +37 -0
  725. package/src/modules/sales/docs/commands/PauseListing.md +36 -0
  726. package/src/modules/sales/docs/commands/PlaceSalesOrderOnCreditHold.md +41 -0
  727. package/src/modules/sales/docs/commands/PostShipment.md +41 -0
  728. package/src/modules/sales/docs/commands/RecordChannelOrder.md +45 -0
  729. package/src/modules/sales/docs/commands/RejectSalesOrder.md +41 -0
  730. package/src/modules/sales/docs/commands/ReleaseSalesOrderCreditHold.md +36 -0
  731. package/src/modules/sales/docs/commands/RetireListing.md +36 -0
  732. package/src/modules/sales/docs/commands/RetrySyncJob.md +39 -0
  733. package/src/modules/sales/docs/commands/SendSalesInvoice.md +38 -0
  734. package/src/modules/sales/docs/commands/StartSyncJob.md +39 -0
  735. package/src/modules/sales/docs/commands/SubmitSalesOrder.md +43 -0
  736. package/src/modules/sales/docs/commands/UpdateChannel.md +43 -0
  737. package/src/modules/sales/docs/commands/UpdateListing.md +38 -0
  738. package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +38 -0
  739. package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +38 -0
  740. package/src/modules/sales/docs/commands/UpdateSalesOrder.md +45 -0
  741. package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +41 -0
  742. package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +40 -0
  743. package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +49 -0
  744. package/src/modules/sales/docs/commands/UpdateShipment.md +38 -0
  745. package/src/modules/sales/docs/commands/bin/rm.md +52 -0
  746. package/src/modules/sales/docs/commands/opt/homebrew/bin/codex.md +52 -0
  747. package/src/modules/sales/docs/commands/opt/homebrew/bin/ps2ps2.md +52 -0
  748. package/src/modules/sales/docs/commands/opt/homebrew/bin/rg.md +52 -0
  749. package/src/modules/sales/docs/commands/opt/homebrew/bin/sha384sum.md +52 -0
  750. package/src/modules/sales/docs/commands/opt/homebrew/opt/libpq/bin/pg_combinebackup.md +52 -0
  751. package/src/modules/sales/docs/commands/sbin/mount_msdos.md +52 -0
  752. package/src/modules/sales/docs/commands/sbin/mount_nfs.md +52 -0
  753. package/src/modules/sales/docs/commands/usr/bin/cupstestppd.md +52 -0
  754. package/src/modules/sales/docs/commands/usr/bin/enc2xs.md +52 -0
  755. package/src/modules/sales/docs/commands/usr/bin/hash.md +52 -0
  756. package/src/modules/sales/docs/commands/usr/bin/jarsigner.md +52 -0
  757. package/src/modules/sales/docs/commands/usr/bin/mpsgraphtool.md +52 -0
  758. package/src/modules/sales/docs/commands/usr/bin/nano.md +52 -0
  759. package/src/modules/sales/docs/commands/usr/bin/pod2html5.34.md +52 -0
  760. package/src/modules/sales/docs/commands/usr/bin/ri.md +52 -0
  761. package/src/modules/sales/docs/commands/usr/bin/rs.md +52 -0
  762. package/src/modules/sales/docs/commands/usr/bin/trustcachectl.md +52 -0
  763. package/src/modules/sales/docs/commands/usr/sbin/htpasswd.md +52 -0
  764. package/src/modules/sales/docs/commands/usr/sbin/lpadmin.md +52 -0
  765. package/src/modules/sales/docs/commands/usr/sbin/setkey.md +52 -0
  766. package/src/modules/sales/docs/features/channel-listing-management.md +68 -0
  767. package/src/modules/sales/docs/features/channel-order-sync.md +78 -0
  768. package/src/modules/sales/docs/features/customer-invoicing.md +89 -0
  769. package/src/modules/sales/docs/features/customer-sales-pricing.md +72 -0
  770. package/src/modules/sales/docs/features/sales-order-lifecycle.md +96 -0
  771. package/src/modules/sales/docs/features/sales-payment-terms.md +67 -0
  772. package/src/modules/sales/docs/features/shipment-fulfillment.md +71 -0
  773. package/src/modules/sales/docs/models/Channel.md +48 -0
  774. package/src/modules/sales/docs/models/ChannelOrder.md +56 -0
  775. package/src/modules/sales/docs/models/ChannelOrderLine.md +39 -0
  776. package/src/modules/sales/docs/models/Listing.md +56 -0
  777. package/src/modules/sales/docs/models/SalesCreditNote.md +47 -0
  778. package/src/modules/sales/docs/models/SalesCreditNoteLine.md +37 -0
  779. package/src/modules/sales/docs/models/SalesInvoice.md +55 -0
  780. package/src/modules/sales/docs/models/SalesInvoiceLine.md +39 -0
  781. package/src/modules/sales/docs/models/SalesOrder.md +79 -0
  782. package/src/modules/sales/docs/models/SalesOrderLine.md +42 -0
  783. package/src/modules/sales/docs/models/SalesPaymentTerm.md +53 -0
  784. package/src/modules/sales/docs/models/SalesPriceList.md +50 -0
  785. package/src/modules/sales/docs/models/SalesPriceRule.md +51 -0
  786. package/src/modules/sales/docs/models/Shipment.md +49 -0
  787. package/src/modules/sales/docs/models/ShipmentLine.md +38 -0
  788. package/src/modules/sales/docs/models/SyncJob.md +53 -0
  789. package/src/modules/sales/docs/queries/CalculateInvoiceDueSchedule.md +37 -0
  790. package/src/modules/sales/docs/queries/GetApplicableSalesPrice.md +38 -0
  791. package/src/modules/sales/docs/queries/GetChannel.md +34 -0
  792. package/src/modules/sales/docs/queries/GetChannelOrder.md +34 -0
  793. package/src/modules/sales/docs/queries/GetListing.md +34 -0
  794. package/src/modules/sales/docs/queries/GetListingByExternalIdentifier.md +35 -0
  795. package/src/modules/sales/docs/queries/GetSalesCreditNote.md +34 -0
  796. package/src/modules/sales/docs/queries/GetSalesInvoice.md +34 -0
  797. package/src/modules/sales/docs/queries/GetSalesOrder.md +36 -0
  798. package/src/modules/sales/docs/queries/GetSalesPaymentTerm.md +34 -0
  799. package/src/modules/sales/docs/queries/GetSalesPriceList.md +34 -0
  800. package/src/modules/sales/docs/queries/GetShipment.md +34 -0
  801. package/src/modules/sales/docs/queries/GetSyncJob.md +34 -0
  802. package/src/modules/sales/docs/queries/ListChannelOrdersByStatus.md +34 -0
  803. package/src/modules/sales/docs/queries/ListChannels.md +33 -0
  804. package/src/modules/sales/docs/queries/ListListingsByChannel.md +33 -0
  805. package/src/modules/sales/docs/queries/ListSalesCreditNotesByInvoice.md +33 -0
  806. package/src/modules/sales/docs/queries/ListSalesInvoicesBySalesOrder.md +33 -0
  807. package/src/modules/sales/docs/queries/ListSalesOrders.md +36 -0
  808. package/src/modules/sales/docs/queries/ListSalesPaymentTerms.md +33 -0
  809. package/src/modules/sales/docs/queries/ListSalesPriceLists.md +33 -0
  810. package/src/modules/sales/docs/queries/ListSalesPriceRulesByPriceList.md +33 -0
  811. package/src/modules/sales/docs/queries/ListShipmentsBySalesOrder.md +33 -0
  812. package/src/modules/sales/docs/queries/ListSyncJobs.md +34 -0
  813. package/src/modules/sales/executor/.gitkeep +0 -0
  814. package/src/modules/sales/generated/.gitkeep +0 -0
  815. package/src/modules/sales/generated/enums.ts +119 -0
  816. package/src/modules/sales/generated/kysely-tailordb.ts +332 -0
  817. package/src/modules/sales/index.ts +2 -0
  818. package/src/modules/sales/lib/_db_deps.ts +67 -0
  819. package/src/modules/sales/lib/domain.ts +354 -0
  820. package/src/modules/sales/lib/errors.generated.ts +417 -0
  821. package/src/modules/sales/lib/permissions.generated.ts +53 -0
  822. package/src/modules/sales/lib/repository.ts +137 -0
  823. package/src/modules/sales/lib/types.ts +105 -0
  824. package/src/modules/sales/module.ts +418 -0
  825. package/src/modules/sales/permissions.ts +3 -0
  826. package/src/modules/sales/query/.gitkeep +0 -0
  827. package/src/modules/sales/query/calculateInvoiceDueSchedule.generated.ts +5 -0
  828. package/src/modules/sales/query/calculateInvoiceDueSchedule.test.ts +107 -0
  829. package/src/modules/sales/query/calculateInvoiceDueSchedule.ts +35 -0
  830. package/src/modules/sales/query/getApplicableSalesPrice.generated.ts +5 -0
  831. package/src/modules/sales/query/getApplicableSalesPrice.test.ts +110 -0
  832. package/src/modules/sales/query/getApplicableSalesPrice.ts +81 -0
  833. package/src/modules/sales/query/getChannel.generated.ts +5 -0
  834. package/src/modules/sales/query/getChannel.test.ts +39 -0
  835. package/src/modules/sales/query/getChannel.ts +15 -0
  836. package/src/modules/sales/query/getChannelOrder.generated.ts +5 -0
  837. package/src/modules/sales/query/getChannelOrder.test.ts +50 -0
  838. package/src/modules/sales/query/getChannelOrder.ts +29 -0
  839. package/src/modules/sales/query/getListing.generated.ts +5 -0
  840. package/src/modules/sales/query/getListing.test.ts +39 -0
  841. package/src/modules/sales/query/getListing.ts +15 -0
  842. package/src/modules/sales/query/getListingByExternalIdentifier.generated.ts +5 -0
  843. package/src/modules/sales/query/getListingByExternalIdentifier.test.ts +61 -0
  844. package/src/modules/sales/query/getListingByExternalIdentifier.ts +23 -0
  845. package/src/modules/sales/query/getSalesCreditNote.generated.ts +5 -0
  846. package/src/modules/sales/query/getSalesCreditNote.test.ts +44 -0
  847. package/src/modules/sales/query/getSalesCreditNote.ts +14 -0
  848. package/src/modules/sales/query/getSalesInvoice.generated.ts +5 -0
  849. package/src/modules/sales/query/getSalesInvoice.test.ts +44 -0
  850. package/src/modules/sales/query/getSalesInvoice.ts +14 -0
  851. package/src/modules/sales/query/getSalesOrder.generated.ts +5 -0
  852. package/src/modules/sales/query/getSalesOrder.test.ts +57 -0
  853. package/src/modules/sales/query/getSalesOrder.ts +20 -0
  854. package/src/modules/sales/query/getSalesPaymentTerm.generated.ts +5 -0
  855. package/src/modules/sales/query/getSalesPaymentTerm.test.ts +44 -0
  856. package/src/modules/sales/query/getSalesPaymentTerm.ts +24 -0
  857. package/src/modules/sales/query/getSalesPriceList.generated.ts +5 -0
  858. package/src/modules/sales/query/getSalesPriceList.test.ts +39 -0
  859. package/src/modules/sales/query/getSalesPriceList.ts +15 -0
  860. package/src/modules/sales/query/getShipment.generated.ts +5 -0
  861. package/src/modules/sales/query/getShipment.test.ts +44 -0
  862. package/src/modules/sales/query/getShipment.ts +12 -0
  863. package/src/modules/sales/query/getSyncJob.generated.ts +5 -0
  864. package/src/modules/sales/query/getSyncJob.test.ts +43 -0
  865. package/src/modules/sales/query/getSyncJob.ts +24 -0
  866. package/src/modules/sales/query/listChannelOrdersByStatus.generated.ts +5 -0
  867. package/src/modules/sales/query/listChannelOrdersByStatus.test.ts +58 -0
  868. package/src/modules/sales/query/listChannelOrdersByStatus.ts +53 -0
  869. package/src/modules/sales/query/listChannels.generated.ts +5 -0
  870. package/src/modules/sales/query/listChannels.test.ts +36 -0
  871. package/src/modules/sales/query/listChannels.ts +39 -0
  872. package/src/modules/sales/query/listListingsByChannel.generated.ts +5 -0
  873. package/src/modules/sales/query/listListingsByChannel.test.ts +36 -0
  874. package/src/modules/sales/query/listListingsByChannel.ts +39 -0
  875. package/src/modules/sales/query/listSalesCreditNotesByInvoice.generated.ts +5 -0
  876. package/src/modules/sales/query/listSalesCreditNotesByInvoice.test.ts +36 -0
  877. package/src/modules/sales/query/listSalesCreditNotesByInvoice.ts +42 -0
  878. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.generated.ts +5 -0
  879. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.test.ts +36 -0
  880. package/src/modules/sales/query/listSalesInvoicesBySalesOrder.ts +42 -0
  881. package/src/modules/sales/query/listSalesOrders.generated.ts +5 -0
  882. package/src/modules/sales/query/listSalesOrders.test.ts +79 -0
  883. package/src/modules/sales/query/listSalesOrders.ts +67 -0
  884. package/src/modules/sales/query/listSalesPaymentTerms.generated.ts +5 -0
  885. package/src/modules/sales/query/listSalesPaymentTerms.test.ts +36 -0
  886. package/src/modules/sales/query/listSalesPaymentTerms.ts +42 -0
  887. package/src/modules/sales/query/listSalesPriceLists.generated.ts +5 -0
  888. package/src/modules/sales/query/listSalesPriceLists.test.ts +36 -0
  889. package/src/modules/sales/query/listSalesPriceLists.ts +39 -0
  890. package/src/modules/sales/query/listSalesPriceRulesByPriceList.generated.ts +5 -0
  891. package/src/modules/sales/query/listSalesPriceRulesByPriceList.test.ts +39 -0
  892. package/src/modules/sales/query/listSalesPriceRulesByPriceList.ts +47 -0
  893. package/src/modules/sales/query/listShipmentsBySalesOrder.generated.ts +5 -0
  894. package/src/modules/sales/query/listShipmentsBySalesOrder.test.ts +36 -0
  895. package/src/modules/sales/query/listShipmentsBySalesOrder.ts +36 -0
  896. package/src/modules/sales/query/listSyncJobs.generated.ts +5 -0
  897. package/src/modules/sales/query/listSyncJobs.test.ts +50 -0
  898. package/src/modules/sales/query/listSyncJobs.ts +47 -0
  899. package/src/modules/sales/tailor.config.ts +13 -0
  900. package/src/modules/sales/tailor.d.ts +13 -0
  901. package/src/modules/sales/testing/commandTestUtils.ts +35 -0
  902. package/src/modules/sales/testing/fixtures.ts +520 -0
  903. package/src/modules/user-management/command/.gitkeep +0 -0
  904. package/src/modules/user-management/db/.gitkeep +0 -0
  905. package/src/modules/user-management/executor/.gitkeep +0 -0
  906. package/src/modules/user-management/generated/.gitkeep +0 -0
  907. package/src/modules/user-management/lib/errors.generated.ts +0 -5
  908. package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -2
  909. package/src/modules/user-management/permissions.ts +3 -0
  910. package/src/modules/user-management/query/.gitkeep +0 -0
  911. package/src/modules/user-management/query/listRolePermissionsByRole.generated.ts +5 -0
  912. package/src/modules/user-management/query/listRolePermissionsByRole.test.ts +20 -0
  913. package/src/modules/user-management/query/listRolePermissionsByRole.ts +28 -0
  914. package/src/modules/user-management/query/listUserRolesByUser.generated.ts +5 -0
  915. package/src/modules/user-management/query/listUserRolesByUser.test.ts +20 -0
  916. package/src/modules/user-management/query/listUserRolesByUser.ts +28 -0
  917. package/src/schemas.ts +6 -6
  918. package/src/shared/defineCommand.ts +1 -1
  919. package/src/shared/entityTypes.ts +1 -1
  920. package/src/shared/uuidv5.test.ts +18 -0
  921. package/src/shared/uuidv5.ts +23 -0
  922. package/src/testing/index.ts +1 -1
  923. package/templates/scaffold/app/backend/package.json +1 -3
  924. package/templates/scaffold/app/backend/seed/exec.mjs +7 -5
  925. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +0 -11
  926. package/templates/scaffold/module/__dot__gitignore +3 -0
  927. package/templates/scaffold/module/eslint.config.js +31 -0
  928. package/templates/scaffold/module/generated/kysely-tailordb.ts +3 -0
  929. package/templates/scaffold/module/lib/types.ts +1 -6
  930. package/templates/scaffold/module/package.json +26 -0
  931. package/templates/scaffold/module/seed/index.ts +19 -0
  932. package/templates/scaffold/module/tsconfig.json +16 -0
  933. /package/schemas/{app-compose → app}/actors.yml +0 -0
  934. /package/schemas/{app-compose → app}/business-flow.yml +0 -0
  935. /package/schemas/{app-compose → app}/requirements.yml +0 -0
  936. /package/schemas/{app-compose → app}/resolver.yml +0 -0
  937. /package/schemas/{app-compose → app}/screen.yml +0 -0
  938. /package/schemas/{app-compose → app}/story.yml +0 -0
  939. /package/src/modules/{purchase → inventory/command}/.gitkeep +0 -0
  940. /package/{templates/scaffold/module/generated → src/modules/inventory/db}/.gitkeep +0 -0
@@ -0,0 +1,88 @@
1
+ # PurchaseOrder
2
+
3
+ ## Description
4
+
5
+ PurchaseOrder is the commercial procurement document that turns supplier pricing and payment terms into a concrete supplier commitment. It owns the supplier reference, receiving site, ordered lines, agreed unit prices, payment-term snapshot, and the fulfillment progress that later receipts and supplier bills consume.
6
+
7
+ The model combines document-control states with fulfillment states so procurement can answer both questions at once: "has this order been commercially approved?" and "how much of it is still open to receive or bill?"
8
+
9
+ ## Domain Model Definitions
10
+
11
+ ### Model type
12
+
13
+ Stateful
14
+
15
+ #### State Transitions
16
+
17
+ ```mermaid
18
+ stateDiagram-v2
19
+ [*] --> Draft: createPurchaseOrder
20
+ Draft --> Draft: updatePurchaseOrder
21
+ Draft --> Submitted: submitPurchaseOrder
22
+ Submitted --> Draft: rejectPurchaseOrder
23
+ Submitted --> Ordered: approvePurchaseOrder
24
+ Draft --> Cancelled: cancelPurchaseOrder
25
+ Submitted --> Cancelled: cancelPurchaseOrder
26
+ Ordered --> Cancelled: cancelPurchaseOrder
27
+ Ordered --> PartiallyReceived: postGoodsReceipt
28
+ Ordered --> Received: postGoodsReceipt
29
+ PartiallyReceived --> PartiallyReceived: postGoodsReceipt
30
+ PartiallyReceived --> Received: postGoodsReceipt
31
+ Ordered --> PartiallyBilled: matchPurchaseBill
32
+ Ordered --> Billed: matchPurchaseBill
33
+ PartiallyReceived --> PartiallyBilled: matchPurchaseBill
34
+ PartiallyReceived --> Billed: matchPurchaseBill
35
+ Received --> PartiallyBilled: matchPurchaseBill
36
+ Received --> Billed: matchPurchaseBill
37
+ PartiallyBilled --> PartiallyBilled: matchPurchaseBill
38
+ PartiallyBilled --> Billed: matchPurchaseBill
39
+ PartiallyReceived --> Closed: closePurchaseOrder
40
+ Received --> Closed: closePurchaseOrder
41
+ PartiallyBilled --> Closed: closePurchaseOrder
42
+ Billed --> Closed: closePurchaseOrder
43
+ ```
44
+
45
+ ### Command Definitions
46
+
47
+ - [createPurchaseOrder](../commands/CreatePurchaseOrder.md) - Create a new draft purchase order with one or more lines
48
+ - [updatePurchaseOrder](../commands/UpdatePurchaseOrder.md) - Revise mutable draft commercial fields and line content
49
+ - [submitPurchaseOrder](../commands/SubmitPurchaseOrder.md) - Validate draft completeness and move the order into submitted review
50
+ - [rejectPurchaseOrder](../commands/RejectPurchaseOrder.md) - Return a submitted order to draft with a rejection reason
51
+ - [approvePurchaseOrder](../commands/ApprovePurchaseOrder.md) - Freeze commercial terms and release a submitted order to the supplier
52
+ - [cancelPurchaseOrder](../commands/CancelPurchaseOrder.md) - Cancel an order before downstream fulfillment or billing makes it irreversible
53
+ - [closePurchaseOrder](../commands/ClosePurchaseOrder.md) - Close remaining open quantity after fulfillment or explicit write-off
54
+ - [postGoodsReceipt](../commands/PostGoodsReceipt.md) - Update receipt progress and receiving status from posted goods receipts
55
+ - [matchPurchaseBill](../commands/MatchPurchaseBill.md) - Update billed progress and billing status from matched supplier bills
56
+
57
+ ### Query Definitions
58
+
59
+ - [getPurchaseOrder](../queries/GetPurchaseOrder.md) - Retrieve a purchase order with its lines, snapshots, and fulfillment totals
60
+
61
+ ### Models
62
+
63
+ - PurchaseOrder
64
+ - PurchaseOrderLine
65
+ - PurchaseOrderPaymentTermSnapshot
66
+ - PurchaseOrderLinePriceSnapshot
67
+
68
+ ### Invariants
69
+
70
+ - A purchase order always belongs to exactly one company and one supplier
71
+ - Submitted, ordered, fulfilled, billed, and closed orders must contain at least one line
72
+ - Every line references an active item, has ordered quantity greater than zero, and has a non-negative agreed unit price
73
+ - Lines that require physical receipt must carry a receiving site before the order can leave draft
74
+ - Commercial fields that define the supplier commitment are mutable only while the order is in `DRAFT`
75
+ - The payment term snapshot and ordered unit price snapshot are immutable after the order enters `ORDERED`
76
+ - Cumulative received quantity and cumulative billed quantity cannot be negative and cannot exceed business tolerance rules for the line
77
+ - Cancellation is not allowed once a posted receipt or a matched supplier bill already exists
78
+ - External supplier order reference is unique within one company when provided
79
+
80
+ ### Relationships
81
+
82
+ - **Belongs To BusinessPartner**: Each order references one supplier [BusinessPartner](../../../business-partner/docs/models/BusinessPartner.md)
83
+ - **Belongs To Site**: Each order belongs to one receiving [Site](../../../organization/docs/models/Site.md) at document level, with line-level overrides allowed as an extension
84
+ - **Has Many PurchaseOrderLines**: Each order contains one or more commercial commitment lines
85
+ - **Snapshots PurchasePaymentTerm**: The order stores one immutable [PurchasePaymentTerm](./PurchasePaymentTerm.md) snapshot for downstream bill calculation
86
+ - **Snapshots PurchasePriceRule**: Each line may preserve the matched [PurchasePriceRule](./PurchasePriceRule.md) reference and final ordered price
87
+ - **Referenced By GoodsReceipt**: [GoodsReceipt](./GoodsReceipt.md) lines consume open ordered quantity
88
+ - **Referenced By PurchaseBill**: [PurchaseBill](./PurchaseBill.md) lines consume open billed quantity
@@ -0,0 +1,59 @@
1
+ # PurchasePaymentTerm
2
+
3
+ ## Description
4
+
5
+ PurchasePaymentTerm defines the supplier-facing settlement schedule that purchase orders and supplier bills snapshot for downstream payable processing. A term contains one or more schedule lines that express net-day, end-of-month, fixed-day, installment, and early-payment-discount logic.
6
+
7
+ The model stays inside purchase because it is part of the commercial agreement captured during procurement, but it is designed to hand a stable due schedule to downstream AP without requiring AP to re-interpret supplier contract language.
8
+
9
+ ## Domain Model Definitions
10
+
11
+ ### Model type
12
+
13
+ Stateful
14
+
15
+ #### State Transitions
16
+
17
+ ```mermaid
18
+ stateDiagram-v2
19
+ [*] --> Active: createPurchasePaymentTerm
20
+ Active --> Inactive: deactivatePurchasePaymentTerm
21
+ Inactive --> Active: activatePurchasePaymentTerm
22
+ Active --> Active: updatePurchasePaymentTerm
23
+ Inactive --> Inactive: updatePurchasePaymentTerm
24
+ ```
25
+
26
+ ### Command Definitions
27
+
28
+ - [createPurchasePaymentTerm](../commands/CreatePurchasePaymentTerm.md) - Create a new active supplier payment term with at least one schedule line
29
+ - [updatePurchasePaymentTerm](../commands/UpdatePurchasePaymentTerm.md) - Update the definition of an existing payment term without changing historical snapshots
30
+ - [activatePurchasePaymentTerm](../commands/ActivatePurchasePaymentTerm.md) - Re-enable a deactivated payment term for new procurement documents
31
+ - [deactivatePurchasePaymentTerm](../commands/DeactivatePurchasePaymentTerm.md) - Prevent a payment term from being assigned to new procurement documents
32
+
33
+ ### Query Definitions
34
+
35
+ - [getPurchasePaymentTerm](../queries/GetPurchasePaymentTerm.md) - Retrieve a payment term and all of its schedule lines
36
+ - [calculatePurchaseBillDueSchedule](../queries/CalculatePurchaseBillDueSchedule.md) - Convert a payment term plus bill inputs into payable installments and discount windows
37
+
38
+ ### Models
39
+
40
+ - PurchasePaymentTerm
41
+ - PurchasePaymentTermLine
42
+
43
+ ### Invariants
44
+
45
+ - Every payment term has at least one schedule line
46
+ - Percentage-based installment schedules must total exactly 100 percent before rounding
47
+ - Schedule lines must not contain negative percentage values or negative fixed amounts
48
+ - Early-payment discount dates must occur on or before the final due date generated by the term
49
+ - If a term offers discounting, it must explicitly record whether discount calculation uses `GROSS_AMOUNT` or `NET_AMOUNT`
50
+ - Installment rounding residual is absorbed by the final generated bill schedule line so total scheduled amount always equals the bill amount in transaction currency
51
+ - Inactive payment terms remain valid for historical purchase order and purchase bill snapshots but cannot be assigned to new drafts
52
+ - Exchange-rate conversion is out of scope for payment-term calculation; schedules are computed entirely in the bill transaction currency
53
+
54
+ ### Relationships
55
+
56
+ - **Has Many PurchasePaymentTermLines**: Each term contains one or more schedule lines that define due-date and discount behavior
57
+ - **Referenced By SupplierProfile**: A [SupplierProfile](./SupplierProfile.md) may point to one default payment term
58
+ - **Snapshotted By PurchaseOrder**: A [PurchaseOrder](./PurchaseOrder.md) stores the chosen term as an immutable commercial snapshot
59
+ - **Snapshotted By PurchaseBill**: A [PurchaseBill](./PurchaseBill.md) carries the term snapshot forward into downstream payable readiness
@@ -0,0 +1,53 @@
1
+ # PurchasePriceList
2
+
3
+ ## Description
4
+
5
+ PurchasePriceList groups the supplier-specific purchasing conditions that buyers can reuse across many orders. It defines the commercial container for one supplier in one company, while the actual unit prices, validity windows, and quantity breaks live on child purchase price rules.
6
+
7
+ Separating the list from the rules lets procurement retire an entire negotiated contract or reactivate it later without rewriting historical purchase-order snapshots.
8
+
9
+ ## Domain Model Definitions
10
+
11
+ ### Model type
12
+
13
+ Stateful
14
+
15
+ #### State Transitions
16
+
17
+ ```mermaid
18
+ stateDiagram-v2
19
+ [*] --> Active: createPurchasePriceList
20
+ Active --> Inactive: deactivatePurchasePriceList
21
+ Inactive --> Active: activatePurchasePriceList
22
+ Active --> Active: updatePurchasePriceList
23
+ Inactive --> Inactive: updatePurchasePriceList
24
+ ```
25
+
26
+ ### Command Definitions
27
+
28
+ - [createPurchasePriceList](../commands/CreatePurchasePriceList.md) - Create a new active supplier price list container
29
+ - [updatePurchasePriceList](../commands/UpdatePurchasePriceList.md) - Update descriptive or prioritization fields of an existing price list
30
+ - [activatePurchasePriceList](../commands/ActivatePurchasePriceList.md) - Re-enable a retired supplier contract for new price resolution
31
+ - [deactivatePurchasePriceList](../commands/DeactivatePurchasePriceList.md) - Prevent a price list from participating in future rule resolution
32
+
33
+ ### Query Definitions
34
+
35
+ - [getPurchasePriceList](../queries/GetPurchasePriceList.md) - Retrieve a price list with its embedded rules
36
+ - [calculatePurchasePrice](../queries/CalculatePurchasePrice.md) - Resolve the best matching active purchase price rule for a draft order line
37
+
38
+ ### Models
39
+
40
+ - PurchasePriceList
41
+
42
+ ### Invariants
43
+
44
+ - Every price list belongs to exactly one company and one supplier
45
+ - Only active price lists can participate in automatic purchase price resolution
46
+ - Deactivating a price list does not change purchase orders that already snapshotted one of its rules
47
+ - Price-list priority must be deterministic within one supplier and company so rule resolution can break ties consistently
48
+
49
+ ### Relationships
50
+
51
+ - **Belongs To BusinessPartner**: Each list targets one supplier [BusinessPartner](../../../business-partner/docs/models/BusinessPartner.md)
52
+ - **Has Many PurchasePriceRules**: A price list contains one or more [PurchasePriceRule](./PurchasePriceRule.md) records
53
+ - **Referenced By PurchaseOrder**: Draft [PurchaseOrder](./PurchaseOrder.md) lines may default from rules owned by the list before snapshotting the final agreed price
@@ -0,0 +1,58 @@
1
+ # PurchasePriceRule
2
+
3
+ ## Description
4
+
5
+ PurchasePriceRule defines the exact purchasing condition used to price a draft purchase-order line. A rule can target an item, purchasing unit of measure, transaction currency, validity window, minimum quantity break, and explicit priority, allowing procurement to model annual contracts, temporary promotions, and tiered supplier pricing.
6
+
7
+ The rule lives as an independently managed record because procurement needs to retire, reactivate, or update individual supplier conditions without changing the enclosing contract container.
8
+
9
+ ## Domain Model Definitions
10
+
11
+ ### Model type
12
+
13
+ Stateful
14
+
15
+ #### State Transitions
16
+
17
+ ```mermaid
18
+ stateDiagram-v2
19
+ [*] --> Active: createPurchasePriceRule
20
+ Active --> Inactive: deactivatePurchasePriceRule
21
+ Inactive --> Active: activatePurchasePriceRule
22
+ Active --> Active: updatePurchasePriceRule
23
+ Inactive --> Inactive: updatePurchasePriceRule
24
+ ```
25
+
26
+ ### Command Definitions
27
+
28
+ - [createPurchasePriceRule](../commands/CreatePurchasePriceRule.md) - Add a new active supplier purchase price rule to a list
29
+ - [updatePurchasePriceRule](../commands/UpdatePurchasePriceRule.md) - Update the condition fields of a price rule without changing historical order snapshots
30
+ - [activatePurchasePriceRule](../commands/ActivatePurchasePriceRule.md) - Re-enable a retired rule for future price resolution
31
+ - [deactivatePurchasePriceRule](../commands/DeactivatePurchasePriceRule.md) - Stop a rule from being selected for new draft orders
32
+
33
+ ### Query Definitions
34
+
35
+ - [getPurchasePriceList](../queries/GetPurchasePriceList.md) - Retrieve rules through their parent price list
36
+ - [calculatePurchasePrice](../queries/CalculatePurchasePrice.md) - Apply rule precedence and quantity logic to a draft order line
37
+
38
+ ### Models
39
+
40
+ - PurchasePriceRule
41
+
42
+ ### Invariants
43
+
44
+ - Unit price must be strictly positive
45
+ - Minimum quantity must be zero or greater
46
+ - Effective end date, when provided, must be on or after the effective start date
47
+ - Operational use requires the referenced item, currency, and purchase unit to exist and remain active
48
+ - Rules with indistinguishable precedence for the same supplier, item, date, UoM, currency, and quantity context are invalid because price resolution must always choose a single winner
49
+ - Multi-currency price conversion is out of scope inside purchase pricing; rules are matched only when the requested transaction currency equals the rule currency
50
+ - Purchase orders snapshot the applied rule reference and unit price so later edits or deactivation never rewrite historical commercial terms
51
+
52
+ ### Relationships
53
+
54
+ - **Belongs To PurchasePriceList**: Each rule is owned by one [PurchasePriceList](./PurchasePriceList.md)
55
+ - **References Item**: The rule prices one [Item](../../../item-management/docs/models/Item.md) or another explicitly documented purchasing scope
56
+ - **References Currency**: The rule price is denominated in one [Currency](../../../primitives/docs/models/Currency.md)
57
+ - **References Unit**: The rule is keyed to one purchasing [Unit](../../../primitives/docs/models/Unit.md); quantity comparison may require [convertQuantity](../../../primitives/docs/queries/ConvertQuantity.md)
58
+ - **Snapshotted By PurchaseOrderLine**: The final agreed price and matched rule reference are frozen onto [PurchaseOrder](./PurchaseOrder.md) lines
@@ -0,0 +1,37 @@
1
+ # SupplierProfile
2
+
3
+ ## Description
4
+
5
+ SupplierProfile is the purchase-owned extension of a supplier partner inside one company. It captures procurement defaults that are not part of general business-partner master data, starting with the default purchase payment term used when a new draft purchase order is created for that supplier.
6
+
7
+ This model resolves ownership ambiguity between purchase and business-partner: business-partner owns the partner identity and role classification, while purchase owns supplier-facing procurement defaults keyed by `companyId + supplierPartnerId`.
8
+
9
+ ## Domain Model Definitions
10
+
11
+ ### Model type
12
+
13
+ Standard
14
+
15
+ ### Command Definitions
16
+
17
+ - [setSupplierDefaultPurchasePaymentTerm](../commands/SetSupplierDefaultPurchasePaymentTerm.md) - Create or update the supplier procurement profile and assign its default payment term
18
+
19
+ ### Query Definitions
20
+
21
+ - [getSupplierProfile](../queries/GetSupplierProfile.md) - Retrieve the company-scoped supplier procurement profile with its default payment term
22
+
23
+ ### Models
24
+
25
+ - SupplierProfile
26
+
27
+ ### Invariants
28
+
29
+ - A supplier has at most one purchase profile per company
30
+ - A supplier profile can exist only for a partner that has the `SUPPLIER` role
31
+ - A default purchase payment term, when present, must belong to the same company as the supplier profile
32
+ - A deactivated purchase payment term cannot remain the default for new draft purchase orders until it is replaced or cleared
33
+
34
+ ### Relationships
35
+
36
+ - **Belongs To BusinessPartner**: Each supplier profile extends one [BusinessPartner](../../../business-partner/docs/models/BusinessPartner.md) record used as the supplier reference
37
+ - **References PurchasePaymentTerm**: The profile may point to one default [PurchasePaymentTerm](./PurchasePaymentTerm.md) for draft order defaulting
@@ -0,0 +1,47 @@
1
+ # CalculatePurchaseBillDueSchedule
2
+
3
+ ## Overview
4
+
5
+ CalculatePurchaseBillDueSchedule converts a purchase payment term plus bill inputs into one or more payable due-schedule lines, including early-payment discount windows when configured.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts a payment-term snapshot or a payment-term id plus bill date and bill amount inputs
10
+ - Installment schedules can mix percentage-based and fixed-amount lines as documented by the term
11
+ - End-of-month logic is calculated from calendar month boundaries, not from a simple day offset
12
+ - Any rounding residual is assigned to the final due-schedule line so the total equals the bill amount in transaction currency
13
+ - Discount calculations explicitly honor the term's `GROSS_AMOUNT` or `NET_AMOUNT` discount base
14
+ - Exchange-rate conversion is out of scope; all results stay in the bill transaction currency
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive bill date, amount, and payment term] --> B{Payment term available?}
21
+ B -->|No| C[Return PAYMENT_TERM_NOT_FOUND]
22
+ B -->|Yes| D[Expand term schedule lines]
23
+ D --> E[Calculate due dates using net-day, fixed-day, or end-of-month rules]
24
+ E --> F[Calculate installment amounts and assign residual to final line]
25
+ F --> G[Attach discount metadata where configured]
26
+ G --> H[Return due-schedule lines]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - None
32
+
33
+ ## Error Scenarios
34
+
35
+ - **PAYMENT_TERM_NOT_FOUND**: Referenced purchase payment term does not exist
36
+ - **INVALID_PAYMENT_TERM_CONFIGURATION**: Payment term schedule is incomplete or internally inconsistent
37
+ - **INVALID_BILL_AMOUNT**: Bill amount input is negative or incompatible with the schedule type
38
+
39
+ ## Test Cases
40
+
41
+ - calculates a single due date for net-30 terms
42
+ - calculates discount window and final due date for 2/10 net 30
43
+ - calculates multiple due-schedule lines for installment terms
44
+ - applies end-of-month logic correctly
45
+ - assigns rounding residual to the final schedule line
46
+ - returns error when payment term does not exist
47
+ - returns error when payment term configuration is invalid
@@ -0,0 +1,53 @@
1
+ # CalculatePurchasePrice
2
+
3
+ ## Overview
4
+
5
+ CalculatePurchasePrice resolves the best matching supplier purchase price rule for a draft purchase-order line and returns the suggested unit price together with the matched rule reference.
6
+
7
+ ## Business Rules
8
+
9
+ - Inputs include `companyId`, `supplierId`, `itemId`, ordered quantity, purchase unit, transaction currency, and order date
10
+ - Only active price lists and active price rules participate in matching
11
+ - Rule precedence is deterministic across supplier, price-list priority, item scope, purchase unit, minimum quantity break, effective date, and explicit rule priority
12
+ - When purchase unit differs from the rule comparison unit, quantity comparison uses shared unit conversion
13
+ - Currency conversion is out of scope; rules match only when the requested currency equals the rule currency
14
+ - Returns null suggestion when no active rule matches and manual pricing is expected
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive supplier, item, qty, unit, currency, date] --> B{Item and units valid?}
21
+ B -->|No| C[Return reference error]
22
+ B -->|Yes| D[Load active lists and active rules for supplier/company]
23
+ D --> E[Normalize quantity for rule comparison]
24
+ E --> F[Filter rules by item, UoM, currency, date, and min qty]
25
+ F --> G{Rule found?}
26
+ G -->|No| H[Return null suggestion]
27
+ G -->|Yes| I[Pick highest precedence rule]
28
+ I --> J[Return suggested unit price and matched rule reference]
29
+ ```
30
+
31
+ ## External Dependencies
32
+
33
+ - [item-management::GetItem](../../../item-management/docs/queries/GetItem.md) - Validate item existence and active status
34
+ - [primitives::ConvertQuantity](../../../primitives/docs/queries/ConvertQuantity.md) - Compare quantity breaks across compatible units of measure
35
+
36
+ ## Error Scenarios
37
+
38
+ - **ITEM_NOT_FOUND**: Referenced item does not exist
39
+ - **ITEM_NOT_ACTIVE**: Referenced item is inactive
40
+ - **UNIT_NOT_FOUND**: Referenced purchase unit does not exist
41
+ - **CURRENCY_NOT_FOUND**: Referenced currency does not exist
42
+ - **INCOMPATIBLE_UNITS**: Quantity-break comparison requires units that do not share a conversion path
43
+ - **NO_MATCHING_PRICE_RULE**: No active rule matches; caller receives null suggestion
44
+
45
+ ## Test Cases
46
+
47
+ - returns the best matching rule for a valid supplier item context
48
+ - picks the higher quantity-break rule when ordered quantity qualifies
49
+ - ignores inactive price lists and inactive rules
50
+ - returns null when no active rule matches
51
+ - returns error when item does not exist
52
+ - returns error when item is inactive
53
+ - returns error when units are incompatible for quantity-break comparison
@@ -0,0 +1,36 @@
1
+ # GetGoodsReceipt
2
+
3
+ ## Overview
4
+
5
+ GetGoodsReceipt retrieves a goods receipt with its receipt lines, receipt date, posting status, and inbound handoff metadata.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup key is goods-receipt id
10
+ - Returns receipts in any status so draft, cancelled, and posted receipts remain reviewable
11
+ - Response includes referenced purchase-order and purchase-order-line links needed for audit and 3-way matching
12
+ - Returns null when the goods receipt does not exist
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive goodsReceiptId] --> B[Select GoodsReceipt and receipt lines by id]
19
+ B --> C{Receipt found?}
20
+ C -->|Yes| D[Return goods receipt with lines and handoff metadata]
21
+ C -->|No| E[Return null]
22
+ ```
23
+
24
+ ## External Dependencies
25
+
26
+ - None
27
+
28
+ ## Error Scenarios
29
+
30
+ - **GOODS_RECEIPT_NOT_FOUND**: No goods receipt exists for the given id; caller receives null
31
+
32
+ ## Test Cases
33
+
34
+ - returns goods receipt when found
35
+ - returns receipt lines and handoff metadata with the receipt
36
+ - returns null when goods receipt does not exist
@@ -0,0 +1,41 @@
1
+ # GetPurchaseBill
2
+
3
+ ## Overview
4
+
5
+ GetPurchaseBill retrieves a supplier bill together with its matching outcome, payable schedule snapshot, tax snapshot, and line-level purchase references.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts lookup by `{ id }` or by `{ companyId, supplierId, invoiceNumber }`
10
+ - Returns bills in any status so blocked, matched, and cancelled evidence remains available for audit
11
+ - Response includes matching mode, variance reason, and due-schedule lines when available
12
+ - Returns null when no purchase bill matches the lookup
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive lookup input] --> B{Lookup by id or supplier invoice identity?}
19
+ B -->|id| C[Select PurchaseBill by id]
20
+ B -->|invoice identity| D[Select PurchaseBill by company + supplier + invoice number]
21
+ C --> E{Bill found?}
22
+ D --> E
23
+ E -->|Yes| F[Load bill lines, tax snapshot, and due schedule]
24
+ E -->|No| G[Return null]
25
+ F --> H[Return purchase bill]
26
+ ```
27
+
28
+ ## External Dependencies
29
+
30
+ - None
31
+
32
+ ## Error Scenarios
33
+
34
+ - **PURCHASE_BILL_NOT_FOUND**: No purchase bill matches the given lookup; caller receives null
35
+
36
+ ## Test Cases
37
+
38
+ - returns purchase bill when found by id
39
+ - returns purchase bill when found by supplier invoice identity
40
+ - returns matching outcome and due schedule with the bill
41
+ - returns null when purchase bill is not found
@@ -0,0 +1,42 @@
1
+ # GetPurchaseOrder
2
+
3
+ ## Overview
4
+
5
+ GetPurchaseOrder retrieves a single purchase order with its lines, frozen commercial snapshots, and fulfillment progress.
6
+
7
+ ## Business Rules
8
+
9
+ - Accepts lookup by `{ id }` or by `{ companyId, externalSupplierOrderReference }`
10
+ - Returns purchase orders in any status so cancelled and closed documents remain auditable
11
+ - Response includes line-level remaining quantity to receive and remaining quantity to bill
12
+ - Response includes payment-term snapshot and matched price-rule references when present
13
+ - Returns null when no purchase order matches the lookup
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive lookup input] --> B{Lookup by id or external reference?}
20
+ B -->|id| C[Select PurchaseOrder by id]
21
+ B -->|external reference| D[Select PurchaseOrder by company + external reference]
22
+ C --> E{Order found?}
23
+ D --> E
24
+ E -->|Yes| F[Load lines, snapshots, and fulfillment totals]
25
+ E -->|No| G[Return null]
26
+ F --> H[Return purchase order]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - None
32
+
33
+ ## Error Scenarios
34
+
35
+ - **PURCHASE_ORDER_NOT_FOUND**: No purchase order matches the given lookup; caller receives null
36
+
37
+ ## Test Cases
38
+
39
+ - returns purchase order when found by id
40
+ - returns purchase order when found by company and external supplier order reference
41
+ - returns lines and fulfillment totals with the order
42
+ - returns null when purchase order is not found
@@ -0,0 +1,36 @@
1
+ # GetPurchasePaymentTerm
2
+
3
+ ## Overview
4
+
5
+ GetPurchasePaymentTerm retrieves one purchase payment term and all of its schedule lines by identifier.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup key is payment-term id
10
+ - Returns payment terms in any status so historical references remain readable
11
+ - Response includes all schedule lines needed to compute installments and discount windows
12
+ - Returns null when the payment term does not exist
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive paymentTermId] --> B[Select PurchasePaymentTerm and schedule lines by id]
19
+ B --> C{Term found?}
20
+ C -->|Yes| D[Return payment term with lines]
21
+ C -->|No| E[Return null]
22
+ ```
23
+
24
+ ## External Dependencies
25
+
26
+ - None
27
+
28
+ ## Error Scenarios
29
+
30
+ - **PAYMENT_TERM_NOT_FOUND**: No purchase payment term exists for the given id; caller receives null
31
+
32
+ ## Test Cases
33
+
34
+ - returns purchase payment term when found
35
+ - returns schedule lines with the term
36
+ - returns null when purchase payment term does not exist
@@ -0,0 +1,36 @@
1
+ # GetPurchasePriceList
2
+
3
+ ## Overview
4
+
5
+ GetPurchasePriceList retrieves a supplier purchase price list together with all of its purchase price rules.
6
+
7
+ ## Business Rules
8
+
9
+ - Lookup key is price-list id
10
+ - Returns price lists in any status so historical supplier contracts remain inspectable
11
+ - Response includes embedded purchase price rules and their current statuses
12
+ - Returns null when the price list does not exist
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive priceListId] --> B[Select PurchasePriceList and rules by id]
19
+ B --> C{List found?}
20
+ C -->|Yes| D[Return price list with rules]
21
+ C -->|No| E[Return null]
22
+ ```
23
+
24
+ ## External Dependencies
25
+
26
+ - None
27
+
28
+ ## Error Scenarios
29
+
30
+ - **PRICE_LIST_NOT_FOUND**: No purchase price list exists for the given id; caller receives null
31
+
32
+ ## Test Cases
33
+
34
+ - returns purchase price list when found
35
+ - returns embedded purchase price rules with the list
36
+ - returns null when purchase price list does not exist
@@ -0,0 +1,36 @@
1
+ # GetSupplierProfile
2
+
3
+ ## Overview
4
+
5
+ GetSupplierProfile retrieves the purchase-owned supplier procurement profile for one company and supplier, including the default purchase payment term if one is configured.
6
+
7
+ ## Business Rules
8
+
9
+ - Input lookup is `companyId + supplierId`
10
+ - Returns the supplier profile for any persisted state because the model is standard, not lifecycle-driven
11
+ - Returns the embedded default payment term reference when configured
12
+ - Returns null when no purchase profile exists for the supplier in the company
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive companyId + supplierId] --> B[Select SupplierProfile by company and supplier]
19
+ B --> C{Profile found?}
20
+ C -->|Yes| D[Return supplier profile]
21
+ C -->|No| E[Return null]
22
+ ```
23
+
24
+ ## External Dependencies
25
+
26
+ - None
27
+
28
+ ## Error Scenarios
29
+
30
+ - **SUPPLIER_PROFILE_NOT_FOUND**: No supplier profile exists for the given company and supplier; caller receives null
31
+
32
+ ## Test Cases
33
+
34
+ - returns supplier profile when found
35
+ - returns default payment term reference when configured
36
+ - returns null when supplier profile does not exist
File without changes
File without changes