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.
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[]
}
-
Extends:
VendureEntity
-
Implements:
ChannelAware
,HasCustomFields
constructor
(input?: DeepPartial<Order>) => Order
type
OrderType
sellerOrders
Order[]
aggregateOrder
aggregateOrderId
code
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
active
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
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
customerId
lines
surcharges
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
string[]
An array of all coupon codes applied to the Order.
promotions
Promotions applied to the order. Only gets populated after the payment process has completed, i.e. the Order is no longer active.
shippingAddress
OrderAddress
billingAddress
OrderAddress
payments
Payment[]
fulfillments
currencyCode
customFields
CustomOrderFields
taxZoneId
channels
Channel[]
modifications
subTotal
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
number
Same as subTotal, but inclusive of tax.
shippingLines
The shipping charges applied to this order.
shipping
number
The total of all the shippingLines
.
shippingWithTax
number
discounts
Discount[]
total
number
Equal to subTotal
plus shipping
totalWithTax
number
The final payable amount. Equal to subTotalWithTax
plus shippingWithTax
.
totalQuantity
number
taxSummary
OrderTaxSummary[]
A summary of the taxes being applied to this Order.