UNPKG

@medusajs/core-flows

Version:

Set of workflow definitions for Medusa

82 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updatePriceListPricesStep = exports.updatePriceListPricesStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); exports.updatePriceListPricesStepId = "update-price-list-prices"; /** * This step updates a price list's prices. * * @example * const data = updatePriceListPricesStep({ * data: [{ * id: "plist_123", * prices: [ * { * id: "price_123", * currency_code: "USD", * amount: 1000, * variant_id: "variant_123", * } * ] * }], * variant_price_map: { * "variant_123": "pset_123" * } * }) */ exports.updatePriceListPricesStep = (0, workflows_sdk_1.createStep)(exports.updatePriceListPricesStepId, async (stepInput, { container }) => { const { data = [], variant_price_map: variantPriceSetMap } = stepInput; const priceListPricesToUpdate = []; const priceIds = []; const pricingModule = container.resolve(utils_1.Modules.PRICING); for (const priceListData of data) { const pricesToUpdate = []; const { prices = [], id } = priceListData; for (const price of prices) { const toPush = { ...price, price_set_id: variantPriceSetMap[price.variant_id], }; delete toPush.variant_id; pricesToUpdate.push(toPush); if (price.id) { priceIds.push(price.id); } } priceListPricesToUpdate.push({ price_list_id: id, prices: pricesToUpdate, }); } if (!priceListPricesToUpdate.length) { return new workflows_sdk_1.StepResponse([]); } const existingPrices = priceIds.length ? await pricingModule.listPrices({ id: priceIds }, { relations: ["price_list"] }) : []; const priceListPricesMap = new Map(); const dataBeforePriceUpdate = []; for (const price of existingPrices) { const priceListId = price.price_list.id; const prices = priceListPricesMap.get(priceListId) || []; priceListPricesMap.set(priceListId, prices); } for (const [priceListId, prices] of Object.entries(priceListPricesMap)) { dataBeforePriceUpdate.push({ price_list_id: priceListId, prices: (0, utils_1.buildPriceSetPricesForModule)(prices), }); } const updatedPrices = await pricingModule.updatePriceListPrices(priceListPricesToUpdate); return new workflows_sdk_1.StepResponse(updatedPrices, dataBeforePriceUpdate); }, async (dataBeforePriceUpdate, { container }) => { if (!dataBeforePriceUpdate?.length) { return; } const pricingModule = container.resolve(utils_1.Modules.PRICING); if (dataBeforePriceUpdate.length) { await pricingModule.updatePriceListPrices(dataBeforePriceUpdate); } }); //# sourceMappingURL=update-price-list-prices.js.map