digital-shipping-line-assignment-strategy.ts 839 B

1234567891011121314151617181920212223242526
  1. import {
  2. Order,
  3. OrderLine,
  4. RequestContext,
  5. ShippingLine,
  6. ShippingLineAssignmentStrategy,
  7. } from '@vendure/core';
  8. /**
  9. * @description
  10. * This ShippingLineAssignmentStrategy ensures that digital products are assigned to a
  11. * ShippingLine which has the `isDigital` flag set to true.
  12. */
  13. export class DigitalShippingLineAssignmentStrategy implements ShippingLineAssignmentStrategy {
  14. assignShippingLineToOrderLines(
  15. ctx: RequestContext,
  16. shippingLine: ShippingLine,
  17. order: Order,
  18. ): OrderLine[] | Promise<OrderLine[]> {
  19. if (shippingLine.shippingMethod.customFields.isDigital) {
  20. return order.lines.filter(l => l.productVariant.customFields.isDigital);
  21. } else {
  22. return order.lines.filter(l => !l.productVariant.customFields.isDigital);
  23. }
  24. }
  25. }