UNPKG

@medusajs/core-flows

Version:

Set of workflow definitions for Medusa

85 lines 3.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareLineItemData = prepareLineItemData; exports.prepareTaxLinesData = prepareTaxLinesData; exports.prepareAdjustmentsData = prepareAdjustmentsData; const utils_1 = require("@medusajs/framework/utils"); function prepareLineItemData(data) { const { item, variant, cartId, taxLines, adjustments, isCustomPrice, unitPrice, isTaxInclusive, } = data; if (variant && !variant.product) { throw new Error("Variant does not have a product"); } let compareAtUnitPrice = item?.compare_at_unit_price; const isSalePrice = variant?.calculated_price?.calculated_price?.price_list_type === utils_1.PriceListType.SALE; if (!(0, utils_1.isPresent)(compareAtUnitPrice) && isSalePrice && !utils_1.MathBN.eq(variant.calculated_price?.original_amount, variant.calculated_price?.calculated_amount)) { compareAtUnitPrice = variant.calculated_price.original_amount; } const hasShippingProfile = (0, utils_1.isDefined)(variant?.product?.shipping_profile?.id); const someInventoryRequiresShipping = !!variant?.inventory_items?.some((inventoryItem) => !!inventoryItem.inventory.requires_shipping); // Note: If any of the items require shipping or product has a shipping profile set, // we enable fulfillment unless explicitly set to not require shipping by the item in the request const requiresShipping = (0, utils_1.isDefined)(item?.requires_shipping) ? item.requires_shipping : hasShippingProfile || someInventoryRequiresShipping; let lineItem = { quantity: item?.quantity, title: variant?.product?.title ?? item?.title, subtitle: variant?.title ?? item?.subtitle, thumbnail: variant?.product?.thumbnail ?? item?.thumbnail, product_id: variant?.product?.id ?? item?.product_id, product_title: variant?.product?.title ?? item?.product_title, product_description: variant?.product?.description ?? item?.product_description, product_subtitle: variant?.product?.subtitle ?? item?.product_subtitle, product_type: variant?.product?.type?.value ?? item?.product_type ?? null, product_type_id: variant?.product?.type?.id ?? item?.product_type_id ?? null, product_collection: variant?.product?.collection?.title ?? item?.product_collection ?? null, product_handle: variant?.product?.handle ?? item?.product_handle, variant_id: variant?.id, variant_sku: variant?.sku ?? item?.variant_sku, variant_barcode: variant?.barcode ?? item?.variant_barcode, variant_title: variant?.title ?? item?.variant_title, variant_option_values: item?.variant_option_values, is_discountable: variant?.product?.discountable ?? item?.is_discountable, is_giftcard: variant?.product?.is_giftcard ?? false, requires_shipping: requiresShipping, unit_price: unitPrice, compare_at_unit_price: compareAtUnitPrice, is_tax_inclusive: !!isTaxInclusive, metadata: item?.metadata ?? {}, }; if (isCustomPrice) { lineItem.is_custom_price = !!isCustomPrice; } if (taxLines) { lineItem.tax_lines = prepareTaxLinesData(taxLines); } if (adjustments) { lineItem.adjustments = prepareAdjustmentsData(adjustments); } if (cartId) { lineItem.cart_id = cartId; } return lineItem; } function prepareTaxLinesData(data) { return data.map((d) => ({ description: d.description, tax_rate_id: d.tax_rate_id, code: d.code, rate: d.rate, provider_id: d.provider_id, })); } function prepareAdjustmentsData(data) { return data.map((d) => ({ code: d.code, amount: d.amount, description: d.description, promotion_id: d.promotion_id, provider_id: d.promotion_id, })); } //# sourceMappingURL=prepare-line-item-data.js.map