ShippingCalculator
ShippingCalculator
The ShippingCalculator is used by a ShippingMethod to calculate the price of shipping on a given Order.
Example
const flatRateCalculator = new ShippingCalculator({
code: 'flat-rate-calculator',
description: [{ languageCode: LanguageCode.en, value: 'Default Flat-Rate Shipping Calculator' }],
args: {
rate: {
type: 'int',
ui: { component: 'currency-form-input' },
},
taxRate: {
type: 'int',
ui: { component: 'number-form-input', suffix: '%' },
},
},
calculate: (order, args) => {
return {
price: args.rate,
taxRate: args.taxRate,
priceIncludesTax: ctx.channel.pricesIncludeTax,
};
},
});
Signature
class ShippingCalculator<T extends ConfigArgs = ConfigArgs> extends ConfigurableOperationDef<T> {
constructor(config: ShippingCalculatorConfig<T>)
}
Extends
Members
constructor
method
type:
(config: ShippingCalculatorConfig<T>) => ShippingCalculator
ShippingCalculationResult
The return value of the CalculateShippingFn.
Signature
interface ShippingCalculationResult {
price: number;
priceIncludesTax: boolean;
taxRate: number;
metadata?: Record<string, any>;
}
Members
price
property
type:
number
The shipping price without any taxes.
priceIncludesTax
property
type:
boolean
Whether or not the given price already includes taxes.
taxRate
property
type:
number
The tax rate applied to the shipping price.
metadata
property
type:
Record<string, any>
Arbitrary metadata may be returned from the calculation function. This can be used
e.g. to return data on estimated delivery times or any other data which may be
needed in the storefront application when listing eligible shipping methods.
CalculateShippingFn
A function which implements the specific shipping calculation logic. It takes an Order and an arguments object and should return the shipping price as an integer in cents.
Should return a ShippingCalculationResult object.
Signature
type CalculateShippingFn<T extends ConfigArgs> = (
ctx: RequestContext,
order: Order,
args: ConfigArgValues<T>,
method: ShippingMethod
) => CalculateShippingFnResult