UNPKG

@medusajs/core-flows

Version:

Set of workflow definitions for Medusa

63 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.throwIfOrderIsCancelled = throwIfOrderIsCancelled; exports.throwIfItemsDoesNotExistsInOrder = throwIfItemsDoesNotExistsInOrder; exports.throwIfItemsAreNotGroupedByShippingRequirement = throwIfItemsAreNotGroupedByShippingRequirement; exports.throwIfIsCancelled = throwIfIsCancelled; exports.throwIfOrderChangeIsNotActive = throwIfOrderChangeIsNotActive; exports.throwIfItemsDoesNotExistsInReturn = throwIfItemsDoesNotExistsInReturn; const utils_1 = require("@medusajs/framework/utils"); function throwIfOrderIsCancelled({ order }) { if (order.status === utils_1.OrderStatus.CANCELED) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order with id ${order.id} has been canceled.`); } } function throwIfItemsDoesNotExistsInOrder({ order, inputItems, }) { const orderItemIds = order.items?.map((i) => i.id) ?? []; const inputItemIds = inputItems?.map((i) => i.id); const diff = (0, utils_1.arrayDifference)(inputItemIds, orderItemIds); if (diff.length) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Items with ids ${diff.join(", ")} does not exist in order with id ${order.id}.`); } } function throwIfItemsAreNotGroupedByShippingRequirement({ order, inputItems, }) { const itemsWithShipping = []; const itemsWithoutShipping = []; const orderItemsMap = new Map((order.items || []).map((item) => [item.id, item])); for (const inputItem of inputItems) { const orderItem = orderItemsMap.get(inputItem.id); if (orderItem.requires_shipping) { itemsWithShipping.push(orderItem.id); } else { itemsWithoutShipping.push(orderItem.id); } } if (itemsWithShipping.length && itemsWithoutShipping.length) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Fulfillment can only be created entirely with items with shipping or items without shipping. Split this request into 2 fulfillments.`); } } function throwIfIsCancelled(obj, type) { if (obj.canceled_at) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `${type} with id ${obj.id} has been canceled.`); } } function throwIfOrderChangeIsNotActive({ orderChange, }) { if (!(0, utils_1.isPresent)(orderChange)) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `An active Order Change is required to proceed`); } if (orderChange.canceled_at || orderChange.confirmed_at || orderChange.declined_at) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order change ${orderChange?.id} is not active to be modified`); } } function throwIfItemsDoesNotExistsInReturn({ orderReturn, inputItems, }) { const orderReturnItemIds = orderReturn.items?.map((i) => i.item_id) ?? []; const inputItemIds = inputItems.map((i) => i.id); const diff = (0, utils_1.arrayDifference)(inputItemIds, orderReturnItemIds); if (diff.length) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Items with ids ${diff.join(", ")} does not exist in Return with id ${orderReturn.id}.`); } } //# sourceMappingURL=order-validation.js.map