Skip to main content

OrderProcess

OrderProcess​

An OrderProcess is used to define the way the order process works as in: what states an Order can be in, and how it may transition from one state to another. Using the onTransitionStart() hook, an OrderProcess can perform checks before allowing a state transition to occur, and the onTransitionEnd() hook allows logic to be executed after a state change.

For detailed description of the interface members, see the StateMachineConfig docs.

info

This is configured via the orderOptions.process property of your VendureConfig.

Signature
interface OrderProcess<State extends keyof CustomOrderStates | string> extends InjectableStrategy {
transitions?: Transitions<State, State | OrderState> & Partial<Transitions<OrderState | State>>;
onTransitionStart?: OnTransitionStartFn<State | OrderState, OrderTransitionData>;
onTransitionEnd?: OnTransitionEndFn<State | OrderState, OrderTransitionData>;
onTransitionError?: OnTransitionErrorFn<State | OrderState>;
}

transitions​

property
Transitions<State, State | OrderState> & Partial<Transitions<OrderState | State>>

onTransitionStart​

onTransitionEnd​

onTransitionError​

DefaultOrderProcessOptions​

Options which can be passed to the configureDefaultOrderProcess function to configure an instance of the default OrderProcess. By default, all options are set to true.

Signature
interface DefaultOrderProcessOptions {
checkModificationPayments?: boolean;
checkAdditionalPaymentsAmount?: boolean;
checkAllVariantsExist?: boolean;
arrangingPaymentRequiresContents?: boolean;
arrangingPaymentRequiresCustomer?: boolean;
arrangingPaymentRequiresShipping?: boolean;
arrangingPaymentRequiresStock?: boolean;
checkPaymentsCoverTotal?: boolean;
checkAllItemsBeforeCancel?: boolean;
checkFulfillmentStates?: boolean;
}

checkModificationPayments​

property
boolean
default:
true

Prevents an Order from transitioning out of the Modifying state if the Order price has changed and there is no Payment or Refund associated with the Modification.

checkAdditionalPaymentsAmount​

property
boolean
default:
true

Prevents an Order from transitioning out of the ArrangingAdditionalPayment state if the Order's Payments do not cover the full amount of totalWithTax.

checkAllVariantsExist​

property
boolean
default:
true

Prevents the transition from AddingItems to any other state (apart from Cancelled) if and of the ProductVariants no longer exists due to deletion.

arrangingPaymentRequiresContents​

property
boolean
default:
true

Prevents transition to the ArrangingPayment state if the active Order has no lines.

arrangingPaymentRequiresCustomer​

property
boolean
default:
true

Prevents transition to the ArrangingPayment state if the active Order has no customer associated with it.

arrangingPaymentRequiresShipping​

property
boolean
default:
true

Prevents transition to the ArrangingPayment state if the active Order has no shipping method set.

arrangingPaymentRequiresStock​

property
boolean
default:
true

Prevents transition to the ArrangingPayment state if there is insufficient saleable stock to cover the contents of the Order.

checkPaymentsCoverTotal​

property
boolean
default:
true

Prevents transition to the PaymentAuthorized or PaymentSettled states if the order totalWithTax amount is not covered by Payment(s) in the corresponding states.

checkAllItemsBeforeCancel​

property
boolean
default:
true

Prevents transition to the Cancelled state unless all OrderItems are already cancelled.

checkFulfillmentStates​

property
boolean
default:
true

Prevents transition to the Shipped, PartiallyShipped, Delivered & PartiallyDelivered states unless there are corresponding Fulfillments in the correct states to allow this. E.g. Shipped only if all items in the Order are part of a Fulfillment which itself is in the Shipped state.

configureDefaultOrderProcess​

Used to configure a customized instance of the default OrderProcess that ships with Vendure. Using this function allows you to turn off certain checks and constraints that are enabled by default.

import { configureDefaultOrderProcess, VendureConfig } from '@vendure/core';

const myCustomOrderProcess = configureDefaultOrderProcess({
// Disable the constraint that requires
// Orders to have a shipping method assigned
// before payment.
arrangingPaymentRequiresShipping: false,
});

export const config: VendureConfig = {
orderOptions: {
process: [myCustomOrderProcess],
},
};

The DefaultOrderProcessOptions type defines all available options. If you require even more customization, you can create your own implementation of the OrderProcess interface.

Signature
function configureDefaultOrderProcess(options: DefaultOrderProcessOptions): void

Parameters

options​

defaultOrderProcess​

This is the built-in OrderProcess that ships with Vendure. A customized version of this process can be created using the configureDefaultOrderProcess function, which allows you to pass in an object to enable/disable certain checks.

OrderStates​

An interface to extend the OrderState type.

Signature
interface OrderStates {

}

OrderState​

These are the default states of the Order process. They can be augmented and modified by using the OrderOptions process property, and by default the defaultOrderProcess will add the states

  • ArrangingPayment
  • PaymentAuthorized
  • PaymentSettled
  • PartiallyShipped
  • Shipped
  • PartiallyDelivered
  • Delivered
  • Modifying
  • ArrangingAdditionalPayment
Signature
type OrderState = | 'Created'
| 'Draft'
| 'AddingItems'
| 'Cancelled'
| keyof CustomOrderStates
| keyof OrderStates

OrderTransitionData​

This is the object passed to the OrderProcess state transition hooks.

Signature
interface OrderTransitionData {
ctx: RequestContext;
order: Order;
}

ctx​

order​

property