@medusajs/core-flows
Version:
Set of workflow definitions for Medusa
192 lines • 6.35 kB
JavaScript
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
;