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;
@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)
@JoinTable()
promotions: Promotion[];
@Column('simple-json') shippingAddress: OrderAddress;
@Column('simple-json') billingAddress: OrderAddress;
@OneToMany(type => Payment, payment => payment.order)
payments: Payment[];
@ManyToMany(type => Fulfillment)
@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.