@open-mercato/core 0.10.1-develop.7709.1.046124599c → 0.10.1-develop.7714.1.9dbb8200d8

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 (276) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/asn/index.js +19 -0
  3. package/dist/generated/entities/asn/index.js.map +7 -0
  4. package/dist/generated/entities/putaway_task/index.js +25 -0
  5. package/dist/generated/entities/putaway_task/index.js.map +7 -0
  6. package/dist/generated/entities/receiving_line/index.js +21 -0
  7. package/dist/generated/entities/receiving_line/index.js.map +7 -0
  8. package/dist/generated/entities.ids.generated.js +4 -1
  9. package/dist/generated/entities.ids.generated.js.map +2 -2
  10. package/dist/generated/entity-fields-registry.js +34 -0
  11. package/dist/generated/entity-fields-registry.js.map +2 -2
  12. package/dist/modules/communication_channels/lib/sanitize-channel-html.js +22 -3
  13. package/dist/modules/communication_channels/lib/sanitize-channel-html.js.map +2 -2
  14. package/dist/modules/communication_channels/widgets/injection/channel-payload-renderer/widget.client.js +40 -11
  15. package/dist/modules/communication_channels/widgets/injection/channel-payload-renderer/widget.client.js.map +2 -2
  16. package/dist/modules/customers/components/calendar/CalendarEventEditor.js +13 -2
  17. package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +2 -2
  18. package/dist/modules/wms/acl.js +2 -0
  19. package/dist/modules/wms/acl.js.map +2 -2
  20. package/dist/modules/wms/api/asns/[id]/complete/route.js +61 -0
  21. package/dist/modules/wms/api/asns/[id]/complete/route.js.map +7 -0
  22. package/dist/modules/wms/api/asns/[id]/receive/route.js +68 -0
  23. package/dist/modules/wms/api/asns/[id]/receive/route.js.map +7 -0
  24. package/dist/modules/wms/api/asns/route.js +197 -0
  25. package/dist/modules/wms/api/asns/route.js.map +7 -0
  26. package/dist/modules/wms/api/inventory/helpers.js +42 -34
  27. package/dist/modules/wms/api/inventory/helpers.js.map +2 -2
  28. package/dist/modules/wms/api/inventory/receive/route.js +1 -1
  29. package/dist/modules/wms/api/inventory/receive/route.js.map +2 -2
  30. package/dist/modules/wms/api/listEnrichers.js +23 -0
  31. package/dist/modules/wms/api/listEnrichers.js.map +2 -2
  32. package/dist/modules/wms/api/putaway-tasks/[id]/assign/route.js +56 -0
  33. package/dist/modules/wms/api/putaway-tasks/[id]/assign/route.js.map +7 -0
  34. package/dist/modules/wms/api/putaway-tasks/[id]/cancel/route.js +56 -0
  35. package/dist/modules/wms/api/putaway-tasks/[id]/cancel/route.js.map +7 -0
  36. package/dist/modules/wms/api/putaway-tasks/[id]/complete/route.js +65 -0
  37. package/dist/modules/wms/api/putaway-tasks/[id]/complete/route.js.map +7 -0
  38. package/dist/modules/wms/api/putaway-tasks/[id]/start/route.js +56 -0
  39. package/dist/modules/wms/api/putaway-tasks/[id]/start/route.js.map +7 -0
  40. package/dist/modules/wms/api/putaway-tasks/create-from-balance/route.js +51 -0
  41. package/dist/modules/wms/api/putaway-tasks/create-from-balance/route.js.map +7 -0
  42. package/dist/modules/wms/api/putaway-tasks/route.js +192 -0
  43. package/dist/modules/wms/api/putaway-tasks/route.js.map +7 -0
  44. package/dist/modules/wms/api/receiving-lines/route.js +180 -0
  45. package/dist/modules/wms/api/receiving-lines/route.js.map +7 -0
  46. package/dist/modules/wms/api/scan/putaway/route.js +104 -0
  47. package/dist/modules/wms/api/scan/putaway/route.js.map +7 -0
  48. package/dist/modules/wms/api/scan/receive/route.js +109 -0
  49. package/dist/modules/wms/api/scan/receive/route.js.map +7 -0
  50. package/dist/modules/wms/api/scan/resolve-location/route.js +89 -0
  51. package/dist/modules/wms/api/scan/resolve-location/route.js.map +7 -0
  52. package/dist/modules/wms/api/scan/resolve-lot/route.js +89 -0
  53. package/dist/modules/wms/api/scan/resolve-lot/route.js.map +7 -0
  54. package/dist/modules/wms/backend/wms/asns/[id]/page.js +9 -0
  55. package/dist/modules/wms/backend/wms/asns/[id]/page.js.map +7 -0
  56. package/dist/modules/wms/backend/wms/asns/[id]/page.meta.js +18 -0
  57. package/dist/modules/wms/backend/wms/asns/[id]/page.meta.js.map +7 -0
  58. package/dist/modules/wms/backend/wms/asns/page.js +9 -0
  59. package/dist/modules/wms/backend/wms/asns/page.js.map +7 -0
  60. package/dist/modules/wms/backend/wms/asns/page.meta.js +18 -0
  61. package/dist/modules/wms/backend/wms/asns/page.meta.js.map +7 -0
  62. package/dist/modules/wms/backend/wms/putaway/page.js +9 -0
  63. package/dist/modules/wms/backend/wms/putaway/page.js.map +7 -0
  64. package/dist/modules/wms/backend/wms/putaway/page.meta.js +18 -0
  65. package/dist/modules/wms/backend/wms/putaway/page.meta.js.map +7 -0
  66. package/dist/modules/wms/backend/wms/receiving/page.js +8 -0
  67. package/dist/modules/wms/backend/wms/receiving/page.js.map +7 -0
  68. package/dist/modules/wms/backend/wms/receiving/page.meta.js +18 -0
  69. package/dist/modules/wms/backend/wms/receiving/page.meta.js.map +7 -0
  70. package/dist/modules/wms/ce.js +27 -0
  71. package/dist/modules/wms/ce.js.map +2 -2
  72. package/dist/modules/wms/commands/asn.js +1746 -0
  73. package/dist/modules/wms/commands/asn.js.map +7 -0
  74. package/dist/modules/wms/commands/index.js +2 -0
  75. package/dist/modules/wms/commands/index.js.map +2 -2
  76. package/dist/modules/wms/commands/inventory-actions.js +347 -243
  77. package/dist/modules/wms/commands/inventory-actions.js.map +2 -2
  78. package/dist/modules/wms/commands/putaway.js +945 -0
  79. package/dist/modules/wms/commands/putaway.js.map +7 -0
  80. package/dist/modules/wms/commands/shared.js +51 -0
  81. package/dist/modules/wms/commands/shared.js.map +2 -2
  82. package/dist/modules/wms/components/backend/AssignPutawayTaskDialog.js +278 -0
  83. package/dist/modules/wms/components/backend/AssignPutawayTaskDialog.js.map +7 -0
  84. package/dist/modules/wms/components/backend/CompletePutawayTaskDialog.js +327 -0
  85. package/dist/modules/wms/components/backend/CompletePutawayTaskDialog.js.map +7 -0
  86. package/dist/modules/wms/components/backend/CreateAsnDialog.js +404 -0
  87. package/dist/modules/wms/components/backend/CreateAsnDialog.js.map +7 -0
  88. package/dist/modules/wms/components/backend/InventoryOperationsSection.js +16 -3
  89. package/dist/modules/wms/components/backend/InventoryOperationsSection.js.map +2 -2
  90. package/dist/modules/wms/components/backend/ReceiveAsnLineDialog.js +476 -0
  91. package/dist/modules/wms/components/backend/ReceiveAsnLineDialog.js.map +7 -0
  92. package/dist/modules/wms/components/backend/ReceiveInventoryDialog.js +2 -2
  93. package/dist/modules/wms/components/backend/ReceiveInventoryDialog.js.map +2 -2
  94. package/dist/modules/wms/components/backend/WmsAsnDetailPage.js +524 -0
  95. package/dist/modules/wms/components/backend/WmsAsnDetailPage.js.map +7 -0
  96. package/dist/modules/wms/components/backend/WmsAsnsListPage.js +339 -0
  97. package/dist/modules/wms/components/backend/WmsAsnsListPage.js.map +7 -0
  98. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +5 -6
  99. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
  100. package/dist/modules/wms/components/backend/WmsLotDetailPage.js +5 -6
  101. package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
  102. package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js +14 -10
  103. package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js.map +2 -2
  104. package/dist/modules/wms/components/backend/WmsPutawayQueuePage.js +598 -0
  105. package/dist/modules/wms/components/backend/WmsPutawayQueuePage.js.map +7 -0
  106. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +5 -6
  107. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
  108. package/dist/modules/wms/components/backend/asnCompleteOptimisticLock.js +32 -0
  109. package/dist/modules/wms/components/backend/asnCompleteOptimisticLock.js.map +7 -0
  110. package/dist/modules/wms/components/backend/asnReceivingLinesLoader.js +36 -0
  111. package/dist/modules/wms/components/backend/asnReceivingLinesLoader.js.map +7 -0
  112. package/dist/modules/wms/components/backend/inboundStatusUi.js +106 -0
  113. package/dist/modules/wms/components/backend/inboundStatusUi.js.map +7 -0
  114. package/dist/modules/wms/components/backend/inventoryMutationLoaders.js +17 -0
  115. package/dist/modules/wms/components/backend/inventoryMutationLoaders.js.map +2 -2
  116. package/dist/modules/wms/components/backend/putawayQueueOptimisticLock.js +14 -0
  117. package/dist/modules/wms/components/backend/putawayQueueOptimisticLock.js.map +7 -0
  118. package/dist/modules/wms/components/backend/useWmsInventoryMutationAccess.js +4 -0
  119. package/dist/modules/wms/components/backend/useWmsInventoryMutationAccess.js.map +2 -2
  120. package/dist/modules/wms/data/enrichers.js +117 -12
  121. package/dist/modules/wms/data/enrichers.js.map +2 -2
  122. package/dist/modules/wms/data/entities.js +150 -1
  123. package/dist/modules/wms/data/entities.js.map +2 -2
  124. package/dist/modules/wms/data/validators.js +214 -0
  125. package/dist/modules/wms/data/validators.js.map +2 -2
  126. package/dist/modules/wms/events.js +12 -1
  127. package/dist/modules/wms/events.js.map +2 -2
  128. package/dist/modules/wms/extension-points.js +3 -1
  129. package/dist/modules/wms/extension-points.js.map +2 -2
  130. package/dist/modules/wms/lib/asnReceiving.js +124 -0
  131. package/dist/modules/wms/lib/asnReceiving.js.map +7 -0
  132. package/dist/modules/wms/lib/asnVendor.js +52 -0
  133. package/dist/modules/wms/lib/asnVendor.js.map +7 -0
  134. package/dist/modules/wms/lib/flashMutationError.js +4 -0
  135. package/dist/modules/wms/lib/flashMutationError.js.map +2 -2
  136. package/dist/modules/wms/lib/inventoryDisplayUi.js +24 -0
  137. package/dist/modules/wms/lib/inventoryDisplayUi.js.map +2 -2
  138. package/dist/modules/wms/lib/inventoryPolicy.js +17 -0
  139. package/dist/modules/wms/lib/inventoryPolicy.js.map +2 -2
  140. package/dist/modules/wms/lib/loadOperationalDashboard.js +67 -1
  141. package/dist/modules/wms/lib/loadOperationalDashboard.js.map +2 -2
  142. package/dist/modules/wms/lib/putaway.js +141 -0
  143. package/dist/modules/wms/lib/putaway.js.map +7 -0
  144. package/dist/modules/wms/lib/roleFeatures.js +3 -1
  145. package/dist/modules/wms/lib/roleFeatures.js.map +2 -2
  146. package/dist/modules/wms/lib/salesOrderInventoryAutomation.js +99 -1
  147. package/dist/modules/wms/lib/salesOrderInventoryAutomation.js.map +2 -2
  148. package/dist/modules/wms/lib/scanResolve.js +147 -0
  149. package/dist/modules/wms/lib/scanResolve.js.map +7 -0
  150. package/dist/modules/wms/lib/wmsIntegrationToggles.js +1 -1
  151. package/dist/modules/wms/lib/wmsIntegrationToggles.js.map +2 -2
  152. package/dist/modules/wms/migrations/Migration20260812120000.js +43 -0
  153. package/dist/modules/wms/migrations/Migration20260812120000.js.map +7 -0
  154. package/dist/modules/wms/migrations/Migration20260812130000.js +30 -0
  155. package/dist/modules/wms/migrations/Migration20260812130000.js.map +7 -0
  156. package/dist/modules/wms/migrations/Migration20260822120000.js +17 -0
  157. package/dist/modules/wms/migrations/Migration20260822120000.js.map +7 -0
  158. package/dist/modules/wms/migrations/Migration20260822130000.js +17 -0
  159. package/dist/modules/wms/migrations/Migration20260822130000.js.map +7 -0
  160. package/dist/modules/wms/migrations/Migration20261029120000.js +13 -0
  161. package/dist/modules/wms/migrations/Migration20261029120000.js.map +7 -0
  162. package/dist/modules/wms/search.js +85 -0
  163. package/dist/modules/wms/search.js.map +2 -2
  164. package/dist/modules/wms/subscribers/asn-line-received-reevaluate-reservations.js +14 -0
  165. package/dist/modules/wms/subscribers/asn-line-received-reevaluate-reservations.js.map +7 -0
  166. package/dist/modules/wms/subscribers/invalidate-enricher-cache-asn.js +12 -0
  167. package/dist/modules/wms/subscribers/invalidate-enricher-cache-asn.js.map +7 -0
  168. package/dist/modules/wms/subscribers/procurement-goods-receipt-created.js +163 -0
  169. package/dist/modules/wms/subscribers/procurement-goods-receipt-created.js.map +7 -0
  170. package/dist/modules/wms/subscribers/putaway-completed-reevaluate-reservations.js +14 -0
  171. package/dist/modules/wms/subscribers/putaway-completed-reevaluate-reservations.js.map +7 -0
  172. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.client.js +37 -8
  173. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.client.js.map +2 -2
  174. package/generated/entities/asn/index.ts +8 -0
  175. package/generated/entities/putaway_task/index.ts +11 -0
  176. package/generated/entities/receiving_line/index.ts +9 -0
  177. package/generated/entities.ids.generated.ts +4 -1
  178. package/generated/entity-fields-registry.ts +34 -0
  179. package/package.json +7 -7
  180. package/src/modules/auth/i18n/de.json +2 -0
  181. package/src/modules/auth/i18n/en.json +2 -0
  182. package/src/modules/auth/i18n/es.json +2 -0
  183. package/src/modules/auth/i18n/ko.json +2 -0
  184. package/src/modules/auth/i18n/pl.json +2 -0
  185. package/src/modules/communication_channels/i18n/de.json +2 -0
  186. package/src/modules/communication_channels/i18n/en.json +2 -0
  187. package/src/modules/communication_channels/i18n/es.json +2 -0
  188. package/src/modules/communication_channels/i18n/ko.json +2 -0
  189. package/src/modules/communication_channels/i18n/pl.json +2 -0
  190. package/src/modules/communication_channels/lib/sanitize-channel-html.ts +23 -3
  191. package/src/modules/communication_channels/widgets/injection/channel-payload-renderer/widget.client.tsx +44 -12
  192. package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +16 -2
  193. package/src/modules/wms/acl.ts +2 -0
  194. package/src/modules/wms/api/asns/[id]/complete/route.ts +62 -0
  195. package/src/modules/wms/api/asns/[id]/receive/route.ts +74 -0
  196. package/src/modules/wms/api/asns/route.ts +200 -0
  197. package/src/modules/wms/api/inventory/helpers.ts +57 -34
  198. package/src/modules/wms/api/inventory/receive/route.ts +2 -1
  199. package/src/modules/wms/api/listEnrichers.ts +38 -0
  200. package/src/modules/wms/api/putaway-tasks/[id]/assign/route.ts +56 -0
  201. package/src/modules/wms/api/putaway-tasks/[id]/cancel/route.ts +56 -0
  202. package/src/modules/wms/api/putaway-tasks/[id]/complete/route.ts +66 -0
  203. package/src/modules/wms/api/putaway-tasks/[id]/start/route.ts +56 -0
  204. package/src/modules/wms/api/putaway-tasks/create-from-balance/route.ts +50 -0
  205. package/src/modules/wms/api/putaway-tasks/route.ts +199 -0
  206. package/src/modules/wms/api/receiving-lines/route.ts +180 -0
  207. package/src/modules/wms/api/scan/putaway/route.ts +108 -0
  208. package/src/modules/wms/api/scan/receive/route.ts +118 -0
  209. package/src/modules/wms/api/scan/resolve-location/route.ts +92 -0
  210. package/src/modules/wms/api/scan/resolve-lot/route.ts +92 -0
  211. package/src/modules/wms/backend/wms/asns/[id]/page.meta.ts +14 -0
  212. package/src/modules/wms/backend/wms/asns/[id]/page.tsx +5 -0
  213. package/src/modules/wms/backend/wms/asns/page.meta.ts +14 -0
  214. package/src/modules/wms/backend/wms/asns/page.tsx +5 -0
  215. package/src/modules/wms/backend/wms/putaway/page.meta.ts +14 -0
  216. package/src/modules/wms/backend/wms/putaway/page.tsx +5 -0
  217. package/src/modules/wms/backend/wms/receiving/page.meta.ts +14 -0
  218. package/src/modules/wms/backend/wms/receiving/page.tsx +5 -0
  219. package/src/modules/wms/ce.ts +27 -0
  220. package/src/modules/wms/commands/asn.ts +2122 -0
  221. package/src/modules/wms/commands/index.ts +2 -0
  222. package/src/modules/wms/commands/inventory-actions.ts +413 -243
  223. package/src/modules/wms/commands/putaway.ts +1169 -0
  224. package/src/modules/wms/commands/shared.ts +51 -0
  225. package/src/modules/wms/components/backend/AssignPutawayTaskDialog.tsx +328 -0
  226. package/src/modules/wms/components/backend/CompletePutawayTaskDialog.tsx +366 -0
  227. package/src/modules/wms/components/backend/CreateAsnDialog.tsx +427 -0
  228. package/src/modules/wms/components/backend/InventoryOperationsSection.tsx +20 -2
  229. package/src/modules/wms/components/backend/ReceiveAsnLineDialog.tsx +535 -0
  230. package/src/modules/wms/components/backend/ReceiveInventoryDialog.tsx +2 -2
  231. package/src/modules/wms/components/backend/WmsAsnDetailPage.tsx +647 -0
  232. package/src/modules/wms/components/backend/WmsAsnsListPage.tsx +407 -0
  233. package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +4 -5
  234. package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +4 -5
  235. package/src/modules/wms/components/backend/WmsOperationalDashboardPage.tsx +12 -8
  236. package/src/modules/wms/components/backend/WmsPutawayQueuePage.tsx +677 -0
  237. package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +4 -5
  238. package/src/modules/wms/components/backend/asnCompleteOptimisticLock.ts +52 -0
  239. package/src/modules/wms/components/backend/asnReceivingLinesLoader.ts +83 -0
  240. package/src/modules/wms/components/backend/inboundStatusUi.ts +154 -0
  241. package/src/modules/wms/components/backend/inventoryMutationLoaders.ts +20 -0
  242. package/src/modules/wms/components/backend/putawayQueueOptimisticLock.ts +20 -0
  243. package/src/modules/wms/components/backend/useWmsInventoryMutationAccess.ts +4 -0
  244. package/src/modules/wms/data/enrichers.ts +175 -13
  245. package/src/modules/wms/data/entities.ts +155 -0
  246. package/src/modules/wms/data/validators.ts +256 -0
  247. package/src/modules/wms/events.ts +11 -0
  248. package/src/modules/wms/extension-points.ts +2 -0
  249. package/src/modules/wms/i18n/de.json +205 -3
  250. package/src/modules/wms/i18n/en.json +205 -3
  251. package/src/modules/wms/i18n/es.json +205 -3
  252. package/src/modules/wms/i18n/ko.json +205 -3
  253. package/src/modules/wms/i18n/pl.json +205 -3
  254. package/src/modules/wms/lib/asnReceiving.ts +226 -0
  255. package/src/modules/wms/lib/asnVendor.ts +80 -0
  256. package/src/modules/wms/lib/flashMutationError.ts +4 -0
  257. package/src/modules/wms/lib/inventoryDisplayUi.ts +46 -0
  258. package/src/modules/wms/lib/inventoryPolicy.ts +31 -1
  259. package/src/modules/wms/lib/loadOperationalDashboard.ts +89 -1
  260. package/src/modules/wms/lib/putaway.ts +210 -0
  261. package/src/modules/wms/lib/roleFeatures.ts +2 -0
  262. package/src/modules/wms/lib/salesOrderInventoryAutomation.ts +150 -1
  263. package/src/modules/wms/lib/scanResolve.ts +185 -0
  264. package/src/modules/wms/lib/wmsIntegrationToggles.ts +2 -1
  265. package/src/modules/wms/migrations/.snapshot-open-mercato.json +1000 -0
  266. package/src/modules/wms/migrations/Migration20260812120000.ts +43 -0
  267. package/src/modules/wms/migrations/Migration20260812130000.ts +28 -0
  268. package/src/modules/wms/migrations/Migration20260822120000.ts +17 -0
  269. package/src/modules/wms/migrations/Migration20260822130000.ts +15 -0
  270. package/src/modules/wms/migrations/Migration20261029120000.ts +11 -0
  271. package/src/modules/wms/search.ts +95 -0
  272. package/src/modules/wms/subscribers/asn-line-received-reevaluate-reservations.ts +21 -0
  273. package/src/modules/wms/subscribers/invalidate-enricher-cache-asn.ts +12 -0
  274. package/src/modules/wms/subscribers/procurement-goods-receipt-created.ts +238 -0
  275. package/src/modules/wms/subscribers/putaway-completed-reevaluate-reservations.ts +21 -0
  276. package/src/modules/wms/widgets/injection/sales-order-stock-context/widget.client.tsx +63 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/wms/data/entities.ts"],
4
- "sourcesContent": ["import { Collection, OptionalProps } from '@mikro-orm/core'\nimport {\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n PrimaryKey,\n Property,\n} from '@mikro-orm/decorators/legacy'\nimport type { JsonValue } from '@open-mercato/shared/lib/json'\n\nexport type WarehouseLocationType = 'zone' | 'aisle' | 'rack' | 'bin' | 'slot' | 'dock' | 'staging'\nexport type InventoryStrategy = 'fifo' | 'lifo' | 'fefo'\nexport type InventoryLotStatus = 'available' | 'hold' | 'quarantine' | 'expired'\nexport type InventoryReservationSourceType = 'order' | 'transfer' | 'manual'\nexport type InventoryReservationStatus = 'active' | 'released' | 'fulfilled'\nexport type InventoryMovementType =\n | 'receipt'\n | 'putaway'\n | 'pick'\n | 'pack'\n | 'ship'\n | 'adjust'\n | 'transfer'\n | 'cycle_count'\n | 'return_receive'\nexport type InventoryMovementReferenceType = 'po' | 'so' | 'transfer' | 'manual' | 'qc' | 'rma'\ntype WmsOptionalProps = 'createdAt' | 'updatedAt' | 'deletedAt' | 'metadata'\n\nabstract class WmsScopedEntity {\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: JsonValue | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n@Entity({ tableName: 'wms_warehouses' })\n@Index({ name: 'wms_warehouses_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_warehouses_org_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouses_org_code_unique_idx\" on \"wms_warehouses\" (\"organization_id\", \"code\") where deleted_at is null',\n})\n@Index({\n name: 'wms_warehouses_org_primary_unique_idx',\n expression:\n 'create unique index \"wms_warehouses_org_primary_unique_idx\" on \"wms_warehouses\" (\"organization_id\") where deleted_at is null and is_primary = true',\n})\nexport class Warehouse extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'isActive' | 'isPrimary' | 'addressLine1' | 'city' | 'postalCode' | 'country' | 'timezone'\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'is_primary', type: 'boolean', default: false })\n isPrimary: boolean = false\n\n @Property({ name: 'address_line1', type: 'text', nullable: true })\n addressLine1?: string | null\n\n @Property({ type: 'text', nullable: true })\n city?: string | null\n\n @Property({ name: 'postal_code', type: 'text', nullable: true })\n postalCode?: string | null\n\n @Property({ type: 'text', nullable: true })\n country?: string | null\n\n @Property({ type: 'text', nullable: true })\n timezone?: string | null\n\n @OneToMany(() => WarehouseZone, (zone) => zone.warehouse)\n zones = new Collection<WarehouseZone>(this)\n\n @OneToMany(() => WarehouseLocation, (location) => location.warehouse)\n locations = new Collection<WarehouseLocation>(this)\n}\n\n@Entity({ tableName: 'wms_warehouse_zones' })\n@Index({ name: 'wms_warehouse_zones_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_warehouse_zones_warehouse_idx', properties: ['warehouse'] })\n@Index({\n name: 'wms_warehouse_zones_warehouse_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouse_zones_warehouse_code_unique_idx\" on \"wms_warehouse_zones\" (\"warehouse_id\", \"code\") where deleted_at is null',\n})\nexport class WarehouseZone extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'priority'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'integer', default: 0 })\n priority: number = 0\n}\n\n@Entity({ tableName: 'wms_warehouse_locations' })\n@Index({ name: 'wms_warehouse_locations_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_warehouse_locations_warehouse_idx', properties: ['warehouse'] })\n@Index({ name: 'wms_warehouse_locations_parent_idx', properties: ['parent'] })\n@Index({\n name: 'wms_warehouse_locations_warehouse_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouse_locations_warehouse_code_unique_idx\" on \"wms_warehouse_locations\" (\"warehouse_id\", \"code\") where deleted_at is null',\n})\nexport class WarehouseLocation extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'parent' | 'isActive' | 'capacityUnits' | 'capacityWeight' | 'constraints'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n type!: WarehouseLocationType\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'parent_id', nullable: true })\n parent?: WarehouseLocation | null\n\n @OneToMany(() => WarehouseLocation, (location) => location.parent)\n children = new Collection<WarehouseLocation>(this)\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'capacity_units', type: 'numeric', precision: 16, scale: 4, nullable: true })\n capacityUnits?: string | null\n\n @Property({ name: 'capacity_weight', type: 'numeric', precision: 16, scale: 4, nullable: true })\n capacityWeight?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n constraints?: JsonValue | null\n}\n\n@Entity({ tableName: 'wms_product_inventory_profiles' })\n@Index({ name: 'wms_inventory_profiles_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_inventory_profiles_variant_unique_idx',\n expression:\n 'create unique index \"wms_inventory_profiles_variant_unique_idx\" on \"wms_product_inventory_profiles\" (\"organization_id\", \"catalog_variant_id\") where deleted_at is null and catalog_variant_id is not null',\n})\n@Index({\n name: 'wms_inventory_profiles_product_unique_idx',\n expression:\n 'create unique index \"wms_inventory_profiles_product_unique_idx\" on \"wms_product_inventory_profiles\" (\"organization_id\", \"catalog_product_id\") where deleted_at is null and catalog_variant_id is null',\n})\nexport class ProductInventoryProfile extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'catalogVariantId' | 'trackLot' | 'trackSerial' | 'trackExpiration' | 'reorderPoint' | 'safetyStock'\n\n @Property({ name: 'catalog_product_id', type: 'uuid' })\n catalogProductId!: string\n\n @Property({ name: 'catalog_variant_id', type: 'uuid', nullable: true })\n catalogVariantId?: string | null\n\n @Property({ name: 'default_uom', type: 'text' })\n defaultUom!: string\n\n @Property({ name: 'track_lot', type: 'boolean', default: false })\n trackLot: boolean = false\n\n @Property({ name: 'track_serial', type: 'boolean', default: false })\n trackSerial: boolean = false\n\n @Property({ name: 'track_expiration', type: 'boolean', default: false })\n trackExpiration: boolean = false\n\n @Property({ name: 'default_strategy', type: 'text' })\n defaultStrategy!: InventoryStrategy\n\n @Property({ name: 'reorder_point', type: 'numeric', precision: 16, scale: 4, default: '0' })\n reorderPoint: string = '0'\n\n @Property({ name: 'safety_stock', type: 'numeric', precision: 16, scale: 4, default: '0' })\n safetyStock: string = '0'\n}\n\n@Entity({ tableName: 'wms_inventory_lots' })\n@Index({ name: 'wms_inventory_lots_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_lots_variant_idx', properties: ['catalogVariantId'] })\n@Index({\n name: 'wms_inventory_lots_variant_lot_unique_idx',\n expression:\n 'create unique index \"wms_inventory_lots_variant_lot_unique_idx\" on \"wms_inventory_lots\" (\"organization_id\", \"catalog_variant_id\", \"lot_number\") where deleted_at is null',\n})\nexport class InventoryLot extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'batchNumber' | 'manufacturedAt' | 'bestBeforeAt' | 'expiresAt'\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @Property({ type: 'text' })\n sku!: string\n\n @Property({ name: 'lot_number', type: 'text' })\n lotNumber!: string\n\n @Property({ name: 'batch_number', type: 'text', nullable: true })\n batchNumber?: string | null\n\n @Property({ name: 'manufactured_at', type: Date, nullable: true })\n manufacturedAt?: Date | null\n\n @Property({ name: 'best_before_at', type: Date, nullable: true })\n bestBeforeAt?: Date | null\n\n @Property({ name: 'expires_at', type: Date, nullable: true })\n expiresAt?: Date | null\n\n @Property({ type: 'text', default: 'available' })\n status: InventoryLotStatus = 'available'\n}\n\n@Entity({ tableName: 'wms_inventory_balances' })\n@Index({ name: 'wms_inventory_balances_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_balances_org_warehouse_variant_idx', properties: ['organizationId', 'warehouse', 'catalogVariantId'] })\n@Index({ name: 'wms_inventory_balances_org_location_variant_idx', properties: ['organizationId', 'location', 'catalogVariantId'] })\n@Index({\n name: 'wms_inventory_balances_org_lot_idx',\n expression:\n 'create index \"wms_inventory_balances_org_lot_idx\" on \"wms_inventory_balances\" (\"organization_id\", \"lot_id\") where lot_id is not null and deleted_at is null',\n})\n@Index({\n name: 'wms_inventory_balances_serial_unique_idx',\n expression:\n 'create unique index \"wms_inventory_balances_serial_unique_idx\" on \"wms_inventory_balances\" (\"organization_id\", \"warehouse_id\", \"location_id\", \"catalog_variant_id\", \"serial_number\") where serial_number is not null and deleted_at is null',\n})\nexport class InventoryBalance extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'lot' | 'serialNumber' | 'quantityAvailable'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_id' })\n location!: WarehouseLocation\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ name: 'quantity_on_hand', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityOnHand: string = '0'\n\n @Property({ name: 'quantity_reserved', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityReserved: string = '0'\n\n @Property({ name: 'quantity_allocated', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityAllocated: string = '0'\n\n @Property({\n name: 'quantity_available',\n type: 'numeric',\n precision: 16,\n scale: 4,\n generated: (cols) => `(${cols.quantityOnHand} - ${cols.quantityReserved} - ${cols.quantityAllocated}) stored`,\n hidden: true,\n })\n quantityAvailable!: string\n}\n\n@Entity({ tableName: 'wms_inventory_reservations' })\n@Index({ name: 'wms_inventory_reservations_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_reservations_source_idx', properties: ['organizationId', 'sourceType', 'sourceId'] })\n@Index({ name: 'wms_inventory_reservations_status_idx', properties: ['organizationId', 'warehouse', 'catalogVariantId', 'status'] })\n@Index({\n name: 'wms_inventory_reservations_idempotency_unique_idx',\n expression:\n 'create unique index \"wms_inventory_reservations_idempotency_unique_idx\" on \"wms_inventory_reservations\" (\"organization_id\", \"idempotency_key\") where idempotency_key is not null and deleted_at is null and status = \\'active\\'',\n})\nexport class InventoryReservation extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'lot' | 'serialNumber' | 'expiresAt' | 'idempotencyKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ type: 'numeric', precision: 16, scale: 4 })\n quantity!: string\n\n @Property({ name: 'source_type', type: 'text' })\n sourceType!: InventoryReservationSourceType\n\n @Property({ name: 'source_id', type: 'uuid' })\n sourceId!: string\n\n @Property({ name: 'expires_at', type: Date, nullable: true })\n expiresAt?: Date | null\n\n @Property({ type: 'text', default: 'active' })\n status: InventoryReservationStatus = 'active'\n\n @Property({ name: 'idempotency_key', type: 'text', nullable: true })\n idempotencyKey?: string | null\n}\n\n@Entity({ tableName: 'wms_sales_order_warehouse_assignments' })\n@Index({ name: 'wms_sowa_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_sowa_warehouse_idx',\n expression:\n 'create index \"wms_sowa_warehouse_idx\" on \"wms_sales_order_warehouse_assignments\" (\"warehouse_id\")',\n})\n@Index({\n name: 'wms_sowa_org_order_unique_idx',\n expression:\n 'create unique index \"wms_sowa_org_order_unique_idx\" on \"wms_sales_order_warehouse_assignments\" (\"organization_id\", \"sales_order_id\") where deleted_at is null',\n})\nexport class SalesOrderWarehouseAssignment extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'assignedBy' | 'notes'\n\n @Property({ name: 'sales_order_id', type: 'uuid' })\n salesOrderId!: string\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'assigned_by', type: 'uuid', nullable: true })\n assignedBy?: string | null\n\n @Property({ type: 'text', nullable: true })\n notes?: string | null\n}\n\n@Entity({ tableName: 'wms_inventory_movements' })\n@Index({ name: 'wms_inventory_movements_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_inventory_movements_variant_received_at_idx',\n expression:\n 'create index \"wms_inventory_movements_variant_received_at_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"catalog_variant_id\", \"received_at\" desc) where deleted_at is null',\n})\n@Index({ name: 'wms_inventory_movements_reference_idx', properties: ['organizationId', 'referenceType', 'referenceId'] })\n@Index({\n name: 'wms_inventory_movements_warehouse_performed_at_idx',\n expression:\n 'create index \"wms_inventory_movements_warehouse_performed_at_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"warehouse_id\", \"performed_at\" desc) where deleted_at is null',\n})\n@Index({\n name: 'wms_inventory_movements_idempotency_unique_idx',\n expression:\n 'create unique index \"wms_inventory_movements_idempotency_unique_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"idempotency_key\") where idempotency_key is not null and deleted_at is null',\n})\nexport class InventoryMovement extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'locationFrom' | 'locationTo' | 'lot' | 'serialNumber' | 'reason' | 'reasonCode' | 'idempotencyKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_from_id', nullable: true })\n locationFrom?: WarehouseLocation | null\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_to_id', nullable: true })\n locationTo?: WarehouseLocation | null\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ type: 'numeric', precision: 16, scale: 4 })\n quantity!: string\n\n @Property({ type: 'text' })\n type!: InventoryMovementType\n\n @Property({ name: 'reference_type', type: 'text' })\n referenceType!: InventoryMovementReferenceType\n\n @Property({ name: 'reference_id', type: 'uuid' })\n referenceId!: string\n\n @Property({ name: 'performed_by', type: 'uuid' })\n performedBy!: string\n\n @Property({ name: 'performed_at', type: Date })\n performedAt!: Date\n\n @Property({ name: 'received_at', type: Date })\n receivedAt!: Date\n\n @Property({ type: 'text', nullable: true })\n reason?: string | null\n\n @Property({ name: 'reason_code', type: 'text', nullable: true })\n reasonCode?: string | null\n\n @Property({ name: 'idempotency_key', type: 'text', nullable: true })\n idempotencyKey?: string | null\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Collection, OptionalProps } from '@mikro-orm/core'\nimport {\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n PrimaryKey,\n Property,\n} from '@mikro-orm/decorators/legacy'\nimport type { JsonValue } from '@open-mercato/shared/lib/json'\n\nexport type WarehouseLocationType = 'zone' | 'aisle' | 'rack' | 'bin' | 'slot' | 'dock' | 'staging'\nexport type InventoryStrategy = 'fifo' | 'lifo' | 'fefo'\nexport type InventoryLotStatus = 'available' | 'hold' | 'quarantine' | 'expired'\nexport type InventoryReservationSourceType = 'order' | 'transfer' | 'manual'\nexport type InventoryReservationStatus = 'active' | 'released' | 'fulfilled'\nexport type InventoryMovementType =\n | 'receipt'\n | 'putaway'\n | 'pick'\n | 'pack'\n | 'ship'\n | 'adjust'\n | 'transfer'\n | 'cycle_count'\n | 'return_receive'\nexport type InventoryMovementReferenceType = 'po' | 'so' | 'transfer' | 'manual' | 'qc' | 'rma'\nexport type AsnStatus = 'draft' | 'in_transit' | 'received' | 'closed'\nexport type ReceivingLineQcStatus = 'pending' | 'passed' | 'failed'\nexport type PutawayTaskStatus = 'open' | 'in_progress' | 'done' | 'cancelled'\ntype WmsOptionalProps = 'createdAt' | 'updatedAt' | 'deletedAt' | 'metadata'\n\nabstract class WmsScopedEntity {\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ type: 'jsonb', nullable: true })\n metadata?: JsonValue | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n@Entity({ tableName: 'wms_warehouses' })\n@Index({ name: 'wms_warehouses_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_warehouses_org_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouses_org_code_unique_idx\" on \"wms_warehouses\" (\"organization_id\", \"code\") where deleted_at is null',\n})\n@Index({\n name: 'wms_warehouses_org_primary_unique_idx',\n expression:\n 'create unique index \"wms_warehouses_org_primary_unique_idx\" on \"wms_warehouses\" (\"organization_id\") where deleted_at is null and is_primary = true',\n})\nexport class Warehouse extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'isActive' | 'isPrimary' | 'addressLine1' | 'city' | 'postalCode' | 'country' | 'timezone'\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'is_primary', type: 'boolean', default: false })\n isPrimary: boolean = false\n\n @Property({ name: 'address_line1', type: 'text', nullable: true })\n addressLine1?: string | null\n\n @Property({ type: 'text', nullable: true })\n city?: string | null\n\n @Property({ name: 'postal_code', type: 'text', nullable: true })\n postalCode?: string | null\n\n @Property({ type: 'text', nullable: true })\n country?: string | null\n\n @Property({ type: 'text', nullable: true })\n timezone?: string | null\n\n @OneToMany(() => WarehouseZone, (zone) => zone.warehouse)\n zones = new Collection<WarehouseZone>(this)\n\n @OneToMany(() => WarehouseLocation, (location) => location.warehouse)\n locations = new Collection<WarehouseLocation>(this)\n}\n\n@Entity({ tableName: 'wms_warehouse_zones' })\n@Index({ name: 'wms_warehouse_zones_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_warehouse_zones_warehouse_idx', properties: ['warehouse'] })\n@Index({\n name: 'wms_warehouse_zones_warehouse_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouse_zones_warehouse_code_unique_idx\" on \"wms_warehouse_zones\" (\"warehouse_id\", \"code\") where deleted_at is null',\n})\nexport class WarehouseZone extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'priority'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n name!: string\n\n @Property({ type: 'integer', default: 0 })\n priority: number = 0\n}\n\n@Entity({ tableName: 'wms_warehouse_locations' })\n@Index({ name: 'wms_warehouse_locations_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_warehouse_locations_warehouse_idx', properties: ['warehouse'] })\n@Index({ name: 'wms_warehouse_locations_parent_idx', properties: ['parent'] })\n@Index({\n name: 'wms_warehouse_locations_warehouse_code_unique_idx',\n expression:\n 'create unique index \"wms_warehouse_locations_warehouse_code_unique_idx\" on \"wms_warehouse_locations\" (\"warehouse_id\", \"code\") where deleted_at is null',\n})\nexport class WarehouseLocation extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'parent' | 'isActive' | 'capacityUnits' | 'capacityWeight' | 'constraints'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ type: 'text' })\n code!: string\n\n @Property({ type: 'text' })\n type!: WarehouseLocationType\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'parent_id', nullable: true })\n parent?: WarehouseLocation | null\n\n @OneToMany(() => WarehouseLocation, (location) => location.parent)\n children = new Collection<WarehouseLocation>(this)\n\n @Property({ name: 'is_active', type: 'boolean', default: true })\n isActive: boolean = true\n\n @Property({ name: 'capacity_units', type: 'numeric', precision: 16, scale: 4, nullable: true })\n capacityUnits?: string | null\n\n @Property({ name: 'capacity_weight', type: 'numeric', precision: 16, scale: 4, nullable: true })\n capacityWeight?: string | null\n\n @Property({ type: 'jsonb', nullable: true })\n constraints?: JsonValue | null\n}\n\n@Entity({ tableName: 'wms_product_inventory_profiles' })\n@Index({ name: 'wms_inventory_profiles_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_inventory_profiles_variant_unique_idx',\n expression:\n 'create unique index \"wms_inventory_profiles_variant_unique_idx\" on \"wms_product_inventory_profiles\" (\"organization_id\", \"catalog_variant_id\") where deleted_at is null and catalog_variant_id is not null',\n})\n@Index({\n name: 'wms_inventory_profiles_product_unique_idx',\n expression:\n 'create unique index \"wms_inventory_profiles_product_unique_idx\" on \"wms_product_inventory_profiles\" (\"organization_id\", \"catalog_product_id\") where deleted_at is null and catalog_variant_id is null',\n})\nexport class ProductInventoryProfile extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'catalogVariantId' | 'trackLot' | 'trackSerial' | 'trackExpiration' | 'reorderPoint' | 'safetyStock'\n\n @Property({ name: 'catalog_product_id', type: 'uuid' })\n catalogProductId!: string\n\n @Property({ name: 'catalog_variant_id', type: 'uuid', nullable: true })\n catalogVariantId?: string | null\n\n @Property({ name: 'default_uom', type: 'text' })\n defaultUom!: string\n\n @Property({ name: 'track_lot', type: 'boolean', default: false })\n trackLot: boolean = false\n\n @Property({ name: 'track_serial', type: 'boolean', default: false })\n trackSerial: boolean = false\n\n @Property({ name: 'track_expiration', type: 'boolean', default: false })\n trackExpiration: boolean = false\n\n @Property({ name: 'default_strategy', type: 'text' })\n defaultStrategy!: InventoryStrategy\n\n @Property({ name: 'reorder_point', type: 'numeric', precision: 16, scale: 4, default: '0' })\n reorderPoint: string = '0'\n\n @Property({ name: 'safety_stock', type: 'numeric', precision: 16, scale: 4, default: '0' })\n safetyStock: string = '0'\n}\n\n@Entity({ tableName: 'wms_inventory_lots' })\n@Index({ name: 'wms_inventory_lots_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_lots_variant_idx', properties: ['catalogVariantId'] })\n@Index({\n name: 'wms_inventory_lots_variant_lot_unique_idx',\n expression:\n 'create unique index \"wms_inventory_lots_variant_lot_unique_idx\" on \"wms_inventory_lots\" (\"organization_id\", \"catalog_variant_id\", \"lot_number\") where deleted_at is null',\n})\nexport class InventoryLot extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'batchNumber' | 'manufacturedAt' | 'bestBeforeAt' | 'expiresAt'\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @Property({ type: 'text' })\n sku!: string\n\n @Property({ name: 'lot_number', type: 'text' })\n lotNumber!: string\n\n @Property({ name: 'batch_number', type: 'text', nullable: true })\n batchNumber?: string | null\n\n @Property({ name: 'manufactured_at', type: Date, nullable: true })\n manufacturedAt?: Date | null\n\n @Property({ name: 'best_before_at', type: Date, nullable: true })\n bestBeforeAt?: Date | null\n\n @Property({ name: 'expires_at', type: Date, nullable: true })\n expiresAt?: Date | null\n\n @Property({ type: 'text', default: 'available' })\n status: InventoryLotStatus = 'available'\n}\n\n@Entity({ tableName: 'wms_inventory_balances' })\n@Index({ name: 'wms_inventory_balances_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_balances_org_warehouse_variant_idx', properties: ['organizationId', 'warehouse', 'catalogVariantId'] })\n@Index({ name: 'wms_inventory_balances_org_location_variant_idx', properties: ['organizationId', 'location', 'catalogVariantId'] })\n@Index({\n name: 'wms_inventory_balances_org_lot_idx',\n expression:\n 'create index \"wms_inventory_balances_org_lot_idx\" on \"wms_inventory_balances\" (\"organization_id\", \"lot_id\") where lot_id is not null and deleted_at is null',\n})\n@Index({\n name: 'wms_inventory_balances_serial_unique_idx',\n expression:\n 'create unique index \"wms_inventory_balances_serial_unique_idx\" on \"wms_inventory_balances\" (\"organization_id\", \"warehouse_id\", \"location_id\", \"catalog_variant_id\", \"serial_number\") where serial_number is not null and deleted_at is null',\n})\nexport class InventoryBalance extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'lot' | 'serialNumber' | 'quantityAvailable'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_id' })\n location!: WarehouseLocation\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ name: 'quantity_on_hand', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityOnHand: string = '0'\n\n @Property({ name: 'quantity_reserved', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityReserved: string = '0'\n\n @Property({ name: 'quantity_allocated', type: 'numeric', precision: 16, scale: 4, default: '0' })\n quantityAllocated: string = '0'\n\n @Property({\n name: 'quantity_available',\n type: 'numeric',\n precision: 16,\n scale: 4,\n generated: (cols) => `(${cols.quantityOnHand} - ${cols.quantityReserved} - ${cols.quantityAllocated}) stored`,\n hidden: true,\n })\n quantityAvailable!: string\n}\n\n@Entity({ tableName: 'wms_inventory_reservations' })\n@Index({ name: 'wms_inventory_reservations_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_inventory_reservations_source_idx', properties: ['organizationId', 'sourceType', 'sourceId'] })\n@Index({ name: 'wms_inventory_reservations_status_idx', properties: ['organizationId', 'warehouse', 'catalogVariantId', 'status'] })\n@Index({\n name: 'wms_inventory_reservations_idempotency_unique_idx',\n expression:\n 'create unique index \"wms_inventory_reservations_idempotency_unique_idx\" on \"wms_inventory_reservations\" (\"organization_id\", \"idempotency_key\") where idempotency_key is not null and deleted_at is null and status = \\'active\\'',\n})\nexport class InventoryReservation extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'lot' | 'serialNumber' | 'expiresAt' | 'idempotencyKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ type: 'numeric', precision: 16, scale: 4 })\n quantity!: string\n\n @Property({ name: 'source_type', type: 'text' })\n sourceType!: InventoryReservationSourceType\n\n @Property({ name: 'source_id', type: 'uuid' })\n sourceId!: string\n\n @Property({ name: 'expires_at', type: Date, nullable: true })\n expiresAt?: Date | null\n\n @Property({ type: 'text', default: 'active' })\n status: InventoryReservationStatus = 'active'\n\n @Property({ name: 'idempotency_key', type: 'text', nullable: true })\n idempotencyKey?: string | null\n}\n\n@Entity({ tableName: 'wms_sales_order_warehouse_assignments' })\n@Index({ name: 'wms_sowa_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_sowa_warehouse_idx',\n expression:\n 'create index \"wms_sowa_warehouse_idx\" on \"wms_sales_order_warehouse_assignments\" (\"warehouse_id\")',\n})\n@Index({\n name: 'wms_sowa_org_order_unique_idx',\n expression:\n 'create unique index \"wms_sowa_org_order_unique_idx\" on \"wms_sales_order_warehouse_assignments\" (\"organization_id\", \"sales_order_id\") where deleted_at is null',\n})\nexport class SalesOrderWarehouseAssignment extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'assignedBy' | 'notes'\n\n @Property({ name: 'sales_order_id', type: 'uuid' })\n salesOrderId!: string\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'assigned_by', type: 'uuid', nullable: true })\n assignedBy?: string | null\n\n @Property({ type: 'text', nullable: true })\n notes?: string | null\n}\n\n@Entity({ tableName: 'wms_inventory_movements' })\n@Index({ name: 'wms_inventory_movements_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_inventory_movements_variant_received_at_idx',\n expression:\n 'create index \"wms_inventory_movements_variant_received_at_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"catalog_variant_id\", \"received_at\" desc) where deleted_at is null',\n})\n@Index({ name: 'wms_inventory_movements_reference_idx', properties: ['organizationId', 'referenceType', 'referenceId'] })\n@Index({\n name: 'wms_inventory_movements_warehouse_performed_at_idx',\n expression:\n 'create index \"wms_inventory_movements_warehouse_performed_at_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"warehouse_id\", \"performed_at\" desc) where deleted_at is null',\n})\n@Index({\n name: 'wms_inventory_movements_idempotency_unique_idx',\n expression:\n 'create unique index \"wms_inventory_movements_idempotency_unique_idx\" on \"wms_inventory_movements\" (\"organization_id\", \"idempotency_key\") where idempotency_key is not null and deleted_at is null',\n})\nexport class InventoryMovement extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'locationFrom' | 'locationTo' | 'lot' | 'serialNumber' | 'reason' | 'reasonCode' | 'idempotencyKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_from_id', nullable: true })\n locationFrom?: WarehouseLocation | null\n\n @ManyToOne(() => WarehouseLocation, { fieldName: 'location_to_id', nullable: true })\n locationTo?: WarehouseLocation | null\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @ManyToOne(() => InventoryLot, { fieldName: 'lot_id', nullable: true })\n lot?: InventoryLot | null\n\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ type: 'numeric', precision: 16, scale: 4 })\n quantity!: string\n\n @Property({ type: 'text' })\n type!: InventoryMovementType\n\n @Property({ name: 'reference_type', type: 'text' })\n referenceType!: InventoryMovementReferenceType\n\n @Property({ name: 'reference_id', type: 'uuid' })\n referenceId!: string\n\n @Property({ name: 'performed_by', type: 'uuid' })\n performedBy!: string\n\n @Property({ name: 'performed_at', type: Date })\n performedAt!: Date\n\n @Property({ name: 'received_at', type: Date })\n receivedAt!: Date\n\n @Property({ type: 'text', nullable: true })\n reason?: string | null\n\n @Property({ name: 'reason_code', type: 'text', nullable: true })\n reasonCode?: string | null\n\n @Property({ name: 'idempotency_key', type: 'text', nullable: true })\n idempotencyKey?: string | null\n}\n\n@Entity({ tableName: 'wms_asns' })\n@Index({ name: 'wms_asns_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_asns_org_warehouse_status_expected_idx',\n properties: ['organizationId', 'warehouse', 'status', 'expectedAt'],\n})\n@Index({\n name: 'wms_asns_org_vendor_expected_idx',\n expression:\n 'create index \"wms_asns_org_vendor_expected_idx\" on \"wms_asns\" (\"organization_id\", \"vendor_id\", \"expected_at\" desc) where deleted_at is null',\n})\n@Index({\n name: 'wms_asns_org_source_key_unique_idx',\n expression:\n 'create unique index \"wms_asns_org_source_key_unique_idx\" on \"wms_asns\" (\"organization_id\", \"source_key\") where source_key is not null and deleted_at is null',\n})\nexport class Asn extends WmsScopedEntity {\n [OptionalProps]?: WmsOptionalProps | 'vendorId' | 'referenceNumber' | 'notes' | 'status' | 'sourceKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'vendor_id', type: 'uuid', nullable: true })\n vendorId?: string | null\n\n @Property({ type: 'text', default: 'draft' })\n status: AsnStatus = 'draft'\n\n @Property({ name: 'expected_at', type: Date })\n expectedAt!: Date\n\n @Property({ name: 'reference_number', type: 'text', nullable: true })\n referenceNumber?: string | null\n\n /** Stable external linkage key (e.g. procurement goods receipt) for find-or-create. */\n @Property({ name: 'source_key', type: 'text', nullable: true })\n sourceKey?: string | null\n\n @Property({ type: 'text', nullable: true })\n notes?: string | null\n\n @OneToMany(() => ReceivingLine, (line) => line.asn)\n lines = new Collection<ReceivingLine>(this)\n}\n\n@Entity({ tableName: 'wms_receiving_lines' })\n@Index({ name: 'wms_receiving_lines_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({ name: 'wms_receiving_lines_org_asn_idx', properties: ['organizationId', 'asn'] })\n@Index({\n name: 'wms_receiving_lines_org_variant_qc_idx',\n properties: ['organizationId', 'catalogVariantId', 'qcStatus'],\n})\nexport class ReceivingLine extends WmsScopedEntity {\n [OptionalProps]?:\n | WmsOptionalProps\n | 'lotNumber'\n | 'serialNumbers'\n | 'targetStagingLocationId'\n | 'rejectionReason'\n | 'receivedQty'\n | 'qcStatus'\n\n @ManyToOne(() => Asn, { fieldName: 'asn_id' })\n asn!: Asn\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @Property({ name: 'expected_qty', type: 'numeric', precision: 16, scale: 4 })\n expectedQty!: string\n\n @Property({ name: 'received_qty', type: 'numeric', precision: 16, scale: 4, default: '0' })\n receivedQty: string = '0'\n\n @Property({ name: 'lot_number', type: 'text', nullable: true })\n lotNumber?: string | null\n\n @Property({ name: 'serial_numbers', type: 'jsonb', nullable: true })\n serialNumbers?: string[] | null\n\n @Property({ name: 'qc_status', type: 'text', default: 'pending' })\n qcStatus: ReceivingLineQcStatus = 'pending'\n\n @Property({ name: 'target_staging_location_id', type: 'uuid', nullable: true })\n targetStagingLocationId?: string | null\n\n @Property({ name: 'rejection_reason', type: 'text', nullable: true })\n rejectionReason?: string | null\n}\n\n@Entity({ tableName: 'wms_putaway_tasks' })\n@Index({ name: 'wms_putaway_tasks_org_tenant_idx', properties: ['organizationId', 'tenantId'] })\n@Index({\n name: 'wms_putaway_tasks_org_warehouse_status_priority_idx',\n properties: ['organizationId', 'warehouse', 'status', 'priority'],\n})\n@Index({\n name: 'wms_putaway_tasks_org_assigned_status_idx',\n properties: ['organizationId', 'assignedTo', 'status'],\n})\n@Index({\n name: 'wms_putaway_tasks_org_putaway_key_unique_idx',\n expression:\n 'create unique index \"wms_putaway_tasks_org_putaway_key_unique_idx\" on \"wms_putaway_tasks\" (\"organization_id\", \"putaway_key\") where putaway_key is not null and deleted_at is null and status <> \\'cancelled\\'',\n})\nexport class PutawayTask extends WmsScopedEntity {\n [OptionalProps]?:\n | WmsOptionalProps\n | 'targetLocationId'\n | 'lotId'\n | 'serialNumber'\n | 'assignedTo'\n | 'priority'\n | 'status'\n | 'putawayKey'\n\n @ManyToOne(() => Warehouse, { fieldName: 'warehouse_id' })\n warehouse!: Warehouse\n\n @Property({ name: 'source_location_id', type: 'uuid' })\n sourceLocationId!: string\n\n @Property({ name: 'target_location_id', type: 'uuid', nullable: true })\n targetLocationId?: string | null\n\n @Property({ name: 'catalog_variant_id', type: 'uuid' })\n catalogVariantId!: string\n\n @Property({ name: 'lot_id', type: 'uuid', nullable: true })\n lotId?: string | null\n\n /** Set on quantity-one tasks created for a serial-tracked receipt. Null for aggregate tasks. */\n @Property({ name: 'serial_number', type: 'text', nullable: true })\n serialNumber?: string | null\n\n @Property({ type: 'numeric', precision: 16, scale: 4 })\n quantity!: string\n\n @Property({ type: 'text', default: 'open' })\n status: PutawayTaskStatus = 'open'\n\n @Property({ name: 'assigned_to', type: 'uuid', nullable: true })\n assignedTo?: string | null\n\n @Property({ type: 'integer', default: 5 })\n priority: number = 5\n\n /** Stable ASN-receive attempt key for find-or-create without scanning newest-N metadata. */\n @Property({ name: 'putaway_key', type: 'text', nullable: true })\n putawayKey?: string | null\n}\n"],
5
+ "mappings": ";;;;;;;;;;AAAA;AAAA,SAAS,YAAY,qBAAqB;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAwBP,MAAe,gBAAgB;AAAA,EAA/B;AAcE,qBAAkB,oBAAI,KAAK;AAG3B,qBAAkB,oBAAI,KAAK;AAAA;AAI7B;AAnBE;AAAA,EADC,WAAW,EAAE,MAAM,QAAQ,YAAY,oBAAoB,CAAC;AAAA,GADhD,gBAEb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,OAAO,CAAC;AAAA,GAJtC,gBAKb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GAPhC,gBAQb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GAV9B,gBAWb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAb3D,gBAcb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,oBAAI,KAAK,EAAE,CAAC;AAAA,GAhB3D,gBAiBb;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAnB/C,gBAoBb;AAeK,IAAM,YAAN,eAAwB,sBAC5B,eAD4B,IAAgB;AAAA,EAAxC;AAAA;AAUL,oBAAoB;AAGpB,qBAAqB;AAkBrB,iBAAQ,IAAI,WAA0B,IAAI;AAG1C,qBAAY,IAAI,WAA8B,IAAI;AAAA;AACpD;AA/BE;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHf,UAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,UAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GATpD,UAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAZtD,UAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAftD,UAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlB/B,UAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GArBpD,UAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAxB/B,UAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3B/B,UA4BX;AAGA;AAAA,EADC,UAAU,MAAM,eAAe,CAAC,SAAS,KAAK,SAAS;AAAA,GA9B7C,UA+BX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,CAAC,aAAa,SAAS,SAAS;AAAA,GAjCzD,UAkCX;AAlCW,YAAN;AAAA,EAZN,OAAO,EAAE,WAAW,iBAAiB,CAAC;AAAA,EACtC,MAAM,EAAE,MAAM,iCAAiC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC3F,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AA6CN,IAAM,gBAAN,eAA4B,sBAChC,eADgC,IAAgB;AAAA,EAA5C;AAAA;AAaL,oBAAmB;AAAA;AACrB;AAVE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,cAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,cAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GATf,cAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,SAAS,EAAE,CAAC;AAAA,GAZ9B,cAaX;AAbW,gBAAN;AAAA,EARN,OAAO,EAAE,WAAW,sBAAsB,CAAC;AAAA,EAC3C,MAAM,EAAE,MAAM,sCAAsC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAChG,MAAM,EAAE,MAAM,qCAAqC,YAAY,CAAC,WAAW,EAAE,CAAC;AAAA,EAC9E,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AAyBN,IAAM,oBAAN,eAAgC,sBACpC,eADoC,IAAgB;AAAA,EAAhD;AAAA;AAgBL,oBAAW,IAAI,WAA8B,IAAI;AAGjD,oBAAoB;AAAA;AAUtB;AAzBE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,kBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,kBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GATf,kBAUX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,EAAE,WAAW,aAAa,UAAU,KAAK,CAAC;AAAA,GAZnE,kBAaX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,CAAC,aAAa,SAAS,MAAM;AAAA,GAftD,kBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,GAlBpD,kBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GArBnF,kBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,UAAU,KAAK,CAAC;AAAA,GAxBpF,kBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GA3BhC,kBA4BX;AA5BW,oBAAN;AAAA,EATN,OAAO,EAAE,WAAW,0BAA0B,CAAC;AAAA,EAC/C,MAAM,EAAE,MAAM,0CAA0C,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACpG,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,WAAW,EAAE,CAAC;AAAA,EAClF,MAAM,EAAE,MAAM,sCAAsC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAAA,EAC5E,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AA2CN,IAAM,0BAAN,eAAsC,sBAC1C,eAD0C,IAAgB;AAAA,EAAtD;AAAA;AAaL,oBAAoB;AAGpB,uBAAuB;AAGvB,2BAA2B;AAM3B,wBAAuB;AAGvB,uBAAsB;AAAA;AACxB;AAzBE;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAH3C,wBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAN3D,wBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,OAAO,CAAC;AAAA,GATpC,wBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAZrD,wBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAfxD,wBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,GAlB5D,wBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,OAAO,CAAC;AAAA,GArBzC,wBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GAxBhF,wBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GA3B/E,wBA4BX;AA5BW,0BAAN;AAAA,EAZN,OAAO,EAAE,WAAW,iCAAiC,CAAC;AAAA,EACtD,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACnG,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AAuCN,IAAM,eAAN,eAA2B,sBAC/B,eAD+B,IAAgB;AAAA,EAA3C;AAAA;AAyBL,kBAA6B;AAAA;AAC/B;AAtBE;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAH3C,aAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANf,aAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,OAAO,CAAC;AAAA,GATnC,aAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAZrD,aAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAftD,aAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAlBrD,aAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GArBjD,aAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,YAAY,CAAC;AAAA,GAxBrC,aAyBX;AAzBW,eAAN;AAAA,EARN,OAAO,EAAE,WAAW,qBAAqB,CAAC;AAAA,EAC1C,MAAM,EAAE,MAAM,qCAAqC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC/F,MAAM,EAAE,MAAM,kCAAkC,YAAY,CAAC,kBAAkB,EAAE,CAAC;AAAA,EAClF,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AA0CN,IAAM,mBAAN,eAA+B,sBACnC,eADmC,IAAgB;AAAA,EAA/C;AAAA;AAmBL,0BAAyB;AAGzB,4BAA2B;AAG3B,6BAA4B;AAAA;AAW9B;AAhCE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,iBAIX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,EAAE,WAAW,cAAc,CAAC;AAAA,GANrD,iBAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAT3C,iBAUX;AAGA;AAAA,EADC,UAAU,MAAM,cAAc,EAAE,WAAW,UAAU,UAAU,KAAK,CAAC;AAAA,GAZ3D,iBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAftD,iBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GAlBnF,iBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,qBAAqB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GArBpF,iBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GAxBrF,iBAyBX;AAUA;AAAA,EARC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,WAAW,CAAC,SAAS,IAAI,KAAK,cAAc,MAAM,KAAK,gBAAgB,MAAM,KAAK,iBAAiB;AAAA,IACnG,QAAQ;AAAA,EACV,CAAC;AAAA,GAlCU,iBAmCX;AAnCW,mBAAN;AAAA,EAdN,OAAO,EAAE,WAAW,yBAAyB,CAAC;AAAA,EAC9C,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACnG,MAAM,EAAE,MAAM,oDAAoD,YAAY,CAAC,kBAAkB,aAAa,kBAAkB,EAAE,CAAC;AAAA,EACnI,MAAM,EAAE,MAAM,mDAAmD,YAAY,CAAC,kBAAkB,YAAY,kBAAkB,EAAE,CAAC;AAAA,EACjI,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AA+CN,IAAM,uBAAN,eAAmC,sBACvC,eADuC,IAAgB;AAAA,EAAnD;AAAA;AA4BL,kBAAqC;AAAA;AAIvC;AA5BE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,qBAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAN3C,qBAOX;AAGA;AAAA,EADC,UAAU,MAAM,cAAc,EAAE,WAAW,UAAU,UAAU,KAAK,CAAC;AAAA,GAT3D,qBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAZtD,qBAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,WAAW,IAAI,OAAO,EAAE,CAAC;AAAA,GAf3C,qBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,OAAO,CAAC;AAAA,GAlBpC,qBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,GArBlC,qBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,GAxBjD,qBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,SAAS,CAAC;AAAA,GA3BlC,qBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA9BxD,qBA+BX;AA/BW,uBAAN;AAAA,EATN,OAAO,EAAE,WAAW,6BAA6B,CAAC;AAAA,EAClD,MAAM,EAAE,MAAM,6CAA6C,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACvG,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,kBAAkB,cAAc,UAAU,EAAE,CAAC;AAAA,EACjH,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,kBAAkB,aAAa,oBAAoB,QAAQ,EAAE,CAAC;AAAA,EAClI,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AA8CN,IAAM,gCAAN,eAA4C,sBAChD,eADgD,IAAgB;AAcnE;AAVE;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,OAAO,CAAC;AAAA,GAHvC,8BAIX;AAGA;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAN9C,8BAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GATpD,8BAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAZ/B,8BAaX;AAbW,gCAAN;AAAA,EAZN,OAAO,EAAE,WAAW,wCAAwC,CAAC;AAAA,EAC7D,MAAM,EAAE,MAAM,2BAA2B,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACrF,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AAkCN,IAAM,oBAAN,eAAgC,sBACpC,eADoC,IAAgB;AAkDvD;AA9CE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,kBAIX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,EAAE,WAAW,oBAAoB,UAAU,KAAK,CAAC;AAAA,GAN1E,kBAOX;AAGA;AAAA,EADC,UAAU,MAAM,mBAAmB,EAAE,WAAW,kBAAkB,UAAU,KAAK,CAAC;AAAA,GATxE,kBAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAZ3C,kBAaX;AAGA;AAAA,EADC,UAAU,MAAM,cAAc,EAAE,WAAW,UAAU,UAAU,KAAK,CAAC;AAAA,GAf3D,kBAgBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlBtD,kBAmBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,WAAW,IAAI,OAAO,EAAE,CAAC;AAAA,GArB3C,kBAsBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAxBf,kBAyBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,OAAO,CAAC;AAAA,GA3BvC,kBA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,OAAO,CAAC;AAAA,GA9BrC,kBA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,OAAO,CAAC;AAAA,GAjCrC,kBAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,KAAK,CAAC;AAAA,GApCnC,kBAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,KAAK,CAAC;AAAA,GAvClC,kBAwCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA1C/B,kBA2CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA7CpD,kBA8CX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,mBAAmB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAhDxD,kBAiDX;AAjDW,oBAAN;AAAA,EAlBN,OAAO,EAAE,WAAW,0BAA0B,CAAC;AAAA,EAC/C,MAAM,EAAE,MAAM,0CAA0C,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACpG,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM,EAAE,MAAM,yCAAyC,YAAY,CAAC,kBAAkB,iBAAiB,aAAa,EAAE,CAAC;AAAA,EACvH,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AAoEN,IAAM,MAAN,eAAkB,sBACtB,eADsB,IAAgB;AAAA,EAAlC;AAAA;AAUL,kBAAoB;AAgBpB,iBAAQ,IAAI,WAA0B,IAAI;AAAA;AAC5C;AAvBE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAH9C,IAIX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GANlD,IAOX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAAA,GATjC,IAUX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,KAAK,CAAC;AAAA,GAZlC,IAaX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAfzD,IAgBX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAnBnD,IAoBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAtB/B,IAuBX;AAGA;AAAA,EADC,UAAU,MAAM,eAAe,CAAC,SAAS,KAAK,GAAG;AAAA,GAzBvC,IA0BX;AA1BW,MAAN;AAAA,EAhBN,OAAO,EAAE,WAAW,WAAW,CAAC;AAAA,EAChC,MAAM,EAAE,MAAM,2BAA2B,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EACrF,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,aAAa,UAAU,YAAY;AAAA,EACpE,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;AAoCN,IAAM,gBAAN,eAA4B,sBAChC,eADgC,IAAgB;AAAA,EAA5C;AAAA;AAoBL,uBAAsB;AAStB,oBAAkC;AAAA;AAOpC;AAzBE;AAAA,EADC,UAAU,MAAM,KAAK,EAAE,WAAW,SAAS,CAAC;AAAA,GAVlC,cAWX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAb3C,cAcX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,OAAO,EAAE,CAAC;AAAA,GAhBjE,cAiBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,gBAAgB,MAAM,WAAW,WAAW,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC;AAAA,GAnB/E,cAoBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,cAAc,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAtBnD,cAuBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,kBAAkB,MAAM,SAAS,UAAU,KAAK,CAAC;AAAA,GAzBxD,cA0BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,aAAa,MAAM,QAAQ,SAAS,UAAU,CAAC;AAAA,GA5BtD,cA6BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,8BAA8B,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA/BnE,cAgCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,oBAAoB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAlCzD,cAmCX;AAnCW,gBAAN;AAAA,EAPN,OAAO,EAAE,WAAW,sBAAsB,CAAC;AAAA,EAC3C,MAAM,EAAE,MAAM,sCAAsC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAChG,MAAM,EAAE,MAAM,mCAAmC,YAAY,CAAC,kBAAkB,KAAK,EAAE,CAAC;AAAA,EACxF,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,oBAAoB,UAAU;AAAA,EAC/D,CAAC;AAAA,GACY;AAqDN,IAAM,cAAN,eAA0B,sBAC9B,eAD8B,IAAgB;AAAA,EAA1C;AAAA;AAkCL,kBAA4B;AAM5B,oBAAmB;AAAA;AAKrB;AAjCE;AAAA,EADC,UAAU,MAAM,WAAW,EAAE,WAAW,eAAe,CAAC;AAAA,GAX9C,YAYX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GAd3C,YAeX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAjB3D,YAkBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,sBAAsB,MAAM,OAAO,CAAC;AAAA,GApB3C,YAqBX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,UAAU,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GAvB/C,YAwBX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,iBAAiB,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3BtD,YA4BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,WAAW,IAAI,OAAO,EAAE,CAAC;AAAA,GA9B3C,YA+BX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,OAAO,CAAC;AAAA,GAjChC,YAkCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GApCpD,YAqCX;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,WAAW,SAAS,EAAE,CAAC;AAAA,GAvC9B,YAwCX;AAIA;AAAA,EADC,SAAS,EAAE,MAAM,eAAe,MAAM,QAAQ,UAAU,KAAK,CAAC;AAAA,GA3CpD,YA4CX;AA5CW,cAAN;AAAA,EAfN,OAAO,EAAE,WAAW,oBAAoB,CAAC;AAAA,EACzC,MAAM,EAAE,MAAM,oCAAoC,YAAY,CAAC,kBAAkB,UAAU,EAAE,CAAC;AAAA,EAC9F,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,aAAa,UAAU,UAAU;AAAA,EAClE,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YAAY,CAAC,kBAAkB,cAAc,QAAQ;AAAA,EACvD,CAAC;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,YACE;AAAA,EACJ,CAAC;AAAA,GACY;",
6
6
  "names": []
7
7
  }
@@ -180,6 +180,7 @@ const inventoryReceiveSchema = scopedSchema.extend({
180
180
  receivedAt: z.coerce.date().optional(),
181
181
  performedAt: z.coerce.date().optional(),
182
182
  reason: z.string().trim().max(500).optional(),
183
+ reasonCode: z.string().trim().max(80).optional(),
183
184
  metadata: metadataSchema
184
185
  });
185
186
  const inventoryReservationCreateSchema = scopedSchema.extend({
@@ -269,6 +270,197 @@ const inventoryMovementCreateSchema = scopedSchema.extend({
269
270
  reason: z.string().trim().max(500).optional(),
270
271
  metadata: metadataSchema
271
272
  });
273
+ const asnWritableStatusSchema = z.enum(["draft", "in_transit"]);
274
+ const receivingLineCreateFieldsSchema = z.object({
275
+ catalogVariantId: uuid(),
276
+ expectedQty: positiveQuantity,
277
+ lotNumber: z.string().trim().max(120).optional().nullable(),
278
+ serialNumbers: z.array(z.string().trim().min(1).max(120)).optional().nullable(),
279
+ targetStagingLocationId: uuid().optional().nullable(),
280
+ metadata: metadataSchema
281
+ });
282
+ const asnCreateSchema = scopedSchema.extend({
283
+ warehouseId: uuid(),
284
+ vendorId: uuid().optional().nullable(),
285
+ status: asnWritableStatusSchema.optional(),
286
+ expectedAt: z.coerce.date(),
287
+ referenceNumber: z.string().trim().max(120).optional().nullable(),
288
+ /**
289
+ * Stable external linkage key; unique per org when set (procurement goods receipt, etc.).
290
+ * Server/system creates only — public HTTP create strips this; authenticated clients cannot set it.
291
+ */
292
+ sourceKey: z.string().trim().min(1).max(200).optional().nullable(),
293
+ notes: z.string().trim().max(2e3).optional().nullable(),
294
+ lines: z.array(receivingLineCreateFieldsSchema).optional(),
295
+ metadata: metadataSchema
296
+ });
297
+ const asnCreatePublicSchema = asnCreateSchema.omit({ sourceKey: true });
298
+ const asnUpdateSchema = z.object({ id: uuid() }).merge(
299
+ scopedSchema.extend({
300
+ warehouseId: uuid(),
301
+ vendorId: uuid().nullable(),
302
+ status: asnWritableStatusSchema,
303
+ expectedAt: z.coerce.date(),
304
+ referenceNumber: z.string().trim().max(120).nullable(),
305
+ notes: z.string().trim().max(2e3).nullable(),
306
+ metadata: metadataSchema
307
+ }).partial()
308
+ );
309
+ const receivingLineCreateSchema = scopedSchema.extend({
310
+ asnId: uuid(),
311
+ catalogVariantId: uuid(),
312
+ expectedQty: positiveQuantity,
313
+ lotNumber: z.string().trim().max(120).optional().nullable(),
314
+ serialNumbers: z.array(z.string().trim().min(1).max(120)).optional().nullable(),
315
+ targetStagingLocationId: uuid().optional().nullable(),
316
+ metadata: metadataSchema
317
+ });
318
+ const receivingLineUpdateSchema = z.object({ id: uuid() }).merge(
319
+ scopedSchema.extend({
320
+ catalogVariantId: uuid(),
321
+ expectedQty: positiveQuantity,
322
+ lotNumber: z.string().trim().max(120).nullable(),
323
+ serialNumbers: z.array(z.string().trim().min(1).max(120)).nullable(),
324
+ targetStagingLocationId: uuid().nullable(),
325
+ metadata: metadataSchema
326
+ }).partial()
327
+ );
328
+ const asnReceiveLineSchema = scopedSchema.extend({
329
+ asnId: uuid(),
330
+ lineId: uuid(),
331
+ receivedQty: positiveQuantity,
332
+ /**
333
+ * Absolute received quantity the client intends after this attempt.
334
+ * Required for QC-pass and QC-fail so retries after success remain
335
+ * idempotent (applyQty=0) even if prior qty advanced. Do not derive from
336
+ * delta alone — QC-fail still advances audit receivedQty.
337
+ */
338
+ targetReceivedQty: positiveQuantity.optional(),
339
+ /** Optional client-stable attempt id; extra stabilizer alongside absolute target. */
340
+ idempotencyKey: uuid().optional(),
341
+ targetStagingLocationId: uuid().optional(),
342
+ lotId: uuid().optional(),
343
+ lotNumber: z.string().trim().max(120).optional(),
344
+ serialNumbers: z.array(z.string().trim().min(1).max(120)).optional(),
345
+ qcStatus: z.enum(["passed", "failed"]),
346
+ rejectionReason: z.string().trim().max(500).optional(),
347
+ performedBy: uuid(),
348
+ receivedAt: z.coerce.date().optional(),
349
+ metadata: metadataSchema
350
+ }).superRefine((value, ctx) => {
351
+ if (value.targetReceivedQty == null) {
352
+ ctx.addIssue({
353
+ code: z.ZodIssueCode.custom,
354
+ path: ["targetReceivedQty"],
355
+ message: "target_received_qty_required"
356
+ });
357
+ }
358
+ });
359
+ const asnCloseSchema = scopedSchema.extend({
360
+ id: uuid(),
361
+ closeWhenShort: z.boolean().optional()
362
+ });
363
+ const putawayTaskCreateSchema = scopedSchema.extend({
364
+ warehouseId: uuid(),
365
+ sourceLocationId: uuid(),
366
+ targetLocationId: uuid().optional().nullable(),
367
+ catalogVariantId: uuid(),
368
+ lotId: uuid().optional().nullable(),
369
+ quantity: positiveQuantity,
370
+ priority: z.coerce.number().int().min(0).max(100).optional(),
371
+ assignedTo: uuid().optional().nullable(),
372
+ metadata: metadataSchema
373
+ });
374
+ const putawayTaskUpdateSchema = z.object({ id: uuid() }).merge(
375
+ scopedSchema.extend({
376
+ warehouseId: uuid(),
377
+ sourceLocationId: uuid(),
378
+ targetLocationId: uuid().nullable(),
379
+ catalogVariantId: uuid(),
380
+ lotId: uuid().nullable(),
381
+ quantity: positiveQuantity,
382
+ priority: z.coerce.number().int().min(0).max(100),
383
+ metadata: metadataSchema
384
+ }).partial()
385
+ );
386
+ const putawayTaskCreateFromBalanceSchema = scopedSchema.extend({
387
+ warehouseId: uuid(),
388
+ sourceLocationId: uuid(),
389
+ targetLocationId: uuid(),
390
+ catalogVariantId: uuid(),
391
+ lotId: uuid().optional(),
392
+ quantity: positiveQuantity,
393
+ priority: z.coerce.number().int().min(0).max(100).optional(),
394
+ assignedTo: uuid().optional().nullable(),
395
+ metadata: metadataSchema
396
+ });
397
+ const putawayTaskAssignSchema = scopedSchema.extend({
398
+ id: uuid(),
399
+ assignedTo: uuid()
400
+ });
401
+ const putawayTaskStartSchema = scopedSchema.extend({
402
+ id: uuid()
403
+ });
404
+ const putawayTaskCompleteSchema = scopedSchema.extend({
405
+ id: uuid(),
406
+ confirmedQuantity: positiveQuantity,
407
+ targetLocationId: uuid(),
408
+ lotId: uuid().optional(),
409
+ performedBy: uuid(),
410
+ performedAt: z.coerce.date().optional(),
411
+ reason: z.string().trim().min(1).max(500).optional(),
412
+ metadata: metadataSchema
413
+ });
414
+ const putawayTaskCancelSchema = scopedSchema.extend({
415
+ id: uuid()
416
+ });
417
+ const scanResolveLocationSchema = scopedSchema.extend({
418
+ warehouseId: uuid(),
419
+ code: z.string().trim().min(1).max(120)
420
+ });
421
+ const scanResolveLotSchema = scopedSchema.extend({
422
+ catalogVariantId: uuid(),
423
+ lotNumber: z.string().trim().min(1).max(120)
424
+ });
425
+ const scanReceiveSchema = scopedSchema.extend({
426
+ asnId: uuid(),
427
+ lineId: uuid(),
428
+ locationCode: z.string().trim().min(1).max(120),
429
+ lotNumber: z.string().trim().max(120).optional(),
430
+ serialNumbers: z.array(z.string().trim().min(1).max(120)).optional(),
431
+ receivedQty: positiveQuantity,
432
+ /**
433
+ * Absolute received quantity after this attempt. Required for QC-pass and
434
+ * QC-fail so identical retries no-op (applyQty=0). Do not derive as
435
+ * prior+delta in scan resolve — that doubles stock/audit qty on retry.
436
+ */
437
+ targetReceivedQty: positiveQuantity.optional(),
438
+ /** Optional client-stable attempt id; extra stabilizer alongside absolute target. */
439
+ idempotencyKey: uuid().optional(),
440
+ qcStatus: z.enum(["passed", "failed"]),
441
+ rejectionReason: z.string().trim().max(500).optional(),
442
+ performedBy: uuid(),
443
+ receivedAt: z.coerce.date().optional(),
444
+ metadata: metadataSchema
445
+ }).superRefine((value, ctx) => {
446
+ if (value.targetReceivedQty == null) {
447
+ ctx.addIssue({
448
+ code: z.ZodIssueCode.custom,
449
+ path: ["targetReceivedQty"],
450
+ message: "target_received_qty_required"
451
+ });
452
+ }
453
+ });
454
+ const scanPutawaySchema = scopedSchema.extend({
455
+ taskId: uuid(),
456
+ targetLocationCode: z.string().trim().min(1).max(120),
457
+ confirmedQuantity: positiveQuantity,
458
+ lotId: uuid().optional(),
459
+ performedBy: uuid(),
460
+ performedAt: z.coerce.date().optional(),
461
+ reason: z.string().trim().min(1).max(500).optional(),
462
+ metadata: metadataSchema
463
+ });
272
464
  const salesOrderWarehouseAssignBodySchema = scopedSchema.extend({
273
465
  warehouseId: uuid(),
274
466
  notes: z.string().trim().max(500).optional(),
@@ -355,13 +547,21 @@ const operationalDashboardResponseSchema = z.object({
355
547
  variantId: z.string().uuid(),
356
548
  referenceType: z.string().nullable(),
357
549
  referenceId: z.string().nullable(),
550
+ referenceLabel: z.string().nullable().optional(),
358
551
  reason: z.string().nullable(),
552
+ reasonCode: z.string().nullable().optional(),
553
+ source: z.string().nullable().optional(),
359
554
  locationLabel: z.string(),
360
555
  performedAt: z.string()
361
556
  })
362
557
  )
363
558
  });
364
559
  export {
560
+ asnCloseSchema,
561
+ asnCreatePublicSchema,
562
+ asnCreateSchema,
563
+ asnReceiveLineSchema,
564
+ asnUpdateSchema,
365
565
  inventoryAdjustSchema,
366
566
  inventoryBalanceListQuerySchema,
367
567
  inventoryCycleCountSchema,
@@ -386,9 +586,23 @@ export {
386
586
  operationalDashboardResponseSchema,
387
587
  productInventoryProfileCreateSchema,
388
588
  productInventoryProfileUpdateSchema,
589
+ putawayTaskAssignSchema,
590
+ putawayTaskCancelSchema,
591
+ putawayTaskCompleteSchema,
592
+ putawayTaskCreateFromBalanceSchema,
593
+ putawayTaskCreateSchema,
594
+ putawayTaskStartSchema,
595
+ putawayTaskUpdateSchema,
596
+ receivingLineCreateFieldsSchema,
597
+ receivingLineCreateSchema,
598
+ receivingLineUpdateSchema,
389
599
  salesOrderWarehouseAssignBodySchema,
390
600
  salesOrderWarehouseAssignSchema,
391
601
  salesOrderWarehouseUnassignSchema,
602
+ scanPutawaySchema,
603
+ scanReceiveSchema,
604
+ scanResolveLocationSchema,
605
+ scanResolveLotSchema,
392
606
  warehouseCreateSchema,
393
607
  warehouseLocationCreateSchema,
394
608
  warehouseLocationUpdateSchema,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/wms/data/validators.ts"],
4
- "sourcesContent": ["import { z } from 'zod'\n\nconst uuid = () => z.string().uuid()\nconst numericQuantity = z.coerce.number().finite()\nconst positiveQuantity = numericQuantity.gt(0)\nconst nonNegativeQuantity = numericQuantity.min(0)\n\nconst scopedSchema = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst warehouseLocationTypeSchema = z.enum(['zone', 'aisle', 'rack', 'bin', 'slot', 'dock', 'staging'])\nconst inventoryStrategySchema = z.enum(['fifo', 'lifo', 'fefo'])\nconst inventoryLotStatusSchema = z.enum(['available', 'hold', 'quarantine', 'expired'])\nconst inventoryReservationSourceTypeSchema = z.enum(['order', 'transfer', 'manual'])\nconst inventoryReservationStatusSchema = z.enum(['active', 'released', 'fulfilled'])\nconst inventoryMovementTypeSchema = z.enum([\n 'receipt',\n 'putaway',\n 'pick',\n 'pack',\n 'ship',\n 'adjust',\n 'transfer',\n 'cycle_count',\n 'return_receive',\n])\nconst inventoryMovementReferenceTypeSchema = z.enum(['po', 'so', 'transfer', 'manual', 'qc', 'rma'])\n\nconst metadataSchema = z.record(z.string(), z.unknown()).optional()\n\nconst enforcePrimaryRequiresActiveWarehouse = (\n payload: { isActive?: boolean; isPrimary?: boolean },\n ctx: z.RefinementCtx,\n) => {\n if (payload.isPrimary === true && payload.isActive === false) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['isPrimary'],\n message: 'Inactive warehouses cannot be marked as primary.',\n })\n }\n}\n\nconst warehouseFieldsSchema = scopedSchema.extend({\n name: z.string().trim().min(1).max(200),\n code: z.string().trim().min(1).max(80),\n isActive: z.boolean().optional(),\n isPrimary: z.boolean().optional(),\n addressLine1: z.string().trim().max(255).optional(),\n city: z.string().trim().max(150).optional(),\n postalCode: z.string().trim().max(40).optional(),\n country: z.string().trim().max(120).optional(),\n timezone: z.string().trim().max(120).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseCreateSchema = warehouseFieldsSchema.superRefine(enforcePrimaryRequiresActiveWarehouse)\n\nexport const warehouseUpdateSchema = z\n .object({ id: uuid() })\n .merge(warehouseFieldsSchema.partial())\n .superRefine(enforcePrimaryRequiresActiveWarehouse)\n\nexport const warehouseZoneCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n code: z.string().trim().min(1).max(80),\n name: z.string().trim().min(1).max(200),\n priority: z.coerce.number().int().min(0).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseZoneUpdateSchema = z.object({ id: uuid() }).merge(warehouseZoneCreateSchema.partial())\n\nexport const warehouseLocationCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n code: z.string().trim().min(1).max(120),\n type: warehouseLocationTypeSchema,\n parentId: uuid().nullable().optional(),\n isActive: z.boolean().optional(),\n capacityUnits: nonNegativeQuantity.optional(),\n capacityWeight: nonNegativeQuantity.optional(),\n constraints: z.record(z.string(), z.unknown()).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseLocationUpdateSchema = z.object({ id: uuid() }).merge(warehouseLocationCreateSchema.partial())\n\nconst productInventoryProfileBaseSchema = scopedSchema.extend({\n catalogProductId: uuid(),\n catalogVariantId: uuid().nullable().optional(),\n defaultUom: z.string().trim().min(1).max(32),\n trackLot: z.boolean().optional(),\n trackSerial: z.boolean().optional(),\n trackExpiration: z.boolean().optional(),\n defaultStrategy: inventoryStrategySchema,\n reorderPoint: nonNegativeQuantity.optional(),\n safetyStock: nonNegativeQuantity.optional(),\n metadata: metadataSchema,\n})\n\nconst enforceFefoWhenExpirationTracked = (\n payload: { trackExpiration?: boolean; defaultStrategy?: 'fifo' | 'lifo' | 'fefo' },\n ctx: z.RefinementCtx,\n) => {\n if (\n payload.trackExpiration === true &&\n payload.defaultStrategy !== undefined &&\n payload.defaultStrategy !== 'fefo'\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['defaultStrategy'],\n message: 'FEFO is required when expiration tracking is enabled.',\n })\n }\n}\n\nexport const productInventoryProfileCreateSchema =\n productInventoryProfileBaseSchema.superRefine(enforceFefoWhenExpirationTracked)\n\nexport const productInventoryProfileUpdateSchema = z\n .object({ id: uuid() })\n .merge(productInventoryProfileBaseSchema.partial())\n .superRefine(enforceFefoWhenExpirationTracked)\n\nconst inventoryLotBaseSchema = scopedSchema.extend({\n catalogVariantId: uuid(),\n sku: z.string().trim().min(1).max(120),\n lotNumber: z.string().trim().min(1).max(120),\n batchNumber: z.string().trim().max(120).optional(),\n manufacturedAt: z.coerce.date().optional(),\n bestBeforeAt: z.coerce.date().optional(),\n expiresAt: z.coerce.date().optional(),\n status: inventoryLotStatusSchema.optional(),\n metadata: metadataSchema,\n})\n\nconst enforceLotDateOrdering = (\n payload: { manufacturedAt?: Date; bestBeforeAt?: Date; expiresAt?: Date },\n ctx: z.RefinementCtx,\n) => {\n if (payload.manufacturedAt && payload.bestBeforeAt && payload.bestBeforeAt < payload.manufacturedAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['bestBeforeAt'],\n message: 'Best-before date must be on or after manufactured date.',\n })\n }\n if (payload.bestBeforeAt && payload.expiresAt && payload.expiresAt < payload.bestBeforeAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['expiresAt'],\n message: 'Expiration date must be on or after best-before date.',\n })\n }\n if (payload.manufacturedAt && payload.expiresAt && payload.expiresAt < payload.manufacturedAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['expiresAt'],\n message: 'Expiration date must be on or after manufactured date.',\n })\n }\n}\n\nexport const inventoryLotCreateSchema = inventoryLotBaseSchema.superRefine(enforceLotDateOrdering)\n\nexport const inventoryLotUpdateSchema = z\n .object({\n id: uuid(),\n // Optional status-change note merged into lot.metadata.notes by the update command.\n notes: z.string().trim().max(500).optional(),\n })\n .merge(inventoryLotBaseSchema.partial())\n .superRefine(enforceLotDateOrdering)\n\nconst inventoryLowStockFilterSchema = z.enum(['belowReorder', 'belowSafety'])\n\nexport const inventoryBalanceListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n locationId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n lowStock: inventoryLowStockFilterSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryMovementListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n locationId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n referenceType: inventoryMovementReferenceTypeSchema.optional(),\n referenceId: uuid().optional(),\n type: inventoryMovementTypeSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryReservationListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n sourceType: inventoryReservationSourceTypeSchema.optional(),\n sourceId: uuid().optional(),\n status: inventoryReservationStatusSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryReceiveSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n lotNumber: z.string().trim().max(120).optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n referenceType: inventoryMovementReferenceTypeSchema,\n referenceId: uuid(),\n performedBy: uuid(),\n receivedAt: z.coerce.date().optional(),\n performedAt: z.coerce.date().optional(),\n reason: z.string().trim().max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n sourceType: inventoryReservationSourceTypeSchema,\n sourceId: uuid(),\n expiresAt: z.coerce.date().optional(),\n strategy: inventoryStrategySchema.optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationReleaseSchema = scopedSchema.extend({\n reservationId: uuid(),\n reason: z.string().trim().min(1).max(120),\n reasonCode: z.string().trim().max(80).optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationAllocateSchema = scopedSchema.extend({\n reservationId: uuid(),\n metadata: metadataSchema,\n})\n\nexport const inventoryAdjustSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n delta: numericQuantity.refine((value) => value !== 0, {\n message: 'Inventory delta must be non-zero.',\n }),\n reason: z.string().trim().min(1).max(500),\n reasonCode: z.string().trim().max(80).optional(),\n referenceType: inventoryMovementReferenceTypeSchema.default('manual'),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryMoveSchema = scopedSchema.extend({\n warehouseId: uuid(),\n fromLocationId: uuid(),\n toLocationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n type: inventoryMovementTypeSchema.optional(),\n reason: z.string().trim().min(1).max(500),\n reasonCode: z.string().trim().max(80).optional(),\n referenceType: inventoryMovementReferenceTypeSchema.default('manual'),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryCycleCountSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n countedQuantity: nonNegativeQuantity,\n autoAdjust: z.boolean().default(true),\n reason: z.string().trim().min(1).max(500),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryMovementCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationFromId: uuid().optional(),\n locationToId: uuid().optional(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n type: inventoryMovementTypeSchema,\n referenceType: inventoryMovementReferenceTypeSchema,\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date(),\n receivedAt: z.coerce.date(),\n reason: z.string().trim().max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport type WarehouseCreateInput = z.infer<typeof warehouseCreateSchema>\nexport type WarehouseUpdateInput = z.infer<typeof warehouseUpdateSchema>\nexport type WarehouseZoneCreateInput = z.infer<typeof warehouseZoneCreateSchema>\nexport type WarehouseZoneUpdateInput = z.infer<typeof warehouseZoneUpdateSchema>\nexport type WarehouseLocationCreateInput = z.infer<typeof warehouseLocationCreateSchema>\nexport type WarehouseLocationUpdateInput = z.infer<typeof warehouseLocationUpdateSchema>\nexport type ProductInventoryProfileCreateInput = z.infer<typeof productInventoryProfileCreateSchema>\nexport type ProductInventoryProfileUpdateInput = z.infer<typeof productInventoryProfileUpdateSchema>\nexport type InventoryLotCreateInput = z.infer<typeof inventoryLotCreateSchema>\nexport type InventoryLotUpdateInput = z.infer<typeof inventoryLotUpdateSchema>\nexport type InventoryReceiveInput = z.infer<typeof inventoryReceiveSchema>\nexport type InventoryReservationCreateInput = z.infer<typeof inventoryReservationCreateSchema>\nexport type InventoryReservationReleaseInput = z.infer<typeof inventoryReservationReleaseSchema>\nexport type InventoryReservationAllocateInput = z.infer<typeof inventoryReservationAllocateSchema>\nexport type InventoryAdjustInput = z.infer<typeof inventoryAdjustSchema>\nexport type InventoryMoveInput = z.infer<typeof inventoryMoveSchema>\nexport type InventoryCycleCountInput = z.infer<typeof inventoryCycleCountSchema>\n\nexport const salesOrderWarehouseAssignBodySchema = scopedSchema.extend({\n warehouseId: uuid(),\n notes: z.string().trim().max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport const salesOrderWarehouseAssignSchema = salesOrderWarehouseAssignBodySchema.extend({\n salesOrderId: uuid(),\n})\n\nexport const salesOrderWarehouseUnassignSchema = scopedSchema.extend({\n salesOrderId: uuid(),\n metadata: metadataSchema,\n})\n\nexport type SalesOrderWarehouseAssignInput = z.infer<typeof salesOrderWarehouseAssignSchema>\nexport type SalesOrderWarehouseUnassignInput = z.infer<typeof salesOrderWarehouseUnassignSchema>\n\nexport const inventoryImportRawRowSchema = z.object({\n warehouseCode: z.string().trim().optional(),\n warehouseId: uuid().optional(),\n locationCode: z.string().trim().optional(),\n locationId: uuid().optional(),\n sku: z.string().trim().optional(),\n catalogVariantId: uuid().optional(),\n quantity: z.string().trim().optional(),\n lotNumber: z.string().trim().optional(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().optional(),\n})\n\nexport const inventoryImportModeSchema = z.enum(['additive', 'reconcile']).default('additive')\n\nexport const inventoryImportValidateSchema = scopedSchema.extend({\n importBatchId: uuid().optional(),\n skipDuplicates: z.boolean().optional(),\n mode: inventoryImportModeSchema,\n rows: z.array(inventoryImportRawRowSchema).min(1).max(5000),\n})\n\nexport const inventoryImportApplyRowSchema = z.object({\n rowNumber: z.number().int().positive(),\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n quantity: nonNegativeQuantity,\n delta: numericQuantity,\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n})\n\nexport const inventoryImportApplySchema = scopedSchema.extend({\n importBatchId: uuid(),\n reason: z.string().trim().min(1).max(500).default('CSV import inventory receipt'),\n continueOnError: z.boolean().optional(),\n mode: inventoryImportModeSchema,\n rows: z.array(inventoryImportApplyRowSchema).min(1).max(5000),\n})\n\nexport type InventoryImportApplyServerInput = z.infer<typeof inventoryImportApplySchema> & {\n performedBy: string\n}\n\nexport type InventoryImportMode = z.infer<typeof inventoryImportModeSchema>\nexport type InventoryImportValidateInput = z.infer<typeof inventoryImportValidateSchema>\nexport type InventoryImportApplyInput = InventoryImportApplyServerInput\nexport type InventoryImportApplyRowInput = z.infer<typeof inventoryImportApplyRowSchema>\n\nexport const operationalDashboardQuerySchema = z.object({\n warehouseId: z.string().uuid().optional(),\n})\n\nexport const operationalDashboardKpiSchema = z.object({\n id: z.enum(['lowStock', 'reorderCritical', 'expiringSoon', 'pastDue', 'agingReservations', 'todaysMoves']),\n count: z.number(),\n deltaSinceYesterday: z.number().nullable(),\n sparkline: z.array(z.number()),\n})\n\nexport const operationalDashboardExpiryLotSchema = z.object({\n id: z.string().uuid(),\n lotNumber: z.string(),\n sku: z.string(),\n expiresAt: z.string(),\n availableQuantity: z.number(),\n category: z.enum(['expiringSoon', 'pastDue']),\n})\n\nexport const operationalDashboardResponseSchema = z.object({\n lastUpdatedAt: z.string(),\n warehouseId: z.string().uuid().nullable(),\n kpis: z.array(operationalDashboardKpiSchema),\n expiryLots: z.array(operationalDashboardExpiryLotSchema),\n monthlyTrends: z.array(\n z.object({\n month: z.string(),\n receive: z.number(),\n allocate: z.number(),\n }),\n ),\n recentActivity: z.array(\n z.object({\n id: z.string().uuid(),\n movementType: z.string(),\n quantity: z.number(),\n variantSku: z.string().nullable(),\n variantId: z.string().uuid(),\n referenceType: z.string().nullable(),\n referenceId: z.string().nullable(),\n reason: z.string().nullable(),\n locationLabel: z.string(),\n performedAt: z.string(),\n }),\n ),\n})\n\nexport type OperationalDashboardQueryInput = z.infer<typeof operationalDashboardQuerySchema>\nexport type OperationalDashboardResponse = z.infer<typeof operationalDashboardResponseSchema>\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from 'zod'\n\nconst uuid = () => z.string().uuid()\nconst numericQuantity = z.coerce.number().finite()\nconst positiveQuantity = numericQuantity.gt(0)\nconst nonNegativeQuantity = numericQuantity.min(0)\n\nconst scopedSchema = z.object({\n organizationId: uuid(),\n tenantId: uuid(),\n})\n\nconst warehouseLocationTypeSchema = z.enum(['zone', 'aisle', 'rack', 'bin', 'slot', 'dock', 'staging'])\nconst inventoryStrategySchema = z.enum(['fifo', 'lifo', 'fefo'])\nconst inventoryLotStatusSchema = z.enum(['available', 'hold', 'quarantine', 'expired'])\nconst inventoryReservationSourceTypeSchema = z.enum(['order', 'transfer', 'manual'])\nconst inventoryReservationStatusSchema = z.enum(['active', 'released', 'fulfilled'])\nconst inventoryMovementTypeSchema = z.enum([\n 'receipt',\n 'putaway',\n 'pick',\n 'pack',\n 'ship',\n 'adjust',\n 'transfer',\n 'cycle_count',\n 'return_receive',\n])\nconst inventoryMovementReferenceTypeSchema = z.enum(['po', 'so', 'transfer', 'manual', 'qc', 'rma'])\n\nconst metadataSchema = z.record(z.string(), z.unknown()).optional()\n\nconst enforcePrimaryRequiresActiveWarehouse = (\n payload: { isActive?: boolean; isPrimary?: boolean },\n ctx: z.RefinementCtx,\n) => {\n if (payload.isPrimary === true && payload.isActive === false) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['isPrimary'],\n message: 'Inactive warehouses cannot be marked as primary.',\n })\n }\n}\n\nconst warehouseFieldsSchema = scopedSchema.extend({\n name: z.string().trim().min(1).max(200),\n code: z.string().trim().min(1).max(80),\n isActive: z.boolean().optional(),\n isPrimary: z.boolean().optional(),\n addressLine1: z.string().trim().max(255).optional(),\n city: z.string().trim().max(150).optional(),\n postalCode: z.string().trim().max(40).optional(),\n country: z.string().trim().max(120).optional(),\n timezone: z.string().trim().max(120).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseCreateSchema = warehouseFieldsSchema.superRefine(enforcePrimaryRequiresActiveWarehouse)\n\nexport const warehouseUpdateSchema = z\n .object({ id: uuid() })\n .merge(warehouseFieldsSchema.partial())\n .superRefine(enforcePrimaryRequiresActiveWarehouse)\n\nexport const warehouseZoneCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n code: z.string().trim().min(1).max(80),\n name: z.string().trim().min(1).max(200),\n priority: z.coerce.number().int().min(0).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseZoneUpdateSchema = z.object({ id: uuid() }).merge(warehouseZoneCreateSchema.partial())\n\nexport const warehouseLocationCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n code: z.string().trim().min(1).max(120),\n type: warehouseLocationTypeSchema,\n parentId: uuid().nullable().optional(),\n isActive: z.boolean().optional(),\n capacityUnits: nonNegativeQuantity.optional(),\n capacityWeight: nonNegativeQuantity.optional(),\n constraints: z.record(z.string(), z.unknown()).optional(),\n metadata: metadataSchema,\n})\n\nexport const warehouseLocationUpdateSchema = z.object({ id: uuid() }).merge(warehouseLocationCreateSchema.partial())\n\nconst productInventoryProfileBaseSchema = scopedSchema.extend({\n catalogProductId: uuid(),\n catalogVariantId: uuid().nullable().optional(),\n defaultUom: z.string().trim().min(1).max(32),\n trackLot: z.boolean().optional(),\n trackSerial: z.boolean().optional(),\n trackExpiration: z.boolean().optional(),\n defaultStrategy: inventoryStrategySchema,\n reorderPoint: nonNegativeQuantity.optional(),\n safetyStock: nonNegativeQuantity.optional(),\n metadata: metadataSchema,\n})\n\nconst enforceFefoWhenExpirationTracked = (\n payload: { trackExpiration?: boolean; defaultStrategy?: 'fifo' | 'lifo' | 'fefo' },\n ctx: z.RefinementCtx,\n) => {\n if (\n payload.trackExpiration === true &&\n payload.defaultStrategy !== undefined &&\n payload.defaultStrategy !== 'fefo'\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['defaultStrategy'],\n message: 'FEFO is required when expiration tracking is enabled.',\n })\n }\n}\n\nexport const productInventoryProfileCreateSchema =\n productInventoryProfileBaseSchema.superRefine(enforceFefoWhenExpirationTracked)\n\nexport const productInventoryProfileUpdateSchema = z\n .object({ id: uuid() })\n .merge(productInventoryProfileBaseSchema.partial())\n .superRefine(enforceFefoWhenExpirationTracked)\n\nconst inventoryLotBaseSchema = scopedSchema.extend({\n catalogVariantId: uuid(),\n sku: z.string().trim().min(1).max(120),\n lotNumber: z.string().trim().min(1).max(120),\n batchNumber: z.string().trim().max(120).optional(),\n manufacturedAt: z.coerce.date().optional(),\n bestBeforeAt: z.coerce.date().optional(),\n expiresAt: z.coerce.date().optional(),\n status: inventoryLotStatusSchema.optional(),\n metadata: metadataSchema,\n})\n\nconst enforceLotDateOrdering = (\n payload: { manufacturedAt?: Date; bestBeforeAt?: Date; expiresAt?: Date },\n ctx: z.RefinementCtx,\n) => {\n if (payload.manufacturedAt && payload.bestBeforeAt && payload.bestBeforeAt < payload.manufacturedAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['bestBeforeAt'],\n message: 'Best-before date must be on or after manufactured date.',\n })\n }\n if (payload.bestBeforeAt && payload.expiresAt && payload.expiresAt < payload.bestBeforeAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['expiresAt'],\n message: 'Expiration date must be on or after best-before date.',\n })\n }\n if (payload.manufacturedAt && payload.expiresAt && payload.expiresAt < payload.manufacturedAt) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['expiresAt'],\n message: 'Expiration date must be on or after manufactured date.',\n })\n }\n}\n\nexport const inventoryLotCreateSchema = inventoryLotBaseSchema.superRefine(enforceLotDateOrdering)\n\nexport const inventoryLotUpdateSchema = z\n .object({\n id: uuid(),\n // Optional status-change note merged into lot.metadata.notes by the update command.\n notes: z.string().trim().max(500).optional(),\n })\n .merge(inventoryLotBaseSchema.partial())\n .superRefine(enforceLotDateOrdering)\n\nconst inventoryLowStockFilterSchema = z.enum(['belowReorder', 'belowSafety'])\n\nexport const inventoryBalanceListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n locationId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n lowStock: inventoryLowStockFilterSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryMovementListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n locationId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n referenceType: inventoryMovementReferenceTypeSchema.optional(),\n referenceId: uuid().optional(),\n type: inventoryMovementTypeSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryReservationListQuerySchema = z.object({\n page: z.coerce.number().min(1).default(1),\n pageSize: z.coerce.number().min(1).max(100).default(25),\n warehouseId: uuid().optional(),\n catalogVariantId: uuid().optional(),\n lotId: uuid().optional(),\n sourceType: inventoryReservationSourceTypeSchema.optional(),\n sourceId: uuid().optional(),\n status: inventoryReservationStatusSchema.optional(),\n search: z.string().optional(),\n}).passthrough()\n\nexport const inventoryReceiveSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n lotNumber: z.string().trim().max(120).optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n referenceType: inventoryMovementReferenceTypeSchema,\n referenceId: uuid(),\n performedBy: uuid(),\n receivedAt: z.coerce.date().optional(),\n performedAt: z.coerce.date().optional(),\n reason: z.string().trim().max(500).optional(),\n reasonCode: z.string().trim().max(80).optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n sourceType: inventoryReservationSourceTypeSchema,\n sourceId: uuid(),\n expiresAt: z.coerce.date().optional(),\n strategy: inventoryStrategySchema.optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationReleaseSchema = scopedSchema.extend({\n reservationId: uuid(),\n reason: z.string().trim().min(1).max(120),\n reasonCode: z.string().trim().max(80).optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryReservationAllocateSchema = scopedSchema.extend({\n reservationId: uuid(),\n metadata: metadataSchema,\n})\n\nexport const inventoryAdjustSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n delta: numericQuantity.refine((value) => value !== 0, {\n message: 'Inventory delta must be non-zero.',\n }),\n reason: z.string().trim().min(1).max(500),\n reasonCode: z.string().trim().max(80).optional(),\n referenceType: inventoryMovementReferenceTypeSchema.default('manual'),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryMoveSchema = scopedSchema.extend({\n warehouseId: uuid(),\n fromLocationId: uuid(),\n toLocationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n type: inventoryMovementTypeSchema.optional(),\n reason: z.string().trim().min(1).max(500),\n reasonCode: z.string().trim().max(80).optional(),\n referenceType: inventoryMovementReferenceTypeSchema.default('manual'),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryCycleCountSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n countedQuantity: nonNegativeQuantity,\n autoAdjust: z.boolean().default(true),\n reason: z.string().trim().min(1).max(500),\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n})\n\nexport const inventoryMovementCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n locationFromId: uuid().optional(),\n locationToId: uuid().optional(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n quantity: positiveQuantity,\n type: inventoryMovementTypeSchema,\n referenceType: inventoryMovementReferenceTypeSchema,\n referenceId: uuid(),\n performedBy: uuid(),\n performedAt: z.coerce.date(),\n receivedAt: z.coerce.date(),\n reason: z.string().trim().max(500).optional(),\n metadata: metadataSchema,\n})\n\n/** Statuses clients may set on create/update \u2014 terminal received/closed come from receive/complete. */\nconst asnWritableStatusSchema = z.enum(['draft', 'in_transit'])\n\nexport const receivingLineCreateFieldsSchema = z.object({\n catalogVariantId: uuid(),\n expectedQty: positiveQuantity,\n lotNumber: z.string().trim().max(120).optional().nullable(),\n serialNumbers: z.array(z.string().trim().min(1).max(120)).optional().nullable(),\n targetStagingLocationId: uuid().optional().nullable(),\n metadata: metadataSchema,\n})\n\nexport const asnCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n vendorId: uuid().optional().nullable(),\n status: asnWritableStatusSchema.optional(),\n expectedAt: z.coerce.date(),\n referenceNumber: z.string().trim().max(120).optional().nullable(),\n /**\n * Stable external linkage key; unique per org when set (procurement goods receipt, etc.).\n * Server/system creates only \u2014 public HTTP create strips this; authenticated clients cannot set it.\n */\n sourceKey: z.string().trim().min(1).max(200).optional().nullable(),\n notes: z.string().trim().max(2000).optional().nullable(),\n lines: z.array(receivingLineCreateFieldsSchema).optional(),\n metadata: metadataSchema,\n})\n\n/** Public ASN create body \u2014 omits `sourceKey` so clients cannot spoof procurement linkage. */\nexport const asnCreatePublicSchema = asnCreateSchema.omit({ sourceKey: true })\n\nexport const asnUpdateSchema = z\n .object({ id: uuid() })\n .merge(\n scopedSchema\n .extend({\n warehouseId: uuid(),\n vendorId: uuid().nullable(),\n status: asnWritableStatusSchema,\n expectedAt: z.coerce.date(),\n referenceNumber: z.string().trim().max(120).nullable(),\n notes: z.string().trim().max(2000).nullable(),\n metadata: metadataSchema,\n })\n .partial(),\n )\n\nexport const receivingLineCreateSchema = scopedSchema.extend({\n asnId: uuid(),\n catalogVariantId: uuid(),\n expectedQty: positiveQuantity,\n lotNumber: z.string().trim().max(120).optional().nullable(),\n serialNumbers: z.array(z.string().trim().min(1).max(120)).optional().nullable(),\n targetStagingLocationId: uuid().optional().nullable(),\n metadata: metadataSchema,\n})\n\n// Lifecycle fields (receivedQty / qcStatus / rejectionReason) are intentionally\n// omitted \u2014 only `wms.asns.receive-line` may mutate them.\nexport const receivingLineUpdateSchema = z\n .object({ id: uuid() })\n .merge(\n scopedSchema\n .extend({\n catalogVariantId: uuid(),\n expectedQty: positiveQuantity,\n lotNumber: z.string().trim().max(120).nullable(),\n serialNumbers: z.array(z.string().trim().min(1).max(120)).nullable(),\n targetStagingLocationId: uuid().nullable(),\n metadata: metadataSchema,\n })\n .partial(),\n )\n\nexport const asnReceiveLineSchema = scopedSchema\n .extend({\n asnId: uuid(),\n lineId: uuid(),\n receivedQty: positiveQuantity,\n /**\n * Absolute received quantity the client intends after this attempt.\n * Required for QC-pass and QC-fail so retries after success remain\n * idempotent (applyQty=0) even if prior qty advanced. Do not derive from\n * delta alone \u2014 QC-fail still advances audit receivedQty.\n */\n targetReceivedQty: positiveQuantity.optional(),\n /** Optional client-stable attempt id; extra stabilizer alongside absolute target. */\n idempotencyKey: uuid().optional(),\n targetStagingLocationId: uuid().optional(),\n lotId: uuid().optional(),\n lotNumber: z.string().trim().max(120).optional(),\n serialNumbers: z.array(z.string().trim().min(1).max(120)).optional(),\n qcStatus: z.enum(['passed', 'failed']),\n rejectionReason: z.string().trim().max(500).optional(),\n performedBy: uuid(),\n receivedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n })\n .superRefine((value, ctx) => {\n if (value.targetReceivedQty == null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['targetReceivedQty'],\n message: 'target_received_qty_required',\n })\n }\n })\n\nexport const asnCloseSchema = scopedSchema.extend({\n id: uuid(),\n closeWhenShort: z.boolean().optional(),\n})\n\nexport const putawayTaskCreateSchema = scopedSchema.extend({\n warehouseId: uuid(),\n sourceLocationId: uuid(),\n targetLocationId: uuid().optional().nullable(),\n catalogVariantId: uuid(),\n lotId: uuid().optional().nullable(),\n quantity: positiveQuantity,\n priority: z.coerce.number().int().min(0).max(100).optional(),\n assignedTo: uuid().optional().nullable(),\n metadata: metadataSchema,\n})\n\n// Status and assignee transitions are intentionally omitted \u2014 only lifecycle\n// commands (assign/start/complete/cancel) may change those fields.\nexport const putawayTaskUpdateSchema = z\n .object({ id: uuid() })\n .merge(\n scopedSchema\n .extend({\n warehouseId: uuid(),\n sourceLocationId: uuid(),\n targetLocationId: uuid().nullable(),\n catalogVariantId: uuid(),\n lotId: uuid().nullable(),\n quantity: positiveQuantity,\n priority: z.coerce.number().int().min(0).max(100),\n metadata: metadataSchema,\n })\n .partial(),\n )\n\nexport const putawayTaskCreateFromBalanceSchema = scopedSchema.extend({\n warehouseId: uuid(),\n sourceLocationId: uuid(),\n targetLocationId: uuid(),\n catalogVariantId: uuid(),\n lotId: uuid().optional(),\n quantity: positiveQuantity,\n priority: z.coerce.number().int().min(0).max(100).optional(),\n assignedTo: uuid().optional().nullable(),\n metadata: metadataSchema,\n})\n\nexport const putawayTaskAssignSchema = scopedSchema.extend({\n id: uuid(),\n assignedTo: uuid(),\n})\n\nexport const putawayTaskStartSchema = scopedSchema.extend({\n id: uuid(),\n})\n\nexport const putawayTaskCompleteSchema = scopedSchema.extend({\n id: uuid(),\n confirmedQuantity: positiveQuantity,\n targetLocationId: uuid(),\n lotId: uuid().optional(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n reason: z.string().trim().min(1).max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport const putawayTaskCancelSchema = scopedSchema.extend({\n id: uuid(),\n})\n\nexport type WarehouseCreateInput = z.infer<typeof warehouseCreateSchema>\nexport type WarehouseUpdateInput = z.infer<typeof warehouseUpdateSchema>\nexport type WarehouseZoneCreateInput = z.infer<typeof warehouseZoneCreateSchema>\nexport type WarehouseZoneUpdateInput = z.infer<typeof warehouseZoneUpdateSchema>\nexport type WarehouseLocationCreateInput = z.infer<typeof warehouseLocationCreateSchema>\nexport type WarehouseLocationUpdateInput = z.infer<typeof warehouseLocationUpdateSchema>\nexport type ProductInventoryProfileCreateInput = z.infer<typeof productInventoryProfileCreateSchema>\nexport type ProductInventoryProfileUpdateInput = z.infer<typeof productInventoryProfileUpdateSchema>\nexport type InventoryLotCreateInput = z.infer<typeof inventoryLotCreateSchema>\nexport type InventoryLotUpdateInput = z.infer<typeof inventoryLotUpdateSchema>\nexport type InventoryReceiveInput = z.infer<typeof inventoryReceiveSchema>\nexport type InventoryReservationCreateInput = z.infer<typeof inventoryReservationCreateSchema>\nexport type InventoryReservationReleaseInput = z.infer<typeof inventoryReservationReleaseSchema>\nexport type InventoryReservationAllocateInput = z.infer<typeof inventoryReservationAllocateSchema>\nexport type InventoryAdjustInput = z.infer<typeof inventoryAdjustSchema>\nexport type InventoryMoveInput = z.infer<typeof inventoryMoveSchema>\nexport type InventoryCycleCountInput = z.infer<typeof inventoryCycleCountSchema>\nexport type AsnCreateInput = z.infer<typeof asnCreateSchema>\nexport type AsnCreatePublicInput = z.infer<typeof asnCreatePublicSchema>\nexport type AsnUpdateInput = z.infer<typeof asnUpdateSchema>\nexport type ReceivingLineCreateInput = z.infer<typeof receivingLineCreateSchema>\nexport type ReceivingLineUpdateInput = z.infer<typeof receivingLineUpdateSchema>\nexport type AsnReceiveLineInput = z.infer<typeof asnReceiveLineSchema>\nexport type AsnCloseInput = z.infer<typeof asnCloseSchema>\nexport type PutawayTaskCreateInput = z.infer<typeof putawayTaskCreateSchema>\nexport type PutawayTaskUpdateInput = z.infer<typeof putawayTaskUpdateSchema>\nexport type PutawayTaskCreateFromBalanceInput = z.infer<typeof putawayTaskCreateFromBalanceSchema>\nexport type PutawayTaskAssignInput = z.infer<typeof putawayTaskAssignSchema>\nexport type PutawayTaskStartInput = z.infer<typeof putawayTaskStartSchema>\nexport type PutawayTaskCompleteInput = z.infer<typeof putawayTaskCompleteSchema>\nexport type PutawayTaskCancelInput = z.infer<typeof putawayTaskCancelSchema>\n\nexport const scanResolveLocationSchema = scopedSchema.extend({\n warehouseId: uuid(),\n code: z.string().trim().min(1).max(120),\n})\n\nexport const scanResolveLotSchema = scopedSchema.extend({\n catalogVariantId: uuid(),\n lotNumber: z.string().trim().min(1).max(120),\n})\n\nexport const scanReceiveSchema = scopedSchema\n .extend({\n asnId: uuid(),\n lineId: uuid(),\n locationCode: z.string().trim().min(1).max(120),\n lotNumber: z.string().trim().max(120).optional(),\n serialNumbers: z.array(z.string().trim().min(1).max(120)).optional(),\n receivedQty: positiveQuantity,\n /**\n * Absolute received quantity after this attempt. Required for QC-pass and\n * QC-fail so identical retries no-op (applyQty=0). Do not derive as\n * prior+delta in scan resolve \u2014 that doubles stock/audit qty on retry.\n */\n targetReceivedQty: positiveQuantity.optional(),\n /** Optional client-stable attempt id; extra stabilizer alongside absolute target. */\n idempotencyKey: uuid().optional(),\n qcStatus: z.enum(['passed', 'failed']),\n rejectionReason: z.string().trim().max(500).optional(),\n performedBy: uuid(),\n receivedAt: z.coerce.date().optional(),\n metadata: metadataSchema,\n })\n .superRefine((value, ctx) => {\n if (value.targetReceivedQty == null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['targetReceivedQty'],\n message: 'target_received_qty_required',\n })\n }\n })\n\nexport const scanPutawaySchema = scopedSchema.extend({\n taskId: uuid(),\n targetLocationCode: z.string().trim().min(1).max(120),\n confirmedQuantity: positiveQuantity,\n lotId: uuid().optional(),\n performedBy: uuid(),\n performedAt: z.coerce.date().optional(),\n reason: z.string().trim().min(1).max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport type ScanResolveLocationInput = z.infer<typeof scanResolveLocationSchema>\nexport type ScanResolveLotInput = z.infer<typeof scanResolveLotSchema>\nexport type ScanReceiveInput = z.infer<typeof scanReceiveSchema>\nexport type ScanPutawayInput = z.infer<typeof scanPutawaySchema>\n\nexport const salesOrderWarehouseAssignBodySchema = scopedSchema.extend({\n warehouseId: uuid(),\n notes: z.string().trim().max(500).optional(),\n metadata: metadataSchema,\n})\n\nexport const salesOrderWarehouseAssignSchema = salesOrderWarehouseAssignBodySchema.extend({\n salesOrderId: uuid(),\n})\n\nexport const salesOrderWarehouseUnassignSchema = scopedSchema.extend({\n salesOrderId: uuid(),\n metadata: metadataSchema,\n})\n\nexport type SalesOrderWarehouseAssignInput = z.infer<typeof salesOrderWarehouseAssignSchema>\nexport type SalesOrderWarehouseUnassignInput = z.infer<typeof salesOrderWarehouseUnassignSchema>\n\nexport const inventoryImportRawRowSchema = z.object({\n warehouseCode: z.string().trim().optional(),\n warehouseId: uuid().optional(),\n locationCode: z.string().trim().optional(),\n locationId: uuid().optional(),\n sku: z.string().trim().optional(),\n catalogVariantId: uuid().optional(),\n quantity: z.string().trim().optional(),\n lotNumber: z.string().trim().optional(),\n lotId: uuid().optional(),\n serialNumber: z.string().trim().optional(),\n})\n\nexport const inventoryImportModeSchema = z.enum(['additive', 'reconcile']).default('additive')\n\nexport const inventoryImportValidateSchema = scopedSchema.extend({\n importBatchId: uuid().optional(),\n skipDuplicates: z.boolean().optional(),\n mode: inventoryImportModeSchema,\n rows: z.array(inventoryImportRawRowSchema).min(1).max(5000),\n})\n\nexport const inventoryImportApplyRowSchema = z.object({\n rowNumber: z.number().int().positive(),\n warehouseId: uuid(),\n locationId: uuid(),\n catalogVariantId: uuid(),\n quantity: nonNegativeQuantity,\n delta: numericQuantity,\n lotId: uuid().optional(),\n serialNumber: z.string().trim().max(120).optional(),\n})\n\nexport const inventoryImportApplySchema = scopedSchema.extend({\n importBatchId: uuid(),\n reason: z.string().trim().min(1).max(500).default('CSV import inventory receipt'),\n continueOnError: z.boolean().optional(),\n mode: inventoryImportModeSchema,\n rows: z.array(inventoryImportApplyRowSchema).min(1).max(5000),\n})\n\nexport type InventoryImportApplyServerInput = z.infer<typeof inventoryImportApplySchema> & {\n performedBy: string\n}\n\nexport type InventoryImportMode = z.infer<typeof inventoryImportModeSchema>\nexport type InventoryImportValidateInput = z.infer<typeof inventoryImportValidateSchema>\nexport type InventoryImportApplyInput = InventoryImportApplyServerInput\nexport type InventoryImportApplyRowInput = z.infer<typeof inventoryImportApplyRowSchema>\n\nexport const operationalDashboardQuerySchema = z.object({\n warehouseId: z.string().uuid().optional(),\n})\n\nexport const operationalDashboardKpiSchema = z.object({\n id: z.enum(['lowStock', 'reorderCritical', 'expiringSoon', 'pastDue', 'agingReservations', 'todaysMoves']),\n count: z.number(),\n deltaSinceYesterday: z.number().nullable(),\n sparkline: z.array(z.number()),\n})\n\nexport const operationalDashboardExpiryLotSchema = z.object({\n id: z.string().uuid(),\n lotNumber: z.string(),\n sku: z.string(),\n expiresAt: z.string(),\n availableQuantity: z.number(),\n category: z.enum(['expiringSoon', 'pastDue']),\n})\n\nexport const operationalDashboardResponseSchema = z.object({\n lastUpdatedAt: z.string(),\n warehouseId: z.string().uuid().nullable(),\n kpis: z.array(operationalDashboardKpiSchema),\n expiryLots: z.array(operationalDashboardExpiryLotSchema),\n monthlyTrends: z.array(\n z.object({\n month: z.string(),\n receive: z.number(),\n allocate: z.number(),\n }),\n ),\n recentActivity: z.array(\n z.object({\n id: z.string().uuid(),\n movementType: z.string(),\n quantity: z.number(),\n variantSku: z.string().nullable(),\n variantId: z.string().uuid(),\n referenceType: z.string().nullable(),\n referenceId: z.string().nullable(),\n referenceLabel: z.string().nullable().optional(),\n reason: z.string().nullable(),\n reasonCode: z.string().nullable().optional(),\n source: z.string().nullable().optional(),\n locationLabel: z.string(),\n performedAt: z.string(),\n }),\n ),\n})\n\nexport type OperationalDashboardQueryInput = z.infer<typeof operationalDashboardQuerySchema>\nexport type OperationalDashboardResponse = z.infer<typeof operationalDashboardResponseSchema>\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -27,7 +27,18 @@ const events = [
27
27
  { id: "wms.inventory.reconciled", label: "Inventory Reconciled", entity: "inventory", category: "custom" },
28
28
  { id: "wms.inventory.low_stock", label: "Inventory Low Stock", entity: "inventory", category: "lifecycle" },
29
29
  { id: "wms.inventory.balance_drift", label: "Inventory Balance Drift", entity: "inventory", category: "lifecycle" },
30
- { id: "wms.inventory.reservation_shortfall", label: "Inventory Reservation Shortfall", entity: "inventory", category: "lifecycle" }
30
+ { id: "wms.inventory.reservation_shortfall", label: "Inventory Reservation Shortfall", entity: "inventory", category: "lifecycle" },
31
+ { id: "wms.inventory.receipt_qc_failed", label: "Inventory Receipt QC Failed", entity: "inventory", category: "custom" },
32
+ { id: "wms.asn.created", label: "ASN Created", entity: "asn", category: "crud" },
33
+ { id: "wms.asn.updated", label: "ASN Updated", entity: "asn", category: "crud" },
34
+ { id: "wms.asn.receiving_started", label: "ASN Receiving Started", entity: "asn", category: "lifecycle" },
35
+ { id: "wms.asn.line_received", label: "ASN Line Received", entity: "asn", category: "custom" },
36
+ { id: "wms.asn.received", label: "ASN Received", entity: "asn", category: "lifecycle" },
37
+ { id: "wms.putaway.created", label: "Putaway Task Created", entity: "putaway", category: "crud" },
38
+ { id: "wms.putaway.assigned", label: "Putaway Task Assigned", entity: "putaway", category: "lifecycle" },
39
+ { id: "wms.putaway.started", label: "Putaway Task Started", entity: "putaway", category: "lifecycle" },
40
+ { id: "wms.putaway.completed", label: "Putaway Task Completed", entity: "putaway", category: "lifecycle" },
41
+ { id: "wms.putaway.cancelled", label: "Putaway Task Cancelled", entity: "putaway", category: "lifecycle" }
31
42
  ];
32
43
  const eventsConfig = createModuleEvents({
33
44
  moduleId: "wms",