UNPKG

@medusajs/core-flows

Version:

Set of workflow definitions for Medusa

192 lines • 6.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateOrderTaxLinesWorkflow = exports.updateOrderTaxLinesWorkflowId = void 0; const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const common_1 = require("../../common"); const get_item_tax_lines_1 = require("../../tax/steps/get-item-tax-lines"); const steps_1 = require("../steps"); const completeOrderFields = [ "id", "currency_code", "email", "region.id", "region.automatic_taxes", "items.id", "items.is_tax_inclusive", "items.is_giftcard", "items.variant_id", "items.product_id", "items.product_title", "items.product_description", "items.product_subtitle", "items.product_type", "items.product_collection", "items.product_handle", "items.variant_sku", "items.variant_barcode", "items.variant_title", "items.title", "items.quantity", "items.unit_price", "items.tax_lines.id", "items.tax_lines.description", "items.tax_lines.code", "items.tax_lines.rate", "items.tax_lines.provider_id", "shipping_methods.id", "shipping_methods.is_tax_inclusive", "shipping_methods.shipping_option_id", "shipping_methods.amount", "shipping_methods.tax_lines.id", "shipping_methods.tax_lines.description", "shipping_methods.tax_lines.code", "shipping_methods.tax_lines.rate", "shipping_methods.tax_lines.provider_id", "customer.id", "customer.email", "customer.groups.id", "shipping_address.id", "shipping_address.address_1", "shipping_address.address_2", "shipping_address.city", "shipping_address.postal_code", "shipping_address.country_code", "shipping_address.region_code", "shipping_address.province", ]; const orderFields = [ "id", "currency_code", "email", "region.id", "region.automatic_taxes", "shipping_methods.tax_lines.id", "shipping_methods.tax_lines.description", "shipping_methods.tax_lines.code", "shipping_methods.tax_lines.rate", "shipping_methods.tax_lines.provider_id", "shipping_methods.shipping_option_id", "shipping_methods.amount", "customer.id", "customer.email", "customer.groups.id", "shipping_address.id", "shipping_address.address_1", "shipping_address.address_2", "shipping_address.city", "shipping_address.postal_code", "shipping_address.country_code", "shipping_address.region_code", "shipping_address.province", ]; const shippingMethodFields = [ "id", "shipping_option_id", "is_tax_inclusive", "amount", "tax_lines.id", "tax_lines.description", "tax_lines.code", "tax_lines.rate", "tax_lines.provider_id", ]; const lineItemFields = [ "id", "variant_id", "product_id", "is_tax_inclusive", "is_giftcard", "product_title", "product_description", "product_subtitle", "product_type", "product_collection", "product_handle", "variant_sku", "variant_barcode", "variant_title", "title", "quantity", "unit_price", "tax_lines.id", "tax_lines.description", "tax_lines.code", "tax_lines.rate", "tax_lines.provider_id", ]; exports.updateOrderTaxLinesWorkflowId = "update-order-tax-lines"; /** * This workflow updates the tax lines of items and shipping methods in an order. It's used by * other order-related workflows, such as the {@link createOrderWorkflow} to set the order's * tax lines. * * You can use this workflow within your customizations or your own custom workflows, allowing you to update an * order's tax lines in your custom flows. * * @example * const { result } = await updateOrderTaxLinesWorkflow(container) * .run({ * input: { * order_id: "order_123", * item_ids: ["orli_123", "orli_456"], * } * }) * * @summary * * Update the tax lines of items and shipping methods in an order. */ exports.updateOrderTaxLinesWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updateOrderTaxLinesWorkflowId, (input) => { const isFullOrder = (0, workflows_sdk_1.transform)(input, (data) => { return !data.item_ids && !data.shipping_method_ids; }); const fetchOrderFields = (0, workflows_sdk_1.transform)(isFullOrder, (isFullOrder) => { return isFullOrder ? completeOrderFields : orderFields; }); const order = (0, common_1.useRemoteQueryStep)({ entry_point: "order", fields: fetchOrderFields, variables: { id: input.order_id }, list: false, }); const items = (0, workflows_sdk_1.when)({ input }, ({ input }) => { return input.item_ids?.length > 0; }).then(() => { return (0, common_1.useRemoteQueryStep)({ entry_point: "order_line_item", fields: lineItemFields, variables: { id: input.item_ids }, }).config({ name: "query-order-line-items" }); }); const shippingMethods = (0, workflows_sdk_1.when)({ input }, ({ input }) => { return input.shipping_method_ids?.length > 0; }).then(() => { return (0, common_1.useRemoteQueryStep)({ entry_point: "order_shipping_method", fields: shippingMethodFields, variables: { id: input.shipping_method_ids }, }).config({ name: "query-order-shipping-methods" }); }); const taxLineItems = (0, get_item_tax_lines_1.getItemTaxLinesStep)((0, workflows_sdk_1.transform)({ input, order, items, shippingMethods, isFullOrder }, (data) => { const shippingMethods = data.isFullOrder ? data.order.shipping_methods : data.shippingMethods ?? []; const lineItems = data.isFullOrder ? data.order.items : data.items ?? []; return { orderOrCart: data.order, items: lineItems, shipping_methods: shippingMethods, force_tax_calculation: data.input.force_tax_calculation, is_return: data.input.is_return ?? false, shipping_address: data.input.shipping_address, }; })); (0, steps_1.setOrderTaxLinesForItemsStep)({ order, item_tax_lines: taxLineItems.lineItemTaxLines, shipping_tax_lines: taxLineItems.shippingMethodsTaxLines, }); }); //# sourceMappingURL=update-tax-lines.js.map