ShippingLineAssignmentStrategy
ShippingLineAssignmentStrategy
This strategy is used to assign a given ShippingLine to one or more OrderLines of the Order. This allows you to set multiple shipping methods for a single order, each assigned a different subset of OrderLines.
The DefaultShippingLineAssignmentStrategy simply assigns all OrderLines, so is suitable for the most common scenario of a single shipping method per Order.
info
This is configured via the shippingOptions.shippingLineAssignmentStrategy
property of
your VendureConfig.
Here's an example of a custom ShippingLineAssignmentStrategy which assigns digital products to a different ShippingLine to physical products:
import {
Order,
OrderLine,
RequestContext,
ShippingLine,
ShippingLineAssignmentStrategy,
} from '@vendure/core';
export class DigitalShippingLineAssignmentStrategy implements ShippingLineAssignmentStrategy {
assignShippingLineToOrderLines(
ctx: RequestContext,
shippingLine: ShippingLine,
order: Order,
): OrderLine[] | Promise<OrderLine[]> {
if (shippingLine.shippingMethod.customFields.isDigital) {
return order.lines.filter(l => l.productVariant.customFields.isDigital);
} else {
return order.lines.filter(l => !l.productVariant.customFields.isDigital);
}
}
}
Signature
interface ShippingLineAssignmentStrategy extends InjectableStrategy {
assignShippingLineToOrderLines(
ctx: RequestContext,
shippingLine: ShippingLine,
order: Order,
): OrderLine[] | Promise<OrderLine[]>;
}
- Extends:
InjectableStrategy
assignShippingLineToOrderLines
method
(ctx: RequestContext, shippingLine: ShippingLine, order: Order) => OrderLine[] | Promise<OrderLine[]>