@devx-commerce/plugin-gati 0.0.34-beta.8 → 0.0.34-beta.81

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 (380) hide show
  1. package/.medusa/server/src/admin/index.js +3 -1
  2. package/.medusa/server/src/admin/index.mjs +3 -1
  3. package/.medusa/server/src/api/admin/erp-event/query-config.js +8 -1
  4. package/.medusa/server/src/api/admin/generate-invoice/route.js +158 -0
  5. package/.medusa/server/src/api/admin/masters/utils.js +29 -1
  6. package/.medusa/server/src/api/admin/masters/validators.js +2 -2
  7. package/.medusa/server/src/api/admin/variant-options/recalculate/route.js +446 -0
  8. package/.medusa/server/src/api/admin/variant-options/sync/route.js +21 -5
  9. package/.medusa/server/src/api/erp/webhook/config.js +73 -5
  10. package/.medusa/server/src/api/erp/webhook/route.js +10 -137
  11. package/.medusa/server/src/api/erp/webhook/utils.js +8 -1
  12. package/.medusa/server/src/api/pos/customer-ledger/middleware.js +13 -0
  13. package/.medusa/server/src/api/pos/customer-ledger/route.js +50 -0
  14. package/.medusa/server/src/api/pos/generate-invoice/route.js +164 -0
  15. package/.medusa/server/src/api/pos/gold/calculate/route.js +104 -0
  16. package/.medusa/server/src/api/pos/gold/item-master-purity.js +46 -0
  17. package/.medusa/server/src/api/pos/gold/middleware.js +18 -0
  18. package/.medusa/server/src/api/pos/gold/route.js +83 -0
  19. package/.medusa/server/src/api/pos/gold-rate/route.js +37 -24
  20. package/.medusa/server/src/api/pos/middleware.js +13 -1
  21. package/.medusa/server/src/api/pos/old-gold-item/middleware.js +10 -0
  22. package/.medusa/server/src/api/pos/old-gold-item/route.js +52 -0
  23. package/.medusa/server/src/api/pos/platinumdata/middleware.js +13 -0
  24. package/.medusa/server/src/api/pos/platinumdata/route.js +41 -0
  25. package/.medusa/server/src/api/pos/silverdata/middleware.js +13 -0
  26. package/.medusa/server/src/api/pos/silverdata/route.js +41 -0
  27. package/.medusa/server/src/api/pos/wallet-balance/middleware.js +13 -0
  28. package/.medusa/server/src/api/pos/wallet-balance/route.js +68 -0
  29. package/.medusa/server/src/api/store/custom-price/validators.js +2 -2
  30. package/.medusa/server/src/api/store/customer-ledger/middleware.js +13 -0
  31. package/.medusa/server/src/api/store/customer-ledger/route.js +49 -0
  32. package/.medusa/server/src/api/store/gold-rate/validators.js +2 -2
  33. package/.medusa/server/src/api/store/middleware.js +5 -1
  34. package/.medusa/server/src/api/store/wallet-balance/middleware.js +13 -0
  35. package/.medusa/server/src/api/store/wallet-balance/route.js +67 -0
  36. package/.medusa/server/src/jobs/process-erp-events.js +128 -0
  37. package/.medusa/server/src/jobs/process-variant-option-sync.js +46 -29
  38. package/.medusa/server/src/jobs/sync-addless-detail.js +68 -0
  39. package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +97 -0
  40. package/.medusa/server/src/jobs/sync-customer-advance-payment-erp.js +105 -0
  41. package/.medusa/server/src/jobs/sync-customer-erp.js +128 -0
  42. package/.medusa/server/src/jobs/sync-item-master.js +29 -0
  43. package/.medusa/server/src/jobs/sync-labour-chart-master.js +29 -0
  44. package/.medusa/server/src/jobs/sync-order-erp.js +46 -20
  45. package/.medusa/server/src/jobs/sync-order-request-erp.js +64 -0
  46. package/.medusa/server/src/jobs/sync-payment-book-master.js +78 -0
  47. package/.medusa/server/src/jobs/sync-rate-chart-master.js +29 -0
  48. package/.medusa/server/src/jobs/sync-report-master.js +54 -0
  49. package/.medusa/server/src/jobs/sync-sale-return-policy-master.js +38 -0
  50. package/.medusa/server/src/jobs/sync-urd-purchase-erp.js +84 -0
  51. package/.medusa/server/src/lib/api-response.js +2 -1
  52. package/.medusa/server/src/links/jewel-trans-master.js +13 -0
  53. package/.medusa/server/src/links/order-master.js +13 -0
  54. package/.medusa/server/src/links/sale-master.js +13 -0
  55. package/.medusa/server/src/modules/addless-detail/index.js +13 -0
  56. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260212101102.js +15 -0
  57. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260213000000.js +47 -0
  58. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260226053037.js +15 -0
  59. package/.medusa/server/src/modules/addless-detail/models/addless-master.js +17 -0
  60. package/.medusa/server/src/modules/addless-detail/service.js +10 -0
  61. package/.medusa/server/src/modules/applicable-sale-return-policy/index.js +13 -0
  62. package/.medusa/server/src/modules/applicable-sale-return-policy/migrations/Migration20260123083526.js +15 -0
  63. package/.medusa/server/src/modules/applicable-sale-return-policy/models/applicable-sale-return-policy.js +23 -0
  64. package/.medusa/server/src/modules/applicable-sale-return-policy/service.js +10 -0
  65. package/.medusa/server/src/modules/book-list/index.js +13 -0
  66. package/.medusa/server/src/modules/book-list/migrations/Migration20260123083525.js +15 -0
  67. package/.medusa/server/src/modules/book-list/migrations/Migration20260401051011.js +14 -0
  68. package/.medusa/server/src/modules/book-list/models/book-list.js +13 -0
  69. package/.medusa/server/src/modules/book-list/service.js +10 -0
  70. package/.medusa/server/src/modules/category-group-master/migrations/Migration20250729035221.js +2 -2
  71. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +2 -2
  72. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +2 -2
  73. package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +2 -2
  74. package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +2 -2
  75. package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +2 -2
  76. package/.medusa/server/src/modules/category-master/migrations/Migration20250729040659.js +2 -2
  77. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +2 -2
  78. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +2 -2
  79. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +2 -2
  80. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +2 -2
  81. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +2 -2
  82. package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +2 -2
  83. package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +2 -2
  84. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +2 -2
  85. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +2 -2
  86. package/.medusa/server/src/modules/customer-receive-voucher/index.js +13 -0
  87. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20250115000000.js +51 -0
  88. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20260106050934.js +18 -0
  89. package/.medusa/server/src/modules/customer-receive-voucher/models/customer-receive-voucher.js +35 -0
  90. package/.medusa/server/src/modules/customer-receive-voucher/service.js +10 -0
  91. package/.medusa/server/src/modules/discount-master/migrations/Migration20250707232514.js +2 -2
  92. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051709.js +2 -2
  93. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051737.js +2 -2
  94. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +2 -2
  95. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +2 -2
  96. package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +2 -2
  97. package/.medusa/server/src/modules/erp/service.js +611 -8
  98. package/.medusa/server/src/modules/erp-event/migrations/Migration20250908040911.js +2 -2
  99. package/.medusa/server/src/modules/erp-event/migrations/Migration20250922095956.js +2 -2
  100. package/.medusa/server/src/modules/erp-event/migrations/Migration20260529052734.js +14 -0
  101. package/.medusa/server/src/modules/erp-event/models/erp-event.js +6 -1
  102. package/.medusa/server/src/modules/extended-product/migrations/Migration20250620030100.js +2 -2
  103. package/.medusa/server/src/modules/extended-product/migrations/Migration20250716041546.js +2 -2
  104. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +2 -2
  105. package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +2 -2
  106. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +2 -2
  107. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +2 -2
  108. package/.medusa/server/src/modules/extended-product/migrations/Migration20260323103543.js +14 -0
  109. package/.medusa/server/src/modules/extended-product/models/extended-product.js +2 -1
  110. package/.medusa/server/src/modules/extended-product/service.js +37 -1
  111. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030335.js +2 -2
  112. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030522.js +2 -2
  113. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629220100.js +2 -2
  114. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629223425.js +2 -2
  115. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250704064831.js +2 -2
  116. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250716121609.js +2 -2
  117. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250725104852.js +2 -2
  118. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250726232339.js +2 -2
  119. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250916065103.js +2 -2
  120. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +2 -2
  121. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +2 -2
  122. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +2 -2
  123. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +2 -2
  124. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +2 -2
  125. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251210112341.js +18 -0
  126. package/.medusa/server/src/modules/extended-variant/migrations/Migration20260616000001.js +14 -0
  127. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +4 -2
  128. package/.medusa/server/src/modules/extended-variant/service.js +37 -1
  129. package/.medusa/server/src/modules/item-master/index.js +13 -0
  130. package/.medusa/server/src/modules/item-master/migrations/Migration20260212101055.js +15 -0
  131. package/.medusa/server/src/modules/item-master/models/item-master.js +20 -0
  132. package/.medusa/server/src/modules/item-master/service.js +10 -0
  133. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +2 -2
  134. package/.medusa/server/src/modules/jewel-trans-master/index.js +13 -0
  135. package/.medusa/server/src/modules/jewel-trans-master/migrations/Migration20260226053036.js +57 -0
  136. package/.medusa/server/src/modules/jewel-trans-master/models/jewel-trans-master.js +151 -0
  137. package/.medusa/server/src/modules/jewel-trans-master/service.js +16 -0
  138. package/.medusa/server/src/modules/labour-chart-master/index.js +13 -0
  139. package/.medusa/server/src/modules/labour-chart-master/migrations/Migration20260101081502.js +15 -0
  140. package/.medusa/server/src/modules/labour-chart-master/models/labour-chart-master.js +16 -0
  141. package/.medusa/server/src/modules/labour-chart-master/service.js +10 -0
  142. package/.medusa/server/src/modules/material-purchase-master/index.js +13 -0
  143. package/.medusa/server/src/modules/material-purchase-master/migrations/Migration20260310090700.js +18 -0
  144. package/.medusa/server/src/modules/material-purchase-master/models/material-purchase-detail-line.js +24 -0
  145. package/.medusa/server/src/modules/material-purchase-master/models/material-purchase-master.js +21 -0
  146. package/.medusa/server/src/modules/material-purchase-master/service.js +12 -0
  147. package/.medusa/server/src/modules/order-master/index.js +13 -0
  148. package/.medusa/server/src/modules/order-master/migrations/Migration20260226053036.js +29 -0
  149. package/.medusa/server/src/modules/order-master/migrations/Migration20260303000001.js +30 -0
  150. package/.medusa/server/src/modules/order-master/migrations/Migration20260319094758.js +26 -0
  151. package/.medusa/server/src/modules/order-master/migrations/Migration20260320000001.js +19 -0
  152. package/.medusa/server/src/modules/order-master/models/order-master.js +112 -0
  153. package/.medusa/server/src/modules/order-master/service.js +13 -0
  154. package/.medusa/server/src/modules/order-proceed-master/index.js +13 -0
  155. package/.medusa/server/src/modules/order-proceed-master/migrations/Migration20260327100226.js +31 -0
  156. package/.medusa/server/src/modules/order-proceed-master/models/order-proceed-master.js +38 -0
  157. package/.medusa/server/src/modules/order-proceed-master/service.js +11 -0
  158. package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +2 -2
  159. package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +2 -2
  160. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +2 -2
  161. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +2 -2
  162. package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +2 -2
  163. package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +2 -2
  164. package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +2 -2
  165. package/.medusa/server/src/modules/party-master/migrations/Migration20250708123734.js +2 -2
  166. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +2 -2
  167. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +2 -2
  168. package/.medusa/server/src/modules/payment-book-master/index.js +13 -0
  169. package/.medusa/server/src/modules/payment-book-master/migrations/Migration20251203105358.js +15 -0
  170. package/.medusa/server/src/modules/payment-book-master/models/payment-book-master.js +12 -0
  171. package/.medusa/server/src/modules/payment-book-master/service.js +10 -0
  172. package/.medusa/server/src/modules/promocode-master/migrations/Migration20250819123821.js +2 -2
  173. package/.medusa/server/src/modules/promocode-master/migrations/Migration20250918095713.js +2 -2
  174. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +2 -2
  175. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +2 -2
  176. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +2 -2
  177. package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +2 -2
  178. package/.medusa/server/src/modules/rate-chart-master/index.js +13 -0
  179. package/.medusa/server/src/modules/rate-chart-master/migrations/Migration20260101081500.js +15 -0
  180. package/.medusa/server/src/modules/rate-chart-master/models/rate-chart-master.js +13 -0
  181. package/.medusa/server/src/modules/rate-chart-master/service.js +10 -0
  182. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +2 -2
  183. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +2 -2
  184. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +2 -2
  185. package/.medusa/server/src/modules/receive-voucher-master/index.js +13 -0
  186. package/.medusa/server/src/modules/receive-voucher-master/migrations/Migration20260328053649.js +16 -0
  187. package/.medusa/server/src/modules/receive-voucher-master/models/receive-voucher-master.js +27 -0
  188. package/.medusa/server/src/modules/receive-voucher-master/service.js +10 -0
  189. package/.medusa/server/src/modules/report-master/index.js +13 -0
  190. package/.medusa/server/src/modules/report-master/migrations/Migration20260121060955.js +15 -0
  191. package/.medusa/server/src/modules/report-master/migrations/Migration20260121112624.js +15 -0
  192. package/.medusa/server/src/modules/report-master/models/report-master.js +12 -0
  193. package/.medusa/server/src/modules/report-master/service.js +10 -0
  194. package/.medusa/server/src/modules/sale-master/index.js +13 -0
  195. package/.medusa/server/src/modules/sale-master/migrations/Migration20260205092935.js +15 -0
  196. package/.medusa/server/src/modules/sale-master/migrations/Migration20260205100000.js +16 -0
  197. package/.medusa/server/src/modules/sale-master/models/sale-master.js +27 -0
  198. package/.medusa/server/src/modules/sale-master/service.js +10 -0
  199. package/.medusa/server/src/modules/sale-return-master/index.js +13 -0
  200. package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260205093034.js +15 -0
  201. package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260327084135.js +14 -0
  202. package/.medusa/server/src/modules/sale-return-master/models/sale-return-master.js +18 -0
  203. package/.medusa/server/src/modules/sale-return-master/service.js +10 -0
  204. package/.medusa/server/src/modules/sale-return-policy-master/index.js +13 -0
  205. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260105061449.js +21 -0
  206. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129084920.js +14 -0
  207. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129085620.js +20 -0
  208. package/.medusa/server/src/modules/sale-return-policy-master/models/sale-return-policy-master.js +37 -0
  209. package/.medusa/server/src/modules/sale-return-policy-master/service.js +12 -0
  210. package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +2 -2
  211. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +2 -2
  212. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713113247.js +2 -2
  213. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713121440.js +2 -2
  214. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +2 -2
  215. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +2 -2
  216. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251203083315.js +2 -2
  217. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +2 -2
  218. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +2 -2
  219. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +2 -2
  220. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025135.js +2 -2
  221. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025307.js +2 -2
  222. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730032130.js +2 -2
  223. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +2 -2
  224. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +2 -2
  225. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +2 -2
  226. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +2 -2
  227. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +2 -2
  228. package/.medusa/server/src/subscribers/cutomer-updated.js +3 -1
  229. package/.medusa/server/src/subscribers/erp-batch-processor.js +147 -0
  230. package/.medusa/server/src/subscribers/order-item-update.js +11 -0
  231. package/.medusa/server/src/subscribers/party-master.js +39 -35
  232. package/.medusa/server/src/subscribers/product-sync.js +1 -1
  233. package/.medusa/server/src/subscribers/product-variant-deleted.js +27 -0
  234. package/.medusa/server/src/subscribers/shipping-info-master.js +10 -4
  235. package/.medusa/server/src/utils/build-redis-key.js +3 -1
  236. package/.medusa/server/src/utils/erp-health.js +24 -0
  237. package/.medusa/server/src/utils/state-helper.js +3 -2
  238. package/.medusa/server/src/workflows/addless-detail/index.js +11 -0
  239. package/.medusa/server/src/workflows/addless-detail/steps/create-or-update-addless-detail.js +36 -0
  240. package/.medusa/server/src/workflows/addless-detail/steps/fetch-addless-detail.js +73 -0
  241. package/.medusa/server/src/workflows/applicable-sale-return-policy/index.js +11 -0
  242. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/create-or-update-applicable-sale-return-policy.js +74 -0
  243. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/fetch-applicable-sale-return-policy.js +64 -0
  244. package/.medusa/server/src/workflows/book-list/index.js +11 -0
  245. package/.medusa/server/src/workflows/book-list/steps/create-or-update-book-list.js +59 -0
  246. package/.medusa/server/src/workflows/book-list/steps/fetch-book-list.js +64 -0
  247. package/.medusa/server/src/workflows/create-extended-product-from-product/index.js +9 -8
  248. package/.medusa/server/src/workflows/create-extended-variant-from-variant/index.js +9 -18
  249. package/.medusa/server/src/workflows/customer-advance-payment/index.js +18 -0
  250. package/.medusa/server/src/workflows/customer-advance-payment/steps/create-receive-voucher.js +71 -0
  251. package/.medusa/server/src/workflows/customer-advance-payment/steps/index.js +18 -0
  252. package/.medusa/server/src/workflows/customer-advance-payment/workflows/create-receive-voucher-workflow.js +11 -0
  253. package/.medusa/server/src/workflows/customer-advance-payment/workflows/index.js +18 -0
  254. package/.medusa/server/src/workflows/daily-rate/index.js +37 -0
  255. package/.medusa/server/src/workflows/daily-rate/perf.js +89 -0
  256. package/.medusa/server/src/workflows/daily-rate/steps/fetch-gold-rate-step.js +29 -0
  257. package/.medusa/server/src/workflows/daily-rate/steps/update-inward-metal-rates-step.js +154 -0
  258. package/.medusa/server/src/workflows/daily-rate/steps/update-party-style-metal-rates-step.js +224 -0
  259. package/.medusa/server/src/workflows/daily-rate/steps/update-style-master-metal-rates-step.js +180 -0
  260. package/.medusa/server/src/workflows/daily-rate/steps/update-unfix-order-items-on-gold-rate.js +308 -0
  261. package/.medusa/server/src/workflows/erp-batch-processing/index.js +19 -0
  262. package/.medusa/server/src/workflows/erp-batch-processing/steps/finalize-batch-processing.js +55 -0
  263. package/.medusa/server/src/workflows/erp-batch-processing/steps/index.js +20 -0
  264. package/.medusa/server/src/workflows/erp-batch-processing/steps/initialize-batch-processing.js +40 -0
  265. package/.medusa/server/src/workflows/erp-batch-processing/steps/start-batch-processing.js +22 -0
  266. package/.medusa/server/src/workflows/erp-batch-processing/workflows/erp-batch-processing.js +25 -0
  267. package/.medusa/server/src/workflows/erp-batch-processing/workflows/index.js +18 -0
  268. package/.medusa/server/src/workflows/erp-event/steps/update-erp-event.js +24 -7
  269. package/.medusa/server/src/workflows/erp-event/workflows/update-erp-event.js +1 -1
  270. package/.medusa/server/src/workflows/helpers/product-helper.js +212 -21
  271. package/.medusa/server/src/workflows/helpers/variant-helper.js +165 -162
  272. package/.medusa/server/src/workflows/hooks/product-updated.js +23 -15
  273. package/.medusa/server/src/workflows/hooks/variant-updated.js +24 -22
  274. package/.medusa/server/src/workflows/index.js +4 -1
  275. package/.medusa/server/src/workflows/inward-master/helper/index.js +28 -13
  276. package/.medusa/server/src/workflows/inward-master/steps/create-inward-exploration-lines.js +1 -2
  277. package/.medusa/server/src/workflows/inward-master/steps/create-inward-extra-charges-lines.js +1 -2
  278. package/.medusa/server/src/workflows/inward-master/steps/create-order-fulfillment-for-inward.js +196 -0
  279. package/.medusa/server/src/workflows/inward-master/steps/fetch-inward-master.js +17 -25
  280. package/.medusa/server/src/workflows/inward-master/steps/index.js +3 -1
  281. package/.medusa/server/src/workflows/inward-master/steps/notify-inward-skipped.js +38 -0
  282. package/.medusa/server/src/workflows/inward-master/steps/update-order-item-from-inward.js +259 -0
  283. package/.medusa/server/src/workflows/inward-master/workflows/create-inward.js +89 -75
  284. package/.medusa/server/src/workflows/inward-master/workflows/delete-inward.js +6 -9
  285. package/.medusa/server/src/workflows/inward-master/workflows/update-instock.js +2 -1
  286. package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +49 -7
  287. package/.medusa/server/src/workflows/item-master/index.js +11 -0
  288. package/.medusa/server/src/workflows/item-master/steps/create-or-update-item-master.js +50 -0
  289. package/.medusa/server/src/workflows/item-master/steps/fetch-item-master.js +29 -0
  290. package/.medusa/server/src/workflows/jewel-trans-master/index.js +18 -0
  291. package/.medusa/server/src/workflows/jewel-trans-master/steps/create-or-update-jewel-trans-master.js +370 -0
  292. package/.medusa/server/src/workflows/jewel-trans-master/steps/index.js +18 -0
  293. package/.medusa/server/src/workflows/labour-chart-master/index.js +11 -0
  294. package/.medusa/server/src/workflows/labour-chart-master/steps/create-or-update-labour-chart-master.js +38 -0
  295. package/.medusa/server/src/workflows/labour-chart-master/steps/fetch-labour-chart.js +31 -0
  296. package/.medusa/server/src/workflows/material-purchase-master/index.js +24 -0
  297. package/.medusa/server/src/workflows/material-purchase-master/steps/create-material-purchase-master.js +119 -0
  298. package/.medusa/server/src/workflows/material-purchase-master/steps/delete-material-purchase-master.js +102 -0
  299. package/.medusa/server/src/workflows/material-purchase-master/steps/fetch-material-purchase-master.js +60 -0
  300. package/.medusa/server/src/workflows/material-purchase-master/steps/update-material-purchase-master.js +149 -0
  301. package/.medusa/server/src/workflows/order-master/index.js +3 -0
  302. package/.medusa/server/src/workflows/order-master/order-master-webhook.js +24 -0
  303. package/.medusa/server/src/workflows/order-master/steps/create-or-update-order-master.js +275 -0
  304. package/.medusa/server/src/workflows/order-master/steps/delete-order-master-by-erp-ids.js +61 -0
  305. package/.medusa/server/src/workflows/order-master/steps/process-order-master-from-webhook.js +1038 -0
  306. package/.medusa/server/src/workflows/order-proceed-master/index.js +6 -0
  307. package/.medusa/server/src/workflows/order-proceed-master/order-proceed-master-webhook.js +26 -0
  308. package/.medusa/server/src/workflows/order-proceed-master/steps/create-or-update-order-proceed-master.js +186 -0
  309. package/.medusa/server/src/workflows/order-proceed-master/steps/delete-order-proceed-master-by-erp-ids.js +28 -0
  310. package/.medusa/server/src/workflows/orders/steps/create-sale-for-order-step.js +218 -0
  311. package/.medusa/server/src/workflows/orders/steps/find-nearest-pincodes-step.js +336 -0
  312. package/.medusa/server/src/workflows/orders/steps/get-today-gold-rate-step.js +83 -0
  313. package/.medusa/server/src/workflows/orders/steps/index.js +16 -1
  314. package/.medusa/server/src/workflows/orders/steps/revert-to-wallet-step.js +165 -0
  315. package/.medusa/server/src/workflows/orders/steps/sync-advance-payment-to-erp-step.js +191 -0
  316. package/.medusa/server/src/workflows/orders/steps/sync-buyback-to-erp-step.js +99 -0
  317. package/.medusa/server/src/workflows/orders/steps/sync-cancel-to-erp-step.js +120 -0
  318. package/.medusa/server/src/workflows/orders/steps/sync-exchange-to-erp-step.js +101 -0
  319. package/.medusa/server/src/workflows/orders/steps/sync-old-gold-to-erp-step.js +161 -0
  320. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +756 -20
  321. package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +277 -0
  322. package/.medusa/server/src/workflows/orders/steps/update-old-gold-sync-status-step.js +64 -0
  323. package/.medusa/server/src/workflows/orders/utils/apply-order-item-price-change.js +79 -0
  324. package/.medusa/server/src/workflows/orders/utils/order-helper.js +182 -37
  325. package/.medusa/server/src/workflows/orders/utils/order-request-helper.js +235 -0
  326. package/.medusa/server/src/workflows/orders/workflows/create-sale-for-order.js +10 -0
  327. package/.medusa/server/src/workflows/orders/workflows/get-today-gold-rate.js +10 -0
  328. package/.medusa/server/src/workflows/orders/workflows/index.js +4 -1
  329. package/.medusa/server/src/workflows/orders/workflows/sync-advanve-payment-to-erp.js +21 -0
  330. package/.medusa/server/src/workflows/orders/workflows/sync-old-gold-to-erp.js +24 -0
  331. package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +54 -5
  332. package/.medusa/server/src/workflows/orders/workflows/sync-sale-return-to-erp.js +11 -0
  333. package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +66 -33
  334. package/.medusa/server/src/workflows/party-master/steps/create-user-erp.js +115 -0
  335. package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +2 -1
  336. package/.medusa/server/src/workflows/party-master/steps/index.js +2 -1
  337. package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +2 -2
  338. package/.medusa/server/src/workflows/party-master/workflows/create-user-erp.js +11 -0
  339. package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
  340. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +16 -249
  341. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +103 -22
  342. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +49 -18
  343. package/.medusa/server/src/workflows/party-style-master/workflows/delete-party-style-master.js +4 -15
  344. package/.medusa/server/src/workflows/payment-book-master/index.js +11 -0
  345. package/.medusa/server/src/workflows/payment-book-master/steps/create-or-update-payment-book-master.js +37 -0
  346. package/.medusa/server/src/workflows/payment-book-master/steps/fetch-payment-book.js +64 -0
  347. package/.medusa/server/src/workflows/rate-chart-master/index.js +11 -0
  348. package/.medusa/server/src/workflows/rate-chart-master/steps/create-or-update-rate-chart-master.js +25 -0
  349. package/.medusa/server/src/workflows/rate-chart-master/steps/fetch-rate-chart.js +31 -0
  350. package/.medusa/server/src/workflows/receive-voucher-master/index.js +24 -0
  351. package/.medusa/server/src/workflows/receive-voucher-master/steps/create-receive-voucher-master.js +125 -0
  352. package/.medusa/server/src/workflows/receive-voucher-master/steps/delete-receive-voucher-master.js +45 -0
  353. package/.medusa/server/src/workflows/receive-voucher-master/steps/fetch-receive-voucher-master.js +22 -0
  354. package/.medusa/server/src/workflows/receive-voucher-master/steps/update-receive-voucher-master.js +44 -0
  355. package/.medusa/server/src/workflows/report-master/index.js +11 -0
  356. package/.medusa/server/src/workflows/report-master/steps/create-or-update-report-master.js +53 -0
  357. package/.medusa/server/src/workflows/report-master/steps/fetch-report.js +71 -0
  358. package/.medusa/server/src/workflows/sale-master/index.js +35 -0
  359. package/.medusa/server/src/workflows/sale-master/steps/create-sale-master.js +72 -0
  360. package/.medusa/server/src/workflows/sale-master/steps/delete-sale-master.js +59 -0
  361. package/.medusa/server/src/workflows/sale-master/steps/sync-extended-order-from-sale.js +40 -0
  362. package/.medusa/server/src/workflows/sale-master/steps/update-sale-master.js +95 -0
  363. package/.medusa/server/src/workflows/sale-return-master/index.js +6 -0
  364. package/.medusa/server/src/workflows/sale-return-master/sale-return-master-webhook.js +28 -0
  365. package/.medusa/server/src/workflows/sale-return-master/steps/create-or-update-sale-return-master.js +109 -0
  366. package/.medusa/server/src/workflows/sale-return-master/steps/create-sale-return-master.js +45 -0
  367. package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master-by-erp-ids.js +36 -0
  368. package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master.js +36 -0
  369. package/.medusa/server/src/workflows/sale-return-master/steps/process-sale-return-from-webhook.js +234 -0
  370. package/.medusa/server/src/workflows/sale-return-master/steps/update-sale-return-master.js +53 -0
  371. package/.medusa/server/src/workflows/sale-return-policy-master/index.js +11 -0
  372. package/.medusa/server/src/workflows/sale-return-policy-master/steps/create-or-update-sale-return-policy-master.js +91 -0
  373. package/.medusa/server/src/workflows/sale-return-policy-master/steps/fetch-sale-return-policy.js +31 -0
  374. package/.medusa/server/src/workflows/shipping-info-master/workflows/create-or-update-shipping-info.js +59 -0
  375. package/.medusa/server/src/workflows/shipping-info-master/workflows/index.js +2 -1
  376. package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +116 -10
  377. package/.medusa/server/src/workflows/style-master/workflows/delete-style-master.js +9 -1
  378. package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +6 -16
  379. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +5 -17
  380. package/package.json +18 -33
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateUnfixOrderItemsOnGoldRateStep = exports.updateUnfixOrderItemsOnGoldRateStepId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const quality_master_1 = require("../../../modules/quality-master");
7
+ const build_redis_key_1 = require("../../../utils/build-redis-key");
8
+ const apply_order_item_price_change_1 = require("../../orders/utils/apply-order-item-price-change");
9
+ const perf_1 = require("../perf");
10
+ const extractKarat = (variant) => {
11
+ if (!variant?.options)
12
+ return null;
13
+ for (const option of variant.options) {
14
+ const value = option.value;
15
+ if (!value)
16
+ continue;
17
+ const match = value.match(/(\d+)\s*K/i);
18
+ if (match?.[1] && ["14", "18", "22", "24"].includes(match[1])) {
19
+ return match[1];
20
+ }
21
+ }
22
+ return null;
23
+ };
24
+ const findRate = (list, karat) => {
25
+ if (!list)
26
+ return null;
27
+ return list.find((x) => x.rate === `${karat}K`)?.amount ?? null;
28
+ };
29
+ const buildQlyMap = (oldList, newList) => {
30
+ const karats = ["14", "18", "22", "24"];
31
+ const map = {};
32
+ for (const k of karats) {
33
+ const oldAmt = findRate(oldList, k);
34
+ const newAmt = findRate(newList, k);
35
+ map[k] = oldAmt !== null && newAmt !== null ? newAmt - oldAmt : null;
36
+ }
37
+ return map;
38
+ };
39
+ exports.updateUnfixOrderItemsOnGoldRateStepId = "update-unfix-order-items-on-gold-rate-step";
40
+ exports.updateUnfixOrderItemsOnGoldRateStep = (0, workflows_sdk_1.createStep)(exports.updateUnfixOrderItemsOnGoldRateStepId, async (input, { container }) => {
41
+ const { gold24kSaleRate } = input;
42
+ const logger = container.resolve("logger");
43
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
44
+ const orderService = container.resolve(utils_1.Modules.ORDER);
45
+ // Build the current per-karat rate list from the freshly-fetched 24K sale
46
+ // rate — the same input the catalog steps reprice from — using the same
47
+ // QualityMaster lookup pattern as updateStyleMasterMetalRatesStep /
48
+ // updateInwardMetalRatesStep: one listQualityMasters() call → a
49
+ // qly_code → clarity map. This avoids re-calling getTodayGoldRate (an extra
50
+ // ERP/cache round-trip that could diverge from the catalog).
51
+ //
52
+ // IMPORTANT: those catalog steps key the map on `qly_clarity` (the internal
53
+ // cost basis). The ORDER price must instead use `qly_mfg_clarity`, because
54
+ // each order's stored baseline (order.metadata.goldRate) and the
55
+ // customer-quoted POS rate are built from qly_mfg_clarity
56
+ // (getTodayGoldRateStep / pos gold-rate route). Keying on qly_clarity here
57
+ // would put the new per-karat rates on a different scale than the baseline
58
+ // and corrupt the diff. Formula and rounding (none) mirror
59
+ // getTodayGoldRateStep; 24K is always 100% purity.
60
+ const qualityService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
61
+ const allQualities = await qualityService.listQualityMasters({}, { select: ["qly_code", "qly_mfg_clarity"] });
62
+ const clarityByKarat = new Map();
63
+ for (const q of allQualities) {
64
+ if (q.qly_mfg_clarity != null) {
65
+ clarityByKarat.set(q.qly_code, q.qly_mfg_clarity);
66
+ }
67
+ }
68
+ clarityByKarat.set("24", 100); // 24K is always 100% purity
69
+ const currentGoldRateList = ["14", "18", "22", "24"]
70
+ .map((karat) => {
71
+ const clarity = clarityByKarat.get(karat);
72
+ if (clarity == null)
73
+ return null;
74
+ return { rate: `${karat}K`, amount: (gold24kSaleRate * clarity) / 100 };
75
+ })
76
+ .filter(Boolean);
77
+ logger.info(`[DailyRate][OrderItems] Starting — gold24kSaleRate=${gold24kSaleRate} currentRates=${JSON.stringify(currentGoldRateList)}`);
78
+ // Warm the shared POS gold-rate cache with the rates we just computed.
79
+ // fetchGoldRateStep invalidated this cache, and getTodayGoldRate (used by
80
+ // the order-detail display + on-demand persist) writes the same key/shape.
81
+ // If we leave it cold, the next order view re-fetches the rate on its own
82
+ // and — if it differs at all from what this batch used — reprices AGAIN,
83
+ // producing a duplicate/oscillating "Gold rate update" that fights this
84
+ // batch. Warming it (as the old getTodayGoldRate-inside-batch call did)
85
+ // keeps every downstream reader on the exact rate we repriced from.
86
+ try {
87
+ const cacheService = container.resolve(utils_1.Modules.CACHE);
88
+ await cacheService.set((0, build_redis_key_1.buildRedisKey)("pos:gold-rate", {}), { currentGoldRateList }, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
89
+ }
90
+ catch (cacheErr) {
91
+ logger.warn(`[DailyRate][OrderItems] Failed to warm gold-rate cache: ${cacheErr?.message}`);
92
+ }
93
+ // Only consider make_to_order orders. Resolve their ids up front from
94
+ // extended_order.order_type (a real, queryable column) and filter the order
95
+ // query by id — order.metadata.cart_order_type is jsonb and not reliably
96
+ // filterable. This mirrors the POS orders-list route's pattern and avoids
97
+ // scanning every order on each daily-rate event.
98
+ const { data: mtoExtendedOrders } = await query.graph({
99
+ entity: "extended_order",
100
+ fields: ["order_id"],
101
+ filters: { order_type: "make_to_order" },
102
+ });
103
+ const mtoOrderIds = (mtoExtendedOrders ?? [])
104
+ .map((eo) => eo.order_id)
105
+ .filter(Boolean);
106
+ logger.info(`[DailyRate][OrderItems] make_to_order orders to scan: ${mtoOrderIds.length}`);
107
+ if (!mtoOrderIds.length) {
108
+ logger.info(`[DailyRate][OrderItems] Done — ordersUpdated=0 itemsUpdated=0 (no make_to_order orders)`);
109
+ return new workflows_sdk_1.StepResponse({ ordersUpdated: 0, itemsUpdated: 0 });
110
+ }
111
+ let offset = 0;
112
+ let ordersUpdated = 0;
113
+ let itemsUpdated = 0;
114
+ // Diagnostics: count why orders/items are skipped so a run that updates
115
+ // nothing tells us the reason instead of being silent.
116
+ const skips = {
117
+ status: 0,
118
+ not_mto: 0,
119
+ has_sale: 0,
120
+ no_baseline: 0,
121
+ no_item_change: 0,
122
+ item_price_fixed: 0,
123
+ item_no_karat: 0,
124
+ item_rate_unchanged: 0,
125
+ item_no_weight: 0,
126
+ item_same_price: 0,
127
+ };
128
+ while (true) {
129
+ const { data: orders } = await query.graph({
130
+ entity: "order",
131
+ fields: [
132
+ "id",
133
+ "status",
134
+ "metadata",
135
+ "items.*",
136
+ "items.variant.*",
137
+ "items.variant.options.*",
138
+ "items.variant.extended_variant.*",
139
+ "extended_order.sale_external_id",
140
+ ],
141
+ filters: { id: mtoOrderIds },
142
+ pagination: { skip: offset, take: perf_1.BATCH_SIZE },
143
+ });
144
+ if (!orders.length)
145
+ break;
146
+ for (const order of orders) {
147
+ // A make_to_order order is marked "completed" once fulfilled, but its
148
+ // open-rate price must keep tracking the gold rate until it is actually
149
+ // billed in ERP. The real lock is the ERP sale (sale_external_id check
150
+ // below) — NOT order.status. So only skip truly terminal states here.
151
+ if (order.status === "canceled" || order.status === "archived") {
152
+ skips.status++;
153
+ continue;
154
+ }
155
+ if (order.metadata?.cart_order_type !== "make_to_order") {
156
+ skips.not_mto++;
157
+ continue;
158
+ }
159
+ // Skip if an ERP sale already exists for this order. sale_external_id
160
+ // is set on the extended_order at sale creation
161
+ // (create-sale-for-order-step), so a non-empty value means the order
162
+ // is billed and its prices must not move with the gold rate.
163
+ const extOrder = order.extended_order;
164
+ const saleExternalId = (Array.isArray(extOrder) ? extOrder[0] : extOrder)?.sale_external_id;
165
+ if (saleExternalId) {
166
+ skips.has_sale++;
167
+ continue;
168
+ }
169
+ const oldGoldRateList = order.metadata?.goldRate?.currentGoldRateList || null;
170
+ // No baseline rate captured for this order. We can't compute a price
171
+ // delta without a reference rate, so don't exclude it — instead
172
+ // establish the baseline from the current rate now. The next daily-rate
173
+ // change will then reprice this order correctly.
174
+ if (!oldGoldRateList) {
175
+ await orderService.updateOrders([
176
+ {
177
+ id: order.id,
178
+ metadata: {
179
+ ...(order.metadata || {}),
180
+ goldRate: { currentGoldRateList },
181
+ },
182
+ },
183
+ ]);
184
+ skips.no_baseline++;
185
+ continue;
186
+ }
187
+ const qlyMap = buildQlyMap(oldGoldRateList, currentGoldRateList);
188
+ const priceChanges = [];
189
+ for (const item of order.items || []) {
190
+ const itemMd = item.metadata || {};
191
+ if (itemMd.is_price_fixed === true) {
192
+ skips.item_price_fixed++;
193
+ continue;
194
+ }
195
+ const variant = item.variant;
196
+ const karat = extractKarat(variant);
197
+ // Metal value scales with NET metal weight — gross_weight includes
198
+ // diamonds/stones and would overstate the gold-rate delta. This
199
+ // matches the inward metal formula (amount = metalLineWeight × rate).
200
+ // Fall back to gross only if net_weight is unavailable.
201
+ //
202
+ // Prefer the inward-finalized physical weight stored on the line item
203
+ // (item.metadata) — that's the actual piece weight the inward step
204
+ // priced from. Fall back to the catalog/style weight on
205
+ // extended_variant only for items not yet inward-finalized. Reading
206
+ // extended_variant alone left finalized items with a stale/zero
207
+ // weight, so their price never moved with the gold rate.
208
+ const ev = variant?.extended_variant;
209
+ const metalWeight = Number(itemMd.net_weight ||
210
+ itemMd.gross_weight ||
211
+ ev?.net_weight ||
212
+ ev?.gross_weight ||
213
+ 0);
214
+ const oldUnitPrice = Number(item.unit_price || 0);
215
+ if (!karat) {
216
+ skips.item_no_karat++;
217
+ continue;
218
+ }
219
+ if (qlyMap[karat] === null) {
220
+ skips.item_rate_unchanged++;
221
+ continue;
222
+ }
223
+ if (metalWeight <= 0) {
224
+ skips.item_no_weight++;
225
+ continue;
226
+ }
227
+ const diff = qlyMap[karat];
228
+ const newUnitPrice = Math.round((oldUnitPrice + diff * metalWeight) * 100) / 100;
229
+ if (newUnitPrice === oldUnitPrice) {
230
+ skips.item_same_price++;
231
+ continue;
232
+ }
233
+ priceChanges.push({
234
+ item_id: item.id,
235
+ quantity: Number(item.quantity || 1),
236
+ old_price: oldUnitPrice,
237
+ new_price: newUnitPrice,
238
+ karat,
239
+ });
240
+ }
241
+ if (!priceChanges.length) {
242
+ skips.no_item_change++;
243
+ continue;
244
+ }
245
+ // Apply ALL of this order's repriced items as a SINGLE confirmed order
246
+ // change, so the order version bumps exactly once per update (not once
247
+ // per item). This bumps order.version, upserts the new-version
248
+ // order_item rows (so the displayed unit_price + totals + summary all
249
+ // update), and records history with the rich old→new diff. (Replaces
250
+ // the old updateOrderLineItems + updateOrderItem + registerOrderChange
251
+ // writes, which never bumped the version — every entry showed v1.)
252
+ const historyMetadata = {
253
+ old_price: priceChanges.reduce((s, pc) => s + pc.old_price, 0),
254
+ new_price: priceChanges.reduce((s, pc) => s + pc.new_price, 0),
255
+ };
256
+ // Include each distinct karat's rate movement once.
257
+ for (const pc of priceChanges) {
258
+ const rateKey = `rate_${pc.karat.toLowerCase()}k`;
259
+ if (historyMetadata[`old_${rateKey}`] != null)
260
+ continue;
261
+ const oldRateEntry = (oldGoldRateList ?? []).find((x) => x.rate === `${pc.karat}K`);
262
+ const newRateEntry = (currentGoldRateList ?? []).find((x) => x.rate === `${pc.karat}K`);
263
+ if (oldRateEntry &&
264
+ newRateEntry &&
265
+ oldRateEntry.amount !== newRateEntry.amount) {
266
+ historyMetadata[`old_${rateKey}`] = oldRateEntry.amount;
267
+ historyMetadata[`new_${rateKey}`] = newRateEntry.amount;
268
+ }
269
+ }
270
+ try {
271
+ await (0, apply_order_item_price_change_1.applyOrderItemPriceChange)(orderService, {
272
+ order_id: order.id,
273
+ items: priceChanges.map((pc) => ({
274
+ item_id: pc.item_id,
275
+ quantity: pc.quantity,
276
+ new_unit_price: pc.new_price,
277
+ })),
278
+ history_metadata: historyMetadata,
279
+ });
280
+ }
281
+ catch (applyErr) {
282
+ logger.warn(`[DailyRate][OrderItems] Failed to apply price change for order=${order.id}: ${applyErr?.message}`);
283
+ // Don't advance the baseline if the change failed — retry next run.
284
+ continue;
285
+ }
286
+ await orderService.updateOrders([
287
+ {
288
+ id: order.id,
289
+ metadata: {
290
+ ...(order.metadata || {}),
291
+ goldRate: { currentGoldRateList },
292
+ },
293
+ },
294
+ ]);
295
+ ordersUpdated++;
296
+ itemsUpdated += priceChanges.length;
297
+ logger.info(`[DailyRate][OrderItems] order=${order.id} itemsUpdated=${priceChanges.length}`);
298
+ }
299
+ await new Promise((resolve) => setImmediate(resolve));
300
+ logger.info(`[DailyRate][OrderItems] batch offset=${offset} orders=${orders.length} ordersUpdated=${ordersUpdated} itemsUpdated=${itemsUpdated}`);
301
+ if (orders.length < perf_1.BATCH_SIZE)
302
+ break;
303
+ offset += perf_1.BATCH_SIZE;
304
+ }
305
+ logger.info(`[DailyRate][OrderItems] Done — ordersUpdated=${ordersUpdated} itemsUpdated=${itemsUpdated} skips=${JSON.stringify(skips)}`);
306
+ return new workflows_sdk_1.StepResponse({ ordersUpdated, itemsUpdated, skips });
307
+ });
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVuZml4LW9yZGVyLWl0ZW1zLW9uLWdvbGQtcmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGFpbHktcmF0ZS9zdGVwcy91cGRhdGUtdW5maXgtb3JkZXItaXRlbXMtb24tZ29sZC1yYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxxREFBK0U7QUFDL0Usb0VBQXdFO0FBRXhFLG9FQUd3QztBQUN4QyxvR0FBNkY7QUFDN0Ysa0NBQXFDO0FBR3JDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBWSxFQUFpQixFQUFFO0lBQ25ELElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ25DLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUs7WUFBRSxTQUFTO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQWtCLEVBQUUsS0FBYSxFQUFpQixFQUFFO0lBQ3BFLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkIsT0FBTyxJQUFJLENBQUMs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
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./steps"), exports);
18
+ __exportStar(require("./workflows"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2VycC1iYXRjaC1wcm9jZXNzaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsOENBQTRCIn0=
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finalizeBatchProcessingStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const update_erp_event_1 = require("../../erp-event/workflows/update-erp-event");
7
+ const notification_1 = require("../../notification");
8
+ exports.finalizeBatchProcessingStep = (0, workflows_sdk_1.createStep)("finalize-batch-processing-step", async (input, { container }) => {
9
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
10
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
11
+ const { data: [erpEvent], } = await query.graph({
12
+ entity: "erp_event",
13
+ fields: [
14
+ "id",
15
+ "datafor",
16
+ "operation",
17
+ "current_batch",
18
+ "total_batches",
19
+ "error_details",
20
+ ],
21
+ filters: { id: input.erpEventId },
22
+ });
23
+ const hasErrors = erpEvent.error_details && Object.keys(erpEvent.error_details).length > 0;
24
+ logger.info(`[END] ${erpEvent.datafor} batch processing: ${erpEvent.current_batch}/${erpEvent.total_batches} batches`);
25
+ await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
26
+ input: {
27
+ id: input.erpEventId,
28
+ status: hasErrors ? "failed" : "completed",
29
+ sync_completed_at: new Date(),
30
+ },
31
+ });
32
+ const notificationTitle = hasErrors
33
+ ? `ERP Batch Processing Completed with Errors`
34
+ : `ERP Batch Processing Completed Successfully`;
35
+ const notificationDescription = hasErrors
36
+ ? `Processed ${erpEvent.current_batch}/${erpEvent.total_batches} batches for ${erpEvent.datafor} ${erpEvent.operation} with errors`
37
+ : `Successfully processed all ${erpEvent.total_batches} batches for ${erpEvent.datafor} ${erpEvent.operation}`;
38
+ await (0, notification_1.createNotificationWorkflow)(container).run({
39
+ input: {
40
+ to: "",
41
+ channel: "feed",
42
+ template: "admin-ui",
43
+ data: {
44
+ title: notificationTitle,
45
+ description: notificationDescription,
46
+ },
47
+ },
48
+ });
49
+ return new workflows_sdk_1.StepResponse({
50
+ success: !hasErrors,
51
+ batchesProcessed: erpEvent.current_batch,
52
+ totalBatches: erpEvent.total_batches,
53
+ });
54
+ });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxpemUtYmF0Y2gtcHJvY2Vzc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWJhdGNoLXByb2Nlc3Npbmcvc3RlcHMvZmluYWxpemUtYmF0Y2gtcHJvY2Vzc2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UscURBQXNFO0FBRXRFLGlGQUFvRjtBQUNwRixxREFBZ0U7QUFNbkQsUUFBQSwyQkFBMkIsR0FBRyxJQUFBLDBCQUFVLEVBQ25ELGdDQUFnQyxFQUNoQyxLQUFLLEVBQUUsS0FBbUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDM0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FDakIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLFNBQVM7WUFDVCxXQUFXO1lBQ1gsZUFBZTtZQUNmLGVBQWU7WUFDZixlQUFlO1NBQ2hCO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUU7S0FDbEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxTQUFTLEdBQ2IsUUFBUSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sQ0FBQyxJQUFJLENBQ1QsU0FBUyxRQUFRLENBQUMsT0FBTyxzQkFBc0IsUUFBUSxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsYUFBYSxVQUFVLENBQzFHLENBQUM7SUFFRixNQUFNLElBQUEseUNBQXNCLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFDLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUNwQixNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDMUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDOUI7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLGlCQUFpQixHQUFHLFNBQVM7UUFDakMsQ0FBQyxDQUFDLDRDQUE0QztRQUM5QyxDQUFDLENBQUMsNkNBQTZDLENBQUM7SUFFbEQsTUFBTSx1QkFBdUIsR0FBRyxTQUFTO1FBQ3ZDLENBQUMsQ0FBQyxhQUFhLFFBQVEsQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDLGFBQWEsZ0JBQWdCLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsY0FBYztRQUNuSSxDQUFDLENBQUMsOEJBQThCLFFBQVEsQ0FBQyxhQUFhLGdCQUFnQixRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUVqSCxNQUFNLElBQUEseUNBQTBCLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzlDLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixRQUFRLEVBQUUsVUFBVTtZQUNwQixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsV0FBVyxFQUFFLHVCQUF1QjthQUNyQztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLDRCQUFZLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUMsU0FBUztRQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsYUFBYTtRQUN4QyxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWE7S0FDckMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./initialize-batch-processing"), exports);
18
+ __exportStar(require("./start-batch-processing"), exports);
19
+ __exportStar(require("./finalize-batch-processing"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2VycC1iYXRjaC1wcm9jZXNzaW5nL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBOEM7QUFDOUMsMkRBQXlDO0FBQ3pDLDhEQUE0QyJ9
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeBatchProcessingStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const update_erp_event_1 = require("../../erp-event/workflows/update-erp-event");
7
+ exports.initializeBatchProcessingStep = (0, workflows_sdk_1.createStep)("initialize-batch-processing-step", async (input, { container, context }) => {
8
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
9
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ const { data: [erpEvent], } = await query.graph({
11
+ entity: "erp_event",
12
+ fields: ["id", "datafor", "operation", "data", "status"],
13
+ filters: { id: input.erpEventId },
14
+ });
15
+ if (!erpEvent) {
16
+ throw new Error(`ERP event not found: ${input.erpEventId}`);
17
+ }
18
+ if (erpEvent.status === "completed") {
19
+ throw new Error(`ERP event already completed: ${input.erpEventId}`);
20
+ }
21
+ const totalItems = erpEvent.data.length;
22
+ const totalBatches = Math.ceil(totalItems / input.batchSize);
23
+ logger.info(`[START] ${erpEvent.datafor} batch processing: ${totalItems} items, ${totalBatches} batches`);
24
+ await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
25
+ input: {
26
+ id: input.erpEventId,
27
+ workflow_transaction_id: context.transactionId,
28
+ total_batches: totalBatches,
29
+ current_batch: 0,
30
+ started_at: new Date(),
31
+ },
32
+ });
33
+ return new workflows_sdk_1.StepResponse({
34
+ totalItems,
35
+ totalBatches,
36
+ datafor: erpEvent.datafor,
37
+ operation: erpEvent.operation,
38
+ });
39
+ });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZS1iYXRjaC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9lcnAtYmF0Y2gtcHJvY2Vzc2luZy9zdGVwcy9pbml0aWFsaXplLWJhdGNoLXByb2Nlc3NpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBQzdFLHFEQUFzRTtBQUV0RSxpRkFBb0Y7QUFjdkUsUUFBQSw2QkFBNkIsR0FBRyxJQUFBLDBCQUFVLEVBQ3JELGtDQUFrQyxFQUNsQyxLQUFLLEVBQ0gsS0FBcUMsRUFDckMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQ2tDLEVBQUU7SUFDMUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FDakIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUN4RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtLQUNsQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0QsTUFBTSxDQUFDLElBQUksQ0FDVCxXQUFXLFFBQVEsQ0FBQyxPQUFPLHNCQUFzQixVQUFVLFdBQVcsWUFBWSxVQUFVLENBQzdGLENBQUM7SUFFRixNQUFNLElBQUEseUNBQXNCLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFDLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUNwQix1QkFBdUIsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUM5QyxhQUFhLEVBQUUsWUFBWTtZQUMzQixhQUFhLEVBQUUsQ0FBQztZQUNoQixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDdkI7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixVQUFVO1FBQ1YsWUFBWTtRQUNaLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztRQUN6QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7S0FDOUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startBatchProcessingStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.startBatchProcessingStep = (0, workflows_sdk_1.createStep)({
7
+ name: "start-batch-processing-step",
8
+ async: true,
9
+ }, async (input, { container }) => {
10
+ const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
11
+ await eventBus.emit({
12
+ name: "erp.batch.process",
13
+ data: {
14
+ erpEventId: input.erpEventId,
15
+ batchIndex: 0,
16
+ totalBatches: input.totalBatches,
17
+ batchSize: input.batchSize,
18
+ },
19
+ });
20
+ // NO RETURN — workflow becomes long-running and waits for setStepSuccess
21
+ });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtYmF0Y2gtcHJvY2Vzc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWJhdGNoLXByb2Nlc3Npbmcvc3RlcHMvc3RhcnQtYmF0Y2gtcHJvY2Vzc2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBK0Q7QUFDL0QscURBQW9EO0FBUXZDLFFBQUEsd0JBQXdCLEdBQUcsSUFBQSwwQkFBVSxFQUNoRDtJQUNFLElBQUksRUFBRSw2QkFBNkI7SUFDbkMsS0FBSyxFQUFFLElBQUk7Q0FDWixFQUNELEtBQUssRUFBRSxLQUFnQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV0RCxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbEIsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixJQUFJLEVBQUU7WUFDSixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLENBQUM7WUFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgseUVBQXlFO0FBQzNFLENBQUMsQ0FDRixDQUFDIn0=
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.erpBatchProcessingWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const steps_1 = require("../steps");
6
+ exports.erpBatchProcessingWorkflow = (0, workflows_sdk_1.createWorkflow)({
7
+ name: "erp-batch-processing",
8
+ store: true,
9
+ retentionTime: 60 * 60 * 6, // 6 hours
10
+ }, function (input) {
11
+ const initResult = (0, steps_1.initializeBatchProcessingStep)({
12
+ erpEventId: input.erpEventId,
13
+ batchSize: input.batchSize,
14
+ });
15
+ (0, steps_1.startBatchProcessingStep)({
16
+ erpEventId: input.erpEventId,
17
+ totalBatches: initResult.totalBatches,
18
+ batchSize: input.batchSize,
19
+ });
20
+ const finalResult = (0, steps_1.finalizeBatchProcessingStep)({
21
+ erpEventId: input.erpEventId,
22
+ });
23
+ return new workflows_sdk_1.WorkflowResponse(finalResult);
24
+ });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLWJhdGNoLXByb2Nlc3NpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2VycC1iYXRjaC1wcm9jZXNzaW5nL3dvcmtmbG93cy9lcnAtYmF0Y2gtcHJvY2Vzc2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMkM7QUFFM0Msb0NBSWtCO0FBT0wsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDhCQUFjLEVBQ3REO0lBQ0UsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QixLQUFLLEVBQUUsSUFBSTtJQUNYLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVO0NBQ3ZDLEVBQ0QsVUFBVSxLQUE4QjtJQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFBLHFDQUE2QixFQUFDO1FBQy9DLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsSUFBQSxnQ0FBd0IsRUFBQztRQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDNUIsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZO1FBQ3JDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztLQUMzQixDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQzlDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtLQUM3QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./erp-batch-processing"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2VycC1iYXRjaC1wcm9jZXNzaW5nL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQXVDIn0=
@@ -6,17 +6,34 @@ const erp_event_1 = require("../../../modules/erp-event");
6
6
  exports.updateErpEventStep = (0, workflows_sdk_1.createStep)("update-erp-event-step", async (input, { container }) => {
7
7
  const erpEventModuleService = container.resolve(erp_event_1.ERP_EVENT_MODULE);
8
8
  const prevData = await erpEventModuleService.retrieveErpEvent(input.id);
9
- const erpEvent = await erpEventModuleService.updateErpEvents({
10
- id: input.id,
11
- status: input.status,
12
- sync_completed_at: input.sync_completed_at,
13
- });
9
+ const updateData = { id: input.id };
10
+ if (input.status !== undefined)
11
+ updateData.status = input.status;
12
+ if (input.started_at !== undefined)
13
+ updateData.started_at = input.started_at;
14
+ if (input.sync_completed_at !== undefined)
15
+ updateData.sync_completed_at = input.sync_completed_at;
16
+ if (input.current_batch !== undefined)
17
+ updateData.current_batch = input.current_batch;
18
+ if (input.total_batches !== undefined)
19
+ updateData.total_batches = input.total_batches;
20
+ if (input.workflow_transaction_id !== undefined)
21
+ updateData.workflow_transaction_id = input.workflow_transaction_id;
22
+ if (input.error_details !== undefined)
23
+ updateData.error_details = input.error_details;
24
+ const erpEvent = await erpEventModuleService.updateErpEvents(updateData);
14
25
  return new workflows_sdk_1.StepResponse(erpEvent, prevData);
15
26
  }, async (prevData, { container }) => {
16
27
  const erpEventModuleService = container.resolve(erp_event_1.ERP_EVENT_MODULE);
17
28
  await erpEventModuleService.updateErpEvents({
18
- ...prevData,
19
29
  id: prevData.id,
30
+ status: prevData.status,
31
+ started_at: prevData.started_at,
32
+ sync_completed_at: prevData.sync_completed_at,
33
+ current_batch: prevData.current_batch,
34
+ total_batches: prevData.total_batches,
35
+ workflow_transaction_id: prevData.workflow_transaction_id,
36
+ error_details: prevData.error_details,
20
37
  });
21
38
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVycC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWV2ZW50L3N0ZXBzL3VwZGF0ZS1lcnAtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBRTdFLDBEQUE4RDtBQVNqRCxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxLQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxNQUFNLHFCQUFxQixHQUN6QixTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUM7UUFDM0QsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7S0FDM0MsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLDRCQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUMsRUFDRCxLQUFLLEVBQUUsUUFBdUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxxQkFBcUIsR0FDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0scUJBQXFCLENBQUMsZUFBZSxDQUFDO1FBQzFDLEdBQUcsUUFBUTtRQUNYLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtLQUNoQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVycC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWV2ZW50L3N0ZXBzL3VwZGF0ZS1lcnAtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBRTdFLDBEQUE4RDtBQWNqRCxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxLQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxNQUFNLHFCQUFxQixHQUN6QixTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEUsTUFBTSxVQUFVLEdBQXdCLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN6RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUztRQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqRSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUztRQUFFLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUM3RSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTO1FBQ3ZDLFVBQVUsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFDekQsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLFNBQVM7UUFDbkMsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ2pELElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTO1FBQ25DLFVBQVUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNqRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxTQUFTO1FBQzdDLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUM7SUFDckUsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLFNBQVM7UUFDbkMsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBRWpELE1BQU0sUUFBUSxHQUFHLE1BQU0scUJBQXFCLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpFLE9BQU8sSUFBSSw0QkFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5QyxDQUFDLEVBQ0QsS0FBSyxFQUFFLFFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDckMsTUFBTSxxQkFBcUIsR0FDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0scUJBQXFCLENBQUMsZUFBZSxDQUFDO1FBQzFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUNmLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7UUFDL0IsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGlCQUFpQjtRQUM3QyxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7UUFDckMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO1FBQ3JDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyx1QkFBdUI7UUFDekQsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO0tBQ3RDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=
@@ -7,4 +7,4 @@ exports.updateErpEventWorkflow = (0, workflows_sdk_1.createWorkflow)("update-erp
7
7
  const erpEvent = (0, steps_1.updateErpEventStep)(input);
8
8
  return new workflows_sdk_1.WorkflowResponse(erpEvent);
9
9
  });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVycC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWV2ZW50L3dvcmtmbG93cy91cGRhdGUtZXJwLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcyQztBQUUzQyxvQ0FBOEM7QUFRakMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2xELDJCQUEyQixFQUMzQixDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFrQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQ0YsQ0FBQyJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVycC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWV2ZW50L3dvcmtmbG93cy91cGRhdGUtZXJwLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcyQztBQUUzQyxvQ0FBOEM7QUFhakMsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2xELDJCQUEyQixFQUMzQixDQUFDLEtBQW9CLEVBQUUsRUFBRTtJQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFrQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQ0YsQ0FBQyJ9