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

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 +71 -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
@@ -4,56 +4,792 @@ exports.syncOrderToErpStep = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
6
  const order_helper_1 = require("../utils/order-helper");
7
+ const framework_1 = require("@medusajs/framework");
8
+ const state_helper_1 = require("../../../utils/state-helper");
7
9
  exports.syncOrderToErpStep = (0, workflows_sdk_1.createStep)("sync-order-to-erp", async ({ order }, { container }) => {
8
- console.log("order>>>>>>>>>>>>>", order);
10
+ // Anti-loop guard: skip orders that originated from ERP to prevent infinite sync loops
11
+ if (order?.metadata?.source === "erp" ||
12
+ order?.metadata?.sync_erp === true) {
13
+ framework_1.logger.info(`[SyncToERP] Skipping order ${order.id} — originated from ERP (source=${order?.metadata?.source}, sync_erp=${order?.metadata?.sync_erp})`);
14
+ return new workflows_sdk_1.StepResponse({ order: null, sale: null });
15
+ }
9
16
  const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
10
17
  const { data: [customer], } = await query.graph({
11
18
  entity: "customer",
12
19
  fields: ["*", "extended_customer.*"],
13
- filters: { id: order.customer_id },
20
+ filters: { id: order.customer_id || "" },
14
21
  });
15
- console.log("customer", customer);
16
- const { data: party } = await query.graph({
22
+ const branch_no = order?.metadata?.branch_no || "";
23
+ const ownerMobileFilter = customer.phone?.replace("+91", "") || "";
24
+ framework_1.logger.info(`[SyncToERP] Fetching party for owner_mobile="${ownerMobileFilter}", customer.phone="${customer.phone}"`);
25
+ const { data: partyData } = await query.graph({
17
26
  entity: "party_master",
18
27
  fields: ["*"],
19
28
  filters: {
20
- owner_mobile: customer.phone?.replace("+91", ""),
29
+ owner_mobile: ownerMobileFilter,
30
+ is_main_client: true,
21
31
  },
22
32
  });
23
- //have to pass self branch party beacuse we are pushing all orders to self branch for now
24
- const selfBranchParty = party.find((p) => p.branch_name.toLowerCase() === "self");
25
- const partyToUse = selfBranchParty || party[0];
26
- console.log("partyToUse", partyToUse);
33
+ framework_1.logger.info(`[SyncToERP] partyData results: ${partyData.length}, party_no=${partyData[0]?.party_no ?? "NOT FOUND"}`);
34
+ const { data: [branch_data], } = await query.graph({
35
+ entity: "party_master",
36
+ fields: ["*"],
37
+ filters: {
38
+ branch_no: branch_no,
39
+ is_location: true,
40
+ },
41
+ });
42
+ const payment = {
43
+ pp_cash_cash: "cash",
44
+ pp_cheque_cheque: "cheque",
45
+ pp_bank_transfer_bank_transfer: "bank",
46
+ pp_gokwik_gokwik: "payu",
47
+ pp_razorpay_razorpay: "razorpay",
48
+ pp_wallet_wallet: "wallet",
49
+ "pp_worldline-pos_worldline_pos": "pos",
50
+ };
51
+ const partyToUse = partyData[0];
27
52
  const { data: [promocode_series_master], } = await query.graph({
28
53
  entity: "promocode_series_master",
29
54
  fields: ["promocode_series_id", "promocode_master_id", "promocode"],
30
55
  filters: {
31
- promocode: order?.metadata?.discount?.code,
56
+ promocode: order?.metadata?.discount?.code || "",
32
57
  },
33
58
  });
59
+ const { data: payment_info } = await query.graph({
60
+ entity: "payment_book_master",
61
+ fields: ["id", "book_name"],
62
+ filters: {
63
+ branch_no: order?.metadata?.cart_type === "POS_CART"
64
+ ? (branch_data?.branch_no ?? "")
65
+ : "",
66
+ type: "order",
67
+ },
68
+ });
69
+ const payment_collections = order?.payment_collections?.[0].payments;
70
+ console.log("payment_collections", payment_collections);
71
+ let payment_option = [];
72
+ if (payment_collections) {
73
+ payment_option = payment_collections?.map((paymentItem) => {
74
+ const provider = payment[paymentItem.provider_id];
75
+ let book_name = "";
76
+ let remarks = "";
77
+ if (provider === "pos") {
78
+ const posType = paymentItem.data?.pos_type || "";
79
+ book_name =
80
+ payment_info?.find((bookItem) => bookItem.book_name
81
+ ?.toLowerCase()
82
+ ?.includes(posType.toLowerCase()))?.book_name || "";
83
+ const otherFields = { ...paymentItem.data };
84
+ delete otherFields.amount;
85
+ delete otherFields.session_id;
86
+ if (otherFields.worldline_pos) {
87
+ const worldlineData = otherFields.worldline_pos;
88
+ if (worldlineData.verification_response) {
89
+ const verifyResponse = worldlineData.verification_response;
90
+ remarks = Object.entries({
91
+ pos_id: otherFields.pos_id || "",
92
+ pos_type: otherFields.pos_type || "",
93
+ transaction_id: verifyResponse.rrn || verifyResponse.transaction_id || "",
94
+ response_code: verifyResponse.response_code || "",
95
+ response_message: verifyResponse.response_message || "",
96
+ status: verifyResponse.status || "",
97
+ })
98
+ .filter(([_, v]) => v !== "")
99
+ .map(([k, v]) => `${k}: ${v}`)
100
+ .join(", ");
101
+ }
102
+ else {
103
+ remarks = Object.entries({
104
+ pos_id: otherFields.pos_id || "",
105
+ pos_type: otherFields.pos_type || "",
106
+ urn: worldlineData.urn || "",
107
+ })
108
+ .filter(([_, v]) => v !== "")
109
+ .map(([k, v]) => `${k}: ${v}`)
110
+ .join(", ");
111
+ }
112
+ }
113
+ else {
114
+ remarks = Object.entries(otherFields)
115
+ .filter(([_, v]) => v !== "")
116
+ .map(([k, v]) => {
117
+ if (typeof v === "object" && v !== null) {
118
+ return `${k}: ${JSON.stringify(v)}`;
119
+ }
120
+ return `${k}: ${v}`;
121
+ })
122
+ .join(", ");
123
+ }
124
+ }
125
+ else if (provider === "wallet") {
126
+ book_name = "Wallet Balance";
127
+ const otherFields = { ...paymentItem.data };
128
+ remarks = Object.entries(otherFields)
129
+ .filter(([_, v]) => v !== "")
130
+ .map(([k, v]) => {
131
+ if (typeof v === "object" && v !== null) {
132
+ return `${k}: ${JSON.stringify(v)}`;
133
+ }
134
+ return `${k}: ${String(v)}`;
135
+ })
136
+ .join(", ");
137
+ }
138
+ else {
139
+ if (provider == "payu") {
140
+ const paymentData = paymentItem?.data;
141
+ const paymentMethod = paymentData?.body?.payment_details?.payment_method ||
142
+ paymentData?.payment_details?.payment_method;
143
+ if (paymentMethod === "cod") {
144
+ return null;
145
+ }
146
+ else {
147
+ book_name =
148
+ payment_info?.find((bookItem) => bookItem.book_name?.toLowerCase()?.includes(provider))?.book_name || "";
149
+ }
150
+ }
151
+ else {
152
+ book_name =
153
+ payment_info?.find((bookItem) => bookItem.book_name?.toLowerCase()?.includes(provider))?.book_name || "";
154
+ }
155
+ const otherFields = { ...paymentItem.data };
156
+ delete otherFields.amount;
157
+ delete otherFields.session_id;
158
+ delete otherFields?.cart_id;
159
+ delete otherFields?.billing_address;
160
+ delete otherFields?.shipping_address;
161
+ delete otherFields?.extra?.billing_address;
162
+ delete otherFields?.extra?.shipping_address;
163
+ remarks = Object.entries(otherFields)
164
+ .filter(([_, v]) => v !== "")
165
+ .map(([k, v]) => {
166
+ if (typeof v === "object" && v !== null) {
167
+ return `${k}: ${JSON.stringify(v)}`;
168
+ }
169
+ return `${k}: ${String(v)}`;
170
+ })
171
+ .join(", ");
172
+ }
173
+ return {
174
+ OrderId: 0,
175
+ BookName: book_name || "Razorpay Receipt - Self/Shiv.Adi.",
176
+ Amount: Number(paymentItem.amount) || 0,
177
+ Remarks: remarks ? JSON.stringify(remarks) : "",
178
+ };
179
+ });
180
+ }
34
181
  const { data: [promocode_master], } = await query.graph({
35
182
  entity: "promocode_master",
36
183
  fields: ["per_amt_on", "per_amt_value"],
37
184
  filters: {
38
- id: promocode_series_master?.promocode_master_id,
185
+ id: promocode_series_master?.promocode_master_id || "",
39
186
  },
40
187
  });
41
188
  const promocode_data = {
42
189
  promocode_series_id: promocode_series_master?.promocode_series_id || 0,
43
190
  promocode: promocode_series_master?.promocode || "",
44
- promocode_percentage: promocode_master?.per_amt_on
191
+ promocode_percentage: promocode_series_master?.promocode && promocode_master?.per_amt_on
45
192
  ? 0
46
193
  : promocode_master?.per_amt_value || 0,
47
- promocode_amount: promocode_master?.per_amt_on
194
+ promocode_amount: promocode_series_master?.promocode && promocode_master?.per_amt_on
48
195
  ? promocode_master?.per_amt_value || 0
49
196
  : 0,
50
197
  };
51
- console.log("promocode_series_master", promocode_series_master, promocode_master);
52
- console.log("promocode_data", promocode_data);
53
- const orderPayload = (0, order_helper_1.buildOrderData)(order, customer, partyToUse, promocode_data);
54
- console.log("orderPayload", JSON.stringify(orderPayload, null, 2));
198
+ const orderPayload = (0, order_helper_1.buildOrderData)(order, customer, partyToUse, promocode_data, payment_option.filter(Boolean), branch_data);
199
+ console.log("___", orderPayload);
55
200
  const erpModuleService = container.resolve("erp");
56
- const erpOrder = await erpModuleService.createOrder(orderPayload);
57
- return new workflows_sdk_1.StepResponse(erpOrder || null);
201
+ // Update party's address in ERP with the billing address from this order
202
+ // before creating the order so ERP always has the latest address on file.
203
+ const billingAddress = order.billing_address;
204
+ const isWebsiteOrder = order?.metadata?.cart_type !== "POS_CART";
205
+ framework_1.logger.info(`[SyncToERP] Party address update check — party_no="${partyToUse?.party_no}", isWebsiteOrder=${isWebsiteOrder}, billingAddress.address_1="${billingAddress?.address_1}", billingAddress.city="${billingAddress?.city}", billingAddress.province="${billingAddress?.province}", billingAddress.postal_code="${billingAddress?.postal_code}"`);
206
+ if (partyToUse?.party_no && billingAddress && isWebsiteOrder) {
207
+ try {
208
+ await erpModuleService.updateCustomer({
209
+ PartyNo: partyToUse.party_no,
210
+ FirmName: partyToUse.firm_name || "",
211
+ LegalName: partyToUse.legal_name || "",
212
+ FirmAdd1: billingAddress.address_1 || partyToUse.firm_add1 || "",
213
+ FirmAdd2: billingAddress.address_2 || partyToUse.firm_add2 || "",
214
+ FirmAdd3: partyToUse.firm_add3 || "",
215
+ FirmCity: billingAddress.city || partyToUse.firm_city || "",
216
+ State: (0, state_helper_1.getStateNameWithCode)(billingAddress.province ?? "") ||
217
+ partyToUse.state ||
218
+ "",
219
+ FirmPinCode: billingAddress.postal_code || partyToUse.firm_pin_code || "",
220
+ FirmEmail: partyToUse.firm_email || "",
221
+ OwnerMobile: partyToUse.owner_mobile || "",
222
+ FirmTele: partyToUse.firm_tele || "",
223
+ WhatsAppNo: partyToUse.whatsapp_no || "",
224
+ Country: "India",
225
+ FirmBirthDate: partyToUse.firm_birth_date || "",
226
+ FirmAnniversaryDate: partyToUse.firm_anniversary_date || "",
227
+ BranchNo: partyToUse.branch_no || "",
228
+ BranchName: partyToUse.branch_name || "",
229
+ LocationId: partyToUse.location_id || "",
230
+ LocationName: partyToUse.location_name || "All",
231
+ FirmPan: partyToUse.firm_pan || "",
232
+ GSTNo: partyToUse.gst_no || "",
233
+ IsCustomer: partyToUse.is_customer ?? true,
234
+ IsSupplier: partyToUse.is_supplier ?? false,
235
+ IsAccount: partyToUse.is_account ?? false,
236
+ IsSalesMan: partyToUse.is_salesman ?? false,
237
+ IsFactory: partyToUse.is_factory ?? false,
238
+ FactoryType: partyToUse.factory_type ?? false,
239
+ IsTools: partyToUse.is_tools ?? false,
240
+ IsLocation: partyToUse.is_location ?? false,
241
+ IsPdHead: partyToUse.is_pd_head ?? 0,
242
+ IsInlineBranch: partyToUse.is_inline_branch ?? false,
243
+ IsSchemeMember: partyToUse.is_scheme_member ?? false,
244
+ });
245
+ framework_1.logger.info(`[SyncToERP] Updated party address for PartyNo: ${partyToUse.party_no}`);
246
+ }
247
+ catch (err) {
248
+ // Non-fatal: log and continue — order sync should not fail because of this
249
+ framework_1.logger.error(`[SyncToERP] Failed to update party address for PartyNo ${partyToUse.party_no}: ${err?.message}`);
250
+ }
251
+ }
252
+ let erpResponse = await erpModuleService.createOrder(orderPayload, order?.metadata?.cart_type === "POS_CART" ? "POS" : "WEBSITE");
253
+ if (erpResponse?.status === false &&
254
+ erpResponse?.message?.includes("JewelCode Assign to Other Order")) {
255
+ console.log("[SYNC ORDER TO ERP] Detected jewel code conflict, attempting resolution...");
256
+ // Parse the conflicting jewel_code from error message
257
+ const jewelCodeMatch = erpResponse.message.match(/([A-Z]{2}\d+)/i);
258
+ const conflictingJewelCode = jewelCodeMatch?.[1];
259
+ if (conflictingJewelCode) {
260
+ console.log("[SYNC ORDER TO ERP] Conflicting jewel_code:", conflictingJewelCode);
261
+ // Find the item with this jewel_code
262
+ const conflictingItem = (order.items || []).find((item) => item?.variant_barcode === conflictingJewelCode);
263
+ if (conflictingItem) {
264
+ const styleCode = conflictingItem.variant?.extended_variant
265
+ ?.style_code;
266
+ const branchNo = partyToUse?.branch_no;
267
+ // Find alternative jewel_code with same style and branch
268
+ const { data: availableInwards } = await query.graph({
269
+ entity: "inward_master",
270
+ fields: [
271
+ "jewel_code",
272
+ "jewel_id",
273
+ "style_code",
274
+ "branch_no",
275
+ "status",
276
+ "mrp",
277
+ ],
278
+ filters: {
279
+ style_code: styleCode,
280
+ branch_no: branchNo,
281
+ status: "In Stock",
282
+ },
283
+ });
284
+ const alternativeInward = availableInwards?.find((inward) => inward.jewel_code !== conflictingJewelCode);
285
+ const orderService = container.resolve(utils_1.Modules.ORDER);
286
+ const cartService = container.resolve(utils_1.Modules.CART);
287
+ if (alternativeInward) {
288
+ // Found alternative - update variant_barcode and metadata, then retry
289
+ console.log("[SYNC ORDER TO ERP] Found alternative jewel_code:", alternativeInward.jewel_code);
290
+ // Update order item with new variant_barcode and jewel_id
291
+ await orderService.updateOrderLineItems([
292
+ {
293
+ selector: { id: conflictingItem.id },
294
+ data: {
295
+ variant_barcode: alternativeInward.jewel_code,
296
+ metadata: {
297
+ ...(conflictingItem.metadata || {}),
298
+ jewel_id: alternativeInward.jewel_id,
299
+ previous_jewel_code: conflictingJewelCode,
300
+ },
301
+ },
302
+ },
303
+ ]);
304
+ // Update in-memory order for payload rebuild
305
+ conflictingItem.variant_barcode = alternativeInward.jewel_code;
306
+ conflictingItem.metadata = {
307
+ ...(conflictingItem.metadata || {}),
308
+ jewel_id: alternativeInward.jewel_id,
309
+ };
310
+ // Update cart item if exists
311
+ const cartId = order.metadata?.cart_id;
312
+ if (cartId && typeof cartId === "string") {
313
+ try {
314
+ const cart = await cartService.retrieveCart(cartId, {
315
+ relations: ["items"],
316
+ });
317
+ const cartItem = cart?.items?.find((item) => item.variant_id === conflictingItem.variant_id);
318
+ if (cartItem) {
319
+ await cartService.updateLineItems([
320
+ {
321
+ id: cartItem.id,
322
+ variant_barcode: alternativeInward.jewel_code,
323
+ metadata: {
324
+ ...(cartItem.metadata || {}),
325
+ jewel_id: alternativeInward.jewel_id,
326
+ previous_jewel_code: conflictingJewelCode,
327
+ },
328
+ },
329
+ ]);
330
+ }
331
+ }
332
+ catch (e) {
333
+ console.error("[SYNC ORDER TO ERP] Cart item update error:", e);
334
+ }
335
+ }
336
+ // Rebuild order payload with new jewel_code and retry
337
+ const retryOrderPayload = (0, order_helper_1.buildOrderData)(order, customer, partyToUse, promocode_data, payment_option.filter(Boolean), branch_data);
338
+ console.log("[SYNC ORDER TO ERP] Retrying order creation with new jewel_code...", retryOrderPayload);
339
+ erpResponse = await erpModuleService.createOrder(retryOrderPayload, order?.metadata?.cart_type === "POS_CART" ? "POS" : "WEBSITE");
340
+ if (erpResponse?.status !== false) {
341
+ console.log("[SYNC ORDER TO ERP] ✅ Order created successfully after jewel_code replacement");
342
+ }
343
+ }
344
+ else {
345
+ // No alternative - convert to make_to_order
346
+ console.log("[SYNC ORDER TO ERP] No alternative jewel_code found, converting to make_to_order");
347
+ // Reset inward_master for conflicting jewel code
348
+ if (conflictingJewelCode) {
349
+ try {
350
+ const { data: inwardRecords } = await query.graph({
351
+ entity: "inward_master",
352
+ fields: ["id"],
353
+ filters: { jewel_code: conflictingJewelCode },
354
+ });
355
+ if (inwardRecords?.length) {
356
+ await container.resolve("extended_variant").updateInwardMasters(inwardRecords.map((r) => ({
357
+ id: r.id,
358
+ is_inward_marked: false,
359
+ inward_order_id: null,
360
+ inward_marked_at: null,
361
+ })));
362
+ console.log(`[SYNC ORDER TO ERP] Released inward reservation for conflicting jewel_code: ${conflictingJewelCode}`);
363
+ }
364
+ }
365
+ catch (inwardErr) {
366
+ console.error(`[SYNC ORDER TO ERP] Failed to reset inward for conflicting jewel_code:`, inwardErr);
367
+ }
368
+ }
369
+ // Update order item - remove variant_barcode and metadata.jewel_id
370
+ const updatedItemMetadata = { ...(conflictingItem.metadata || {}) };
371
+ delete updatedItemMetadata.jewel_id;
372
+ updatedItemMetadata.converted_to_mto = true;
373
+ updatedItemMetadata.conversion_timestamp = new Date().toISOString();
374
+ await orderService.updateOrderLineItems([
375
+ {
376
+ selector: { id: conflictingItem.id },
377
+ data: {
378
+ variant_barcode: undefined,
379
+ metadata: updatedItemMetadata,
380
+ },
381
+ },
382
+ ]);
383
+ // Update in-memory order
384
+ conflictingItem.metadata = updatedItemMetadata;
385
+ conflictingItem.variant_barcode = null;
386
+ // Update cart if exists
387
+ const cartId = order.metadata?.cart_id;
388
+ if (cartId && typeof cartId === "string") {
389
+ try {
390
+ const cart = await cartService.retrieveCart(cartId, {
391
+ relations: ["items"],
392
+ });
393
+ const cartItem = cart?.items?.find((item) => item.variant_id === conflictingItem.variant_id);
394
+ if (cartItem) {
395
+ const updatedCartMeta = { ...(cartItem.metadata || {}) };
396
+ delete updatedCartMeta.jewel_id;
397
+ updatedCartMeta.converted_to_mto = true;
398
+ await cartService.updateLineItems([
399
+ {
400
+ id: cartItem.id,
401
+ variant_barcode: undefined,
402
+ metadata: updatedCartMeta,
403
+ },
404
+ ]);
405
+ }
406
+ // Update cart order type
407
+ await cartService.updateCarts([
408
+ {
409
+ id: cartId,
410
+ metadata: {
411
+ ...(cart?.metadata || {}),
412
+ cart_order_type: "make_to_order",
413
+ original_order_type: cart?.metadata?.cart_order_type,
414
+ mto_conversion_reason: "no_alternative_jewel_code",
415
+ },
416
+ },
417
+ ]);
418
+ }
419
+ catch (e) {
420
+ console.error("[SYNC ORDER TO ERP] Cart update error:", e);
421
+ }
422
+ }
423
+ // Update order type
424
+ await orderService.updateOrders([
425
+ {
426
+ id: order.id,
427
+ metadata: {
428
+ ...(order.metadata || {}),
429
+ cart_order_type: "make_to_order",
430
+ original_order_type: order.metadata?.cart_order_type,
431
+ mto_conversion_reason: "no_alternative_jewel_code",
432
+ },
433
+ },
434
+ ]);
435
+ // Update extended_order
436
+ const { data: extOrderData } = await query.graph({
437
+ entity: "extended_order",
438
+ fields: ["id"],
439
+ filters: { order_id: order.id },
440
+ });
441
+ if (extOrderData?.[0]?.id) {
442
+ try {
443
+ const extOrderService = container.resolve("extended_order");
444
+ await extOrderService.updateExtendedOrders({
445
+ id: extOrderData[0].id,
446
+ order_type: "make_to_order",
447
+ });
448
+ }
449
+ catch (e) {
450
+ console.error("[SYNC ORDER TO ERP] Extended order update error:", e);
451
+ }
452
+ }
453
+ // Rebuild order payload without jewel_code and retry
454
+ order.metadata = {
455
+ ...(order.metadata || {}),
456
+ cart_order_type: "make_to_order",
457
+ };
458
+ const retryOrderPayload = (0, order_helper_1.buildOrderData)(order, customer, partyToUse, promocode_data, payment_option.filter(Boolean), branch_data);
459
+ console.log("[SYNC ORDER TO ERP] Retrying order creation as make_to_order...");
460
+ erpResponse = await erpModuleService.createOrder(retryOrderPayload, order?.metadata?.cart_type === "POS_CART" ? "POS" : "WEBSITE");
461
+ if (erpResponse?.status !== false) {
462
+ console.log("[SYNC ORDER TO ERP] ✅ Order created successfully as make_to_order");
463
+ }
464
+ }
465
+ }
466
+ }
467
+ }
468
+ // Check if ERP response has status false and send Slack notification
469
+ if (erpResponse?.status === false) {
470
+ try {
471
+ const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
472
+ await notificationService.createNotifications([
473
+ {
474
+ to: "slack",
475
+ channel: "slack",
476
+ template: "slack-alert",
477
+ data: {
478
+ alertType: "gati_create_order_failure",
479
+ message: `ERP Order Creation Failed for Order ID: ${order.id}`,
480
+ error: erpResponse.message || "Unknown error occurred",
481
+ severity: "high",
482
+ metadata: {
483
+ order_id: order.id,
484
+ order_display_id: order.display_id,
485
+ error_message: erpResponse.message,
486
+ cart_type: order?.metadata?.cart_type || "WEBSITE",
487
+ },
488
+ timestamp: new Date(),
489
+ },
490
+ },
491
+ ]);
492
+ }
493
+ catch (slackError) {
494
+ console.error("Failed to send Slack notification:", slackError);
495
+ }
496
+ }
497
+ // Create sale after order is created successfully
498
+ let saleResponse = null;
499
+ if (erpResponse?.status !== false &&
500
+ erpResponse?.data &&
501
+ order?.metadata?.cart_type === "POS_CART" &&
502
+ order.metadata.cart_order_type === "ready_to_sell") {
503
+ // Check if all items with jewel_code exist in inward_master with matching branch_no
504
+ const itemsWithJewelCode = (order.items || []).filter((item) => item.variant_barcode);
505
+ let allItemsMatch = true;
506
+ if (itemsWithJewelCode.length > 0) {
507
+ const branchNo = branch_data?.branch_no;
508
+ if (!branchNo) {
509
+ console.log("Branch number not found, skipping sale creation");
510
+ allItemsMatch = false;
511
+ }
512
+ else {
513
+ // Check each item with jewel_code in inward_master
514
+ const inwardChecks = await Promise.all(itemsWithJewelCode.map(async (item) => {
515
+ const jewelCode = item?.variant_barcode;
516
+ if (!jewelCode)
517
+ return true;
518
+ const { data: [inwardMaster], } = await query.graph({
519
+ entity: "inward_master",
520
+ fields: ["jewel_code", "branch_no"],
521
+ filters: {
522
+ jewel_code: jewelCode,
523
+ branch_no: branchNo,
524
+ },
525
+ });
526
+ if (!inwardMaster) {
527
+ console.log(`Inward master not found for jewel_code: ${jewelCode} and branch_no: ${branchNo}`);
528
+ return false;
529
+ }
530
+ return true;
531
+ }));
532
+ allItemsMatch = inwardChecks.every((match) => match);
533
+ }
534
+ }
535
+ if (!allItemsMatch) {
536
+ console.log("Not all items match in inward_master, skipping sale creation");
537
+ try {
538
+ const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
539
+ await notificationService.createNotifications([
540
+ {
541
+ to: "slack",
542
+ channel: "slack",
543
+ template: "slack-alert",
544
+ data: {
545
+ alertType: "gati_sale_creation_skipped",
546
+ message: `Sale Creation Skipped for Order ID: ${order.id} - Jewel code and branch_no mismatch in inward_master`,
547
+ error: "One or more items with jewel_code do not match in inward_master with the branch_no",
548
+ severity: "medium",
549
+ metadata: {
550
+ order_id: order.id,
551
+ order_display_id: order.display_id,
552
+ cart_type: order?.metadata?.cart_type || "WEBSITE",
553
+ },
554
+ timestamp: new Date(),
555
+ },
556
+ },
557
+ ]);
558
+ }
559
+ catch (slackError) {
560
+ console.error("Failed to send Slack notification:", slackError);
561
+ }
562
+ return new workflows_sdk_1.StepResponse({
563
+ order: erpResponse?.data || null,
564
+ sale: null,
565
+ });
566
+ }
567
+ const salePayload = (0, order_helper_1.buildSaleData)(order, customer, partyToUse, promocode_data, payment_option.filter(Boolean), branch_data);
568
+ console.log("salePayload", JSON.stringify(salePayload, null, 2));
569
+ saleResponse = await erpModuleService.createSale(salePayload, order?.metadata?.cart_type === "POS_CART" ? "POS" : "WEBSITE");
570
+ console.log("saleResponse", JSON.stringify(saleResponse, null, 2));
571
+ if (saleResponse?.status === false) {
572
+ try {
573
+ const notificationService = container.resolve(utils_1.Modules.NOTIFICATION);
574
+ await notificationService.createNotifications([
575
+ {
576
+ to: "slack",
577
+ channel: "slack",
578
+ template: "slack-alert",
579
+ data: {
580
+ alertType: "gati_create_sale_failure",
581
+ message: `ERP Sale Creation Failed for Order ID: ${order.id}`,
582
+ error: saleResponse.message || "Unknown error occurred",
583
+ severity: "high",
584
+ metadata: {
585
+ order_id: order.id,
586
+ order_display_id: order.display_id,
587
+ error_message: saleResponse.message,
588
+ cart_type: order?.metadata?.cart_type || "WEBSITE",
589
+ },
590
+ timestamp: new Date(),
591
+ },
592
+ },
593
+ ]);
594
+ }
595
+ catch (slackError) {
596
+ console.error("Failed to send Slack notification:", slackError);
597
+ }
598
+ try {
599
+ const orderService = container.resolve(utils_1.Modules.ORDER);
600
+ const inwardMasterService = container.resolve("extended_variant");
601
+ const cartService = container.resolve(utils_1.Modules.CART);
602
+ // Get items with variant_barcode (ready_to_sell items with jewel code)
603
+ const itemsWithJewelCode = (order.items || []).filter((item) => item.variant_barcode);
604
+ for (const item of itemsWithJewelCode) {
605
+ const jewelCode = item?.variant_barcode;
606
+ // Reset inward_master reservation fields
607
+ if (jewelCode) {
608
+ try {
609
+ const { data: inwardRecords } = await query.graph({
610
+ entity: "inward_master",
611
+ fields: ["id", "jewel_code"],
612
+ filters: { jewel_code: jewelCode },
613
+ });
614
+ if (inwardRecords?.length) {
615
+ await inwardMasterService.updateInwardMasters(inwardRecords.map((r) => ({
616
+ id: r.id,
617
+ is_inward_marked: false,
618
+ inward_order_id: null,
619
+ inward_marked_at: null,
620
+ })));
621
+ console.log(`[SYNC ORDER TO ERP] Released inward reservation for jewel_code: ${jewelCode}`);
622
+ }
623
+ }
624
+ catch (inwardErr) {
625
+ console.error(`[SYNC ORDER TO ERP] Failed to reset inward for jewel_code ${jewelCode}:`, inwardErr);
626
+ }
627
+ }
628
+ // Remove variant_barcode and metadata.jewel_id from order item
629
+ const updatedMetadata = { ...(item.metadata || {}) };
630
+ delete updatedMetadata.jewel_id;
631
+ await orderService.updateOrderLineItems([
632
+ {
633
+ selector: { id: item.id },
634
+ data: {
635
+ variant_barcode: undefined,
636
+ metadata: {
637
+ ...updatedMetadata,
638
+ converted_to_mto: true,
639
+ mto_conversion_reason: "sale_creation_failed",
640
+ },
641
+ },
642
+ },
643
+ ]);
644
+ }
645
+ // Update cart items if exists
646
+ const cartId = order.metadata?.cart_id;
647
+ if (cartId && typeof cartId === "string") {
648
+ try {
649
+ const cart = await cartService.retrieveCart(cartId, {
650
+ relations: ["items"],
651
+ });
652
+ for (const item of itemsWithJewelCode) {
653
+ const cartItem = cart?.items?.find((ci) => ci.variant_id === item.variant_id);
654
+ if (cartItem) {
655
+ const updatedCartMetadata = { ...(cartItem.metadata || {}) };
656
+ delete updatedCartMetadata.jewel_id;
657
+ await cartService.updateLineItems([
658
+ {
659
+ id: cartItem.id,
660
+ variant_barcode: undefined,
661
+ metadata: {
662
+ ...updatedCartMetadata,
663
+ converted_to_mto: true,
664
+ },
665
+ },
666
+ ]);
667
+ }
668
+ }
669
+ // Update cart order type
670
+ await cartService.updateCarts([
671
+ {
672
+ id: cartId,
673
+ metadata: {
674
+ ...(cart?.metadata || {}),
675
+ cart_order_type: "make_to_order",
676
+ },
677
+ },
678
+ ]);
679
+ }
680
+ catch (cartErr) {
681
+ console.error("[SYNC ORDER TO ERP] Cart update error:", cartErr);
682
+ }
683
+ }
684
+ // Convert order to make_to_order
685
+ await orderService.updateOrders([
686
+ {
687
+ id: order.id,
688
+ metadata: {
689
+ ...(order.metadata || {}),
690
+ cart_order_type: "make_to_order",
691
+ },
692
+ },
693
+ ]);
694
+ // Update extended_order order_type
695
+ const { data: extOrderData } = await query.graph({
696
+ entity: "extended_order",
697
+ fields: ["id"],
698
+ filters: { order_id: order.id },
699
+ });
700
+ if (extOrderData?.[0]?.id) {
701
+ const extOrderService = container.resolve("extended_order");
702
+ await extOrderService.updateExtendedOrders({
703
+ id: extOrderData[0].id,
704
+ order_type: "make_to_order",
705
+ });
706
+ }
707
+ console.log("[SYNC ORDER TO ERP] Order converted to make_to_order after sale failure");
708
+ }
709
+ catch (conversionErr) {
710
+ console.error("[SYNC ORDER TO ERP] Failed to convert order to make_to_order after sale failure:", conversionErr);
711
+ }
712
+ }
713
+ }
714
+ // Update extended_order with ERP sync results
715
+ try {
716
+ const { data: extOrderData } = await query.graph({
717
+ entity: "extended_order",
718
+ fields: ["id"],
719
+ filters: { order_id: order.id },
720
+ });
721
+ console.log(`[SYNC ORDER TO ERP] extended_order lookup for order ${order.id}:`, extOrderData?.[0]?.id || "NOT FOUND");
722
+ console.log(`[SYNC ORDER TO ERP] erpResponse status=${erpResponse?.status}, OrderId=${erpResponse?.data?.OrderId}`);
723
+ console.log(`[SYNC ORDER TO ERP] saleResponse status=${saleResponse?.status}, JewelTransId=${saleResponse?.data?.JewelTransId}`);
724
+ if (extOrderData?.[0]?.id) {
725
+ const extOrderService = container.resolve("extended_order");
726
+ const updatePayload = { id: extOrderData[0].id };
727
+ const erpOrderId = erpResponse?.data?.OrderId;
728
+ if (erpOrderId && erpResponse?.status !== false) {
729
+ updatePayload.external_id = String(erpOrderId);
730
+ updatePayload.sync_erp = true;
731
+ updatePayload.sync_erp_error = null;
732
+ }
733
+ else if (erpResponse?.status === false) {
734
+ updatePayload.sync_erp = false;
735
+ updatePayload.sync_erp_error =
736
+ erpResponse?.message || String(erpResponse);
737
+ }
738
+ if (saleResponse?.status === true && saleResponse?.data?.JewelTransId) {
739
+ const { JewelTransId, JewelTransPrefix, JewelTransNo } = saleResponse.data;
740
+ updatePayload.sale_external_id = String(JewelTransId);
741
+ updatePayload.sale_invoice_no =
742
+ [JewelTransPrefix, JewelTransNo].filter(Boolean).join("-") || String(JewelTransId);
743
+ }
744
+ else if (saleResponse?.status === false) {
745
+ updatePayload.sync_erp_error = updatePayload.sync_erp_error
746
+ ? updatePayload.sync_erp_error
747
+ : saleResponse?.message || String(saleResponse);
748
+ }
749
+ // Set customer, discount, cart_type, payment_mode from order metadata
750
+ const customerMeta = order.metadata?.customer;
751
+ updatePayload.customer_name =
752
+ customerMeta?.name ||
753
+ `${customer?.first_name || ""} ${customer?.last_name || ""}`.trim() ||
754
+ null;
755
+ updatePayload.customer_email =
756
+ customerMeta?.email || customer?.email || null;
757
+ updatePayload.customer_phone =
758
+ customerMeta?.phone || customer?.phone || null;
759
+ updatePayload.payment_mode =
760
+ (payment_collections?.length ?? 0) > 1 ? "split" : "single";
761
+ // Only call update if there's something beyond just the id
762
+ if (Object.keys(updatePayload).length > 1) {
763
+ console.log(`[SYNC ORDER TO ERP] Updating extended_order ${extOrderData[0].id} with:`, JSON.stringify(updatePayload));
764
+ await extOrderService.updateExtendedOrders(updatePayload);
765
+ console.log(`[SYNC ORDER TO ERP] extended_order updated successfully`);
766
+ if (saleResponse?.status === true && saleResponse?.data?.JewelTransId) {
767
+ try {
768
+ const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
769
+ await eventBus.emit({ name: "erp-sale-synced", data: { order_id: order.id } });
770
+ console.log(`[SYNC ORDER TO ERP] Emitted erp-sale-synced for order ${order.id}`);
771
+ }
772
+ catch (eventErr) {
773
+ console.error("[SYNC ORDER TO ERP] Failed to emit erp-sale-synced:", eventErr);
774
+ }
775
+ }
776
+ }
777
+ else {
778
+ console.log(`[SYNC ORDER TO ERP] No fields to update in extended_order (erpResponse.data.OrderId missing or ERP failed)`);
779
+ }
780
+ }
781
+ }
782
+ catch (extOrderError) {
783
+ console.error("[SYNC ORDER TO ERP] Failed to update extended_order:", extOrderError);
784
+ }
785
+ return new workflows_sdk_1.StepResponse({
786
+ order: erpResponse?.data || null,
787
+ sale: saleResponse?.status === true && saleResponse?.data?.JewelTransId
788
+ ? {
789
+ jewel_trans_id: saleResponse?.data.JewelTransId,
790
+ data: saleResponse?.data,
791
+ }
792
+ : null,
793
+ });
58
794
  });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1vcmRlci10by1lcnAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL29yZGVycy9zdGVwcy9zeW5jLW9yZGVyLXRvLWVycC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBc0U7QUFDdEUscUVBQTZFO0FBRzdFLHdEQUF1RDtBQUkxQyxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsbUJBQW1CLEVBQ25CLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUNqQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7UUFDcEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxFQUFFLGNBQWM7UUFDdEIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2IsT0FBTyxFQUFFO1lBQ1AsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDakQ7S0FDRixD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
795
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1vcmRlci10by1lcnAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL29yZGVycy9zdGVwcy9zeW5jLW9yZGVyLXRvLWVycC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0U7QUFDL0UscUVBQTZFO0FBRTdFLHdEQUFzRTtBQUV0RSxtREFBNkM7QUFDN0MsOERBQW1FO0FBSXRELFFBQUEsa0JBQWtCLEdBQUcsSUFBQSwwQkFBVSxFQUMxQyxtQkFBbUIsRUFDbkIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVDLHVGQUF1RjtJQUN2RixJQUNFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxLQUFLLEtBQUs7UUFDakMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEtBQUssSUFBSSxFQUNsQyxDQUFDO1FBQ0Qsa0JBQU0sQ0FBQyxJQUFJLENBQ1QsOEJBQThCLEtBQUssQ0FBQyxFQUFFLGtDQUFrQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRyxDQUMxSSxDQUFDO1FBQ0YsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FDakIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO1FBQ3BDLE9BQU8sRUFBRSxFQUFFLEVBQUUs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