@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,39 @@
1
+ # DeactivatePurchasePriceList
2
+
3
+ ## Overview
4
+
5
+ DeactivatePurchasePriceList retires a supplier price list from future defaulting while preserving all orders that already used one of its rules.
6
+
7
+ ## Business Rules
8
+
9
+ - Target price list must exist
10
+ - Deactivating an already inactive list returns success without changing state
11
+ - Deactivated lists are ignored by price resolution for new draft orders
12
+ - Historical purchase orders keep their ordered prices and matched rule references
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive deactivate request] --> B{Price list exists?}
19
+ B -->|No| C[Return PRICE_LIST_NOT_FOUND]
20
+ B -->|Yes| D{Already inactive?}
21
+ D -->|Yes| E[Return success with no-op]
22
+ D -->|No| F[Set status to INACTIVE]
23
+ F --> G[Return deactivated list]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - None
29
+
30
+ ## Error Scenarios
31
+
32
+ - **PRICE_LIST_NOT_FOUND**: Target price list does not exist
33
+
34
+ ## Test Cases
35
+
36
+ - deactivates an active price list
37
+ - returns success when the list is already inactive
38
+ - preserves historical purchase-order snapshots after deactivation
39
+ - returns error when price list does not exist
@@ -0,0 +1,39 @@
1
+ # DeactivatePurchasePriceRule
2
+
3
+ ## Overview
4
+
5
+ DeactivatePurchasePriceRule retires one supplier purchase pricing condition from future rule resolution while preserving all historical purchase orders that already used it.
6
+
7
+ ## Business Rules
8
+
9
+ - Target rule must exist
10
+ - Deactivating an already inactive rule returns success without changing state
11
+ - Deactivated rules are ignored by automatic price calculation for new draft orders
12
+ - Historical purchase orders keep their ordered prices and matched rule references
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive deactivate request] --> B{Rule exists?}
19
+ B -->|No| C[Return PRICE_RULE_NOT_FOUND]
20
+ B -->|Yes| D{Already inactive?}
21
+ D -->|Yes| E[Return success with no-op]
22
+ D -->|No| F[Set status to INACTIVE]
23
+ F --> G[Return deactivated rule]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - None
29
+
30
+ ## Error Scenarios
31
+
32
+ - **PRICE_RULE_NOT_FOUND**: Target price rule does not exist
33
+
34
+ ## Test Cases
35
+
36
+ - deactivates an active price rule
37
+ - returns success when the rule is already inactive
38
+ - preserves historical purchase-order snapshots after deactivation
39
+ - returns error when rule does not exist
@@ -0,0 +1,63 @@
1
+ # MatchPurchaseBill
2
+
3
+ ## Overview
4
+
5
+ MatchPurchaseBill runs procurement matching on a draft supplier bill. It compares each bill line against the referenced purchase-order line and, when 3-way matching is required, against cumulative posted goods receipts. The bill then becomes `MATCHED` or `BLOCKED`.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase bill must exist
10
+ - Only bills in `DRAFT` status can be matched
11
+ - Matching mode must be explicitly recorded as `TWO_WAY` or `THREE_WAY`
12
+ - 2-way matching compares billed quantity and billed price to the purchase order
13
+ - 3-way matching also requires billed quantity to stay within cumulative posted receipt quantity, subject to configured tolerance
14
+ - Price variance above tolerance results in `BLOCKED` instead of `MATCHED`
15
+ - Matched bills calculate due schedule from the payment-term snapshot and increase purchase-order billed quantity
16
+ - Blocked bills preserve variance reason and comparison basis without emitting downstream AP readiness
17
+
18
+ ## Process Flow
19
+
20
+ ```mermaid
21
+ flowchart TD
22
+ A[Receive match request] --> B{Purchase bill exists and is DRAFT?}
23
+ B -->|No| C[Return not found or invalid status]
24
+ B -->|Yes| D{Matching mode provided?}
25
+ D -->|No| E[Return MATCH_MODE_REQUIRED]
26
+ D -->|Yes| F[Compare each bill line to PO line]
27
+ F --> G{THREE_WAY?}
28
+ G -->|Yes| H[Compare billed qty to posted receipts]
29
+ G -->|No| I[Skip receipt comparison]
30
+ H --> J{Within quantity and price tolerance?}
31
+ I --> J
32
+ J -->|No| K[Record variance evidence and set BLOCKED]
33
+ J -->|Yes| L[Calculate due schedule and set MATCHED]
34
+ L --> M[Increase PO billed quantity and prepare bill-ready handoff]
35
+ K --> N[Return blocked bill]
36
+ M --> O[Return matched bill]
37
+ ```
38
+
39
+ ## External Dependencies
40
+
41
+ - [getGoodsReceipt](../queries/GetGoodsReceipt.md) - Source cumulative posted receipt evidence for 3-way matching
42
+
43
+ ## Error Scenarios
44
+
45
+ - **PURCHASE_BILL_NOT_FOUND**: Target purchase bill does not exist
46
+ - **PURCHASE_BILL_NOT_DRAFT**: Purchase bill is not in `DRAFT` status
47
+ - **MATCH_MODE_REQUIRED**: No matching mode was provided
48
+ - **PURCHASE_ORDER_CANCELLED**: Referenced purchase order is cancelled
49
+ - **PAYMENT_SCHEDULE_CALCULATION_FAILED**: Due schedule could not be derived from the payment-term snapshot
50
+
51
+ ## Test Cases
52
+
53
+ - matches a valid 2-way purchase bill
54
+ - matches a valid 3-way purchase bill when posted receipt quantity is sufficient
55
+ - blocks a bill when 3-way quantity exceeds posted receipt quantity
56
+ - blocks a bill when price variance exceeds tolerance
57
+ - records matching mode on the bill
58
+ - increases purchase-order billed quantity when the bill is matched
59
+ - returns error when purchase bill does not exist
60
+ - returns error when purchase bill is not draft
61
+ - returns error when matching mode is missing
62
+ - returns error when a referenced purchase order is cancelled
63
+ - returns error when payment schedule calculation fails
@@ -0,0 +1,61 @@
1
+ # PostGoodsReceipt
2
+
3
+ ## Overview
4
+
5
+ PostGoodsReceipt validates a draft receipt, updates cumulative received quantities on the referenced purchase-order lines, transitions the purchase order to the correct receiving state, and emits the inbound inventory handoff when required.
6
+
7
+ ## Business Rules
8
+
9
+ - Target goods receipt must exist
10
+ - Only receipts in `DRAFT` status can be posted
11
+ - Each receipt line must still reference open purchase-order quantity
12
+ - Over-receipt beyond configured tolerance is blocked unless an explicit override path is provided
13
+ - Only posted goods receipts count toward 3-way supplier bill matching
14
+ - Stock-item lines emit the `InboundReceiptHandoff` exactly once; service lines do not require inventory execution
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive post request] --> B{Goods receipt exists and is DRAFT?}
21
+ B -->|No| C[Return not found or invalid status]
22
+ B -->|Yes| D{Receipt lines still have open quantity and are within tolerance?}
23
+ D -->|No| E[Return receipt validation error]
24
+ D -->|Yes| F[Increase PO line received quantities]
25
+ F --> G[Set goods receipt to POSTED]
26
+ G --> H{Stock line present?}
27
+ H -->|Yes| I[Emit inbound receipt handoff]
28
+ H -->|No| J[Skip inventory handoff]
29
+ I --> K[Roll up PO receiving status]
30
+ J --> K
31
+ K --> L[Return posted receipt]
32
+ ```
33
+
34
+ ## External Dependencies
35
+
36
+ - [inventory::CreateStockMovement](../../../inventory/docs/commands/CreateStockMovement.md) - Downstream stock execution target for stock-item receipts
37
+
38
+ ## Error Scenarios
39
+
40
+ - **GOODS_RECEIPT_NOT_FOUND**: Target goods receipt does not exist
41
+ - **GOODS_RECEIPT_NOT_DRAFT**: Goods receipt is not in `DRAFT` status
42
+ - **PURCHASE_ORDER_NOT_RECEIVABLE**: Purchase order is cancelled or closed
43
+ - **NO_OPEN_RECEIPT_QUANTITY**: Purchase-order line has no remaining open quantity to receive
44
+ - **OVER_RECEIPT_TOLERANCE_EXCEEDED**: Received quantity exceeds allowed tolerance
45
+ - **INACTIVE_EXECUTION_REFERENCE**: Supplier or item is no longer valid for execution
46
+ - **INVENTORY_HANDOFF_FAILED**: Downstream inventory handoff could not be recorded
47
+
48
+ ## Test Cases
49
+
50
+ - posts a valid goods receipt and increases purchase-order received quantity
51
+ - transitions purchase order to partially received when open quantity remains
52
+ - transitions purchase order to received when all quantity is posted
53
+ - emits inventory handoff once for a stock-item receipt
54
+ - skips inventory handoff for a service receipt
55
+ - returns error when goods receipt does not exist
56
+ - returns error when goods receipt is not draft
57
+ - returns error when posting exceeds tolerance
58
+ - returns error when inventory handoff fails
59
+ - returns error when purchase order is no longer receivable
60
+ - returns error when posting a receipt line with no open quantity remaining
61
+ - returns error when execution references are inactive
@@ -0,0 +1,44 @@
1
+ # RejectPurchaseOrder
2
+
3
+ ## Overview
4
+
5
+ RejectPurchaseOrder returns a submitted purchase order to `DRAFT` status and records the rejection reason so the buyer can revise the document.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase order must exist
10
+ - Only orders in `SUBMITTED` status can be rejected
11
+ - Rejection reason is required and preserved for audit
12
+ - Rejection does not alter commercial line content; it only changes control status back to draft
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive reject request] --> B{Purchase order exists?}
19
+ B -->|No| C[Return PURCHASE_ORDER_NOT_FOUND]
20
+ B -->|Yes| D{Status is SUBMITTED?}
21
+ D -->|No| E[Return PURCHASE_ORDER_NOT_SUBMITTED]
22
+ D -->|Yes| F{Reason provided?}
23
+ F -->|No| G[Return REJECTION_REASON_REQUIRED]
24
+ F -->|Yes| H[Store rejection reason and set status to DRAFT]
25
+ H --> I[Return rejected order]
26
+ ```
27
+
28
+ ## External Dependencies
29
+
30
+ - None
31
+
32
+ ## Error Scenarios
33
+
34
+ - **PURCHASE_ORDER_NOT_FOUND**: Target purchase order does not exist
35
+ - **PURCHASE_ORDER_NOT_SUBMITTED**: Purchase order is not in `SUBMITTED` status
36
+ - **REJECTION_REASON_REQUIRED**: No rejection reason was provided
37
+
38
+ ## Test Cases
39
+
40
+ - rejects a submitted purchase order back to draft
41
+ - records the rejection reason for audit
42
+ - returns error when purchase order does not exist
43
+ - returns error when purchase order is not submitted
44
+ - returns error when rejection reason is missing
@@ -0,0 +1,48 @@
1
+ # ReleasePurchaseBill
2
+
3
+ ## Overview
4
+
5
+ ReleasePurchaseBill moves a blocked supplier bill to `MATCHED` after an authorized user confirms that the recorded variance is acceptable or has been resolved outside the original comparison.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase bill must exist
10
+ - Only bills in `BLOCKED` status can be released
11
+ - Release reason or override note is required for audit
12
+ - Released bills preserve the original blocked variance evidence in addition to the release decision
13
+ - Releasing a bill recalculates the due schedule if needed and prepares the downstream bill-ready handoff
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive release request] --> B{Purchase bill exists?}
20
+ B -->|No| C[Return PURCHASE_BILL_NOT_FOUND]
21
+ B -->|Yes| D{Status is BLOCKED?}
22
+ D -->|No| E[Return PURCHASE_BILL_NOT_BLOCKED]
23
+ D -->|Yes| F{Override reason provided?}
24
+ F -->|No| G[Return RELEASE_REASON_REQUIRED]
25
+ F -->|Yes| H[Preserve variance evidence and set MATCHED]
26
+ H --> I[Prepare due schedule and bill-ready handoff]
27
+ I --> J[Return released bill]
28
+ ```
29
+
30
+ ## External Dependencies
31
+
32
+ - None
33
+
34
+ ## Error Scenarios
35
+
36
+ - **PURCHASE_BILL_NOT_FOUND**: Target purchase bill does not exist
37
+ - **PURCHASE_BILL_NOT_BLOCKED**: Purchase bill is not in `BLOCKED` status
38
+ - **RELEASE_REASON_REQUIRED**: No override or resolution reason was provided
39
+ - **PAYMENT_SCHEDULE_CALCULATION_FAILED**: Due schedule could not be derived from the payment-term snapshot
40
+
41
+ ## Test Cases
42
+
43
+ - releases a blocked purchase bill with an override reason
44
+ - preserves original variance evidence when releasing
45
+ - returns error when purchase bill does not exist
46
+ - returns error when purchase bill is not blocked
47
+ - returns error when override reason is missing
48
+ - returns error when payment schedule calculation fails
@@ -0,0 +1,50 @@
1
+ # SetSupplierDefaultPurchasePaymentTerm
2
+
3
+ ## Overview
4
+
5
+ SetSupplierDefaultPurchasePaymentTerm creates or updates the purchase-owned supplier profile for a company and assigns the default payment term used when new draft purchase orders are created for that supplier.
6
+
7
+ ## Business Rules
8
+
9
+ - Supplier must exist and carry the `SUPPLIER` role
10
+ - Supplier profile is unique per `companyId + supplierId`
11
+ - Assigned payment term must exist, belong to the same company, and be active for new draft defaulting
12
+ - Passing the same default term as the current profile is idempotent
13
+ - Clearing the default term is allowed and preserves the supplier profile record for future procurement settings
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive supplier + company + paymentTermId] --> B{Supplier exists and is a SUPPLIER?}
20
+ B -->|No| C[Return supplier error]
21
+ B -->|Yes| D{Payment term provided?}
22
+ D -->|Yes| E{Payment term exists, same company, active?}
23
+ D -->|No| G[Upsert supplier profile with cleared default]
24
+ E -->|No| F[Return payment term error]
25
+ E -->|Yes| G[Upsert supplier profile with default term]
26
+ G --> H[Return supplier profile]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - [business-partner::GetPartner](../../../business-partner/docs/queries/GetPartner.md) - Validate the supplier reference and partner role
32
+
33
+ ## Error Scenarios
34
+
35
+ - **SUPPLIER_NOT_FOUND**: Supplier partner does not exist
36
+ - **PARTNER_NOT_SUPPLIER**: Referenced partner does not carry the `SUPPLIER` role
37
+ - **PAYMENT_TERM_NOT_FOUND**: Referenced purchase payment term does not exist
38
+ - **PAYMENT_TERM_INACTIVE**: Referenced purchase payment term is inactive and cannot be used as a default
39
+ - **COMPANY_SCOPE_MISMATCH**: Supplier profile company does not match the payment term company
40
+
41
+ ## Test Cases
42
+
43
+ - creates a supplier profile when none exists
44
+ - updates the default payment term on an existing supplier profile
45
+ - clears the default payment term when explicit null is provided
46
+ - returns error when supplier does not exist
47
+ - returns error when partner is not a supplier
48
+ - returns error when payment term does not exist
49
+ - returns error when payment term is inactive
50
+ - returns error when payment term belongs to a different company
@@ -0,0 +1,51 @@
1
+ # SubmitPurchaseOrder
2
+
3
+ ## Overview
4
+
5
+ SubmitPurchaseOrder validates that a draft purchase order is commercially complete and moves it into `SUBMITTED` status for review or approval.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase order must exist
10
+ - Only orders in `DRAFT` status can be submitted
11
+ - Submitted orders must contain at least one line
12
+ - Every physical line must have a receiving site
13
+ - Supplier must still carry the `SUPPLIER` role at submission time
14
+ - External supplier order reference must be unique within the company when provided
15
+
16
+ ## Process Flow
17
+
18
+ ```mermaid
19
+ flowchart TD
20
+ A[Receive submit request] --> B{Purchase order exists and is DRAFT?}
21
+ B -->|No| C[Return not found or invalid status]
22
+ B -->|Yes| D{At least one valid line?}
23
+ D -->|No| E[Return line validation error]
24
+ D -->|Yes| F{Supplier and external reference valid?}
25
+ F -->|No| G[Return supplier or duplicate reference error]
26
+ F -->|Yes| H[Set status to SUBMITTED]
27
+ H --> I[Return submitted order]
28
+ ```
29
+
30
+ ## External Dependencies
31
+
32
+ - [business-partner::GetPartner](../../../business-partner/docs/queries/GetPartner.md) - Re-validate supplier role and status
33
+
34
+ ## Error Scenarios
35
+
36
+ - **PURCHASE_ORDER_NOT_FOUND**: Target purchase order does not exist
37
+ - **PURCHASE_ORDER_NOT_DRAFT**: Purchase order is not in `DRAFT` status
38
+ - **EMPTY_PURCHASE_ORDER_LINES**: Purchase order has no lines
39
+ - **RECEIVING_SITE_REQUIRED**: A physical-receipt line has no receiving site
40
+ - **PARTNER_NOT_SUPPLIER**: Supplier no longer carries the `SUPPLIER` role
41
+ - **DUPLICATE_EXTERNAL_SUPPLIER_ORDER_REFERENCE**: Another order already uses the same external supplier order reference in the company
42
+
43
+ ## Test Cases
44
+
45
+ - submits a valid draft purchase order
46
+ - returns error when purchase order does not exist
47
+ - returns error when purchase order is not in draft
48
+ - returns error when purchase order has no lines
49
+ - returns error when a physical line has no receiving site
50
+ - returns error when supplier is no longer classified as a supplier
51
+ - returns error when external supplier order reference is duplicated
@@ -0,0 +1,48 @@
1
+ # UpdateGoodsReceipt
2
+
3
+ ## Overview
4
+
5
+ UpdateGoodsReceipt changes draft receipt quantities, receipt dates, or targeted lines before the receipt is posted.
6
+
7
+ ## Business Rules
8
+
9
+ - Target goods receipt must exist
10
+ - Only receipts in `DRAFT` status can be updated
11
+ - Updated lines must satisfy the same validation rules as create
12
+ - Posted receipts are immutable and must be corrected by a future compensating workflow instead of update
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive update request] --> B{Goods receipt exists?}
19
+ B -->|No| C[Return GOODS_RECEIPT_NOT_FOUND]
20
+ B -->|Yes| D{Status is DRAFT?}
21
+ D -->|No| E[Return GOODS_RECEIPT_NOT_DRAFT]
22
+ D -->|Yes| F{Updated lines valid?}
23
+ F -->|No| G[Return validation error]
24
+ F -->|Yes| H[Update draft receipt]
25
+ H --> I[Return updated receipt]
26
+ ```
27
+
28
+ ## External Dependencies
29
+
30
+ - None
31
+
32
+ ## Error Scenarios
33
+
34
+ - **GOODS_RECEIPT_NOT_FOUND**: Target goods receipt does not exist
35
+ - **GOODS_RECEIPT_NOT_DRAFT**: Goods receipt is not in `DRAFT` status
36
+ - **PURCHASE_ORDER_LINE_NOT_FOUND**: Referenced purchase-order line does not exist
37
+ - **NO_OPEN_RECEIPT_QUANTITY**: Purchase-order line has no remaining open quantity to receive
38
+ - **INVALID_RECEIVED_QUANTITY**: Received quantity is zero or negative
39
+
40
+ ## Test Cases
41
+
42
+ - updates quantities on a draft goods receipt
43
+ - updates receipt date on a draft goods receipt
44
+ - returns error when goods receipt does not exist
45
+ - returns error when goods receipt is not draft
46
+ - returns error when updated line data is invalid
47
+ - returns error when an updated receipt quantity is not positive
48
+ - returns error when an updated receipt line has no open quantity remaining
@@ -0,0 +1,51 @@
1
+ # UpdatePurchaseBill
2
+
3
+ ## Overview
4
+
5
+ UpdatePurchaseBill revises draft supplier bill content before procurement matching is finalized.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase bill must exist
10
+ - Only bills in `DRAFT` status can be updated
11
+ - Updated invoice number must still be unique within supplier and company
12
+ - Updated lines must satisfy the same validation rules as create
13
+ - Once a bill has been matched, blocked, or cancelled, its comparison evidence is immutable
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive update request] --> B{Purchase bill exists?}
20
+ B -->|No| C[Return PURCHASE_BILL_NOT_FOUND]
21
+ B -->|Yes| D{Status is DRAFT?}
22
+ D -->|No| E[Return PURCHASE_BILL_NOT_DRAFT]
23
+ D -->|Yes| F{Invoice number unique and lines valid?}
24
+ F -->|No| G[Return validation error]
25
+ F -->|Yes| H[Update draft bill]
26
+ H --> I[Return updated bill]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - [business-partner::ListPartnerIdentificationsByPartner](../../../business-partner/docs/queries/ListPartnerIdentificationsByPartner.md) - Refresh supplier tax identification snapshot when draft bill data changes
32
+
33
+ ## Error Scenarios
34
+
35
+ - **PURCHASE_BILL_NOT_FOUND**: Target purchase bill does not exist
36
+ - **PURCHASE_BILL_NOT_DRAFT**: Purchase bill is not in `DRAFT` status
37
+ - **DUPLICATE_SUPPLIER_INVOICE_NUMBER**: Supplier invoice number already exists in the same company and supplier scope
38
+ - **PURCHASE_ORDER_LINE_NOT_FOUND**: Referenced purchase-order line does not exist
39
+ - **INVALID_BILLED_QUANTITY**: Billed quantity is zero or negative
40
+ - **PURCHASE_ORDER_CANCELLED**: Referenced purchase order is cancelled
41
+
42
+ ## Test Cases
43
+
44
+ - updates invoice metadata on a draft purchase bill
45
+ - updates bill lines on a draft purchase bill
46
+ - returns error when purchase bill does not exist
47
+ - returns error when purchase bill is not draft
48
+ - returns error when updated invoice number is duplicated
49
+ - returns error when updated line data is invalid
50
+ - returns error when updated billed quantity is zero or negative
51
+ - returns error when updated bill references a cancelled purchase order
@@ -0,0 +1,59 @@
1
+ # UpdatePurchaseOrder
2
+
3
+ ## Overview
4
+
5
+ UpdatePurchaseOrder revises mutable commercial data on a draft purchase order, including lines, supplier-facing price overrides, payment term selection, and receiving context.
6
+
7
+ ## Business Rules
8
+
9
+ - Target purchase order must exist
10
+ - Only orders in `DRAFT` status can be updated
11
+ - Updated lines must satisfy the same validation rules as create
12
+ - Draft buyers may override a defaulted supplier price while retaining the matched-rule reference for audit
13
+ - Updating a purchase order never changes already ordered, received, or billed documents
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive update request] --> B{Purchase order exists?}
20
+ B -->|No| C[Return PURCHASE_ORDER_NOT_FOUND]
21
+ B -->|Yes| D{Status is DRAFT?}
22
+ D -->|No| E[Return PURCHASE_ORDER_NOT_DRAFT]
23
+ D -->|Yes| F{Updated lines and references valid?}
24
+ F -->|No| G[Return validation error]
25
+ F -->|Yes| H[Update draft order and lines]
26
+ H --> I[Return updated order]
27
+ ```
28
+
29
+ ## External Dependencies
30
+
31
+ - [business-partner::GetPartner](../../../business-partner/docs/queries/GetPartner.md) - Re-validate supplier identity and role when supplier-facing data changes
32
+ - [item-management::GetItem](../../../item-management/docs/queries/GetItem.md) - Re-validate item references on changed lines
33
+ - [organization::GetSite](../../../organization/docs/queries/GetSite.md) - Re-validate receiving site references
34
+
35
+ ## Error Scenarios
36
+
37
+ - **PURCHASE_ORDER_NOT_FOUND**: Target purchase order does not exist
38
+ - **PURCHASE_ORDER_NOT_DRAFT**: Purchase order is not in `DRAFT` status
39
+ - **ITEM_NOT_FOUND**: Referenced item does not exist
40
+ - **ITEM_NOT_ACTIVE**: Referenced item is inactive
41
+ - **INVALID_QUANTITY**: Ordered quantity is zero or negative
42
+ - **INVALID_UNIT_PRICE**: Unit price is negative
43
+ - **RECEIVING_SITE_NOT_FOUND**: Referenced receiving site does not exist
44
+ - **RECEIVING_SITE_REQUIRED**: A physical-receipt line has no receiving site
45
+ - **PAYMENT_TERM_INACTIVE**: Selected payment term is inactive for new draft use
46
+
47
+ ## Test Cases
48
+
49
+ - updates supplier-facing data on a draft purchase order
50
+ - updates line pricing while preserving matched price-rule reference
51
+ - returns error when purchase order does not exist
52
+ - returns error when purchase order is not in draft
53
+ - returns error when updated line data is invalid
54
+ - returns error when an updated line item is inactive
55
+ - returns error when an updated line quantity is not positive
56
+ - returns error when an updated line unit price is negative
57
+ - returns error when an updated receiving site does not exist
58
+ - returns error when a physical-receipt line has no receiving site
59
+ - returns error when selected payment term is inactive
@@ -0,0 +1,51 @@
1
+ # UpdatePurchasePaymentTerm
2
+
3
+ ## Overview
4
+
5
+ UpdatePurchasePaymentTerm changes the live definition of a purchase payment term without rewriting any historical snapshots already copied onto purchase orders or purchase bills.
6
+
7
+ ## Business Rules
8
+
9
+ - Target payment term must exist
10
+ - Updated schedule lines must continue to satisfy all create-time validation rules
11
+ - Existing purchase orders and purchase bills keep their original snapshots after the term is updated
12
+ - Updating an inactive term is allowed so it can be corrected before future reactivation
13
+ - Company ownership of the term cannot be changed
14
+
15
+ ## Process Flow
16
+
17
+ ```mermaid
18
+ flowchart TD
19
+ A[Receive update request] --> B{Payment term exists?}
20
+ B -->|No| C[Return PAYMENT_TERM_NOT_FOUND]
21
+ B -->|Yes| D{Schedule and discount data valid?}
22
+ D -->|No| E[Return validation error]
23
+ D -->|Yes| F[Update payment term and schedule lines]
24
+ F --> G[Return updated term]
25
+ ```
26
+
27
+ ## External Dependencies
28
+
29
+ - [organization::GetCompany](../../../organization/docs/queries/GetCompany.md) - Preserve and validate existing company scope
30
+
31
+ ## Error Scenarios
32
+
33
+ - **PAYMENT_TERM_NOT_FOUND**: Target payment term does not exist
34
+ - **EMPTY_SCHEDULE**: No payment term schedule lines were provided
35
+ - **INVALID_INSTALLMENT_TOTAL**: Percentage-based installment lines do not total 100 percent
36
+ - **INVALID_SCHEDULE_LINE**: A schedule line contains a negative amount or percentage
37
+ - **INVALID_DISCOUNT_CONFIGURATION**: Discount metadata is incomplete or inconsistent with the final due date
38
+ - **IMMUTABLE_COMPANY_SCOPE**: Update attempted to move the term into another company
39
+
40
+ ## Test Cases
41
+
42
+ - updates name and schedule lines on an active payment term
43
+ - updates an inactive payment term without reactivating it
44
+ - preserves historical purchase-order snapshots after update
45
+ - preserves historical purchase-bill snapshots after update
46
+ - returns error when payment term does not exist
47
+ - returns error when the updated schedule is empty
48
+ - returns error when updated schedule is invalid
49
+ - returns error when an updated schedule line is invalid
50
+ - returns error when an updated discount configuration is invalid
51
+ - returns error when company scope is changed
@@ -0,0 +1,43 @@
1
+ # UpdatePurchasePriceList
2
+
3
+ ## Overview
4
+
5
+ UpdatePurchasePriceList updates descriptive metadata, validity notes, or deterministic priority on an existing supplier price list without changing historical order snapshots.
6
+
7
+ ## Business Rules
8
+
9
+ - Target price list must exist
10
+ - Company and supplier ownership are immutable
11
+ - Updating a price list never rewrites purchase orders that already snapshotted one of its rules
12
+ - Priority changes must preserve deterministic ordering for rule selection
13
+
14
+ ## Process Flow
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ A[Receive update request] --> B{Price list exists?}
19
+ B -->|No| C[Return PRICE_LIST_NOT_FOUND]
20
+ B -->|Yes| D{Ownership unchanged and priority valid?}
21
+ D -->|No| E[Return validation error]
22
+ D -->|Yes| F[Update price list]
23
+ F --> G[Return updated list]
24
+ ```
25
+
26
+ ## External Dependencies
27
+
28
+ - None
29
+
30
+ ## Error Scenarios
31
+
32
+ - **PRICE_LIST_NOT_FOUND**: Target price list does not exist
33
+ - **IMMUTABLE_OWNER_CHANGE**: Update attempted to change the supplier or company owner
34
+ - **INVALID_LIST_PRIORITY**: Updated priority conflicts with deterministic rule ordering
35
+
36
+ ## Test Cases
37
+
38
+ - updates metadata on an active price list
39
+ - updates metadata on an inactive price list
40
+ - preserves historical purchase-order snapshots after update
41
+ - returns error when price list does not exist
42
+ - returns error when supplier or company ownership is changed
43
+ - returns error when updated priority is invalid