Skip to main content

Delivery Pricing

info

Add a delivery pricing plugin

Delivery pricing adapter is used to do the actual delivery cost calculation. The adapter is run for every single item included in an order. in order to add a custom delivery price logic for orders you need to implement IDeliveryPricingAdapter. There can be more than one delivery pricing plugin configurations and all of them will be executed based on their orderIndex value. Delivery pricing adapter with lower orderIndex will be executed first

below is an example of delivery price for the above delivery adapter that will charge $50 as a delivery fee for orders that use ShopPickUp (the above adapter) for their delivery provider.


import {
DeliveryPricingAdapter,
DeliveryPricingSheet,
IDeliveryPricingAdapter,
} from '@unchainedshop/core-delivery';

export const ShopDeliveryFreePrice: IDeliveryPricingAdapter = {
key: 'ch.shop.delivery.pickup-fee',
version: '1.0.0',
label: 'Pickup Fee',
orderIndex: 10,

isActivatedFor: ({ provider }) => {
return provider.adapterKey === 'ch.shop.delivery.pickupr';
},

actions: (
context,
calculationSheet,
discounts,
) => {
const calculation = [];
const { currency } = context;
const resultSheet = DeliveryPricingSheet({ currency });
return {
calculate: async () => {
resultSheet.addFee({
amount: 50,
isNetPrice: false,
isTaxable: true,
meta: { adapter: 'delivery-price-key' },
});
return resultSheet.calculate();
},
};
},
};


  • isActivatedFor: DeliveryPricingAdapterContext: defines to which delivery adapters this delivery price adapter calculations should take place.
  • calculate: Calculation[]: calculated the delivery price based on the logic provided and returns the calculation breakdown (result sheet)