yarn add @pinelab/vendure-plugin-shipping-extensions
to install this plugin.
yarn add @pinelab/vendure-plugin-shipping-extensions
to install this plugin.
A collection of shipping calculators, checkers and promotion conditions that help you create customizable shipping options:
vendure-config.ts
:plugins: [
...
ShippingExtensionsPlugin.init({
/**
* Weight unit used in the eligibility checker
* and product customfield.
* Only used for displaying purposes
*/
weightUnit: "kg",
/**
* The name of the tab the customfield should be added to
* This can be an existing tab
*/
customFieldsTab: "Physical properties",
})
...
]
Shipping methods
Shipping eligibility checker
you should see Check by weight and country
Shipping calculator
you should see Distance Based Shipping Calculator
Order is in country
condition.Some examples:
The weight of a product can be configured on the customfield Product.weight
. You can configure the units to be in KG,
grams or whatever unit you like.
By default, the plugin will calculate the weight of an order based on the custom field weight
:
productVariant.customFields.weight
of each order lineproductVariant.product.customFields.weight
of each order line.If you'd like to change this behaviour, you can specify a custom weightCalculationFunction
:
ShippingExtensionsPlugin.init({
weightCalculationFunction: (order) => {
// The order is hydrated with `order.lines.productVariant.product`
let totalOrderWeight = 0;
order.lines.forEach((line) => {
// Do your calculation magic here.
totalOrderWeight += line.myCustomWeightField
});
return totalWeight;
},
}),
A configurable OrderAddressToGeolocationConversionStrategy
is used to convert the shippingAddress
of an Order
to a geographic latitudinal and longitudinal, which in turn is used to calculate the distance. The built-in strategy converts a UK postalcode to a lat/lon.
To support distance based calculation in other countries you'd have to implement your own strategy:
import {OrderAddressToGeolocationConversionStrategy} from '@pinelab/vendure-plugin-shipping-extensions'
export class USStreetLineToGeolocationConversionStrategy implements OrderAddressToGeolocationConversionStrategy{
async getGeoLocationForAddress(orderAddress: OrderAddress): Promise<GeoLocation> {
const location=//...result of a possible API call or any other lookup method
return {latitude: location.latitude, longitude: location.longitude}
}
}