🚨 Announcing Vendure v2 Beta

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