@devx-commerce/plugin-gati 0.0.2 → 0.0.4
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/development/erp-order-payload-example.js +76 -0
- package/.medusa/server/src/api/admin/erp-event/middlewares.js +17 -0
- package/.medusa/server/src/api/admin/erp-event/query-config.js +23 -0
- package/.medusa/server/src/api/admin/erp-event/route.js +22 -0
- package/.medusa/server/src/api/admin/erp-event/utils.js +20 -0
- package/.medusa/server/src/api/admin/erp-event/validators.js +9 -0
- package/.medusa/server/src/api/admin/middlewares.js +11 -0
- package/.medusa/server/src/api/erp/webhook/config.js +101 -0
- package/.medusa/server/src/api/erp/webhook/route.js +39 -48
- package/.medusa/server/src/api/erp/webhook/utils.js +61 -0
- package/.medusa/server/src/api/middlewares.js +15 -0
- package/.medusa/server/src/api/store/carts/[id]/custom-add-line-items/route.js +17 -0
- package/.medusa/server/src/api/store/carts/middleware.js +14 -0
- package/.medusa/server/src/api/store/custom-price/[variant_id]/route.js +25 -0
- package/.medusa/server/src/api/store/custom-price/middleware.js +13 -0
- package/.medusa/server/src/api/store/custom-price/query-config.js +11 -0
- package/.medusa/server/src/api/store/custom-price/validators.js +16 -0
- package/.medusa/server/src/api/store/middleware.js +15 -0
- package/.medusa/server/src/lib/api-response.js +103 -0
- package/.medusa/server/src/links/extended-product.js +10 -0
- package/.medusa/server/src/links/extended-variant.js +10 -0
- package/.medusa/server/src/modules/category-group-master/index.js +13 -0
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20250729035221.js +16 -0
- package/.medusa/server/src/modules/category-group-master/models/category-group-master.js +13 -0
- package/.medusa/server/src/modules/category-group-master/service.js +10 -0
- package/.medusa/server/src/modules/category-master/index.js +13 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +15 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +14 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +14 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20250729040659.js +18 -0
- package/.medusa/server/src/modules/category-master/models/category-master.js +17 -0
- package/.medusa/server/src/modules/category-master/service.js +10 -0
- package/.medusa/server/src/modules/collection-group-master/index.js +13 -0
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +15 -0
- package/.medusa/server/src/modules/collection-group-master/models/collection-group-master.js +12 -0
- package/.medusa/server/src/modules/collection-group-master/service.js +10 -0
- package/.medusa/server/src/modules/collection-master/index.js +13 -0
- package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +16 -0
- package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +14 -0
- package/.medusa/server/src/modules/collection-master/models/collection-master.js +15 -0
- package/.medusa/server/src/modules/collection-master/service.js +10 -0
- package/.medusa/server/src/modules/discount-master/index.js +13 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250707232514.js +21 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051709.js +16 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20250708051737.js +14 -0
- package/.medusa/server/src/modules/discount-master/models/discount-master.js +62 -0
- package/.medusa/server/src/modules/discount-master/service.js +84 -0
- package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +16 -0
- package/.medusa/server/src/modules/erp/models/erp.js +10 -0
- package/.medusa/server/src/modules/erp/service.js +67 -1
- package/.medusa/server/src/modules/erp-event/index.js +13 -0
- package/.medusa/server/src/modules/erp-event/migrations/Migration20250608221239.js +15 -0
- package/.medusa/server/src/modules/erp-event/models/erp-event.js +11 -0
- package/.medusa/server/src/modules/erp-event/service.js +10 -0
- package/.medusa/server/src/modules/extended-product/index.js +13 -0
- package/.medusa/server/src/modules/extended-product/migrations/Migration20250620030100.js +36 -0
- package/.medusa/server/src/modules/extended-product/migrations/Migration20250716041546.js +14 -0
- package/.medusa/server/src/modules/extended-product/models/extended-product.js +176 -0
- package/.medusa/server/src/modules/extended-product/service.js +13 -0
- package/.medusa/server/src/modules/extended-variant/index.js +13 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030335.js +32 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250620030522.js +20 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629220100.js +42 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250629223425.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250704064831.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250716121609.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250725104852.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20250726232339.js +14 -0
- package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +377 -0
- package/.medusa/server/src/modules/extended-variant/service.js +35 -0
- package/.medusa/server/src/modules/party-master/index.js +13 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +16 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +16 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +16 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +14 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +16 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +20 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +16 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20250708123734.js +14 -0
- package/.medusa/server/src/modules/party-master/models/party-master.js +61 -0
- package/.medusa/server/src/modules/party-master/service.js +10 -0
- package/.medusa/server/src/modules/raw-master/index.js +13 -0
- package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +16 -0
- package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +14 -0
- package/.medusa/server/src/modules/raw-master/models/raw-master.js +17 -0
- package/.medusa/server/src/modules/raw-master/service.js +10 -0
- package/.medusa/server/src/modules/shape-master/index.js +13 -0
- package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +16 -0
- package/.medusa/server/src/modules/shape-master/models/shape-master.js +13 -0
- package/.medusa/server/src/modules/shape-master/service.js +10 -0
- package/.medusa/server/src/modules/shipping-info-master/index.js +13 -0
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713113247.js +17 -0
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20250713121440.js +16 -0
- package/.medusa/server/src/modules/shipping-info-master/models/shipping-info-master.js +22 -0
- package/.medusa/server/src/modules/shipping-info-master/service.js +10 -0
- package/.medusa/server/src/modules/sub-category-master/index.js +13 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +15 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +14 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +14 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025135.js +16 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730025307.js +22 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250730032130.js +14 -0
- package/.medusa/server/src/modules/sub-category-master/models/sub-category-master.js +18 -0
- package/.medusa/server/src/modules/sub-category-master/service.js +10 -0
- package/.medusa/server/src/subscribers/capture-payment.js +36 -0
- package/.medusa/server/src/subscribers/category-group-master.js +121 -0
- package/.medusa/server/src/subscribers/category-master.js +133 -0
- package/.medusa/server/src/subscribers/collection-master.js +119 -0
- package/.medusa/server/src/subscribers/create-customer.js +67 -0
- package/.medusa/server/src/subscribers/mark-inward.js +77 -0
- package/.medusa/server/src/subscribers/party-master-location.js +126 -0
- package/.medusa/server/src/subscribers/party-master.js +247 -0
- package/.medusa/server/src/subscribers/product-update.js +58 -0
- package/.medusa/server/src/subscribers/shipping-info-master.js +136 -0
- package/.medusa/server/src/subscribers/sub-category-master.js +129 -0
- package/.medusa/server/src/utils/address-formatter.js +60 -0
- package/.medusa/server/src/utils/phone-mapper.js +28 -0
- package/.medusa/server/src/utils/state-helper.js +72 -0
- package/.medusa/server/src/workflows/add-to-cart/index.js +19 -0
- package/.medusa/server/src/workflows/add-to-cart/steps/get-variant-prices.js +103 -0
- package/.medusa/server/src/workflows/add-to-cart/steps/index.js +18 -0
- package/.medusa/server/src/workflows/add-to-cart/workflows/add-custom-to-cart.js +68 -0
- package/.medusa/server/src/workflows/add-to-cart/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/category-group-master/index.js +58 -0
- package/.medusa/server/src/workflows/category-group-master/steps/create-category-group.js +20 -0
- package/.medusa/server/src/workflows/category-group-master/steps/delete-category-group.js +23 -0
- package/.medusa/server/src/workflows/category-group-master/steps/fetch-category-master.js +70 -0
- package/.medusa/server/src/workflows/category-group-master/steps/update-category-group.js +28 -0
- package/.medusa/server/src/workflows/category-master/index.js +58 -0
- package/.medusa/server/src/workflows/category-master/steps/create-category.js +24 -0
- package/.medusa/server/src/workflows/category-master/steps/delete-category.js +23 -0
- package/.medusa/server/src/workflows/category-master/steps/fetch-category-master.js +70 -0
- package/.medusa/server/src/workflows/category-master/steps/update-category.js +31 -0
- package/.medusa/server/src/workflows/collection-group-master/index.js +37 -0
- package/.medusa/server/src/workflows/collection-group-master/steps/create-category.js +49 -0
- package/.medusa/server/src/workflows/collection-group-master/steps/create-collection-group.js +19 -0
- package/.medusa/server/src/workflows/collection-group-master/steps/delete-collection-group.js +23 -0
- package/.medusa/server/src/workflows/collection-group-master/steps/fetch-collection-grp-master.js +70 -0
- package/.medusa/server/src/workflows/collection-group-master/steps/update-collection-group.js +27 -0
- package/.medusa/server/src/workflows/collection-master/index.js +68 -0
- package/.medusa/server/src/workflows/collection-master/steps/create-category.js +59 -0
- package/.medusa/server/src/workflows/collection-master/steps/create-collection.js +23 -0
- package/.medusa/server/src/workflows/collection-master/steps/delete-collection.js +22 -0
- package/.medusa/server/src/workflows/collection-master/steps/fetch-collection-master.js +70 -0
- package/.medusa/server/src/workflows/collection-master/steps/update-collection.js +32 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/index.js +96 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-extended-product.js +18 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-collection-lines.js +25 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-detail-lines.js +25 -0
- package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-exploration-lines.js +25 -0
- package/.medusa/server/src/workflows/create-extended-variant-from-variant/index.js +84 -0
- package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-extended-variant.js +18 -0
- package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-style-detail-lines.js +25 -0
- package/.medusa/server/src/workflows/create-or-update-product-options/index.js +25 -0
- package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +28 -0
- package/.medusa/server/src/workflows/custom-prices/index.js +19 -0
- package/.medusa/server/src/workflows/custom-prices/steps/get-variant-prices.js +97 -0
- package/.medusa/server/src/workflows/custom-prices/steps/index.js +18 -0
- package/.medusa/server/src/workflows/custom-prices/workflows/fetch-custom-price.js +40 -0
- package/.medusa/server/src/workflows/custom-prices/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/discount-master/index.js +19 -0
- package/.medusa/server/src/workflows/discount-master/steps/create-discount-detail.js +17 -0
- package/.medusa/server/src/workflows/discount-master/steps/create-discount.js +17 -0
- package/.medusa/server/src/workflows/discount-master/steps/index.js +20 -0
- package/.medusa/server/src/workflows/discount-master/steps/update-discount-with-details.js +14 -0
- package/.medusa/server/src/workflows/discount-master/steps/update-discount.js +40 -0
- package/.medusa/server/src/workflows/discount-master/types/index.js +3 -0
- package/.medusa/server/src/workflows/discount-master/workflows/create-discount.js +47 -0
- package/.medusa/server/src/workflows/discount-master/workflows/index.js +19 -0
- package/.medusa/server/src/workflows/discount-master/workflows/update-discount.js +23 -0
- package/.medusa/server/src/workflows/erp-event/index.js +10 -0
- package/.medusa/server/src/workflows/erp-event/steps/create-erp-event.js +18 -0
- package/.medusa/server/src/workflows/helpers/product-helper.js +584 -11
- package/.medusa/server/src/workflows/hooks/product-created.js +16 -0
- package/.medusa/server/src/workflows/hooks/product-updated.js +26 -0
- package/.medusa/server/src/workflows/hooks/variant-created.js +16 -0
- package/.medusa/server/src/workflows/hooks/variant-updated.js +16 -0
- package/.medusa/server/src/workflows/index.js +20 -0
- package/.medusa/server/src/workflows/inward-master/helper/index.js +373 -0
- package/.medusa/server/src/workflows/inward-master/index.js +19 -0
- package/.medusa/server/src/workflows/inward-master/steps/create-inward-detail-lines.js +19 -0
- package/.medusa/server/src/workflows/inward-master/steps/create-inward-exploration-lines.js +20 -0
- package/.medusa/server/src/workflows/inward-master/steps/create-inward-extra-charges-lines.js +20 -0
- package/.medusa/server/src/workflows/inward-master/steps/create-inward.js +21 -0
- package/.medusa/server/src/workflows/inward-master/steps/delete-inward-detail-lines.js +16 -0
- package/.medusa/server/src/workflows/inward-master/steps/delete-inward-exploration-lines.js +16 -0
- package/.medusa/server/src/workflows/inward-master/steps/delete-inward-extra-charges-lines.js +16 -0
- package/.medusa/server/src/workflows/inward-master/steps/delete-inward.js +20 -0
- package/.medusa/server/src/workflows/inward-master/steps/fetch-inward-master.js +70 -0
- package/.medusa/server/src/workflows/inward-master/steps/index.js +29 -0
- package/.medusa/server/src/workflows/inward-master/steps/update-instock.js +37 -0
- package/.medusa/server/src/workflows/inward-master/steps/update-inward.js +44 -0
- package/.medusa/server/src/workflows/inward-master/steps/update-variant-manage-inventory.js +36 -0
- package/.medusa/server/src/workflows/inward-master/types/index.js +3 -0
- package/.medusa/server/src/workflows/inward-master/workflows/create-inward.js +209 -0
- package/.medusa/server/src/workflows/inward-master/workflows/delete-inward.js +102 -0
- package/.medusa/server/src/workflows/inward-master/workflows/index.js +21 -0
- package/.medusa/server/src/workflows/inward-master/workflows/update-instock.js +102 -0
- package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +37 -0
- package/.medusa/server/src/workflows/orders/index.js +18 -0
- package/.medusa/server/src/workflows/orders/steps/index.js +18 -0
- package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +32 -0
- package/.medusa/server/src/workflows/orders/utils/order-helper.js +77 -0
- package/.medusa/server/src/workflows/orders/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +42 -0
- package/.medusa/server/src/workflows/party-master/helpers/index.js +9 -0
- package/.medusa/server/src/workflows/party-master/index.js +19 -0
- package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +33 -0
- package/.medusa/server/src/workflows/party-master/steps/create-party.js +73 -0
- package/.medusa/server/src/workflows/party-master/steps/delete-party.js +23 -0
- package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +70 -0
- package/.medusa/server/src/workflows/party-master/steps/index.js +23 -0
- package/.medusa/server/src/workflows/party-master/steps/update-party-master-with-field.js +15 -0
- package/.medusa/server/src/workflows/party-master/steps/update-party.js +80 -0
- package/.medusa/server/src/workflows/party-master/workflows/create-customer-erp.js +11 -0
- package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +155 -0
- package/.medusa/server/src/workflows/party-master/workflows/create-party-workflow.js +13 -0
- package/.medusa/server/src/workflows/party-master/workflows/index.js +21 -0
- package/.medusa/server/src/workflows/party-master/workflows/update-party-master-with-field.js +11 -0
- package/.medusa/server/src/workflows/party-style-master/index.js +19 -0
- package/.medusa/server/src/workflows/party-style-master/steps/delete-party-style-master.js +40 -0
- package/.medusa/server/src/workflows/party-style-master/steps/fetch-party-styles.js +70 -0
- package/.medusa/server/src/workflows/party-style-master/steps/index.js +20 -0
- package/.medusa/server/src/workflows/party-style-master/steps/update-party-style-master.js +40 -0
- package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +238 -0
- package/.medusa/server/src/workflows/party-style-master/types/index.js +3 -0
- package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +388 -0
- package/.medusa/server/src/workflows/party-style-master/workflows/delete-party-style-master.js +98 -0
- package/.medusa/server/src/workflows/party-style-master/workflows/index.js +19 -0
- package/.medusa/server/src/workflows/party-style-master/workflows/update-party-style-master.js +26 -0
- package/.medusa/server/src/workflows/raw-master/index.js +30 -0
- package/.medusa/server/src/workflows/raw-master/steps/create-raw.js +24 -0
- package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +23 -0
- package/.medusa/server/src/workflows/raw-master/steps/fetch-raw-master.js +70 -0
- package/.medusa/server/src/workflows/raw-master/steps/update-raw.js +34 -0
- package/.medusa/server/src/workflows/shape-master/index.js +30 -0
- package/.medusa/server/src/workflows/shape-master/steps/create-shape.js +20 -0
- package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +23 -0
- package/.medusa/server/src/workflows/shape-master/steps/fetch-shape-master.js +70 -0
- package/.medusa/server/src/workflows/shape-master/steps/update-shape.js +30 -0
- package/.medusa/server/src/workflows/shipping-info-master/helper/index.js +23 -0
- package/.medusa/server/src/workflows/shipping-info-master/index.js +19 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/create-shipping-info-erp.js +10 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/create-shipping-info.js +17 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/delete-shipping-info.js +20 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/fetch-shipping-info-master.js +70 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/index.js +22 -0
- package/.medusa/server/src/workflows/shipping-info-master/steps/update-shipping-info.js +36 -0
- package/.medusa/server/src/workflows/shipping-info-master/types/index.js +3 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/create-shipping-info.js +24 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/delete-shipping-info.js +28 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/index.js +20 -0
- package/.medusa/server/src/workflows/shipping-info-master/workflows/update-shipping-info.js +22 -0
- package/.medusa/server/src/workflows/style-master/index.js +19 -0
- package/.medusa/server/src/workflows/style-master/steps/delete-style-master.js +38 -0
- package/.medusa/server/src/workflows/style-master/steps/fetch-styles.js +70 -0
- package/.medusa/server/src/workflows/style-master/steps/index.js +19 -0
- package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +329 -0
- package/.medusa/server/src/workflows/style-master/workflows/delete-style-master.js +24 -0
- package/.medusa/server/src/workflows/style-master/workflows/index.js +19 -0
- package/.medusa/server/src/workflows/sub-category-master/index.js +61 -0
- package/.medusa/server/src/workflows/sub-category-master/steps/create-category.js +62 -0
- package/.medusa/server/src/workflows/sub-category-master/steps/create-sub-category.js +24 -0
- package/.medusa/server/src/workflows/sub-category-master/steps/delete-sub-category.js +23 -0
- package/.medusa/server/src/workflows/sub-category-master/steps/fetch-category-master.js +70 -0
- package/.medusa/server/src/workflows/sub-category-master/steps/update-sub-category.js +33 -0
- package/.medusa/server/src/workflows/types/common.js +21 -0
- package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +48 -0
- package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-from-product.js +56 -0
- package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-with-field.js +15 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/index.js +19 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/index.js +20 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-batch.js +21 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-from-variant.js +55 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-with-field.js +15 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/index.js +19 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-from-variant.js +58 -0
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +45 -0
- package/package.json +6 -2
- package/.medusa/server/src/api/admin/plugin/route.js +0 -7
- package/.medusa/server/src/api/store/plugin/route.js +0 -7
- package/.medusa/server/src/workflows/create-or-update-style-master/index.js +0 -228
- package/.medusa/server/src/workflows/create-or-update-style-master/steps/index.js +0 -18
|
@@ -1,22 +1,595 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mergeProductOptions = exports.createProductOptionsForPartyStyleId = exports.createProductOptionsStepFromData = exports.getPartyStyleExplorationLines = exports.getPartyStyleDetailLines = exports.getStyleCollectionLines = exports.getStyleExplorationLines = exports.getStyleDetailLines = exports.getExtendedVariantData = exports.getExtendedProductData = exports.getBaseMetalDetails = exports.calculateStyleCostsAndAmounts = exports.toKebabCase = void 0;
|
|
4
|
+
const common_1 = require("../types/common");
|
|
4
5
|
const toKebabCase = (strings) => {
|
|
5
6
|
return strings
|
|
7
|
+
.filter(Boolean)
|
|
6
8
|
.join("-")
|
|
7
9
|
.toLowerCase()
|
|
8
10
|
.replace(/\s+/g, "-") // Replace spaces with hyphens
|
|
9
|
-
.replace(/[^a-z0-9-]/g, "")
|
|
11
|
+
.replace(/[^a-z0-9-]/g, "")
|
|
12
|
+
.replace(/-{2,}/g, "-");
|
|
10
13
|
};
|
|
11
14
|
exports.toKebabCase = toKebabCase;
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const calculateStyleCostsAndAmounts = (styleDetails) => {
|
|
16
|
+
const metalTotalCost = styleDetails
|
|
17
|
+
.filter((detail) => detail.RawType === "Metal")
|
|
18
|
+
.reduce((acc, detail) => acc + detail.CostAmount, 0);
|
|
19
|
+
const diamondTotalCost = styleDetails
|
|
20
|
+
.filter((detail) => detail.RawType === "Diamond")
|
|
21
|
+
.reduce((acc, detail) => acc + detail.CostAmount, 0);
|
|
22
|
+
const stoneTotalCost = styleDetails
|
|
23
|
+
.filter((detail) => detail.RawType === "Stone" || detail.RawType === "Stone(Color Stone)")
|
|
24
|
+
.reduce((acc, detail) => acc + detail.CostAmount, 0);
|
|
25
|
+
const cpfTotalCost = styleDetails
|
|
26
|
+
.filter((detail) => detail.RawType === "Metal")
|
|
27
|
+
.reduce((acc, detail) => acc + detail.CPFCostAmt, 0);
|
|
28
|
+
const metalTotalAmount = styleDetails
|
|
29
|
+
.filter((detail) => detail.RawType === "Metal")
|
|
30
|
+
.reduce((acc, detail) => acc + detail.Amount, 0);
|
|
31
|
+
const diamondTotalAmount = styleDetails
|
|
32
|
+
.filter((detail) => detail.RawType === "Diamond")
|
|
33
|
+
.reduce((acc, detail) => acc + detail.Amount, 0);
|
|
34
|
+
const stoneTotalAmount = styleDetails
|
|
35
|
+
.filter((detail) => detail.RawType === "Stone" || detail.RawType === "Stone(Color Stone)")
|
|
36
|
+
.reduce((acc, detail) => acc + detail.Amount, 0);
|
|
37
|
+
const cpfTotalAmount = styleDetails
|
|
38
|
+
.filter((detail) => detail.RawType === "Metal")
|
|
39
|
+
.reduce((acc, detail) => acc + detail.CPFAmt, 0);
|
|
40
|
+
return {
|
|
41
|
+
metal_total_cost: metalTotalCost,
|
|
42
|
+
diamond_total_cost: diamondTotalCost,
|
|
43
|
+
stone_total_cost: stoneTotalCost,
|
|
44
|
+
cpf_total_cost: cpfTotalCost,
|
|
45
|
+
metal_total_amount: metalTotalAmount,
|
|
46
|
+
diamond_total_amount: diamondTotalAmount,
|
|
47
|
+
stone_total_amount: stoneTotalAmount,
|
|
48
|
+
cpf_total_amount: cpfTotalAmount,
|
|
18
49
|
};
|
|
19
|
-
return genderMap[gender] || "Unisex";
|
|
20
50
|
};
|
|
21
|
-
exports.
|
|
22
|
-
|
|
51
|
+
exports.calculateStyleCostsAndAmounts = calculateStyleCostsAndAmounts;
|
|
52
|
+
const getBaseMetalDetails = (styleDetails) => {
|
|
53
|
+
const baseMetalDetail = styleDetails.find((detail) => detail.RawType === "Metal" && detail.IsBase);
|
|
54
|
+
return {
|
|
55
|
+
baseMetal: baseMetalDetail?.RawCode || "",
|
|
56
|
+
baseMetalPurity: baseMetalDetail?.QlyCode || "",
|
|
57
|
+
baseMetalColor: baseMetalDetail?.ToneCode || "",
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
exports.getBaseMetalDetails = getBaseMetalDetails;
|
|
61
|
+
const getExtendedProductData = (styleData, baseMetalDetails, styleCalculations) => {
|
|
62
|
+
return {
|
|
63
|
+
style_id: styleData.StyleId,
|
|
64
|
+
style_date: styleData.StyleDate,
|
|
65
|
+
style_code: styleData.StyleCode,
|
|
66
|
+
style_alias_no: styleData.StyleAliasNo,
|
|
67
|
+
grp_group_no: styleData.GrpGroupNo,
|
|
68
|
+
category_group_name: styleData.CategoryGroupName,
|
|
69
|
+
category_group_code: styleData.CategoryGroupCode,
|
|
70
|
+
grp_no: styleData.GrpNo,
|
|
71
|
+
category: styleData.Category || "",
|
|
72
|
+
category_code: styleData.CategoryCode,
|
|
73
|
+
sub_itm_no: styleData.SubItmNo,
|
|
74
|
+
sub_category: styleData.SubCategory || "",
|
|
75
|
+
sub_category_code: styleData.SubCategoryCode,
|
|
76
|
+
manufacturer: styleData.Manufacturer || "",
|
|
77
|
+
manufacturer_no: styleData.ManufacturerNo || "",
|
|
78
|
+
make_type_no: styleData.MakeTypeNo,
|
|
79
|
+
make_type: styleData.MakeType || "",
|
|
80
|
+
make_type_code: styleData.MakeTypeCode,
|
|
81
|
+
stock_type_no: styleData.StockTypeNo,
|
|
82
|
+
stock_type: styleData.StockType || "",
|
|
83
|
+
stock_type_code: styleData.StockTypeCode,
|
|
84
|
+
item_size_id: styleData.ItemSizeId,
|
|
85
|
+
item_size: styleData.ItemSize || "",
|
|
86
|
+
item_size_name: styleData.ItemSizeName,
|
|
87
|
+
brand_no: styleData.BrandNo,
|
|
88
|
+
brand: styleData.Brand || "",
|
|
89
|
+
brand_name: styleData.BrandName,
|
|
90
|
+
gender_no: styleData.GenderNo,
|
|
91
|
+
gender: (0, common_1.genderMapper)(styleData.Gender),
|
|
92
|
+
gender_name: styleData.GenderName,
|
|
93
|
+
shape_code: styleData.StyleMstDetail.find((detail) => detail.IsCenterStone && detail.IsBase)?.ShapeCode || "",
|
|
94
|
+
is_complete: styleData.IsComplete || false,
|
|
95
|
+
restricted: styleData.Restricted || false,
|
|
96
|
+
currency: styleData.Currency || "INR",
|
|
97
|
+
rate_chart: styleData.RateChart || "",
|
|
98
|
+
discount_markup: styleData.DiscountMarkup || "",
|
|
99
|
+
cost: styleData.Cost || 0,
|
|
100
|
+
mrp: styleData.Mrp || 0,
|
|
101
|
+
hsn_code: styleData.HSN || "",
|
|
102
|
+
gross_weight: styleData.GrossWt || 0,
|
|
103
|
+
net_weight: styleData.NetWt || 0,
|
|
104
|
+
wax_weight: styleData.WaxWt || 0,
|
|
105
|
+
model_weight: styleData.ModelWt || 0,
|
|
106
|
+
metal: baseMetalDetails.baseMetal,
|
|
107
|
+
metal_purity: baseMetalDetails.baseMetalPurity,
|
|
108
|
+
metal_color: baseMetalDetails.baseMetalColor,
|
|
109
|
+
total_diamond_pcs: styleData.TotDiamondPcs || 0,
|
|
110
|
+
total_diamond_weight: styleData.TotDiamondWt || 0,
|
|
111
|
+
total_client_diamond_pcs: styleData.TotClientDiamondPcs || 0,
|
|
112
|
+
total_client_diamond_weight: styleData.TotClientDiamondWt || 0,
|
|
113
|
+
total_stone_pcs: styleData.TotStonePcs || 0,
|
|
114
|
+
total_stone_weight: styleData.TotStoneWt || 0,
|
|
115
|
+
total_cz_pcs: styleData.TotCzPcs || 0,
|
|
116
|
+
total_cz_weight: styleData.TotCzWt || 0,
|
|
117
|
+
web_description: styleData.WebDescription || "",
|
|
118
|
+
remarks: styleData.Remarks || "",
|
|
119
|
+
customer_remarks: styleData.CustomerRemarks || "",
|
|
120
|
+
special_remarks: styleData.SpecialRemarks || "",
|
|
121
|
+
metal_total_cost: styleCalculations.metal_total_cost,
|
|
122
|
+
diamond_total_cost: styleCalculations.diamond_total_cost,
|
|
123
|
+
stone_total_cost: styleCalculations.stone_total_cost,
|
|
124
|
+
cpf_total_cost: styleCalculations.cpf_total_cost,
|
|
125
|
+
metal_total_amount: styleCalculations.metal_total_amount,
|
|
126
|
+
diamond_total_amount: styleCalculations.diamond_total_amount,
|
|
127
|
+
stone_total_amount: styleCalculations.stone_total_amount,
|
|
128
|
+
cpf_total_amount: styleCalculations.cpf_total_amount,
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
exports.getExtendedProductData = getExtendedProductData;
|
|
132
|
+
const getExtendedVariantData = (styleData, baseMetalDetails, styleCalculations, salesChannelId) => {
|
|
133
|
+
return {
|
|
134
|
+
images: [],
|
|
135
|
+
thumbnail: "",
|
|
136
|
+
party_style_id: styleData.PartyStyleId,
|
|
137
|
+
party_style_date: styleData.PartyStyleDate,
|
|
138
|
+
party_style_code: styleData.PartyStyleCode,
|
|
139
|
+
party_style_alias_no: styleData.PartyStyleAliasNo,
|
|
140
|
+
party_style_sku_no: styleData.PartyStyleSKUNo,
|
|
141
|
+
style_id: styleData.StyleId,
|
|
142
|
+
style_code: styleData.StyleCode,
|
|
143
|
+
grp_group_no: styleData.GrpGroupNo,
|
|
144
|
+
category_group_name: styleData.CategoryGroupName,
|
|
145
|
+
category_group_code: styleData.CategoryGroupCode,
|
|
146
|
+
grp_no: styleData.GrpNo,
|
|
147
|
+
category: styleData.Category || "",
|
|
148
|
+
category_code: styleData.CategoryCode,
|
|
149
|
+
sub_itm_no: styleData.SubItmNo,
|
|
150
|
+
sub_category: styleData.SubCategory || "",
|
|
151
|
+
sub_category_code: styleData.SubCategoryCode,
|
|
152
|
+
manufacturer: styleData.Manufacturer || "",
|
|
153
|
+
manufacturer_no: styleData.ManufacturerNo || "",
|
|
154
|
+
make_type: styleData.MakeType || "",
|
|
155
|
+
make_type_no: styleData.MakeTypeNo,
|
|
156
|
+
make_type_code: styleData.MakeTypeCode,
|
|
157
|
+
stock_type_no: styleData.StockTypeNo,
|
|
158
|
+
stock_type: styleData.StockType || "",
|
|
159
|
+
stock_type_code: styleData.StockTypeCode,
|
|
160
|
+
item_size_id: styleData.ItemSizeId,
|
|
161
|
+
item_size: styleData.ItemSize || "",
|
|
162
|
+
item_size_name: styleData.ItemSizeName,
|
|
163
|
+
brand_no: styleData.BrandNo,
|
|
164
|
+
brand: styleData.Brand || "",
|
|
165
|
+
brand_name: styleData.BrandName || "",
|
|
166
|
+
gender_no: styleData.GenderNo,
|
|
167
|
+
gender: (0, common_1.genderMapper)(styleData.Gender),
|
|
168
|
+
gender_name: styleData.GenderName,
|
|
169
|
+
shape_code: styleData.PartyStyleMstDetail.find((detail) => detail.IsCenterStone && detail.IsBase)?.ShapeCode || "",
|
|
170
|
+
is_complete: styleData.IsComplete || false,
|
|
171
|
+
restricted: styleData.Restricted || false,
|
|
172
|
+
currency: styleData.Currency || "INR",
|
|
173
|
+
rate_chart: styleData.RateChart || "",
|
|
174
|
+
discount_markup: styleData.DiscountMarkup || "",
|
|
175
|
+
cost: styleData.Cost || 0,
|
|
176
|
+
mrp: styleData.Mrp || 0,
|
|
177
|
+
hsn_code: styleData.HSN || "",
|
|
178
|
+
gross_weight: styleData.GrossWt || 0,
|
|
179
|
+
net_weight: styleData.NetWt || 0,
|
|
180
|
+
wax_weight: styleData.WaxWt || 0,
|
|
181
|
+
model_weight: styleData.ModelWt || 0,
|
|
182
|
+
metal: baseMetalDetails.baseMetal,
|
|
183
|
+
metal_purity: baseMetalDetails.baseMetalPurity,
|
|
184
|
+
metal_color: baseMetalDetails.baseMetalColor,
|
|
185
|
+
total_diamond_pcs: styleData.TotDiamondPcs || 0,
|
|
186
|
+
total_diamond_weight: styleData.TotDiamondWt || 0,
|
|
187
|
+
total_client_diamond_pcs: styleData.TotClientDiamondPcs || 0,
|
|
188
|
+
total_client_diamond_weight: styleData.TotClientDiamondWt || 0,
|
|
189
|
+
total_stone_pcs: styleData.TotStonePcs || 0,
|
|
190
|
+
total_stone_weight: styleData.TotStoneWt || 0,
|
|
191
|
+
total_cz_pcs: styleData.TotCzPcs || 0,
|
|
192
|
+
total_cz_weight: styleData.TotCzWt || 0,
|
|
193
|
+
web_description: styleData.WebDescription || "",
|
|
194
|
+
remarks: styleData.Remarks || "",
|
|
195
|
+
customer_remarks: styleData.CustomerRemarks || "",
|
|
196
|
+
special_remarks: styleData.SpecialRemarks || "",
|
|
197
|
+
metal_total_cost: styleCalculations.metal_total_cost,
|
|
198
|
+
diamond_total_cost: styleCalculations.diamond_total_cost,
|
|
199
|
+
stone_total_cost: styleCalculations.stone_total_cost,
|
|
200
|
+
cpf_total_cost: styleCalculations.cpf_total_cost,
|
|
201
|
+
metal_total_amount: styleCalculations.metal_total_amount,
|
|
202
|
+
diamond_total_amount: styleCalculations.diamond_total_amount,
|
|
203
|
+
stone_total_amount: styleCalculations.stone_total_amount,
|
|
204
|
+
cpf_total_amount: styleCalculations.cpf_total_amount,
|
|
205
|
+
sales_channels: [salesChannelId],
|
|
206
|
+
is_default: false,
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
exports.getExtendedVariantData = getExtendedVariantData;
|
|
210
|
+
const getStyleDetailLines = (data) => {
|
|
211
|
+
return data.map((detail) => {
|
|
212
|
+
return {
|
|
213
|
+
style_id: detail.StyleId,
|
|
214
|
+
style_mst_detail_id: detail.StyleMstDetailId,
|
|
215
|
+
item_id: detail.ItemId,
|
|
216
|
+
item_name: detail.ItemName || "",
|
|
217
|
+
item_code: detail.ItemCode || "",
|
|
218
|
+
raw_type: detail.RawType || "",
|
|
219
|
+
material_group: detail.MaterialGroup || "",
|
|
220
|
+
raw_no: detail.RawNo || 0,
|
|
221
|
+
raw_code: detail.RawCode || "",
|
|
222
|
+
shape_no: detail.ShapeNo || 0,
|
|
223
|
+
shape_code: detail.ShapeCode || "",
|
|
224
|
+
qly_no: detail.QlyNo || 0,
|
|
225
|
+
qly_code: detail.QlyCode || "",
|
|
226
|
+
tone_no: detail.ToneNo || 0,
|
|
227
|
+
tone_code: detail.ToneCode || "",
|
|
228
|
+
description: detail.Description || "",
|
|
229
|
+
size: detail.Size || "",
|
|
230
|
+
size_no: detail.SizeNo || 0,
|
|
231
|
+
size_name: detail.SizeName || "",
|
|
232
|
+
accessories: detail.Accessories || "",
|
|
233
|
+
accessories_id: detail.AccessoriesId || 0,
|
|
234
|
+
accessories_name: detail.AccessoriesName || "",
|
|
235
|
+
setting: detail.Setting || "",
|
|
236
|
+
smd_set_no: detail.SMDSetNo || 0,
|
|
237
|
+
setting_name: detail.SettingName || "",
|
|
238
|
+
is_base: detail.IsBase || false,
|
|
239
|
+
is_center_stone: detail.IsCenterStone || false,
|
|
240
|
+
pieces: detail.Pieces || 0,
|
|
241
|
+
weight: detail.Weight || 0,
|
|
242
|
+
min_weight: detail.MinWeight || 0,
|
|
243
|
+
max_weight: detail.MaxWeight || 0,
|
|
244
|
+
stone_wt: detail.StoneWt || 0,
|
|
245
|
+
default_wt: detail.DefaultWt || 0,
|
|
246
|
+
raw_formula: detail.RawFormula || "",
|
|
247
|
+
cost_rate: detail.CostRate || 0,
|
|
248
|
+
cost_amount: detail.CostAmount || 0,
|
|
249
|
+
hand_cost_rate: detail.HandCostRate || 0,
|
|
250
|
+
hand_cost_amount: detail.HandCostAmount || 0,
|
|
251
|
+
set_cost_rate: detail.SetCostRate || 0,
|
|
252
|
+
set_cost_amount: detail.SetCostAmount || 0,
|
|
253
|
+
loss_cost_per: detail.LossCostPer || 0,
|
|
254
|
+
loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
|
|
255
|
+
loss_cost_weight: detail.LossCostWeight || 0,
|
|
256
|
+
loss_cost_amt: detail.LossCostAmt || 0,
|
|
257
|
+
cpf_cost_rate: detail.CPFCostRate || 0,
|
|
258
|
+
cpf_cost_is_fix: detail.CPFCostIsFix || false,
|
|
259
|
+
cpf_cost_amt: detail.CPFCostAmt || 0,
|
|
260
|
+
rate: detail.Rate || 0,
|
|
261
|
+
amount: detail.Amount || 0,
|
|
262
|
+
hand_rate: detail.HandRate || 0,
|
|
263
|
+
hand_amount: detail.HandAmount || 0,
|
|
264
|
+
set_rate: detail.SetRate || 0,
|
|
265
|
+
set_amount: detail.SetAmount || 0,
|
|
266
|
+
loss_per: detail.LossPer || 0,
|
|
267
|
+
loss_per_is_fix: detail.LossPerIsFix || false,
|
|
268
|
+
loss_weight: detail.LossWeight || 0,
|
|
269
|
+
loss_amt: detail.LossAmt || 0,
|
|
270
|
+
cpf_rate: detail.CPFRate || 0,
|
|
271
|
+
cpf_is_fix: detail.CPFIsFix || false,
|
|
272
|
+
cpf_amt: detail.CPFAmt || 0,
|
|
273
|
+
};
|
|
274
|
+
});
|
|
275
|
+
};
|
|
276
|
+
exports.getStyleDetailLines = getStyleDetailLines;
|
|
277
|
+
const getStyleExplorationLines = (data) => {
|
|
278
|
+
return data.map((detail) => {
|
|
279
|
+
return {
|
|
280
|
+
style_id: detail.StyleId,
|
|
281
|
+
exploration_id: detail.ExplorationId,
|
|
282
|
+
exploration_name: detail.ExplorationName || "",
|
|
283
|
+
exploration_code: detail.ExplorationCode || "",
|
|
284
|
+
exploration_value: detail.ExplorationValue || "",
|
|
285
|
+
};
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
exports.getStyleExplorationLines = getStyleExplorationLines;
|
|
289
|
+
const getStyleCollectionLines = (data) => {
|
|
290
|
+
return data.map((detail) => {
|
|
291
|
+
return {
|
|
292
|
+
style_id: detail.StyleId,
|
|
293
|
+
desg_no: detail.DesgNo,
|
|
294
|
+
collection_name: detail.CollectionName || "",
|
|
295
|
+
collection_group_no: detail.CollectionGroupNo,
|
|
296
|
+
collection_group_name: detail.CollectionGroupName || "",
|
|
297
|
+
collection_group_code: detail.CollectionGroupCode || "",
|
|
298
|
+
};
|
|
299
|
+
});
|
|
300
|
+
};
|
|
301
|
+
exports.getStyleCollectionLines = getStyleCollectionLines;
|
|
302
|
+
const getPartyStyleDetailLines = (data) => {
|
|
303
|
+
return data.map((detail) => {
|
|
304
|
+
return {
|
|
305
|
+
party_style_id: detail.PartyStyleId,
|
|
306
|
+
party_style_mst_detail_id: detail.PartyStyleMstDetailId,
|
|
307
|
+
item_code: detail.ItemCode || "",
|
|
308
|
+
item_id: detail.ItemId || 0,
|
|
309
|
+
item_name: detail.ItemName || "",
|
|
310
|
+
raw_type: detail.RawType || "",
|
|
311
|
+
material_group: detail.MaterialGroup || "",
|
|
312
|
+
raw_no: detail.RawNo || 0,
|
|
313
|
+
raw_code: detail.RawCode || "",
|
|
314
|
+
shape_no: detail.ShapeNo || 0,
|
|
315
|
+
shape_code: detail.ShapeCode || "",
|
|
316
|
+
qly_no: detail.QlyNo || 0,
|
|
317
|
+
qly_code: detail.QlyCode || "",
|
|
318
|
+
tone_no: detail.ToneNo || 0,
|
|
319
|
+
tone_code: detail.ToneCode || "",
|
|
320
|
+
description: detail.Description || "",
|
|
321
|
+
size_no: detail.SizeNo || 0,
|
|
322
|
+
size: detail.Size || "",
|
|
323
|
+
size_name: detail.SizeName || "",
|
|
324
|
+
accessories_id: detail.AccessoriesId || 0,
|
|
325
|
+
accessories: detail.Accessories || "",
|
|
326
|
+
accessories_name: detail.AccessoriesName || "",
|
|
327
|
+
smd_set_no: detail.SMDSetNo || 0,
|
|
328
|
+
setting: detail.Setting || "",
|
|
329
|
+
setting_name: detail.SettingName || "",
|
|
330
|
+
is_base: detail.IsBase || false,
|
|
331
|
+
is_center_stone: detail.IsCenterStone || false,
|
|
332
|
+
pieces: detail.Pieces || 0,
|
|
333
|
+
weight: detail.Weight || 0,
|
|
334
|
+
min_weight: detail.MinWeight || 0,
|
|
335
|
+
max_weight: detail.MaxWeight || 0,
|
|
336
|
+
stone_wt: detail.StoneWt || 0,
|
|
337
|
+
default_wt: detail.DefaultWt || 0,
|
|
338
|
+
raw_formula: detail.RawFormula || "",
|
|
339
|
+
cost_rate: detail.CostRate || 0,
|
|
340
|
+
cost_amount: detail.CostAmount || 0,
|
|
341
|
+
hand_cost_rate: detail.HandCostRate || 0,
|
|
342
|
+
hand_cost_amount: detail.HandCostAmount || 0,
|
|
343
|
+
set_cost_rate: detail.SetCostRate || 0,
|
|
344
|
+
set_cost_amount: detail.SetCostAmount || 0,
|
|
345
|
+
loss_cost_per: detail.LossCostPer || 0,
|
|
346
|
+
loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
|
|
347
|
+
loss_cost_weight: detail.LossCostWeight || 0,
|
|
348
|
+
loss_cost_amt: detail.LossCostAmt || 0,
|
|
349
|
+
cpf_cost_rate: detail.CPFCostRate || 0,
|
|
350
|
+
cpf_cost_is_fix: detail.CPFCostIsFix || false,
|
|
351
|
+
cpf_cost_amt: detail.CPFCostAmt || 0,
|
|
352
|
+
rate: detail.Rate || 0,
|
|
353
|
+
amount: detail.Amount || 0,
|
|
354
|
+
hand_rate: detail.HandRate || 0,
|
|
355
|
+
hand_amount: detail.HandAmount || 0,
|
|
356
|
+
set_rate: detail.SetRate || 0,
|
|
357
|
+
set_amount: detail.SetAmount || 0,
|
|
358
|
+
loss_per: detail.LossPer || 0,
|
|
359
|
+
loss_per_is_fix: detail.LossPerIsFix || false,
|
|
360
|
+
loss_weight: detail.LossWeight || 0,
|
|
361
|
+
loss_amt: detail.LossAmt || 0,
|
|
362
|
+
cpf_rate: detail.CPFRate || 0,
|
|
363
|
+
cpf_is_fix: detail.CPFIsFix || false,
|
|
364
|
+
cpf_amt: detail.CPFAmt || 0,
|
|
365
|
+
};
|
|
366
|
+
});
|
|
367
|
+
};
|
|
368
|
+
exports.getPartyStyleDetailLines = getPartyStyleDetailLines;
|
|
369
|
+
const getPartyStyleExplorationLines = (data) => {
|
|
370
|
+
return data.map((detail) => {
|
|
371
|
+
return {
|
|
372
|
+
party_style_id: detail.PartyStyleId,
|
|
373
|
+
exploration_id: detail.ExplorationId,
|
|
374
|
+
exploration_name: detail.ExplorationName || "",
|
|
375
|
+
exploration_code: detail.ExplorationCode || "",
|
|
376
|
+
exploration_value: detail.ExplorationValue || "",
|
|
377
|
+
};
|
|
378
|
+
});
|
|
379
|
+
};
|
|
380
|
+
exports.getPartyStyleExplorationLines = getPartyStyleExplorationLines;
|
|
381
|
+
const createProductOptionsStepFromData = (partyStyles) => {
|
|
382
|
+
// Group all styles by StyleId
|
|
383
|
+
const stylesByStyleId = new Map();
|
|
384
|
+
partyStyles?.forEach((style) => {
|
|
385
|
+
const styleId = String(style.StyleId);
|
|
386
|
+
if (!stylesByStyleId.has(styleId)) {
|
|
387
|
+
stylesByStyleId.set(styleId, []);
|
|
388
|
+
}
|
|
389
|
+
stylesByStyleId.get(styleId).push(style);
|
|
390
|
+
});
|
|
391
|
+
// Process each style group
|
|
392
|
+
return Array.from(stylesByStyleId.entries()).map(([styleId, styles]) => {
|
|
393
|
+
// Create sets to store unique values for each option type
|
|
394
|
+
const options = {
|
|
395
|
+
metals: new Set(),
|
|
396
|
+
metalColors: new Set(),
|
|
397
|
+
diamondQualities: new Set(),
|
|
398
|
+
sizes: new Set(),
|
|
399
|
+
};
|
|
400
|
+
// Track if all styles in the group have each option type
|
|
401
|
+
const optionAvailability = {
|
|
402
|
+
metals: true,
|
|
403
|
+
metalColors: true,
|
|
404
|
+
diamondQualities: true,
|
|
405
|
+
sizes: true,
|
|
406
|
+
};
|
|
407
|
+
// First, check option availability across all styles in this group
|
|
408
|
+
styles.forEach((style) => {
|
|
409
|
+
// Check Size availability
|
|
410
|
+
if (!style.ItemSize) {
|
|
411
|
+
optionAvailability.sizes = false;
|
|
412
|
+
}
|
|
413
|
+
// Check other options availability
|
|
414
|
+
let hasMetals = false;
|
|
415
|
+
let hasMetalColors = false;
|
|
416
|
+
let hasDiamondQualities = false;
|
|
417
|
+
style.PartyStyleMstDetail.forEach((detail) => {
|
|
418
|
+
if (detail.RawType === "Metal" && detail.IsBase) {
|
|
419
|
+
hasMetals = true;
|
|
420
|
+
hasMetalColors = true;
|
|
421
|
+
}
|
|
422
|
+
if (detail.RawType === "Diamond") {
|
|
423
|
+
hasDiamondQualities = true;
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
if (!hasMetals)
|
|
427
|
+
optionAvailability.metals = false;
|
|
428
|
+
if (!hasMetalColors)
|
|
429
|
+
optionAvailability.metalColors = false;
|
|
430
|
+
if (!hasDiamondQualities)
|
|
431
|
+
optionAvailability.diamondQualities = false;
|
|
432
|
+
});
|
|
433
|
+
// Now gather values only for available options
|
|
434
|
+
styles.forEach((style) => {
|
|
435
|
+
// Only collect size data if all items have it
|
|
436
|
+
if (optionAvailability.sizes && style.ItemSize) {
|
|
437
|
+
options.sizes.add(String(style.ItemSize));
|
|
438
|
+
}
|
|
439
|
+
// Process other options
|
|
440
|
+
style.PartyStyleMstDetail.forEach((detail) => {
|
|
441
|
+
if (optionAvailability.metals &&
|
|
442
|
+
detail.RawType === "Metal" &&
|
|
443
|
+
detail.IsBase) {
|
|
444
|
+
options.metals.add(`${detail.QlyCode}K ${detail.RawCode}`);
|
|
445
|
+
// Map ToneCode to color name if metal colors are available
|
|
446
|
+
if (optionAvailability.metalColors) {
|
|
447
|
+
if (detail.ToneCode === "R")
|
|
448
|
+
options.metalColors.add("Rose");
|
|
449
|
+
else if (detail.ToneCode === "Y")
|
|
450
|
+
options.metalColors.add("Yellow");
|
|
451
|
+
else if (detail.ToneCode === "W")
|
|
452
|
+
options.metalColors.add("White");
|
|
453
|
+
else if (detail.ToneCode === "YRW")
|
|
454
|
+
options.metalColors.add("YELLOW/ROSE/WHITE");
|
|
455
|
+
else if (detail.ToneCode === "YW")
|
|
456
|
+
options.metalColors.add("YELLOW/WHITE");
|
|
457
|
+
else if (detail.ToneCode === "RW")
|
|
458
|
+
options.metalColors.add("ROSE/WHITE");
|
|
459
|
+
else if (detail.ToneCode === "BU")
|
|
460
|
+
options.metalColors.add("BLUE");
|
|
461
|
+
else if (detail.ToneCode === "BL")
|
|
462
|
+
options.metalColors.add("BLACK");
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
if (optionAvailability.diamondQualities &&
|
|
466
|
+
detail.RawType === "Diamond" &&
|
|
467
|
+
detail.ToneCode &&
|
|
468
|
+
detail.QlyCode) {
|
|
469
|
+
options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
});
|
|
473
|
+
const optionsArray = [];
|
|
474
|
+
if (optionAvailability.metals && options.metals.size > 0) {
|
|
475
|
+
optionsArray.push({ title: "Metal", values: Array.from(options.metals) });
|
|
476
|
+
}
|
|
477
|
+
if (optionAvailability.metalColors && options.metalColors.size > 0) {
|
|
478
|
+
optionsArray.push({
|
|
479
|
+
title: "Metal Color",
|
|
480
|
+
values: Array.from(options.metalColors),
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
if (optionAvailability.diamondQualities &&
|
|
484
|
+
options.diamondQualities.size > 0) {
|
|
485
|
+
optionsArray.push({
|
|
486
|
+
title: "Diamond Quality",
|
|
487
|
+
values: Array.from(options.diamondQualities),
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
if (optionAvailability.sizes && options.sizes.size > 0) {
|
|
491
|
+
optionsArray.push({ title: "Size", values: Array.from(options.sizes) });
|
|
492
|
+
}
|
|
493
|
+
return {
|
|
494
|
+
styleId,
|
|
495
|
+
options: optionsArray,
|
|
496
|
+
};
|
|
497
|
+
});
|
|
498
|
+
};
|
|
499
|
+
exports.createProductOptionsStepFromData = createProductOptionsStepFromData;
|
|
500
|
+
const createProductOptionsForPartyStyleId = (partyStyle, existingProduct) => {
|
|
501
|
+
const options = {
|
|
502
|
+
metals: new Set(),
|
|
503
|
+
metalColors: new Set(),
|
|
504
|
+
diamondQualities: new Set(),
|
|
505
|
+
sizes: new Set(),
|
|
506
|
+
};
|
|
507
|
+
// Size
|
|
508
|
+
if (partyStyle.ItemSize)
|
|
509
|
+
options.sizes.add(String(partyStyle.ItemSize));
|
|
510
|
+
// Track if this style has each option type
|
|
511
|
+
let hasMetalOption = false;
|
|
512
|
+
let hasDiamondOption = false;
|
|
513
|
+
partyStyle.PartyStyleMstDetail.forEach((detail) => {
|
|
514
|
+
if (detail.RawType === "Metal" && detail.IsBase) {
|
|
515
|
+
hasMetalOption = true;
|
|
516
|
+
options.metals.add(`${detail.QlyCode}K ${detail.RawCode}`);
|
|
517
|
+
// Map ToneCode to color name
|
|
518
|
+
if (detail.ToneCode === "R")
|
|
519
|
+
options.metalColors.add("Rose");
|
|
520
|
+
else if (detail.ToneCode === "Y")
|
|
521
|
+
options.metalColors.add("Yellow");
|
|
522
|
+
else if (detail.ToneCode === "W")
|
|
523
|
+
options.metalColors.add("White");
|
|
524
|
+
else if (detail.ToneCode === "YRW")
|
|
525
|
+
options.metalColors.add("YELLOW/ROSE/WHITE");
|
|
526
|
+
else if (detail.ToneCode === "YW")
|
|
527
|
+
options.metalColors.add("YELLOW/WHITE");
|
|
528
|
+
else if (detail.ToneCode === "RW")
|
|
529
|
+
options.metalColors.add("ROSE/WHITE");
|
|
530
|
+
else if (detail.ToneCode === "BU")
|
|
531
|
+
options.metalColors.add("BLUE");
|
|
532
|
+
else if (detail.ToneCode === "BL")
|
|
533
|
+
options.metalColors.add("BLACK");
|
|
534
|
+
}
|
|
535
|
+
if (detail.RawType === "Diamond" && detail.ToneCode && detail.QlyCode) {
|
|
536
|
+
hasDiamondOption = true;
|
|
537
|
+
options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
|
|
538
|
+
}
|
|
539
|
+
});
|
|
540
|
+
// Prepare result object with only options that exist
|
|
541
|
+
const result = {};
|
|
542
|
+
// Only add options if they exist in the data
|
|
543
|
+
if (hasMetalOption &&
|
|
544
|
+
options.metals.size > 0 &&
|
|
545
|
+
existingProduct.options.find((option) => option.title === "Metal")) {
|
|
546
|
+
result["Metal"] = Array.from(options.metals)[0];
|
|
547
|
+
}
|
|
548
|
+
if (hasMetalOption &&
|
|
549
|
+
options.metalColors.size > 0 &&
|
|
550
|
+
existingProduct.options.find((option) => option.title === "Metal Color")) {
|
|
551
|
+
result["Metal Color"] = Array.from(options.metalColors)[0];
|
|
552
|
+
}
|
|
553
|
+
if (hasDiamondOption &&
|
|
554
|
+
options.diamondQualities.size > 0 &&
|
|
555
|
+
existingProduct.options.find((option) => option.title === "Diamond Quality")) {
|
|
556
|
+
result["Diamond Quality"] = Array.from(options.diamondQualities)[0];
|
|
557
|
+
}
|
|
558
|
+
if (partyStyle.ItemSize &&
|
|
559
|
+
options.sizes.size > 0 &&
|
|
560
|
+
existingProduct.options.find((option) => option.title === "Size")) {
|
|
561
|
+
result["Size"] = Array.from(options.sizes)[0];
|
|
562
|
+
}
|
|
563
|
+
return result;
|
|
564
|
+
};
|
|
565
|
+
exports.createProductOptionsForPartyStyleId = createProductOptionsForPartyStyleId;
|
|
566
|
+
const mergeProductOptions = (currentOptions, filteredOptions) => {
|
|
567
|
+
const mergedOptions = [];
|
|
568
|
+
// Create a map of existing options by title, excluding Default
|
|
569
|
+
const existingOptionsMap = new Map(currentOptions
|
|
570
|
+
.filter((opt) => opt.title !== "Default")
|
|
571
|
+
.map((opt) => [opt.title, opt.values.map((v) => v.value)]));
|
|
572
|
+
// Process all options (both existing and new)
|
|
573
|
+
const allOptions = new Map();
|
|
574
|
+
// Add existing options
|
|
575
|
+
for (const [title, values] of existingOptionsMap.entries()) {
|
|
576
|
+
allOptions.set(title, new Set(values));
|
|
577
|
+
}
|
|
578
|
+
// Add new options and merge values
|
|
579
|
+
for (const filteredOpt of filteredOptions) {
|
|
580
|
+
const existingValues = allOptions.get(filteredOpt.title) || new Set();
|
|
581
|
+
// Add new values to the set
|
|
582
|
+
filteredOpt.values.forEach((value) => existingValues.add(value));
|
|
583
|
+
allOptions.set(filteredOpt.title, existingValues);
|
|
584
|
+
}
|
|
585
|
+
// Convert back to the required format
|
|
586
|
+
for (const [title, values] of allOptions.entries()) {
|
|
587
|
+
mergedOptions.push({
|
|
588
|
+
title,
|
|
589
|
+
values: Array.from(values),
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
return mergedOptions;
|
|
593
|
+
};
|
|
594
|
+
exports.mergeProductOptions = mergeProductOptions;
|
|
595
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvcHJvZHVjdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsNENBQStDO0FBRXhDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBaUIsRUFBVSxFQUFFO0lBQ3ZELE9BQU8sT0FBTztTQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ1QsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyw4QkFBOEI7U0FDbkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFSVyxRQUFBLFdBQVcsZUFRdEI7QUFFSyxNQUFNLDZCQUE2QixHQUFHLENBQzNDLFlBQTRELEVBQ3pDLEVBQUU7SUFDckIsTUFBTSxjQUFjLEdBQUcsWUFBWTtTQUNoQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWTtTQUNsQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sY0FBYyxHQUFH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
|