@devx-commerce/plugin-gati 0.0.34-beta.3 → 0.0.34-beta.31

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 (280) 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/masters/validators.js +2 -2
  4. package/.medusa/server/src/api/admin/variant-options/recalculate/route.js +446 -0
  5. package/.medusa/server/src/api/admin/variant-options/sync/route.js +21 -5
  6. package/.medusa/server/src/api/erp/webhook/config.js +30 -1
  7. package/.medusa/server/src/api/erp/webhook/route.js +10 -137
  8. package/.medusa/server/src/api/erp/webhook/utils.js +7 -1
  9. package/.medusa/server/src/api/pos/customer-ledger/middleware.js +13 -0
  10. package/.medusa/server/src/api/pos/customer-ledger/route.js +50 -0
  11. package/.medusa/server/src/api/pos/generate-invoice/route.js +427 -0
  12. package/.medusa/server/src/api/pos/gold/calculate/route.js +104 -0
  13. package/.medusa/server/src/api/pos/gold/item-master-purity.js +46 -0
  14. package/.medusa/server/src/api/pos/gold/middleware.js +18 -0
  15. package/.medusa/server/src/api/pos/gold/route.js +83 -0
  16. package/.medusa/server/src/api/pos/gold-rate/route.js +37 -24
  17. package/.medusa/server/src/api/pos/middleware.js +13 -1
  18. package/.medusa/server/src/api/pos/old-gold-item/middleware.js +10 -0
  19. package/.medusa/server/src/api/pos/old-gold-item/route.js +52 -0
  20. package/.medusa/server/src/api/pos/platinumdata/middleware.js +13 -0
  21. package/.medusa/server/src/api/pos/platinumdata/route.js +41 -0
  22. package/.medusa/server/src/api/pos/silverdata/middleware.js +13 -0
  23. package/.medusa/server/src/api/pos/silverdata/route.js +41 -0
  24. package/.medusa/server/src/api/pos/wallet-balance/middleware.js +13 -0
  25. package/.medusa/server/src/api/pos/wallet-balance/route.js +68 -0
  26. package/.medusa/server/src/api/store/custom-price/validators.js +2 -2
  27. package/.medusa/server/src/api/store/gold-rate/validators.js +2 -2
  28. package/.medusa/server/src/jobs/process-erp-events.js +205 -0
  29. package/.medusa/server/src/jobs/process-variant-option-sync.js +43 -28
  30. package/.medusa/server/src/jobs/sync-addless-detail.js +60 -0
  31. package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +89 -0
  32. package/.medusa/server/src/jobs/sync-item-master.js +20 -0
  33. package/.medusa/server/src/jobs/sync-labour-chart-master.js +20 -0
  34. package/.medusa/server/src/jobs/sync-order-erp.js +3 -3
  35. package/.medusa/server/src/jobs/sync-payment-book-master.js +63 -0
  36. package/.medusa/server/src/jobs/sync-rate-chart-master.js +20 -0
  37. package/.medusa/server/src/jobs/sync-report-master.js +40 -0
  38. package/.medusa/server/src/jobs/sync-sale-return-policy-master.js +29 -0
  39. package/.medusa/server/src/lib/api-response.js +2 -1
  40. package/.medusa/server/src/links/jewel-trans-master.js +13 -0
  41. package/.medusa/server/src/links/order-master.js +13 -0
  42. package/.medusa/server/src/links/sale-master.js +13 -0
  43. package/.medusa/server/src/modules/addless-detail/index.js +13 -0
  44. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260212101102.js +15 -0
  45. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260213000000.js +47 -0
  46. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260226053037.js +15 -0
  47. package/.medusa/server/src/modules/addless-detail/models/addless-master.js +17 -0
  48. package/.medusa/server/src/modules/addless-detail/service.js +10 -0
  49. package/.medusa/server/src/modules/applicable-sale-return-policy/index.js +13 -0
  50. package/.medusa/server/src/modules/applicable-sale-return-policy/migrations/Migration20260123083526.js +15 -0
  51. package/.medusa/server/src/modules/applicable-sale-return-policy/models/applicable-sale-return-policy.js +23 -0
  52. package/.medusa/server/src/modules/applicable-sale-return-policy/service.js +10 -0
  53. package/.medusa/server/src/modules/book-list/index.js +13 -0
  54. package/.medusa/server/src/modules/book-list/migrations/Migration20260123083525.js +15 -0
  55. package/.medusa/server/src/modules/book-list/models/book-list.js +12 -0
  56. package/.medusa/server/src/modules/book-list/service.js +10 -0
  57. package/.medusa/server/src/modules/category-group-master/migrations/Migration20250729035221.js +2 -2
  58. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +2 -2
  59. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +2 -2
  60. package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +2 -2
  61. package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +2 -2
  62. package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +2 -2
  63. package/.medusa/server/src/modules/category-master/migrations/Migration20250729040659.js +2 -2
  64. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +2 -2
  65. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +2 -2
  66. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +2 -2
  67. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +2 -2
  68. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +2 -2
  69. package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +2 -2
  70. package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +2 -2
  71. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +2 -2
  72. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +2 -2
  73. package/.medusa/server/src/modules/customer-receive-voucher/index.js +13 -0
  74. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20250115000000.js +51 -0
  75. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20260106050934.js +18 -0
  76. package/.medusa/server/src/modules/customer-receive-voucher/models/customer-receive-voucher.js +35 -0
  77. package/.medusa/server/src/modules/customer-receive-voucher/service.js +10 -0
  78. package/.medusa/server/src/modules/discount-master/migrations/Migration20250707232514.js +2 -2
  79. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051709.js +2 -2
  80. package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051737.js +2 -2
  81. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +2 -2
  82. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +2 -2
  83. package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +2 -2
  84. package/.medusa/server/src/modules/erp/service.js +542 -8
  85. package/.medusa/server/src/modules/erp-event/migrations/Migration20250908040911.js +2 -2
  86. package/.medusa/server/src/modules/erp-event/migrations/Migration20250922095956.js +2 -2
  87. package/.medusa/server/src/modules/extended-product/migrations/Migration20250620030100.js +2 -2
  88. package/.medusa/server/src/modules/extended-product/migrations/Migration20250716041546.js +2 -2
  89. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +2 -2
  90. package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +2 -2
  91. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +2 -2
  92. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +2 -2
  93. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030335.js +2 -2
  94. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030522.js +2 -2
  95. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629220100.js +2 -2
  96. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629223425.js +2 -2
  97. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250704064831.js +2 -2
  98. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250716121609.js +2 -2
  99. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250725104852.js +2 -2
  100. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250726232339.js +2 -2
  101. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250916065103.js +2 -2
  102. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +2 -2
  103. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +2 -2
  104. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +2 -2
  105. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +2 -2
  106. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +2 -2
  107. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251210112341.js +18 -0
  108. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +2 -2
  109. package/.medusa/server/src/modules/item-master/index.js +13 -0
  110. package/.medusa/server/src/modules/item-master/migrations/Migration20260212101055.js +15 -0
  111. package/.medusa/server/src/modules/item-master/models/item-master.js +20 -0
  112. package/.medusa/server/src/modules/item-master/service.js +10 -0
  113. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +2 -2
  114. package/.medusa/server/src/modules/jewel-trans-master/index.js +13 -0
  115. package/.medusa/server/src/modules/jewel-trans-master/migrations/Migration20260226053036.js +57 -0
  116. package/.medusa/server/src/modules/jewel-trans-master/models/jewel-trans-master.js +151 -0
  117. package/.medusa/server/src/modules/jewel-trans-master/service.js +16 -0
  118. package/.medusa/server/src/modules/labour-chart-master/index.js +13 -0
  119. package/.medusa/server/src/modules/labour-chart-master/migrations/Migration20260101081502.js +15 -0
  120. package/.medusa/server/src/modules/labour-chart-master/models/labour-chart-master.js +16 -0
  121. package/.medusa/server/src/modules/labour-chart-master/service.js +10 -0
  122. package/.medusa/server/src/modules/order-master/index.js +13 -0
  123. package/.medusa/server/src/modules/order-master/migrations/Migration20260226053036.js +29 -0
  124. package/.medusa/server/src/modules/order-master/models/order-master.js +97 -0
  125. package/.medusa/server/src/modules/order-master/service.js +12 -0
  126. package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +2 -2
  127. package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +2 -2
  128. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +2 -2
  129. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +2 -2
  130. package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +2 -2
  131. package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +2 -2
  132. package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +2 -2
  133. package/.medusa/server/src/modules/party-master/migrations/Migration20250708123734.js +2 -2
  134. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +2 -2
  135. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +2 -2
  136. package/.medusa/server/src/modules/payment-book-master/index.js +13 -0
  137. package/.medusa/server/src/modules/payment-book-master/migrations/Migration20251203105358.js +15 -0
  138. package/.medusa/server/src/modules/payment-book-master/models/payment-book-master.js +12 -0
  139. package/.medusa/server/src/modules/payment-book-master/service.js +10 -0
  140. package/.medusa/server/src/modules/promocode-master/migrations/Migration20250819123821.js +2 -2
  141. package/.medusa/server/src/modules/promocode-master/migrations/Migration20250918095713.js +2 -2
  142. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +2 -2
  143. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +2 -2
  144. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +2 -2
  145. package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +2 -2
  146. package/.medusa/server/src/modules/rate-chart-master/index.js +13 -0
  147. package/.medusa/server/src/modules/rate-chart-master/migrations/Migration20260101081500.js +15 -0
  148. package/.medusa/server/src/modules/rate-chart-master/models/rate-chart-master.js +13 -0
  149. package/.medusa/server/src/modules/rate-chart-master/service.js +10 -0
  150. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +2 -2
  151. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +2 -2
  152. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +2 -2
  153. package/.medusa/server/src/modules/report-master/index.js +13 -0
  154. package/.medusa/server/src/modules/report-master/migrations/Migration20260121060955.js +15 -0
  155. package/.medusa/server/src/modules/report-master/migrations/Migration20260121112624.js +15 -0
  156. package/.medusa/server/src/modules/report-master/models/report-master.js +12 -0
  157. package/.medusa/server/src/modules/report-master/service.js +10 -0
  158. package/.medusa/server/src/modules/sale-master/index.js +13 -0
  159. package/.medusa/server/src/modules/sale-master/migrations/Migration20260205092935.js +15 -0
  160. package/.medusa/server/src/modules/sale-master/migrations/Migration20260205100000.js +16 -0
  161. package/.medusa/server/src/modules/sale-master/models/sale-master.js +27 -0
  162. package/.medusa/server/src/modules/sale-master/service.js +10 -0
  163. package/.medusa/server/src/modules/sale-return-master/index.js +13 -0
  164. package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260205093034.js +15 -0
  165. package/.medusa/server/src/modules/sale-return-master/models/sale-return-master.js +16 -0
  166. package/.medusa/server/src/modules/sale-return-master/service.js +10 -0
  167. package/.medusa/server/src/modules/sale-return-policy-master/index.js +13 -0
  168. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260105061449.js +21 -0
  169. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129084920.js +14 -0
  170. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129085620.js +20 -0
  171. package/.medusa/server/src/modules/sale-return-policy-master/models/sale-return-policy-master.js +37 -0
  172. package/.medusa/server/src/modules/sale-return-policy-master/service.js +12 -0
  173. package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +2 -2
  174. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +2 -2
  175. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713113247.js +2 -2
  176. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713121440.js +2 -2
  177. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +2 -2
  178. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +2 -2
  179. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251203083315.js +2 -2
  180. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +2 -2
  181. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +2 -2
  182. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +2 -2
  183. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025135.js +2 -2
  184. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025307.js +2 -2
  185. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730032130.js +2 -2
  186. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +2 -2
  187. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +2 -2
  188. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +2 -2
  189. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +2 -2
  190. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +2 -2
  191. package/.medusa/server/src/subscribers/cutomer-updated.js +3 -1
  192. package/.medusa/server/src/subscribers/order-item-update.js +11 -0
  193. package/.medusa/server/src/subscribers/party-master.js +36 -35
  194. package/.medusa/server/src/subscribers/shipping-info-master.js +3 -3
  195. package/.medusa/server/src/utils/build-redis-key.js +3 -1
  196. package/.medusa/server/src/utils/state-helper.js +3 -2
  197. package/.medusa/server/src/workflows/addless-detail/index.js +11 -0
  198. package/.medusa/server/src/workflows/addless-detail/steps/create-or-update-addless-detail.js +36 -0
  199. package/.medusa/server/src/workflows/addless-detail/steps/fetch-addless-detail.js +73 -0
  200. package/.medusa/server/src/workflows/applicable-sale-return-policy/index.js +11 -0
  201. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/create-or-update-applicable-sale-return-policy.js +74 -0
  202. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/fetch-applicable-sale-return-policy.js +64 -0
  203. package/.medusa/server/src/workflows/book-list/index.js +11 -0
  204. package/.medusa/server/src/workflows/book-list/steps/create-or-update-book-list.js +55 -0
  205. package/.medusa/server/src/workflows/book-list/steps/fetch-book-list.js +64 -0
  206. package/.medusa/server/src/workflows/customer-advance-payment/index.js +18 -0
  207. package/.medusa/server/src/workflows/customer-advance-payment/steps/create-receive-voucher.js +71 -0
  208. package/.medusa/server/src/workflows/customer-advance-payment/steps/index.js +18 -0
  209. package/.medusa/server/src/workflows/customer-advance-payment/workflows/create-receive-voucher-workflow.js +11 -0
  210. package/.medusa/server/src/workflows/customer-advance-payment/workflows/index.js +18 -0
  211. package/.medusa/server/src/workflows/helpers/product-helper.js +33 -17
  212. package/.medusa/server/src/workflows/helpers/variant-helper.js +165 -162
  213. package/.medusa/server/src/workflows/hooks/product-updated.js +6 -11
  214. package/.medusa/server/src/workflows/index.js +3 -1
  215. package/.medusa/server/src/workflows/inward-master/workflows/create-inward.js +6 -3
  216. package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +6 -2
  217. package/.medusa/server/src/workflows/item-master/index.js +11 -0
  218. package/.medusa/server/src/workflows/item-master/steps/create-or-update-item-master.js +50 -0
  219. package/.medusa/server/src/workflows/item-master/steps/fetch-item-master.js +29 -0
  220. package/.medusa/server/src/workflows/jewel-trans-master/index.js +18 -0
  221. package/.medusa/server/src/workflows/jewel-trans-master/steps/create-or-update-jewel-trans-master.js +370 -0
  222. package/.medusa/server/src/workflows/jewel-trans-master/steps/index.js +18 -0
  223. package/.medusa/server/src/workflows/labour-chart-master/index.js +11 -0
  224. package/.medusa/server/src/workflows/labour-chart-master/steps/create-or-update-labour-chart-master.js +38 -0
  225. package/.medusa/server/src/workflows/labour-chart-master/steps/fetch-labour-chart.js +31 -0
  226. package/.medusa/server/src/workflows/order-master/index.js +3 -0
  227. package/.medusa/server/src/workflows/order-master/order-master-webhook.js +24 -0
  228. package/.medusa/server/src/workflows/order-master/steps/create-or-update-order-master.js +239 -0
  229. package/.medusa/server/src/workflows/order-master/steps/delete-order-master-by-erp-ids.js +61 -0
  230. package/.medusa/server/src/workflows/order-master/steps/process-order-master-from-webhook.js +283 -0
  231. package/.medusa/server/src/workflows/orders/steps/find-nearest-pincodes-step.js +336 -0
  232. package/.medusa/server/src/workflows/orders/steps/get-today-gold-rate-step.js +77 -0
  233. package/.medusa/server/src/workflows/orders/steps/index.js +14 -1
  234. package/.medusa/server/src/workflows/orders/steps/sync-advance-payment-to-erp-step.js +185 -0
  235. package/.medusa/server/src/workflows/orders/steps/sync-buyback-to-erp-step.js +98 -0
  236. package/.medusa/server/src/workflows/orders/steps/sync-cancel-to-erp-step.js +119 -0
  237. package/.medusa/server/src/workflows/orders/steps/sync-exchange-to-erp-step.js +100 -0
  238. package/.medusa/server/src/workflows/orders/steps/sync-old-gold-to-erp-step.js +161 -0
  239. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +425 -16
  240. package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +147 -0
  241. package/.medusa/server/src/workflows/orders/utils/order-helper.js +137 -30
  242. package/.medusa/server/src/workflows/orders/utils/order-request-helper.js +222 -0
  243. package/.medusa/server/src/workflows/orders/workflows/get-today-gold-rate.js +10 -0
  244. package/.medusa/server/src/workflows/orders/workflows/index.js +3 -1
  245. package/.medusa/server/src/workflows/orders/workflows/sync-advanve-payment-to-erp.js +21 -0
  246. package/.medusa/server/src/workflows/orders/workflows/sync-old-gold-to-erp.js +10 -0
  247. package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +53 -4
  248. package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +44 -33
  249. package/.medusa/server/src/workflows/party-master/steps/create-user-erp.js +96 -0
  250. package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +2 -1
  251. package/.medusa/server/src/workflows/party-master/steps/index.js +2 -1
  252. package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +2 -2
  253. package/.medusa/server/src/workflows/party-master/workflows/create-user-erp.js +11 -0
  254. package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
  255. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +16 -249
  256. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +103 -22
  257. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +16 -10
  258. package/.medusa/server/src/workflows/payment-book-master/index.js +11 -0
  259. package/.medusa/server/src/workflows/payment-book-master/steps/create-or-update-payment-book-master.js +37 -0
  260. package/.medusa/server/src/workflows/payment-book-master/steps/fetch-payment-book.js +64 -0
  261. package/.medusa/server/src/workflows/rate-chart-master/index.js +11 -0
  262. package/.medusa/server/src/workflows/rate-chart-master/steps/create-or-update-rate-chart-master.js +25 -0
  263. package/.medusa/server/src/workflows/rate-chart-master/steps/fetch-rate-chart.js +31 -0
  264. package/.medusa/server/src/workflows/report-master/index.js +11 -0
  265. package/.medusa/server/src/workflows/report-master/steps/create-or-update-report-master.js +53 -0
  266. package/.medusa/server/src/workflows/report-master/steps/fetch-report.js +71 -0
  267. package/.medusa/server/src/workflows/sale-master/index.js +24 -0
  268. package/.medusa/server/src/workflows/sale-master/steps/create-sale-master.js +72 -0
  269. package/.medusa/server/src/workflows/sale-master/steps/delete-sale-master.js +59 -0
  270. package/.medusa/server/src/workflows/sale-master/steps/update-sale-master.js +95 -0
  271. package/.medusa/server/src/workflows/sale-return-master/index.js +24 -0
  272. package/.medusa/server/src/workflows/sale-return-master/steps/create-sale-return-master.js +45 -0
  273. package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master.js +36 -0
  274. package/.medusa/server/src/workflows/sale-return-master/steps/update-sale-return-master.js +53 -0
  275. package/.medusa/server/src/workflows/sale-return-policy-master/index.js +11 -0
  276. package/.medusa/server/src/workflows/sale-return-policy-master/steps/create-or-update-sale-return-policy-master.js +91 -0
  277. package/.medusa/server/src/workflows/sale-return-policy-master/steps/fetch-sale-return-policy.js +31 -0
  278. package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +6 -8
  279. package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +9 -3
  280. package/package.json +14 -32
@@ -24,11 +24,107 @@ class ErpService {
24
24
  return data.data;
25
25
  });
26
26
  }
27
- async createOrder(orderData) {
27
+ async getPaymentBook(type, isPaymentReceive, branchNo) {
28
+ const response = isPaymentReceive ? await fetch(`${this._options.baseUrl}/GetPaymentReceiveBookList`, {
29
+ method: "GET",
30
+ headers: {
31
+ AuthorizationToken: this._options.authToken,
32
+ Type: type,
33
+ BranchNo: branchNo,
34
+ },
35
+ }) : await fetch(`${this._options.baseUrl}/GetPaymentBook`, {
36
+ method: "GET",
37
+ headers: {
38
+ AuthorizationToken: this._options.authToken,
39
+ PaymentBookFor: type,
40
+ BranchNo: branchNo,
41
+ },
42
+ });
43
+ if (!response.ok) {
44
+ throw new Error(`Failed to fetch data for branch No: ${branchNo}`);
45
+ }
46
+ return response.json().then((data) => {
47
+ return { data: data.data, branchNo: branchNo, type: type };
48
+ });
49
+ }
50
+ async getListOfAddlessDetail(branchNo, bookNo) {
51
+ const response = await fetch(`${this._options.baseUrl}/ListOfAddlessDetail`, {
52
+ method: "GET",
53
+ headers: {
54
+ AuthorizationToken: this._options.authToken,
55
+ BranchNo: branchNo ?? "",
56
+ BookNo: bookNo ?? "",
57
+ },
58
+ });
59
+ if (!response.ok) {
60
+ throw new Error(`Failed to fetch ListOfAddlessDetail for branchNo: ${branchNo}, bookNo: ${bookNo}`);
61
+ }
62
+ return response.json().then((data) => {
63
+ const list = data?.data ?? data ?? [];
64
+ return {
65
+ data: Array.isArray(list) ? list : [list],
66
+ branchNo: branchNo ?? "",
67
+ bookNo: bookNo ?? "",
68
+ };
69
+ });
70
+ }
71
+ async getReportList(reportListFor, branchNo) {
72
+ // Skip empty branch numbers
73
+ if (!branchNo || branchNo.trim() === "") {
74
+ console.warn(`Skipping empty branch number for reportListFor: ${reportListFor}`);
75
+ return { data: [], branchNo: branchNo, reportListFor: reportListFor };
76
+ }
77
+ const url = `${this._options.baseUrl}/GetReportList`;
78
+ console.log(`[getReportList] Calling ERP API: ${url} with headers: AuthorizationToken, ReportListFor: ${reportListFor}, BranchNo: ${branchNo}`);
79
+ const response = await fetch(url, {
80
+ method: "GET",
81
+ headers: {
82
+ AuthorizationToken: this._options.authToken,
83
+ ReportListFor: reportListFor,
84
+ BranchNo: branchNo,
85
+ },
86
+ });
87
+ // Handle 404 errors gracefully - endpoint may not exist or branch may not be valid
88
+ if (response.status === 404) {
89
+ console.warn(`[getReportList] Endpoint not found (404) for branch No: ${branchNo}, reportListFor: ${reportListFor}. URL: ${url}. Returning empty data.`);
90
+ return { data: [], branchNo: branchNo, reportListFor: reportListFor };
91
+ }
92
+ // Read response text once to check content
93
+ const responseText = await response.text().catch(() => "");
94
+ // Check if response is HTML (error page) - treat as 404 even if status is not 404
95
+ if (responseText.trim().toLowerCase().startsWith("<!doctype html") || responseText.includes("<html")) {
96
+ console.warn(`[getReportList] Received HTML error page for branch No: ${branchNo}, reportListFor: ${reportListFor} (Status: ${response.status}). Returning empty data.`);
97
+ return { data: [], branchNo: branchNo, reportListFor: reportListFor };
98
+ }
99
+ if (!response.ok) {
100
+ const errorMessage = `Failed to fetch report list for branch No: ${branchNo}. Status: ${response.status} ${response.statusText}. Response: ${responseText.substring(0, 200)}`;
101
+ console.error(`[getReportList] ${errorMessage}`);
102
+ throw new Error(errorMessage);
103
+ }
104
+ // Try to parse as JSON
105
+ try {
106
+ const data = JSON.parse(responseText);
107
+ // Check if the API returned an error status even with 200 OK
108
+ // This typically means "not found" or "configuration missing" scenarios
109
+ if (data.status === false) {
110
+ const errorMessage = data.message || "Report list fetch failed";
111
+ console.warn(`[getReportList] Configuration not found for branch No: ${branchNo}, reportListFor: ${reportListFor}. Message: ${errorMessage}. Returning empty data.`);
112
+ // Return empty data instead of throwing, so the job can continue
113
+ return { data: [], branchNo: branchNo, reportListFor: reportListFor };
114
+ }
115
+ return { data: data.data || [], branchNo: branchNo, reportListFor: reportListFor };
116
+ }
117
+ catch (parseError) {
118
+ // If JSON parsing fails, it might be HTML or other non-JSON response
119
+ console.warn(`[getReportList] Failed to parse JSON response for branch No: ${branchNo}, reportListFor: ${reportListFor}. Returning empty data. Error: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
120
+ return { data: [], branchNo: branchNo, reportListFor: reportListFor };
121
+ }
122
+ }
123
+ async createOrder(orderData, type = "WEBSITE") {
28
124
  const payload = {
29
125
  datafor: "Order",
30
126
  operation: "add",
31
- inputfrom: "WEBSITE",
127
+ inputfrom: type,
32
128
  data: orderData,
33
129
  };
34
130
  const response = await fetch(`${this._options.baseUrl}/webhook`, {
@@ -44,7 +140,127 @@ class ErpService {
44
140
  }
45
141
  return response.json().then((data) => {
46
142
  console.log("Create Order ERP Response", JSON.stringify(data, null, 2));
47
- return data.data;
143
+ // Return full response to check status
144
+ return {
145
+ status: data.status,
146
+ message: data.message,
147
+ data: data.data,
148
+ };
149
+ });
150
+ }
151
+ /**
152
+ * Sync order cancellation (OrderProceed) to ERP.
153
+ * datafor: "OrderProceed", operation: "add", inputfrom: "POS" | "WEBSITE".
154
+ */
155
+ async syncOrderProceed(proceedData, type = "WEBSITE") {
156
+ const payload = {
157
+ datafor: "OrderProceed",
158
+ operation: "add",
159
+ inputfrom: type,
160
+ data: proceedData,
161
+ };
162
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
163
+ method: "POST",
164
+ headers: {
165
+ AuthorizationToken: this._options.authToken,
166
+ "Content-Type": "application/json",
167
+ },
168
+ body: JSON.stringify(payload),
169
+ });
170
+ if (!response.ok) {
171
+ throw new Error(`Failed to sync OrderProceed (order cancel) to ERP`);
172
+ }
173
+ return response.json().then((data) => {
174
+ console.log("OrderProceed ERP Response", JSON.stringify(data, null, 2));
175
+ return {
176
+ status: data.status,
177
+ message: data.message,
178
+ data: data.data,
179
+ };
180
+ });
181
+ }
182
+ async createAdvancePayment(paymentData, type = "WEBSITE") {
183
+ const payload = {
184
+ datafor: "ReceiveVoucherAgainstOrder",
185
+ operation: "add",
186
+ inputfrom: type,
187
+ data: paymentData,
188
+ };
189
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
190
+ method: "POST",
191
+ headers: {
192
+ AuthorizationToken: this._options.authToken,
193
+ "Content-Type": "application/json",
194
+ },
195
+ body: JSON.stringify(payload),
196
+ });
197
+ if (!response.ok) {
198
+ throw new Error(`Failed to create AdvancePayment ERP Response`);
199
+ }
200
+ return response.json().then((data) => {
201
+ console.log("Create AdvancePayment ERP Response", JSON.stringify(data, null, 2));
202
+ // Return full response to check status
203
+ return {
204
+ status: data.status,
205
+ message: data.message,
206
+ data: data.data,
207
+ };
208
+ });
209
+ }
210
+ async createReceiveVoucher(paymentData, type = "WEBSITE") {
211
+ const payload = {
212
+ datafor: "ReceiveVoucher",
213
+ operation: "add",
214
+ inputfrom: type,
215
+ data: [paymentData],
216
+ };
217
+ console.log(payload);
218
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
219
+ method: "POST",
220
+ headers: {
221
+ AuthorizationToken: this._options.authToken,
222
+ "Content-Type": "application/json",
223
+ },
224
+ body: JSON.stringify(payload),
225
+ });
226
+ if (!response.ok) {
227
+ throw new Error(`Failed to create ReceiveVoucher ERP Response`);
228
+ }
229
+ return response.json().then((data) => {
230
+ console.log("Create ReceiveVoucher ERP Response", JSON.stringify(data, null, 2));
231
+ return {
232
+ status: data.status,
233
+ message: data.message,
234
+ data: data.data,
235
+ };
236
+ });
237
+ }
238
+ async deleteReceiveVoucher(voucherEntryId) {
239
+ const payload = {
240
+ datafor: "ReceiveVoucher",
241
+ operation: "delete",
242
+ data: {
243
+ VoucherEntryId: voucherEntryId,
244
+ },
245
+ };
246
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
247
+ method: "POST",
248
+ headers: {
249
+ AuthorizationToken: this._options.authToken,
250
+ "Content-Type": "application/json",
251
+ },
252
+ body: JSON.stringify(payload),
253
+ });
254
+ if (!response.ok) {
255
+ throw new Error(`Failed to delete ReceiveVoucher ERP Response`);
256
+ }
257
+ return response.json().then((data) => {
258
+ console.log("Delete ReceiveVoucher ERP Response", JSON.stringify(data, null, 2));
259
+ return {
260
+ status: data.status,
261
+ message: data.message,
262
+ data: data.data,
263
+ };
48
264
  });
49
265
  }
50
266
  async createCustomer(customerData) {
@@ -66,6 +282,7 @@ class ErpService {
66
282
  throw new Error(`Failed to create customer`);
67
283
  }
68
284
  return response.json().then((data) => {
285
+ console.log("Create Customer Response", JSON.stringify(data, null, 2));
69
286
  return data.data;
70
287
  });
71
288
  }
@@ -85,12 +302,38 @@ class ErpService {
85
302
  body: JSON.stringify(payload),
86
303
  });
87
304
  if (!response.ok) {
88
- throw new Error(`Failed to create shipping address`);
305
+ const errorText = await response.text().catch(() => "Unknown error");
306
+ throw new Error(`Failed to create shipping address: ${response.status} ${response.statusText}. Response: ${errorText.substring(0, 200)}`);
89
307
  }
90
- return response.json().then((data) => {
91
- console.log(data);
308
+ // Read response text once (can only be read once)
309
+ const responseText = await response.text().catch(() => "Unable to read response");
310
+ // Check content type before parsing JSON
311
+ const contentType = response.headers.get("content-type");
312
+ if (!contentType || !contentType.includes("application/json")) {
313
+ throw new Error(`Expected JSON response but received ${contentType}. Response: ${responseText.substring(0, 200)}`);
314
+ }
315
+ try {
316
+ const data = JSON.parse(responseText);
317
+ console.log("[createShippingAddress] ERP Response:", data);
318
+ // Check if the API returned an error status even with 200 OK
319
+ if (data.status === false) {
320
+ const errorMessage = data.message || "Shipping address creation failed";
321
+ throw new Error(`ERP API error: ${errorMessage}`);
322
+ }
323
+ // Return the data object, which should contain ShippingId
324
+ if (!data.data || !data.data.ShippingId) {
325
+ throw new Error(`Invalid response from ERP: missing ShippingId. Response: ${JSON.stringify(data)}`);
326
+ }
92
327
  return data.data;
93
- });
328
+ }
329
+ catch (error) {
330
+ // If it's already an Error with a message, re-throw it
331
+ if (error instanceof Error) {
332
+ throw error;
333
+ }
334
+ // Otherwise, wrap it
335
+ throw new Error(`Failed to parse JSON response: ${error.message}. Response: ${responseText.substring(0, 200)}`);
336
+ }
94
337
  }
95
338
  async updateShippingAddress(shippingData, inputfrom = "WEBSITE") {
96
339
  const payload = {
@@ -149,6 +392,32 @@ class ErpService {
149
392
  const json = await response.json();
150
393
  return json.data;
151
394
  }
395
+ async getSilverRateData() {
396
+ const response = await fetch(`${this._options.baseUrl}/GetSilverRateDetail`, {
397
+ method: "GET",
398
+ headers: {
399
+ AuthorizationToken: this._options.authToken,
400
+ },
401
+ });
402
+ if (!response.ok) {
403
+ throw new Error(`Failed to fetch silver rate data from ERP`);
404
+ }
405
+ const json = await response.json();
406
+ return json.data;
407
+ }
408
+ async getPlatinumRateData() {
409
+ const response = await fetch(`${this._options.baseUrl}/GetPlatinumRateDetail`, {
410
+ method: "GET",
411
+ headers: {
412
+ AuthorizationToken: this._options.authToken,
413
+ },
414
+ });
415
+ if (!response.ok) {
416
+ throw new Error(`Failed to fetch platinum rate data from ERP`);
417
+ }
418
+ const json = await response.json();
419
+ return json.data;
420
+ }
152
421
  async updateCustomer(customerData) {
153
422
  const payload = {
154
423
  datafor: "partymst",
@@ -172,7 +441,272 @@ class ErpService {
172
441
  return data.data;
173
442
  });
174
443
  }
444
+ async getItemMaster() {
445
+ const response = await fetch(`${this._options.baseUrl}/GetAllMasterData`, {
446
+ method: "GET",
447
+ headers: {
448
+ AuthorizationToken: this._options.authToken,
449
+ datafor: "itemMst",
450
+ },
451
+ });
452
+ if (!response.ok) {
453
+ throw new Error(`Failed to fetch item master data`);
454
+ }
455
+ return response.json().then((data) => {
456
+ const raw = data?.data;
457
+ const list = raw?.ItemMst ?? raw ?? [];
458
+ return Array.isArray(list) ? list : [];
459
+ });
460
+ }
461
+ async getLabourChartMaster() {
462
+ const response = await fetch(`${this._options.baseUrl}/GetAllMasterData`, {
463
+ method: "GET",
464
+ headers: {
465
+ AuthorizationToken: this._options.authToken,
466
+ datafor: "LabourChartMst",
467
+ },
468
+ });
469
+ if (!response.ok) {
470
+ throw new Error(`Failed to fetch labour chart master data`);
471
+ }
472
+ return response.json().then((data) => {
473
+ return data.data || [];
474
+ });
475
+ }
476
+ async getRateChartMaster() {
477
+ const response = await fetch(`${this._options.baseUrl}/GetAllMasterData`, {
478
+ method: "GET",
479
+ headers: {
480
+ AuthorizationToken: this._options.authToken,
481
+ datafor: "RateChartMst",
482
+ },
483
+ });
484
+ if (!response.ok) {
485
+ throw new Error(`Failed to fetch rate chart master data`);
486
+ }
487
+ return response.json().then((data) => {
488
+ return data.data || [];
489
+ });
490
+ }
491
+ async getSaleReturnPolicyMaster() {
492
+ const response = await fetch(`${this._options.baseUrl}/GetAllMasterData`, {
493
+ method: "GET",
494
+ headers: {
495
+ AuthorizationToken: this._options.authToken,
496
+ datafor: "SaleReturnPolicyMaster",
497
+ },
498
+ });
499
+ if (!response.ok) {
500
+ throw new Error(`Failed to fetch sale return policy master data`);
501
+ }
502
+ return response.json().then((data) => {
503
+ return data.data || {};
504
+ });
505
+ }
506
+ async getBookList(type, branchNo) {
507
+ const response = await fetch(`${this._options.baseUrl}/GetBookList`, {
508
+ method: "GET",
509
+ headers: {
510
+ AuthorizationToken: this._options.authToken,
511
+ Type: type,
512
+ BranchNo: branchNo,
513
+ },
514
+ });
515
+ if (!response.ok) {
516
+ if (response.status === 401) {
517
+ return {
518
+ data: [],
519
+ branchNo: branchNo,
520
+ type: type,
521
+ };
522
+ }
523
+ throw new Error(`Failed to fetch book list for type: ${type}, branchNo: ${branchNo}`);
524
+ }
525
+ return response.json().then((data) => {
526
+ return { data: data.data || [], branchNo: branchNo, type: type };
527
+ });
528
+ }
529
+ async getApplicableSaleReturnPolicy(bookNo, branchNo) {
530
+ const response = await fetch(`${this._options.baseUrl}/ListOfApplicableSaleReturnPolicy`, {
531
+ method: "GET",
532
+ headers: {
533
+ AuthorizationToken: this._options.authToken,
534
+ BookNo: bookNo,
535
+ BranchNo: branchNo,
536
+ },
537
+ });
538
+ if (!response.ok) {
539
+ if (response.status === 401) {
540
+ return {
541
+ data: [],
542
+ bookNo: bookNo,
543
+ branchNo: branchNo,
544
+ };
545
+ }
546
+ throw new Error(`Failed to fetch applicable sale return policy for bookNo: ${bookNo}, branchNo: ${branchNo}`);
547
+ }
548
+ return response.json().then((data) => {
549
+ return { data: data.data || [], bookNo: bookNo, branchNo: branchNo };
550
+ });
551
+ }
552
+ async createSale(saleData, type = "WEBSITE") {
553
+ const payload = {
554
+ datafor: "sale",
555
+ operation: "add",
556
+ inputfrom: type,
557
+ data: saleData,
558
+ };
559
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
560
+ method: "POST",
561
+ headers: {
562
+ AuthorizationToken: this._options.authToken,
563
+ "Content-Type": "application/json",
564
+ },
565
+ body: JSON.stringify(payload),
566
+ });
567
+ if (!response.ok) {
568
+ throw new Error(`Failed to create sale`);
569
+ }
570
+ return response.json().then((data) => {
571
+ console.log("Create Sale ERP Response", JSON.stringify(data, null, 2));
572
+ // Return full response to check status
573
+ return {
574
+ status: data.status,
575
+ message: data.message,
576
+ data: data.data,
577
+ };
578
+ });
579
+ }
580
+ async createSaleReturn(saleReturnData, type = "WEBSITE") {
581
+ const payload = {
582
+ datafor: "salereturn",
583
+ operation: "add",
584
+ inputfrom: type,
585
+ data: saleReturnData,
586
+ };
587
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
588
+ method: "POST",
589
+ headers: {
590
+ AuthorizationToken: this._options.authToken,
591
+ "Content-Type": "application/json",
592
+ },
593
+ body: JSON.stringify(payload),
594
+ });
595
+ if (!response.ok) {
596
+ throw new Error(`Failed to create sale return`);
597
+ }
598
+ return response.json().then((data) => {
599
+ console.log("Create Sale Return ERP Response", JSON.stringify(data, null, 2));
600
+ // Return full response to check status
601
+ return {
602
+ status: data.status,
603
+ message: data.message,
604
+ data: data.data,
605
+ };
606
+ });
607
+ }
608
+ /**
609
+ * Create Material Purchase (old gold) in ERP.
610
+ * datafor: "MaterialPurchase", operation: "add", inputfrom: "POS".
611
+ */
612
+ async createMaterialPurchase(data, type = "POS") {
613
+ const payload = {
614
+ datafor: "MaterialPurchase",
615
+ operation: "add",
616
+ inputfrom: type,
617
+ data,
618
+ };
619
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
620
+ method: "POST",
621
+ headers: {
622
+ AuthorizationToken: this._options.authToken,
623
+ "Content-Type": "application/json",
624
+ },
625
+ body: JSON.stringify(payload),
626
+ });
627
+ if (!response.ok) {
628
+ throw new Error(`Failed to create MaterialPurchase (old gold) in ERP: ${response.statusText}`);
629
+ }
630
+ return response.json().then((res) => {
631
+ console.log("Create MaterialPurchase ERP Response", JSON.stringify(res, null, 2));
632
+ return {
633
+ status: res.status,
634
+ message: res.message,
635
+ data: res.data,
636
+ };
637
+ });
638
+ }
639
+ async deleteSaleReturn(deleteData) {
640
+ const payload = {
641
+ datafor: "salereturn",
642
+ operation: "delete",
643
+ data: deleteData,
644
+ };
645
+ const response = await fetch(`${this._options.baseUrl}/webhook`, {
646
+ method: "POST",
647
+ headers: {
648
+ AuthorizationToken: this._options.authToken,
649
+ "Content-Type": "application/json",
650
+ },
651
+ body: JSON.stringify(payload),
652
+ });
653
+ if (!response.ok) {
654
+ throw new Error(`Failed to delete sale return`);
655
+ }
656
+ return response.json().then((data) => {
657
+ console.log("Delete Sale Return ERP Response", JSON.stringify(data, null, 2));
658
+ // Return full response to check status
659
+ return {
660
+ status: data.status,
661
+ message: data.message,
662
+ data: data.data,
663
+ };
664
+ });
665
+ }
666
+ async generateFile(params) {
667
+ // Build headers with parameters - ERP API expects them as headers, not query parameters
668
+ const headers = {
669
+ AuthorizationToken: this._options.authToken,
670
+ FileFor: params.FileFor,
671
+ FileType: params.FileType,
672
+ ReportId: params.ReportId,
673
+ transactionid: params.TransactionId, // Note: lowercase 'transactionid' as per ERP API
674
+ };
675
+ // Add optional LetterHead header if provided
676
+ if (params.LetterHead) {
677
+ headers.LetterHead = params.LetterHead;
678
+ }
679
+ console.log("[generateFile] Calling ERP API with headers:", {
680
+ AuthorizationToken: headers.AuthorizationToken ? "***" : undefined,
681
+ FileFor: headers.FileFor,
682
+ FileType: headers.FileType,
683
+ ReportId: headers.ReportId,
684
+ transactionid: headers.transactionid,
685
+ LetterHead: headers.LetterHead || "not provided",
686
+ });
687
+ const response = await fetch(`${this._options.baseUrl}/GenerateFile`, {
688
+ method: "GET",
689
+ headers: headers,
690
+ });
691
+ if (!response.ok) {
692
+ if (response.status === 401) {
693
+ return {
694
+ status: false,
695
+ message: "Unauthorized",
696
+ };
697
+ }
698
+ throw new Error(`Failed to generate file: ${response.statusText}`);
699
+ }
700
+ return response.json().then((data) => {
701
+ console.log("Generate File ERP Response", JSON.stringify(data, null, 2));
702
+ return {
703
+ status: data.status,
704
+ message: data.message,
705
+ data: data.data,
706
+ };
707
+ });
708
+ }
175
709
  }
176
710
  ErpService.identifier = types_1.ErpKeys.ERP;
177
711
  exports.default = ErpService;
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2VycC9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBT2lCO0FBRWpCLE1BQXFCLFVBQVU7SUFJN0IsWUFBWSxFQUFFLEVBQUUsT0FBbUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsT0FBZSxFQUNmLGFBQXFCO1FBRXJCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLGdCQUFnQixFQUFFO1lBQ3JFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztnQkFDM0MsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLDRDQUE0QyxhQUFhLEVBQUUsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUF1QjtRQUN2QyxNQUFNLE9BQU8sR0FBRztZQUNkLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxTQUFTO1lB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
712
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2VycC9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBYWlCO0FBRWpCLE1BQXFCLFVBQVU7SUFJN0IsWUFBWSxFQUFFLEVBQUUsT0FBbUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsT0FBZSxFQUNmLGFBQXFCO1FBRXJCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLGdCQUFnQixFQUFFO1lBQ3JFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztnQkFDM0MsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLDRDQUE0QyxhQUFhLEVBQUUsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBWSxFQUNaLGdCQUF3QixFQUN4QixRQUFnQjtRQUVoQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsR0FB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