Skip to main content

Order

Order

An Order is created whenever a Customer adds an item to the cart. It contains all the information required to fulfill an order: which ProductVariants in what quantities; the shipping address and price; any applicable promotions; payments etc.

An Order exists in a well-defined state according to the OrderState type. A state machine is used to govern the transition from one state to another.

Signature
class Order extends VendureEntity implements ChannelAware, HasCustomFields {
constructor(input?: DeepPartial<Order>)
@Column('varchar', { default: OrderType.Regular })
type: OrderType;
@OneToMany(type => Order, sellerOrder => sellerOrder.aggregateOrder)
sellerOrders: Order[];
@Index()
@ManyToOne(type => Order, aggregateOrder => aggregateOrder.sellerOrders)
aggregateOrder?: Order;
@EntityId({ nullable: true })
aggregateOrderId?: ID;
@Column()
@Index({ unique: true })
code: string;
@Column('varchar') state: OrderState;
@Column({ default: true })
active: boolean;
@Column({ nullable: true })
orderPlacedAt?: Date;
@Index()
@ManyToOne(type => Customer, customer => customer.orders)
customer?: Customer;
@EntityId({ nullable: true })
customerId?: ID;
@OneToMany(type => OrderLine, line => line.order)
lines: OrderLine[];
@OneToMany(type => Surcharge, surcharge => surcharge.order)
surcharges: Surcharge[];
@Column('simple-array')
couponCodes: string[];
@ManyToMany(type => Promotion, promotion => promotion.orders)
@JoinTable()
promotions: Promotion[];
@Column('simple-json') shippingAddress: OrderAddress;
@Column('simple-json') billingAddress: OrderAddress;
@OneToMany(type => Payment, payment => payment.order)
payments: Payment[];
@ManyToMany(type => Fulfillment, fulfillment => fulfillment.orders)
@JoinTable()
fulfillments: Fulfillment[];
@Column('varchar')
currencyCode: CurrencyCode;
@Column(type => CustomOrderFields)
customFields: CustomOrderFields;
@EntityId({ nullable: true })
taxZoneId?: ID;
@ManyToMany(type => Channel)
@JoinTable()
channels: Channel[];
@OneToMany(type => OrderModification, modification => modification.order)
modifications: OrderModification[];
@Money()
subTotal: number;
@Money()
subTotalWithTax: number;
@OneToMany(type => ShippingLine, shippingLine => shippingLine.order)
shippingLines: ShippingLine[];
@Money({ default: 0 })
shipping: number;
@Money({ default: 0 })
shippingWithTax: number;
discounts: Discount[]
total: number
totalWithTax: number
totalQuantity: number
taxSummary: OrderTaxSummary[]
}

constructor

method
(input?: DeepPartial<Order>) => Order

type

property
OrderType

sellerOrders

property

aggregateOrder

property

aggregateOrderId

property

code

property
string

A unique code for the Order, generated according to the OrderCodeStrategy. This should be used as an order reference for Customers, rather than the Order's id.

state

property

active

property
boolean

Whether the Order is considered "active", meaning that the Customer can still make changes to it and has not yet completed the checkout process. This is governed by the OrderPlacedStrategy.

orderPlacedAt

property
Date

The date & time that the Order was placed, i.e. the Customer completed the checkout and the Order is no longer "active". This is governed by the OrderPlacedStrategy.

customer

property

customerId

property

lines

property

surcharges

property

Surcharges are arbitrary modifications to the Order total which are neither ProductVariants nor discounts resulting from applied Promotions. For example, one-off discounts based on customer interaction, or surcharges based on payment methods.

couponCodes

property
string[]

An array of all coupon codes applied to the Order.

promotions

property

Promotions applied to the order. Only gets populated after the payment process has completed, i.e. the Order is no longer active.

shippingAddress

property
OrderAddress

billingAddress

property
OrderAddress

payments

property

fulfillments

property

currencyCode

property

customFields

property
CustomOrderFields

taxZoneId

property

channels

property

modifications

subTotal

property
number

The subTotal is the total of all OrderLines in the Order. This figure also includes any Order-level discounts which have been prorated (proportionally distributed) amongst the OrderItems. To get a total of all OrderLines which does not account for prorated discounts, use the sum of OrderLine's discountedLinePrice values.

subTotalWithTax

property
number

Same as subTotal, but inclusive of tax.

shippingLines

property

The shipping charges applied to this order.

shipping

property
number

The total of all the shippingLines.

shippingWithTax

property
number

discounts

property
Discount[]

total

property
number

Equal to subTotal plus shipping

totalWithTax

property
number

The final payable amount. Equal to subTotalWithTax plus shippingWithTax.

totalQuantity

property
number

taxSummary

property
OrderTaxSummary[]

A summary of the taxes being applied to this Order.