@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.
- package/.medusa/server/src/admin/index.js +3 -1
- package/.medusa/server/src/admin/index.mjs +3 -1
- package/.medusa/server/src/api/admin/erp-event/query-config.js +8 -1
- package/.medusa/server/src/api/admin/generate-invoice/route.js +158 -0
- package/.medusa/server/src/api/admin/masters/utils.js +29 -1
- package/.medusa/server/src/api/admin/masters/validators.js +2 -2
- package/.medusa/server/src/api/admin/variant-options/recalculate/route.js +446 -0
- package/.medusa/server/src/api/admin/variant-options/sync/route.js +21 -5
- package/.medusa/server/src/api/erp/webhook/config.js +73 -5
- package/.medusa/server/src/api/erp/webhook/route.js +10 -137
- package/.medusa/server/src/api/erp/webhook/utils.js +8 -1
- package/.medusa/server/src/api/pos/customer-ledger/middleware.js +13 -0
- package/.medusa/server/src/api/pos/customer-ledger/route.js +50 -0
- package/.medusa/server/src/api/pos/generate-invoice/route.js +164 -0
- package/.medusa/server/src/api/pos/gold/calculate/route.js +104 -0
- package/.medusa/server/src/api/pos/gold/item-master-purity.js +46 -0
- package/.medusa/server/src/api/pos/gold/middleware.js +18 -0
- package/.medusa/server/src/api/pos/gold/route.js +83 -0
- package/.medusa/server/src/api/pos/gold-rate/route.js +37 -24
- package/.medusa/server/src/api/pos/middleware.js +13 -1
- package/.medusa/server/src/api/pos/old-gold-item/middleware.js +10 -0
- package/.medusa/server/src/api/pos/old-gold-item/route.js +52 -0
- package/.medusa/server/src/api/pos/platinumdata/middleware.js +13 -0
- package/.medusa/server/src/api/pos/platinumdata/route.js +41 -0
- package/.medusa/server/src/api/pos/silverdata/middleware.js +13 -0
- package/.medusa/server/src/api/pos/silverdata/route.js +41 -0
- package/.medusa/server/src/api/pos/wallet-balance/middleware.js +13 -0
- package/.medusa/server/src/api/pos/wallet-balance/route.js +68 -0
- package/.medusa/server/src/api/store/custom-price/validators.js +2 -2
- package/.medusa/server/src/api/store/customer-ledger/middleware.js +13 -0
- package/.medusa/server/src/api/store/customer-ledger/route.js +49 -0
- package/.medusa/server/src/api/store/gold-rate/validators.js +2 -2
- package/.medusa/server/src/api/store/middleware.js +5 -1
- package/.medusa/server/src/api/store/wallet-balance/middleware.js +13 -0
- package/.medusa/server/src/api/store/wallet-balance/route.js +67 -0
- package/.medusa/server/src/jobs/process-erp-events.js +128 -0
- package/.medusa/server/src/jobs/process-variant-option-sync.js +46 -29
- package/.medusa/server/src/jobs/sync-addless-detail.js +68 -0
- package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +97 -0
- package/.medusa/server/src/jobs/sync-customer-advance-payment-erp.js +105 -0
- package/.medusa/server/src/jobs/sync-customer-erp.js +128 -0
- package/.medusa/server/src/jobs/sync-item-master.js +29 -0
- package/.medusa/server/src/jobs/sync-labour-chart-master.js +29 -0
- package/.medusa/server/src/jobs/sync-order-erp.js +46 -20
- package/.medusa/server/src/jobs/sync-order-request-erp.js +64 -0
- package/.medusa/server/src/jobs/sync-payment-book-master.js +71 -0
- package/.medusa/server/src/jobs/sync-rate-chart-master.js +29 -0
- package/.medusa/server/src/jobs/sync-report-master.js +54 -0
- package/.medusa/server/src/jobs/sync-sale-return-policy-master.js +38 -0
- package/.medusa/server/src/jobs/sync-urd-purchase-erp.js +84 -0
- package/.medusa/server/src/lib/api-response.js +2 -1
- package/.medusa/server/src/links/jewel-trans-master.js +13 -0
- package/.medusa/server/src/links/order-master.js +13 -0
- package/.medusa/server/src/links/sale-master.js +13 -0
- package/.medusa/server/src/modules/addless-detail/index.js +13 -0
- package/.medusa/server/src/modules/addless-detail/migrations/Migration20260212101102.js +15 -0
- package/.medusa/server/src/modules/addless-detail/migrations/Migration20260213000000.js +47 -0
- package/.medusa/server/src/modules/addless-detail/migrations/Migration20260226053037.js +15 -0
- package/.medusa/server/src/modules/addless-detail/models/addless-master.js +17 -0
- package/.medusa/server/src/modules/addless-detail/service.js +10 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/index.js +13 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/migrations/Migration20260123083526.js +15 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/models/applicable-sale-return-policy.js +23 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/service.js +10 -0
- package/.medusa/server/src/modules/book-list/index.js +13 -0
- package/.medusa/server/src/modules/book-list/migrations/Migration20260123083525.js +15 -0
- package/.medusa/server/src/modules/book-list/migrations/Migration20260401051011.js +14 -0
- package/.medusa/server/src/modules/book-list/models/book-list.js +13 -0
- package/.medusa/server/src/modules/book-list/service.js +10 -0
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20250729035221.js +2 -2
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +2 -2
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20250729040659.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +2 -2
- package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +2 -2
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +2 -2
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +2 -2
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +2 -2
- package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +2 -2
- package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +2 -2
- package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +2 -2
- package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +2 -2
- package/.medusa/server/src/modules/customer-receive-voucher/index.js +13 -0
- package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20250115000000.js +51 -0
- package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20260106050934.js +18 -0
- package/.medusa/server/src/modules/customer-receive-voucher/models/customer-receive-voucher.js +35 -0
- package/.medusa/server/src/modules/customer-receive-voucher/service.js +10 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250707232514.js +2 -2
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051709.js +2 -2
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051737.js +2 -2
- package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +2 -2
- package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +2 -2
- package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +2 -2
- package/.medusa/server/src/modules/erp/service.js +611 -8
- package/.medusa/server/src/modules/erp-event/migrations/Migration20250908040911.js +2 -2
- package/.medusa/server/src/modules/erp-event/migrations/Migration20250922095956.js +2 -2
- package/.medusa/server/src/modules/erp-event/migrations/Migration20260529052734.js +14 -0
- package/.medusa/server/src/modules/erp-event/models/erp-event.js +6 -1
- package/.medusa/server/src/modules/extended-product/migrations/Migration20250620030100.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20250716041546.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +2 -2
- package/.medusa/server/src/modules/extended-product/migrations/Migration20260323103543.js +14 -0
- package/.medusa/server/src/modules/extended-product/models/extended-product.js +2 -1
- package/.medusa/server/src/modules/extended-product/service.js +37 -1
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030335.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030522.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629220100.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629223425.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250704064831.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250716121609.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250725104852.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250726232339.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250916065103.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +2 -2
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251210112341.js +18 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20260616000001.js +14 -0
- package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +4 -2
- package/.medusa/server/src/modules/extended-variant/service.js +37 -1
- package/.medusa/server/src/modules/item-master/index.js +13 -0
- package/.medusa/server/src/modules/item-master/migrations/Migration20260212101055.js +15 -0
- package/.medusa/server/src/modules/item-master/models/item-master.js +20 -0
- package/.medusa/server/src/modules/item-master/service.js +10 -0
- package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +2 -2
- package/.medusa/server/src/modules/jewel-trans-master/index.js +13 -0
- package/.medusa/server/src/modules/jewel-trans-master/migrations/Migration20260226053036.js +57 -0
- package/.medusa/server/src/modules/jewel-trans-master/models/jewel-trans-master.js +151 -0
- package/.medusa/server/src/modules/jewel-trans-master/service.js +16 -0
- package/.medusa/server/src/modules/labour-chart-master/index.js +13 -0
- package/.medusa/server/src/modules/labour-chart-master/migrations/Migration20260101081502.js +15 -0
- package/.medusa/server/src/modules/labour-chart-master/models/labour-chart-master.js +16 -0
- package/.medusa/server/src/modules/labour-chart-master/service.js +10 -0
- package/.medusa/server/src/modules/material-purchase-master/index.js +13 -0
- package/.medusa/server/src/modules/material-purchase-master/migrations/Migration20260310090700.js +18 -0
- package/.medusa/server/src/modules/material-purchase-master/models/material-purchase-detail-line.js +24 -0
- package/.medusa/server/src/modules/material-purchase-master/models/material-purchase-master.js +21 -0
- package/.medusa/server/src/modules/material-purchase-master/service.js +12 -0
- package/.medusa/server/src/modules/order-master/index.js +13 -0
- package/.medusa/server/src/modules/order-master/migrations/Migration20260226053036.js +29 -0
- package/.medusa/server/src/modules/order-master/migrations/Migration20260303000001.js +30 -0
- package/.medusa/server/src/modules/order-master/migrations/Migration20260319094758.js +26 -0
- package/.medusa/server/src/modules/order-master/migrations/Migration20260320000001.js +19 -0
- package/.medusa/server/src/modules/order-master/models/order-master.js +112 -0
- package/.medusa/server/src/modules/order-master/service.js +13 -0
- package/.medusa/server/src/modules/order-proceed-master/index.js +13 -0
- package/.medusa/server/src/modules/order-proceed-master/migrations/Migration20260327100226.js +31 -0
- package/.medusa/server/src/modules/order-proceed-master/models/order-proceed-master.js +38 -0
- package/.medusa/server/src/modules/order-proceed-master/service.js +11 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20250708123734.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +2 -2
- package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +2 -2
- package/.medusa/server/src/modules/payment-book-master/index.js +13 -0
- package/.medusa/server/src/modules/payment-book-master/migrations/Migration20251203105358.js +15 -0
- package/.medusa/server/src/modules/payment-book-master/models/payment-book-master.js +12 -0
- package/.medusa/server/src/modules/payment-book-master/service.js +10 -0
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20250819123821.js +2 -2
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20250918095713.js +2 -2
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +2 -2
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +2 -2
- package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +2 -2
- package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +2 -2
- package/.medusa/server/src/modules/rate-chart-master/index.js +13 -0
- package/.medusa/server/src/modules/rate-chart-master/migrations/Migration20260101081500.js +15 -0
- package/.medusa/server/src/modules/rate-chart-master/models/rate-chart-master.js +13 -0
- package/.medusa/server/src/modules/rate-chart-master/service.js +10 -0
- package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +2 -2
- package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +2 -2
- package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +2 -2
- package/.medusa/server/src/modules/receive-voucher-master/index.js +13 -0
- package/.medusa/server/src/modules/receive-voucher-master/migrations/Migration20260328053649.js +16 -0
- package/.medusa/server/src/modules/receive-voucher-master/models/receive-voucher-master.js +27 -0
- package/.medusa/server/src/modules/receive-voucher-master/service.js +10 -0
- package/.medusa/server/src/modules/report-master/index.js +13 -0
- package/.medusa/server/src/modules/report-master/migrations/Migration20260121060955.js +15 -0
- package/.medusa/server/src/modules/report-master/migrations/Migration20260121112624.js +15 -0
- package/.medusa/server/src/modules/report-master/models/report-master.js +12 -0
- package/.medusa/server/src/modules/report-master/service.js +10 -0
- package/.medusa/server/src/modules/sale-master/index.js +13 -0
- package/.medusa/server/src/modules/sale-master/migrations/Migration20260205092935.js +15 -0
- package/.medusa/server/src/modules/sale-master/migrations/Migration20260205100000.js +16 -0
- package/.medusa/server/src/modules/sale-master/models/sale-master.js +27 -0
- package/.medusa/server/src/modules/sale-master/service.js +10 -0
- package/.medusa/server/src/modules/sale-return-master/index.js +13 -0
- package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260205093034.js +15 -0
- package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260327084135.js +14 -0
- package/.medusa/server/src/modules/sale-return-master/models/sale-return-master.js +18 -0
- package/.medusa/server/src/modules/sale-return-master/service.js +10 -0
- package/.medusa/server/src/modules/sale-return-policy-master/index.js +13 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260105061449.js +21 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129084920.js +14 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129085620.js +20 -0
- package/.medusa/server/src/modules/sale-return-policy-master/models/sale-return-policy-master.js +37 -0
- package/.medusa/server/src/modules/sale-return-policy-master/service.js +12 -0
- package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +2 -2
- package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +2 -2
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713113247.js +2 -2
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713121440.js +2 -2
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +2 -2
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +2 -2
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251203083315.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025135.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025307.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730032130.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +2 -2
- package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +2 -2
- package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +2 -2
- package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +2 -2
- package/.medusa/server/src/subscribers/cutomer-updated.js +3 -1
- package/.medusa/server/src/subscribers/erp-batch-processor.js +147 -0
- package/.medusa/server/src/subscribers/order-item-update.js +11 -0
- package/.medusa/server/src/subscribers/party-master.js +39 -35
- package/.medusa/server/src/subscribers/product-sync.js +1 -1
- package/.medusa/server/src/subscribers/product-variant-deleted.js +27 -0
- package/.medusa/server/src/subscribers/shipping-info-master.js +10 -4
- package/.medusa/server/src/utils/build-redis-key.js +3 -1
- package/.medusa/server/src/utils/erp-health.js +24 -0
- package/.medusa/server/src/utils/state-helper.js +3 -2
- package/.medusa/server/src/workflows/addless-detail/index.js +11 -0
- package/.medusa/server/src/workflows/addless-detail/steps/create-or-update-addless-detail.js +36 -0
- package/.medusa/server/src/workflows/addless-detail/steps/fetch-addless-detail.js +73 -0
- package/.medusa/server/src/workflows/applicable-sale-return-policy/index.js +11 -0
- package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/create-or-update-applicable-sale-return-policy.js +74 -0
- package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/fetch-applicable-sale-return-policy.js +64 -0
- package/.medusa/server/src/workflows/book-list/index.js +11 -0
- package/.medusa/server/src/workflows/book-list/steps/create-or-update-book-list.js +59 -0
- package/.medusa/server/src/workflows/book-list/steps/fetch-book-list.js +64 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/index.js +9 -8
- package/.medusa/server/src/workflows/create-extended-variant-from-variant/index.js +9 -18
- package/.medusa/server/src/workflows/customer-advance-payment/index.js +18 -0
- package/.medusa/server/src/workflows/customer-advance-payment/steps/create-receive-voucher.js +71 -0
- package/.medusa/server/src/workflows/customer-advance-payment/steps/index.js +18 -0
- package/.medusa/server/src/workflows/customer-advance-payment/workflows/create-receive-voucher-workflow.js +11 -0
- package/.medusa/server/src/workflows/customer-advance-payment/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/daily-rate/index.js +37 -0
- package/.medusa/server/src/workflows/daily-rate/perf.js +89 -0
- package/.medusa/server/src/workflows/daily-rate/steps/fetch-gold-rate-step.js +29 -0
- package/.medusa/server/src/workflows/daily-rate/steps/update-inward-metal-rates-step.js +154 -0
- package/.medusa/server/src/workflows/daily-rate/steps/update-party-style-metal-rates-step.js +224 -0
- package/.medusa/server/src/workflows/daily-rate/steps/update-style-master-metal-rates-step.js +180 -0
- package/.medusa/server/src/workflows/daily-rate/steps/update-unfix-order-items-on-gold-rate.js +308 -0
- package/.medusa/server/src/workflows/erp-batch-processing/index.js +19 -0
- package/.medusa/server/src/workflows/erp-batch-processing/steps/finalize-batch-processing.js +55 -0
- package/.medusa/server/src/workflows/erp-batch-processing/steps/index.js +20 -0
- package/.medusa/server/src/workflows/erp-batch-processing/steps/initialize-batch-processing.js +40 -0
- package/.medusa/server/src/workflows/erp-batch-processing/steps/start-batch-processing.js +22 -0
- package/.medusa/server/src/workflows/erp-batch-processing/workflows/erp-batch-processing.js +25 -0
- package/.medusa/server/src/workflows/erp-batch-processing/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/erp-event/steps/update-erp-event.js +24 -7
- package/.medusa/server/src/workflows/erp-event/workflows/update-erp-event.js +1 -1
- package/.medusa/server/src/workflows/helpers/product-helper.js +212 -21
- package/.medusa/server/src/workflows/helpers/variant-helper.js +165 -162
- package/.medusa/server/src/workflows/hooks/product-updated.js +23 -15
- package/.medusa/server/src/workflows/hooks/variant-updated.js +24 -22
- package/.medusa/server/src/workflows/index.js +4 -1
- package/.medusa/server/src/workflows/inward-master/helper/index.js +28 -13
- package/.medusa/server/src/workflows/inward-master/steps/create-inward-exploration-lines.js +1 -2
- package/.medusa/server/src/workflows/inward-master/steps/create-inward-extra-charges-lines.js +1 -2
- package/.medusa/server/src/workflows/inward-master/steps/create-order-fulfillment-for-inward.js +196 -0
- package/.medusa/server/src/workflows/inward-master/steps/fetch-inward-master.js +17 -25
- package/.medusa/server/src/workflows/inward-master/steps/index.js +3 -1
- package/.medusa/server/src/workflows/inward-master/steps/notify-inward-skipped.js +38 -0
- package/.medusa/server/src/workflows/inward-master/steps/update-order-item-from-inward.js +259 -0
- package/.medusa/server/src/workflows/inward-master/workflows/create-inward.js +89 -75
- package/.medusa/server/src/workflows/inward-master/workflows/delete-inward.js +6 -9
- package/.medusa/server/src/workflows/inward-master/workflows/update-instock.js +2 -1
- package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +49 -7
- package/.medusa/server/src/workflows/item-master/index.js +11 -0
- package/.medusa/server/src/workflows/item-master/steps/create-or-update-item-master.js +50 -0
- package/.medusa/server/src/workflows/item-master/steps/fetch-item-master.js +29 -0
- package/.medusa/server/src/workflows/jewel-trans-master/index.js +18 -0
- package/.medusa/server/src/workflows/jewel-trans-master/steps/create-or-update-jewel-trans-master.js +370 -0
- package/.medusa/server/src/workflows/jewel-trans-master/steps/index.js +18 -0
- package/.medusa/server/src/workflows/labour-chart-master/index.js +11 -0
- package/.medusa/server/src/workflows/labour-chart-master/steps/create-or-update-labour-chart-master.js +38 -0
- package/.medusa/server/src/workflows/labour-chart-master/steps/fetch-labour-chart.js +31 -0
- package/.medusa/server/src/workflows/material-purchase-master/index.js +24 -0
- package/.medusa/server/src/workflows/material-purchase-master/steps/create-material-purchase-master.js +119 -0
- package/.medusa/server/src/workflows/material-purchase-master/steps/delete-material-purchase-master.js +102 -0
- package/.medusa/server/src/workflows/material-purchase-master/steps/fetch-material-purchase-master.js +60 -0
- package/.medusa/server/src/workflows/material-purchase-master/steps/update-material-purchase-master.js +149 -0
- package/.medusa/server/src/workflows/order-master/index.js +3 -0
- package/.medusa/server/src/workflows/order-master/order-master-webhook.js +24 -0
- package/.medusa/server/src/workflows/order-master/steps/create-or-update-order-master.js +275 -0
- package/.medusa/server/src/workflows/order-master/steps/delete-order-master-by-erp-ids.js +61 -0
- package/.medusa/server/src/workflows/order-master/steps/process-order-master-from-webhook.js +1038 -0
- package/.medusa/server/src/workflows/order-proceed-master/index.js +6 -0
- package/.medusa/server/src/workflows/order-proceed-master/order-proceed-master-webhook.js +26 -0
- package/.medusa/server/src/workflows/order-proceed-master/steps/create-or-update-order-proceed-master.js +186 -0
- package/.medusa/server/src/workflows/order-proceed-master/steps/delete-order-proceed-master-by-erp-ids.js +28 -0
- package/.medusa/server/src/workflows/orders/steps/create-sale-for-order-step.js +218 -0
- package/.medusa/server/src/workflows/orders/steps/find-nearest-pincodes-step.js +336 -0
- package/.medusa/server/src/workflows/orders/steps/get-today-gold-rate-step.js +83 -0
- package/.medusa/server/src/workflows/orders/steps/index.js +16 -1
- package/.medusa/server/src/workflows/orders/steps/revert-to-wallet-step.js +165 -0
- package/.medusa/server/src/workflows/orders/steps/sync-advance-payment-to-erp-step.js +191 -0
- package/.medusa/server/src/workflows/orders/steps/sync-buyback-to-erp-step.js +99 -0
- package/.medusa/server/src/workflows/orders/steps/sync-cancel-to-erp-step.js +120 -0
- package/.medusa/server/src/workflows/orders/steps/sync-exchange-to-erp-step.js +101 -0
- package/.medusa/server/src/workflows/orders/steps/sync-old-gold-to-erp-step.js +161 -0
- package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +756 -20
- package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +277 -0
- package/.medusa/server/src/workflows/orders/steps/update-old-gold-sync-status-step.js +64 -0
- package/.medusa/server/src/workflows/orders/utils/apply-order-item-price-change.js +79 -0
- package/.medusa/server/src/workflows/orders/utils/order-helper.js +182 -37
- package/.medusa/server/src/workflows/orders/utils/order-request-helper.js +235 -0
- package/.medusa/server/src/workflows/orders/workflows/create-sale-for-order.js +10 -0
- package/.medusa/server/src/workflows/orders/workflows/get-today-gold-rate.js +10 -0
- package/.medusa/server/src/workflows/orders/workflows/index.js +4 -1
- package/.medusa/server/src/workflows/orders/workflows/sync-advanve-payment-to-erp.js +21 -0
- package/.medusa/server/src/workflows/orders/workflows/sync-old-gold-to-erp.js +24 -0
- package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +54 -5
- package/.medusa/server/src/workflows/orders/workflows/sync-sale-return-to-erp.js +11 -0
- package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +66 -33
- package/.medusa/server/src/workflows/party-master/steps/create-user-erp.js +115 -0
- package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +2 -1
- package/.medusa/server/src/workflows/party-master/steps/index.js +2 -1
- package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +2 -2
- package/.medusa/server/src/workflows/party-master/workflows/create-user-erp.js +11 -0
- package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +16 -249
- package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +103 -22
- package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +49 -18
- package/.medusa/server/src/workflows/party-style-master/workflows/delete-party-style-master.js +4 -15
- package/.medusa/server/src/workflows/payment-book-master/index.js +11 -0
- package/.medusa/server/src/workflows/payment-book-master/steps/create-or-update-payment-book-master.js +37 -0
- package/.medusa/server/src/workflows/payment-book-master/steps/fetch-payment-book.js +64 -0
- package/.medusa/server/src/workflows/rate-chart-master/index.js +11 -0
- package/.medusa/server/src/workflows/rate-chart-master/steps/create-or-update-rate-chart-master.js +25 -0
- package/.medusa/server/src/workflows/rate-chart-master/steps/fetch-rate-chart.js +31 -0
- package/.medusa/server/src/workflows/receive-voucher-master/index.js +24 -0
- package/.medusa/server/src/workflows/receive-voucher-master/steps/create-receive-voucher-master.js +125 -0
- package/.medusa/server/src/workflows/receive-voucher-master/steps/delete-receive-voucher-master.js +45 -0
- package/.medusa/server/src/workflows/receive-voucher-master/steps/fetch-receive-voucher-master.js +22 -0
- package/.medusa/server/src/workflows/receive-voucher-master/steps/update-receive-voucher-master.js +44 -0
- package/.medusa/server/src/workflows/report-master/index.js +11 -0
- package/.medusa/server/src/workflows/report-master/steps/create-or-update-report-master.js +53 -0
- package/.medusa/server/src/workflows/report-master/steps/fetch-report.js +71 -0
- package/.medusa/server/src/workflows/sale-master/index.js +35 -0
- package/.medusa/server/src/workflows/sale-master/steps/create-sale-master.js +72 -0
- package/.medusa/server/src/workflows/sale-master/steps/delete-sale-master.js +59 -0
- package/.medusa/server/src/workflows/sale-master/steps/sync-extended-order-from-sale.js +40 -0
- package/.medusa/server/src/workflows/sale-master/steps/update-sale-master.js +95 -0
- package/.medusa/server/src/workflows/sale-return-master/index.js +6 -0
- package/.medusa/server/src/workflows/sale-return-master/sale-return-master-webhook.js +28 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/create-or-update-sale-return-master.js +109 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/create-sale-return-master.js +45 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master-by-erp-ids.js +36 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master.js +36 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/process-sale-return-from-webhook.js +234 -0
- package/.medusa/server/src/workflows/sale-return-master/steps/update-sale-return-master.js +53 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/index.js +11 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/steps/create-or-update-sale-return-policy-master.js +91 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/steps/fetch-sale-return-policy.js +31 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/create-or-update-shipping-info.js +59 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +116 -10
- package/.medusa/server/src/workflows/style-master/workflows/delete-style-master.js +9 -1
- package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +6 -16
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +5 -17
- package/package.json +18 -33
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = processErpEvents;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const update_erp_event_1 = require("../workflows/erp-event/workflows/update-erp-event");
|
|
7
|
+
const erp_batch_processing_1 = require("../workflows/erp-batch-processing");
|
|
8
|
+
const BATCH_SIZE = {
|
|
9
|
+
StyleMst: 100,
|
|
10
|
+
PartyStyleMst: 100,
|
|
11
|
+
Inward: 100,
|
|
12
|
+
default: 50,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Processes pending ERP events one by one in the order they were received
|
|
16
|
+
*/
|
|
17
|
+
async function processErpEvents(container) {
|
|
18
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
19
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
20
|
+
try {
|
|
21
|
+
// Get all in-progress events to know which datafor types are blocked
|
|
22
|
+
const allInProgressEvents = [];
|
|
23
|
+
let skip = 0;
|
|
24
|
+
const take = 100;
|
|
25
|
+
let hasMore = true;
|
|
26
|
+
while (hasMore) {
|
|
27
|
+
const { data: inProgressEvents } = await query.graph({
|
|
28
|
+
entity: "erp_event",
|
|
29
|
+
fields: ["id", "datafor"],
|
|
30
|
+
filters: {
|
|
31
|
+
status: "in-progress",
|
|
32
|
+
},
|
|
33
|
+
pagination: {
|
|
34
|
+
skip,
|
|
35
|
+
take,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
if (inProgressEvents.length === 0) {
|
|
39
|
+
hasMore = false;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
allInProgressEvents.push(...inProgressEvents);
|
|
43
|
+
skip += take;
|
|
44
|
+
if (skip > 1000) {
|
|
45
|
+
logger.warn("⚠️ Safety limit reached for in-progress events query");
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const blockedDataforTypes = new Set(allInProgressEvents.map((e) => e.datafor));
|
|
50
|
+
if (blockedDataforTypes.size > 0) {
|
|
51
|
+
logger.debug(`In-progress event types: ${Array.from(blockedDataforTypes).join(", ")}`);
|
|
52
|
+
}
|
|
53
|
+
const { data: pendingEvents } = await query.graph({
|
|
54
|
+
entity: "erp_event",
|
|
55
|
+
fields: ["id", "datafor", "operation", "data", "status", "created_at"],
|
|
56
|
+
filters: {
|
|
57
|
+
status: "pending",
|
|
58
|
+
},
|
|
59
|
+
pagination: {
|
|
60
|
+
skip: 0,
|
|
61
|
+
take: 100,
|
|
62
|
+
order: { created_at: "asc" },
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
if (pendingEvents.length === 0) {
|
|
66
|
+
logger.debug("No pending ERP events to process");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const event = pendingEvents.find((e) => !blockedDataforTypes.has(e.datafor));
|
|
70
|
+
if (!event) {
|
|
71
|
+
logger.debug(`All pending events are blocked by in-progress events of same type`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const { id, datafor, operation, data } = event;
|
|
75
|
+
logger.info(`Processing ERP event ${id}: ${operation} for ${datafor} with ${data.length} items`);
|
|
76
|
+
await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
|
|
77
|
+
input: {
|
|
78
|
+
id,
|
|
79
|
+
status: "in-progress",
|
|
80
|
+
sync_completed_at: null,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
try {
|
|
84
|
+
const batchSize = BATCH_SIZE[datafor] || BATCH_SIZE.default;
|
|
85
|
+
logger.info(`Starting batch processing for ${datafor} (${data.length} items, batch size ${batchSize})`);
|
|
86
|
+
await (0, erp_batch_processing_1.erpBatchProcessingWorkflow)(container).run({
|
|
87
|
+
input: {
|
|
88
|
+
erpEventId: id,
|
|
89
|
+
batchSize,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
logger.info(`Batch processing workflow started for event ${id}`);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
96
|
+
if (errorMessage.includes("ERP event already completed")) {
|
|
97
|
+
logger.info(`✅ ERP event ${id} is already completed (detected from error)`);
|
|
98
|
+
await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
|
|
99
|
+
input: {
|
|
100
|
+
id,
|
|
101
|
+
status: "completed",
|
|
102
|
+
sync_completed_at: new Date(),
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
logger.error(`❌ Failed to process ERP event ${id}:`, error);
|
|
108
|
+
await (0, update_erp_event_1.updateErpEventWorkflow)(container).run({
|
|
109
|
+
input: {
|
|
110
|
+
id,
|
|
111
|
+
status: "failed",
|
|
112
|
+
sync_completed_at: null,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
logger.error("Error in processErpEvents cron job:", error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.config = {
|
|
123
|
+
name: "process-erp-events",
|
|
124
|
+
schedule: {
|
|
125
|
+
interval: 5000, // every 5 seconds
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1lcnAtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvcHJvY2Vzcy1lcnAtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSxtQ0E2SUM7QUE1SkQscURBQXNFO0FBQ3RFLHdGQUEyRjtBQUMzRiw0RUFBK0U7QUFHL0UsTUFBTSxVQUFVLEdBQTJCO0lBQ3pDLFFBQVEsRUFBRSxHQUFHO0lBQ2IsYUFBYSxFQUFFLEdBQUc7SUFDbEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFRjs7R0FFRztBQUNZLEtBQUssVUFBVSxnQkFBZ0IsQ0FDNUMsU0FBMEI7SUFFMUIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLElBQUksQ0FBQztRQUNILHFFQUFxRTtRQUNyRSxNQUFNLG1CQUFtQixHQUFzQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUVuQixPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDbkQsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7Z0JBQ3pCLE9BQU8sRUFBRTtvQkFDUCxNQUFNLEVBQUUsYUFBYTtpQkFDdEI7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLElBQUk7b0JBQ0osSUFBSTtpQkFDTDthQUNGLENBQUMs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
|
|
@@ -20,13 +20,19 @@ const update_variant_option_metadata_1 = require("../workflows/helpers/update-va
|
|
|
20
20
|
* - Marks each queue record as complete or failed.
|
|
21
21
|
*/
|
|
22
22
|
async function processVariantOptionSync(container) {
|
|
23
|
-
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
24
23
|
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
24
|
+
if (process.env.RUN_SHEDULE_JOBS === "false") {
|
|
25
|
+
logger.info("☢️ process-variant-option-sync job is disabled via RUN_SHEDULE_JOBS");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
25
29
|
const syncQueueService = container.resolve(variant_option_sync_queue_1.VARIANT_OPTION_SYNC_QUEUE_MODULE);
|
|
26
30
|
logger.info("------Starting variant option sync job------");
|
|
31
|
+
// Maximum records to process per run to balance efficiency and memory
|
|
32
|
+
const MAX_RECORDS_PER_RUN = 250;
|
|
27
33
|
let pendingRecords = [];
|
|
28
34
|
try {
|
|
29
|
-
//
|
|
35
|
+
// Process all pending records in one run to avoid redundant recalculations
|
|
30
36
|
const { data: records } = await query.graph({
|
|
31
37
|
entity: "variant_option_sync_queue",
|
|
32
38
|
fields: [
|
|
@@ -41,7 +47,7 @@ async function processVariantOptionSync(container) {
|
|
|
41
47
|
status: "pending",
|
|
42
48
|
},
|
|
43
49
|
pagination: {
|
|
44
|
-
take:
|
|
50
|
+
take: MAX_RECORDS_PER_RUN,
|
|
45
51
|
},
|
|
46
52
|
});
|
|
47
53
|
pendingRecords = records || [];
|
|
@@ -49,7 +55,7 @@ async function processVariantOptionSync(container) {
|
|
|
49
55
|
logger.info("------No pending variant option sync records found------");
|
|
50
56
|
return;
|
|
51
57
|
}
|
|
52
|
-
logger.info(`------Found ${pendingRecords.length} pending records to process------`);
|
|
58
|
+
logger.info(`------Found ${pendingRecords.length} pending records to process (max ${MAX_RECORDS_PER_RUN} per run)------`);
|
|
53
59
|
// Build master maps once for all records
|
|
54
60
|
const { data: rawMasterArr } = await query.graph({
|
|
55
61
|
entity: "raw_master",
|
|
@@ -94,28 +100,23 @@ async function processVariantOptionSync(container) {
|
|
|
94
100
|
id: r.id,
|
|
95
101
|
status: "processing",
|
|
96
102
|
})));
|
|
97
|
-
logger.info(`------Processing ${pendingRecords.length} records in
|
|
103
|
+
logger.info(`------Processing ${pendingRecords.length} pending records in ------`);
|
|
98
104
|
// Collect all affected products across all records
|
|
99
105
|
const affectedProductsSet = new Set();
|
|
100
|
-
const
|
|
106
|
+
const recordAffectedVariantCounts = new Map();
|
|
101
107
|
for (const record of pendingRecords) {
|
|
102
108
|
logger.info(`------Finding affected variants for record ${record.id}: ${record.master_type} - ${record.master_code}------`);
|
|
103
109
|
// Find affected variants
|
|
104
110
|
const affectedVariants = await (0, variant_helper_1.findVariantsAffectedByMasterUpdate)(query, record.master_type, record.master_code);
|
|
105
111
|
if (affectedVariants.length === 0) {
|
|
106
112
|
logger.info(`------No affected variants found for ${record.master_type} - ${record.master_code}------ (record id: ${record.id})`);
|
|
107
|
-
|
|
108
|
-
recordId: record.id,
|
|
109
|
-
affectedVariants: [],
|
|
110
|
-
});
|
|
113
|
+
recordAffectedVariantCounts.set(record.id, 0);
|
|
111
114
|
continue;
|
|
112
115
|
}
|
|
113
|
-
// Collect affected product IDs
|
|
116
|
+
// Collect affected product IDs (this is what we actually need)
|
|
114
117
|
affectedVariants.forEach((v) => affectedProductsSet.add(v.productId));
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
affectedVariants,
|
|
118
|
-
});
|
|
118
|
+
// Store only the count, not the full array to save memory
|
|
119
|
+
recordAffectedVariantCounts.set(record.id, affectedVariants.length);
|
|
119
120
|
logger.info(`------Found ${affectedVariants.length} affected variants for record ${record.id}------`);
|
|
120
121
|
}
|
|
121
122
|
const productIds = Array.from(affectedProductsSet);
|
|
@@ -132,7 +133,7 @@ async function processVariantOptionSync(container) {
|
|
|
132
133
|
}
|
|
133
134
|
logger.info(`------Found ${productIds.length} unique products affected across all records------`);
|
|
134
135
|
// STEP 2: Process products in batches
|
|
135
|
-
const PRODUCT_BATCH_SIZE =
|
|
136
|
+
const PRODUCT_BATCH_SIZE = 5;
|
|
136
137
|
const productBatches = [];
|
|
137
138
|
for (let i = 0; i < productIds.length; i += PRODUCT_BATCH_SIZE) {
|
|
138
139
|
productBatches.push(productIds.slice(i, i + PRODUCT_BATCH_SIZE));
|
|
@@ -238,6 +239,18 @@ async function processVariantOptionSync(container) {
|
|
|
238
239
|
}
|
|
239
240
|
// Process party_style_details for metals, metal colors, diamond qualities, shapes and solitaire carat
|
|
240
241
|
if (extendedVariant.party_style_details) {
|
|
242
|
+
// First, find diamond details for processing
|
|
243
|
+
const diamondDetails = extendedVariant.party_style_details.filter((detail) => detail.raw_type === "Diamond" &&
|
|
244
|
+
detail.tone_code &&
|
|
245
|
+
detail.qly_code);
|
|
246
|
+
const baseDiamondDetail = diamondDetails.find((detail) => detail.is_base);
|
|
247
|
+
const diamondDetailToUse = baseDiamondDetail || diamondDetails[0];
|
|
248
|
+
// For solitaire shapes/carat, find LGS diamond details
|
|
249
|
+
const lgsDiamondDetails = extendedVariant.party_style_details.filter((detail) => isSolitaire &&
|
|
250
|
+
detail.raw_type === "Diamond" &&
|
|
251
|
+
detail.raw_code === "LGS");
|
|
252
|
+
const baseLgsDiamondDetail = lgsDiamondDetails.find((detail) => detail.is_base);
|
|
253
|
+
const lgsDiamondDetailToUse = baseLgsDiamondDetail || lgsDiamondDetails[0];
|
|
241
254
|
for (const detail of extendedVariant.party_style_details) {
|
|
242
255
|
// Metal options
|
|
243
256
|
if (detail.raw_type === "Metal" && detail.is_base) {
|
|
@@ -302,10 +315,7 @@ async function processVariantOptionSync(container) {
|
|
|
302
315
|
}
|
|
303
316
|
}
|
|
304
317
|
// Diamond Quality
|
|
305
|
-
if (detail
|
|
306
|
-
detail.tone_code &&
|
|
307
|
-
detail.qly_code &&
|
|
308
|
-
detail.is_base) {
|
|
318
|
+
if (diamondDetailToUse && detail === diamondDetailToUse) {
|
|
309
319
|
const toneTitle = (masterMaps.toneMasterMap.get(detail.tone_code) ||
|
|
310
320
|
detail.tone_code).trim();
|
|
311
321
|
const qualityTitle = (masterMaps.qualityMasterMap.get(detail.qly_code) ||
|
|
@@ -328,10 +338,7 @@ async function processVariantOptionSync(container) {
|
|
|
328
338
|
}
|
|
329
339
|
}
|
|
330
340
|
// Shape and Carat logic
|
|
331
|
-
if (
|
|
332
|
-
detail.raw_type === "Diamond" &&
|
|
333
|
-
detail.raw_code === "LGS" &&
|
|
334
|
-
detail.is_base) {
|
|
341
|
+
if (lgsDiamondDetailToUse && detail === lgsDiamondDetailToUse) {
|
|
335
342
|
// Use the shape from the LGS base diamond detail
|
|
336
343
|
const shapeTitle = (masterMaps.shapeMasterMap.get(detail.shape_code) ||
|
|
337
344
|
String(detail.shape_code || "")).trim();
|
|
@@ -371,12 +378,24 @@ async function processVariantOptionSync(container) {
|
|
|
371
378
|
}
|
|
372
379
|
}
|
|
373
380
|
}
|
|
381
|
+
// Get the product's required option titles
|
|
382
|
+
const productOptionTitles = product.options?.map((opt) => opt.title) || [];
|
|
374
383
|
// Sort variant options keys alphabetically for consistent ordering
|
|
375
384
|
const sortedVariantOptions = {};
|
|
376
385
|
const sortedKeys = Object.keys(variantOptions).sort((a, b) => a.localeCompare(b));
|
|
377
386
|
for (const key of sortedKeys) {
|
|
378
387
|
sortedVariantOptions[key] = variantOptions[key];
|
|
379
388
|
}
|
|
389
|
+
// Validate: Check if we have all required options for the product
|
|
390
|
+
// Skip variants with incomplete options to prevent batch failure
|
|
391
|
+
const hasAllOptions = productOptionTitles.every((title) => sortedVariantOptions[title] !== undefined);
|
|
392
|
+
if (!hasAllOptions) {
|
|
393
|
+
logger.warn(`------Variant ${variant.id} has incomplete options. ` +
|
|
394
|
+
`Product requires: [${productOptionTitles.join(", ")}], ` +
|
|
395
|
+
`Variant has: [${Object.keys(sortedVariantOptions).join(", ")}]. ` +
|
|
396
|
+
`Skipping to prevent batch failure.------`);
|
|
397
|
+
continue;
|
|
398
|
+
}
|
|
380
399
|
variantsToUpdate.push({
|
|
381
400
|
variant: {
|
|
382
401
|
id: variant.id,
|
|
@@ -483,8 +502,7 @@ async function processVariantOptionSync(container) {
|
|
|
483
502
|
// STEP 7: Mark all records as completed
|
|
484
503
|
const recordsToComplete = [];
|
|
485
504
|
for (const record of pendingRecords) {
|
|
486
|
-
const
|
|
487
|
-
const affectedCount = recordData?.affectedVariants.length || 0;
|
|
505
|
+
const affectedCount = recordAffectedVariantCounts.get(record.id) || 0;
|
|
488
506
|
recordsToComplete.push({
|
|
489
507
|
id: record.id,
|
|
490
508
|
status: "completed",
|
|
@@ -515,7 +533,6 @@ async function processVariantOptionSync(container) {
|
|
|
515
533
|
}
|
|
516
534
|
exports.config = {
|
|
517
535
|
name: "process-variant-option-sync",
|
|
518
|
-
schedule: "
|
|
519
|
-
// schedule: "0 3 * * *", // Every day at 3:00 AM
|
|
536
|
+
schedule: "0 2 * * *", // Every day at 2:00 AM
|
|
520
537
|
};
|
|
521
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy12YXJpYW50LW9wdGlvbi1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvcHJvY2Vzcy12YXJpYW50LW9wdGlvbi1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThCQSwyQ0FvcUJDO0FBanNCRCxxREFBc0U7QUFDdEUsNERBR3FDO0FBRXJDLG9GQUF3RjtBQUN4Rix3RUFHNkM7QUFDN0Msd0dBRzZEO0FBRzdEOzs7Ozs7Ozs7OztJQVdJO0FBQ1csS0FBSyxVQUFVLHdCQUF3QixDQUNwRCxTQUEwQjtJQUUxQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxnQkFBZ0IsR0FBa0MsU0FBUyxDQUFDLE9BQU8sQ0FDdkUsNERBQWdDLENBQ2pDLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFFNUQsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO0lBRS9CLElBQUksQ0FBQztRQUNILHFDQUFxQztRQUNyQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQyxNQUFNLEVBQUUsMkJBQTJCO1lBQ25DLE1BQU0sRUFBRTtnQkFDTixJQUFJO2dCQUNKLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsV0FBVzthQUNaO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxTQUFTO2FBQ2xCO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFLEVBQUUsK0JBQStCO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsY0FBYyxHQUFHLE9B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
|
|
538
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy12YXJpYW50LW9wdGlvbi1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvcHJvY2Vzcy12YXJpYW50LW9wdGlvbi1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThCQSwyQ0FndUJDO0FBN3ZCRCxxREFBc0U7QUFDdEUsNERBR3FDO0FBRXJDLG9GQUF3RjtBQUN4Rix3RUFHNkM7QUFDN0Msd0dBRzZEO0FBRzdEOzs7Ozs7Ozs7OztJQVdJO0FBQ1csS0FBSyxVQUFVLHdCQUF3QixDQUNwRCxTQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUNULHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0YsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sZ0JBQWdCLEdBQWtDLFNBQVMsQ0FBQyxPQUFPLENBQ3ZFLDREQUFnQyxDQUNqQyxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBRTVELHNFQUFzRTtJQUN0RSxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztJQUVoQyxJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7SUFFL0IsSUFBSSxDQUFDO1FBQ0gsMkVBQTJFO1FBQzNFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFDLE1BQU0sRUFBRSwyQkFBMkI7WUFDbkMsTUFBTSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osYUFBYTtnQkFDYixhQUFh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
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = syncAddlessDetail;
|
|
5
|
+
const party_master_1 = require("../modules/party-master");
|
|
6
|
+
const book_list_1 = require("../workflows/book-list");
|
|
7
|
+
const book_list_2 = require("../modules/book-list");
|
|
8
|
+
const addless_detail_1 = require("../workflows/addless-detail");
|
|
9
|
+
const addless_detail_2 = require("../modules/addless-detail");
|
|
10
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
11
|
+
const erp_health_1 = require("../utils/erp-health");
|
|
12
|
+
async function syncAddlessDetail(container) {
|
|
13
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
14
|
+
if (process.env.RUN_SHEDULE_JOBS === "false") {
|
|
15
|
+
logger.info("☢️ sync-addless-detail job is disabled via RUN_SHEDULE_JOBS");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!(await (0, erp_health_1.ensureErpHealthy)(container, "sync-addless-detail")))
|
|
19
|
+
return;
|
|
20
|
+
const partyMasterModuleService = container.resolve(party_master_1.PARTY_MASTER_MODULE);
|
|
21
|
+
const bookListModuleService = container.resolve(book_list_2.BOOK_LIST_MODULE);
|
|
22
|
+
const addlessMasterModuleService = container.resolve(addless_detail_2.ADDLESS_MASTER_MODULE);
|
|
23
|
+
const branches = await partyMasterModuleService.listPartyMasters({
|
|
24
|
+
is_inline_branch: true,
|
|
25
|
+
});
|
|
26
|
+
const branchNos = branches.map((branch) => branch.party_no);
|
|
27
|
+
branchNos.push("");
|
|
28
|
+
// Sync book list (type ref) so we have branch+book combinations
|
|
29
|
+
await (0, utils_1.promiseAll)([
|
|
30
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
31
|
+
input: { type: "salesreturn", branchNos },
|
|
32
|
+
}),
|
|
33
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
34
|
+
input: { type: "order", branchNos },
|
|
35
|
+
}),
|
|
36
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
37
|
+
input: { type: "sale", branchNos },
|
|
38
|
+
}),
|
|
39
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
40
|
+
input: { type: "purchase", branchNos },
|
|
41
|
+
}),
|
|
42
|
+
]);
|
|
43
|
+
const allBooks = await bookListModuleService.listBookLists();
|
|
44
|
+
const bookPairs = allBooks.map((p) => ({
|
|
45
|
+
branchNo: p.branch_no,
|
|
46
|
+
bookNo: String(p.book_no),
|
|
47
|
+
}));
|
|
48
|
+
const uniquePairs = Array.from(new Map(bookPairs.map((p) => [`${p.branchNo}|${p.bookNo}`, p])).values());
|
|
49
|
+
const addlessData = await addlessMasterModuleService.listAddlessMasters();
|
|
50
|
+
const addlessIds = addlessData.map((item) => item.id);
|
|
51
|
+
if (addlessIds.length) {
|
|
52
|
+
await addlessMasterModuleService.deleteAddlessMasters(addlessIds);
|
|
53
|
+
}
|
|
54
|
+
if (uniquePairs.length > 0) {
|
|
55
|
+
const BATCH_SIZE = 50;
|
|
56
|
+
for (let i = 0; i < uniquePairs.length; i += BATCH_SIZE) {
|
|
57
|
+
const batch = uniquePairs.slice(i, i + BATCH_SIZE);
|
|
58
|
+
await (0, addless_detail_1.addlessDetailWorkflow)(container).run({
|
|
59
|
+
input: { books: batch },
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.config = {
|
|
65
|
+
name: "sync-addless-detail",
|
|
66
|
+
schedule: "0 0 * * *", // 00:00 AM
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hZGRsZXNzLWRldGFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL3N5bmMtYWRkbGVzcy1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsb0NBNkRDO0FBMUVELDBEQUE4RDtBQUM5RCxzREFBMEQ7QUFDMUQsb0RBQXdEO0FBRXhELGdFQUFvRTtBQUNwRSw4REFBa0U7QUFFbEUscURBR21DO0FBQ25DLG9EQUF1RDtBQUV4QyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsU0FBMEI7SUFDeEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1FBQzNFLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFBLDZCQUFnQixFQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQUUsT0FBTztJQUN4RSxNQUFNLHdCQUF3QixHQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUFDLENBQUM7SUFDekMsTUFBTSxxQkFBcUIsR0FDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sMEJBQTBCLEdBQXlCLFNBQVMsQ0FBQyxPQUFPLENBQ3hFLHNDQUFxQixDQUN0QixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRCxnQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxR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
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = syncBookListAndApplicablePolicy;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const party_master_1 = require("../modules/party-master");
|
|
7
|
+
const book_list_1 = require("../workflows/book-list");
|
|
8
|
+
const book_list_2 = require("../modules/book-list");
|
|
9
|
+
const applicable_sale_return_policy_1 = require("../workflows/applicable-sale-return-policy");
|
|
10
|
+
const applicable_sale_return_policy_2 = require("../modules/applicable-sale-return-policy");
|
|
11
|
+
const erp_health_1 = require("../utils/erp-health");
|
|
12
|
+
async function syncBookListAndApplicablePolicy(container) {
|
|
13
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
14
|
+
if (process.env.RUN_SHEDULE_JOBS === "false") {
|
|
15
|
+
logger.info("☢️ sync-book-list-and-applicable-policy job is disabled via RUN_SHEDULE_JOBS");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!(await (0, erp_health_1.ensureErpHealthy)(container, "sync-book-list-and-applicable-policy")))
|
|
19
|
+
return;
|
|
20
|
+
const partyMasterModuleService = container.resolve(party_master_1.PARTY_MASTER_MODULE);
|
|
21
|
+
const bookListModuleService = container.resolve(book_list_2.BOOK_LIST_MODULE);
|
|
22
|
+
const applicablePolicyModuleService = container.resolve(applicable_sale_return_policy_2.APPLICABLE_SALE_RETURN_POLICY_MODULE);
|
|
23
|
+
// Delete existing book lists
|
|
24
|
+
const bookListData = await bookListModuleService.listBookLists();
|
|
25
|
+
const bookListIds = bookListData.map((item) => item.id);
|
|
26
|
+
await bookListModuleService.deleteBookLists(bookListIds);
|
|
27
|
+
// Delete existing applicable policies
|
|
28
|
+
const applicablePolicyData = await applicablePolicyModuleService.listApplicableSaleReturnPolicies();
|
|
29
|
+
const applicablePolicyIds = applicablePolicyData.map((item) => item.id);
|
|
30
|
+
await applicablePolicyModuleService.deleteApplicableSaleReturnPolicies(applicablePolicyIds);
|
|
31
|
+
// Get all branches
|
|
32
|
+
const branches = await partyMasterModuleService.listPartyMasters({
|
|
33
|
+
is_inline_branch: true,
|
|
34
|
+
});
|
|
35
|
+
const branchNos = branches.map((branch) => branch.party_no);
|
|
36
|
+
branchNos.push(""); // Add empty branch number
|
|
37
|
+
console.log("Branch Numbers:", branchNos);
|
|
38
|
+
// Sync book list for 'salesreturn' and 'purchase' types
|
|
39
|
+
await (0, utils_1.promiseAll)([
|
|
40
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
41
|
+
input: {
|
|
42
|
+
type: "salesreturn",
|
|
43
|
+
branchNos: branchNos,
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
47
|
+
input: {
|
|
48
|
+
type: "order",
|
|
49
|
+
branchNos: branchNos,
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
53
|
+
input: {
|
|
54
|
+
type: "sale",
|
|
55
|
+
branchNos: branchNos,
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
(0, book_list_1.bookListWorkflow)(container).run({
|
|
59
|
+
input: {
|
|
60
|
+
type: "purchase",
|
|
61
|
+
branchNos: branchNos,
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
]);
|
|
65
|
+
// Get all synced books
|
|
66
|
+
const allBooks = await bookListModuleService.listBookLists();
|
|
67
|
+
console.log(`Total books synced: ${allBooks.length}`);
|
|
68
|
+
// Group books by branch and prepare for policy sync
|
|
69
|
+
const booksForPolicySync = allBooks.map((book) => ({
|
|
70
|
+
bookNo: book.book_no,
|
|
71
|
+
branchNo: book.branch_no,
|
|
72
|
+
}));
|
|
73
|
+
// Sync applicable sale return policies for each book
|
|
74
|
+
if (booksForPolicySync.length > 0) {
|
|
75
|
+
// Process in batches to avoid overwhelming the API
|
|
76
|
+
const BATCH_SIZE = 50;
|
|
77
|
+
const batches = [];
|
|
78
|
+
for (let i = 0; i < booksForPolicySync.length; i += BATCH_SIZE) {
|
|
79
|
+
batches.push(booksForPolicySync.slice(i, i + BATCH_SIZE));
|
|
80
|
+
}
|
|
81
|
+
console.log(`Processing ${booksForPolicySync.length} books in ${batches.length} batches for applicable policies`);
|
|
82
|
+
for (let i = 0; i < batches.length; i++) {
|
|
83
|
+
console.log(`Processing policy batch ${i + 1}/${batches.length}`);
|
|
84
|
+
await (0, applicable_sale_return_policy_1.applicableSaleReturnPolicyWorkflow)(container).run({
|
|
85
|
+
input: {
|
|
86
|
+
books: batches[i],
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
console.log("✅ Book list and applicable sale return policy sync completed");
|
|
92
|
+
}
|
|
93
|
+
exports.config = {
|
|
94
|
+
name: "sync-book-list-and-applicable-policy",
|
|
95
|
+
schedule: "10 0 * * *", // 00:10 AM
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1ib29rLWxpc3QtYW5kLWFwcGxpY2FibGUtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvc3luYy1ib29rLWxpc3QtYW5kLWFwcGxpY2FibGUtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLGtEQXdHQztBQXRIRCxxREFHbUM7QUFFbkMsMERBQThEO0FBQzlELHNEQUEwRDtBQUMxRCxvREFBd0Q7QUFFeEQsOEZBQWdHO0FBQ2hHLDRGQUFnRztBQUVoRyxvREFBdUQ7QUFFeEMsS0FBSyxVQUFVLCtCQUErQixDQUMzRCxTQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUNULDhFQUE4RSxDQUMvRSxDQUFDO1FBQ0YsT0FBTztJQUNULENBQUM7SUFDRCxJQUNFLENBQUMsQ0FBQyxNQUFNLElBQUEsNkJBQWdCLEVBQUMsU0FBUyxFQUFFLHNDQUFzQyxDQUFDLENBQUM7UUFFNUUsT0FBTztJQUNULE1BQU0sd0JBQXdCLEdBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQUMsQ0FBQztJQUN6QyxNQUFNLHFCQUFxQixHQUN6QixTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFDdEMsTUFBTSw2QkFBNkIsR0FDakMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvRUFBb0MsQ0FBQyxDQUFDO0lBRTFELDZCQUE2QjtJQUM3QixNQUFNLFlBQVksR0FBRyxNQUFNLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFD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
|