feat: Plug tax inclusivity in cart and order workflows (#8013)
This commit is contained in:
@@ -105,6 +105,7 @@ export const productVariantsFields = [
|
||||
"product.collection",
|
||||
"product.handle",
|
||||
"calculated_price.calculated_amount",
|
||||
"calculated_price.is_calculated_price_tax_inclusive",
|
||||
"inventory_items.inventory_item_id",
|
||||
"inventory_items.required_quantity",
|
||||
"inventory_items.inventory.location_levels.stock_locations.id",
|
||||
|
||||
@@ -9,6 +9,7 @@ interface Input {
|
||||
quantity: BigNumberInput
|
||||
metadata?: Record<string, any>
|
||||
unitPrice: BigNumberInput
|
||||
isTaxInclusive?: boolean
|
||||
variant: ProductVariantDTO
|
||||
taxLines?: CreateOrderLineItemTaxLineDTO[]
|
||||
adjustments?: CreateOrderAdjustmentDTO[]
|
||||
@@ -19,6 +20,7 @@ export function prepareLineItemData(data: Input) {
|
||||
const {
|
||||
variant,
|
||||
unitPrice,
|
||||
isTaxInclusive,
|
||||
quantity,
|
||||
metadata,
|
||||
cartId,
|
||||
@@ -51,6 +53,7 @@ export function prepareLineItemData(data: Input) {
|
||||
variant_title: variant.title,
|
||||
|
||||
unit_price: unitPrice,
|
||||
is_tax_inclusive: !!isTaxInclusive,
|
||||
metadata,
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,12 @@ export const addShippingMethodToWorkflow = createWorkflow(
|
||||
|
||||
const shippingOptions = useRemoteQueryStep({
|
||||
entry_point: "shipping_option",
|
||||
fields: ["id", "name", "calculated_price.calculated_amount"],
|
||||
fields: [
|
||||
"id",
|
||||
"name",
|
||||
"calculated_price.calculated_amount",
|
||||
"calculated_price.is_calculated_price_tax_inclusive",
|
||||
],
|
||||
variables: {
|
||||
id: optionIds,
|
||||
calculated_price: {
|
||||
@@ -67,6 +72,9 @@ export const addShippingMethodToWorkflow = createWorkflow(
|
||||
return {
|
||||
shipping_option_id: shippingOption.id,
|
||||
amount: shippingOption.calculated_price.calculated_amount,
|
||||
is_tax_inclusive:
|
||||
!!shippingOption.calculated_price
|
||||
.is_calculated_price_tax_inclusive,
|
||||
data: option.data ?? {},
|
||||
name: shippingOption.name,
|
||||
cart_id: data.input.cart_id,
|
||||
|
||||
@@ -75,6 +75,8 @@ export const addToCartWorkflow = createWorkflow(
|
||||
return prepareLineItemData({
|
||||
variant: variant,
|
||||
unitPrice: variant.calculated_price.calculated_amount,
|
||||
isTaxInclusive:
|
||||
variant.calculated_price.is_calculated_price_tax_inclusive,
|
||||
quantity: item.quantity,
|
||||
metadata: item?.metadata ?? {},
|
||||
cartId: data.input.cart.id,
|
||||
|
||||
@@ -122,6 +122,8 @@ export const createCartWorkflow = createWorkflow(
|
||||
return prepareLineItemData({
|
||||
variant: variant,
|
||||
unitPrice: data.priceSets[item.variant_id].calculated_amount,
|
||||
isTaxInclusive:
|
||||
data.priceSets[item.variant_id].is_calculated_price_tax_inclusive,
|
||||
quantity: item.quantity,
|
||||
metadata: item?.metadata ?? {},
|
||||
})
|
||||
|
||||
@@ -42,6 +42,7 @@ export const listShippingOptionsForCartWorkflow = createWorkflow(
|
||||
"stock_locations.fulfillment_sets.service_zones.shipping_options.provider.is_enabled",
|
||||
|
||||
"stock_locations.fulfillment_sets.service_zones.shipping_options.calculated_price.calculated_amount",
|
||||
"stock_locations.fulfillment_sets.service_zones.shipping_options.calculated_price.is_calculated_price_tax_inclusive",
|
||||
],
|
||||
variables: {
|
||||
id: input.sales_channel_id,
|
||||
@@ -88,6 +89,8 @@ export const listShippingOptionsForCartWorkflow = createWorkflow(
|
||||
return {
|
||||
...options,
|
||||
amount: calculated_price?.calculated_amount,
|
||||
is_tax_inclusive:
|
||||
!!calculated_price?.is_calculated_price_tax_inclusive,
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -71,6 +71,8 @@ export const updateLineItemInCartWorkflow = createWorkflow(
|
||||
data: {
|
||||
...data.input.update,
|
||||
unit_price: variant.calculated_price.calculated_amount,
|
||||
is_tax_inclusive:
|
||||
!!variant.calculated_price.is_calculated_price_tax_inclusive,
|
||||
},
|
||||
selector: {
|
||||
id: item.id,
|
||||
|
||||
@@ -4,6 +4,7 @@ interface Input {
|
||||
quantity: BigNumberInput
|
||||
metadata?: Record<string, any>
|
||||
unitPrice: BigNumberInput
|
||||
isTaxInclusive?: boolean
|
||||
variant: {
|
||||
title: string
|
||||
sku?: string
|
||||
@@ -18,11 +19,12 @@ interface Output {
|
||||
variant_barcode?: string
|
||||
variant_title?: string
|
||||
unit_price: BigNumberInput
|
||||
is_tax_inclusive: boolean
|
||||
metadata?: Record<string, any>
|
||||
}
|
||||
|
||||
export function prepareCustomLineItemData(data: Input): Output {
|
||||
const { variant, unitPrice, quantity, metadata } = data
|
||||
const { variant, unitPrice, isTaxInclusive, quantity, metadata } = data
|
||||
|
||||
const lineItem: any = {
|
||||
quantity,
|
||||
@@ -32,6 +34,7 @@ export function prepareCustomLineItemData(data: Input): Output {
|
||||
variant_title: variant.title,
|
||||
|
||||
unit_price: unitPrice,
|
||||
is_tax_inclusive: !!isTaxInclusive,
|
||||
metadata,
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ function prepareLineItems(data) {
|
||||
...item,
|
||||
},
|
||||
unitPrice: MathBN.max(0, item.unit_price),
|
||||
isTaxInclusive: item.is_tax_inclusive,
|
||||
quantity: item.quantity as number,
|
||||
metadata: item?.metadata ?? {},
|
||||
})
|
||||
@@ -39,6 +40,9 @@ function prepareLineItems(data) {
|
||||
0,
|
||||
item.unit_price ?? data.priceSets[item.variant_id!]?.calculated_amount
|
||||
),
|
||||
isTaxInclusive:
|
||||
item.is_tax_inclusive ??
|
||||
data.priceSets[item.variant_id!]?.is_calculated_price_tax_inclusive,
|
||||
quantity: item.quantity as number,
|
||||
metadata: item?.metadata ?? {},
|
||||
taxLines: item.tax_lines || [],
|
||||
|
||||
@@ -109,6 +109,7 @@ function prepareShippingMethodData({
|
||||
order_id: orderId,
|
||||
shipping_option_id: returnShippingOption.id,
|
||||
amount: 0,
|
||||
is_tax_inclusive: false,
|
||||
data: {},
|
||||
// Computed later in the flow
|
||||
tax_lines: [],
|
||||
@@ -122,6 +123,9 @@ function prepareShippingMethodData({
|
||||
// TODO: retrieve calculated price and assign to amount
|
||||
} else {
|
||||
obj.amount = returnShippingOption.calculated_price.calculated_amount
|
||||
obj.is_tax_inclusive =
|
||||
!!returnShippingOption.calculated_price
|
||||
.is_calculated_price_tax_inclusive
|
||||
}
|
||||
}
|
||||
|
||||
@@ -317,6 +321,7 @@ export const createReturnOrderWorkflow = createWorkflow(
|
||||
"name",
|
||||
"provider_id",
|
||||
"calculated_price.calculated_amount",
|
||||
"calculated_price.is_calculated_price_tax_inclusive",
|
||||
"service_zone.fulfillment_set.location.id",
|
||||
],
|
||||
variables: returnShippingOptionsVariables,
|
||||
|
||||
Reference in New Issue
Block a user