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() code: string;
  @Column('varchar') state: OrderState;
  @Column({ default: true })
    active: boolean;
  @Column({ nullable: true })
    orderPlacedAt?: Date;
  @ManyToOne(type => Customer)
    customer?: Customer;
  @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[];
  @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[];
  @Column()
    subTotal: number;
  @Column()
    subTotalWithTax: number;
  @OneToMany(type => ShippingLine, shippingLine => shippingLine.order)
    shippingLines: ShippingLine[];
  @Column({ default: 0 })
    shipping: number;
  @Column({ default: 0 })
    shippingWithTax: number;
  discounts: Discount[]
  total: number
  totalWithTax: number
  totalQuantity: number
  taxSummary: OrderTaxSummary[]
  getOrderItems() => OrderItem[];
}

Extends

Implements

Members

constructor

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

code

property
type:
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
type:
OrderState

active

property
type:
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
type:
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
type:
Customer

lines

property
type:
OrderLine[]

surcharges

property
type:
Surcharge[]
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
type:
string[]
An array of all coupon codes applied to the Order.

promotions

property
type:
Promotion[]
Promotions applied to the order. Only gets populated after the payment process has completed, i.e. the Order is no longer active.

shippingAddress

property
type:
OrderAddress

billingAddress

property
type:
OrderAddress

payments

property
type:
Payment[]

currencyCode

property
type:
CurrencyCode

customFields

property
type:
CustomOrderFields

taxZoneId

property
type:
ID

channels

property
type:
Channel[]

modifications

property

subTotal

property
type:
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
type:
number
Same as subTotal, but inclusive of tax.

shippingLines

property
type:
ShippingLine[]
The shipping charges applied to this order.

shipping

property
type:
number
The total of all the shippingLines.

shippingWithTax

property
type:
number

discounts

property
type:
Discount[]

total

property
type:
number
Equal to subTotal plus shipping

totalWithTax

property
type:
number
The final payable amount. Equal to subTotalWithTax plus shippingWithTax.

totalQuantity

property
type:
number

taxSummary

property
type:
OrderTaxSummary[]
A summary of the taxes being applied to this Order.

getOrderItems

method
type:
() => OrderItem[]