The Spree::Order
model is one of the key models in Solidus. It provides a
central place around which to collect information about a customer order. It
collects line items, adjustments, payments, addresses, return authorizations,
and shipments.
Whenever information about the order is updated, the Spree::OrderUpdater
should update the order. If your store creates or changes the functionality
around the order, you may need to
manually call the order
updater
.
Orders have the following attributes:
number
: The unique identifier for this order generated by
Spree::Order::NumberGenerator
. It begins with the letter R
and ends in a
nine-digit number (for example, R123456789
). This number is shown to the
users, and can be used to find the order by calling
Spree::Order.find_by(number: "R123456789")
.item_total
: The sum of all the line items for this order.total
: The sum of the item_total
and the adjustment_total
attributes.state
: The current state of the order. See the
Order state
machine
article for more information.adjustment_total
: The sum of all adjustments on this order.user_id
: The ID for the order's corresponding user. Stored only if the order
is placed by a signed-in user.completed_at
: The timestamp that logs when the order is completed.bill_address_id
and ship_address_id
: The IDs for the related
Spree::Address
objects with billing and shipping address information.payment_total
: The sum of all the finalized payments on the order.shipment_state
: The current
shipment state
of the order.payment_state
: The current
payment state
of the order.email
: The customer-provided email address for the order. This is stored in
case the order is for a guest user.special_instructions
: Any
special shipping
instructions
that shave been specified by the customer
during checkout.currency
: The currency for this order. Determined by the
Spree::Config[:currency]
value that was set at the time of order.last_ip_address
: The last IP address used to update this order in the
frontend.created_by_id
: The ID of object that created this order.shipment_total
: The sum of all the shipments associated with an order.additional_tax_total
: The sum of all the additional_tax_total
s (sales tax)
on an order's line items and shipments. promo_total
: The sum of all of the promo_total
s on an order's shipments,
line items, and promotions.channel
: The channel specified when importing orders from other stores. For
example, if you operate as an Amazon Seller and import orders from Amazon,
some orders may have a channel value of amazon
. Otherwise, this value is
spree
.included_tax_total
: The sum of all the included_tax_total
s (value-added
tax) on an order's line items and shipments.item_count
: The total amount of line items associated with the order.approver_id
: The ID of user that approved the order.approver_name
: The name of the user that approved the order.approved_at
: The timestamp logging when this order is approved by the
approver.confirmation_delivered
: Boolean value that indicates that an order
confirmation email has been delivered.guest_token
: The guest token that links an uncompleted order to a specific
guest user (via browser cookies).canceler_id
: The ID of user that canceled this order.canceled_at
: If the order is cancelled, this timestamp logs when the order
was cancelled.store_id
: The ID of Spree::Store
in which the order has been created.Because orders are so integral to Solidus, there are a number of methods available that let you easily display order totals and subtotals. For more information, see the Display totals methods article.
The Spree::Order
model touches many other models. This section highlights
essential models that orders depend on and links to their existing
documentation.
The Spree::LineItem
model provides the cost of each item added to an order.
Line items provide a link between the order and Spree::Product
s and
Spree::Variant
s.
For more information about line items, products, and variants, see the Products and variants documentation.
The Spree::Adjustment
model provides the cost of each adjustment to an order,
line item, or shipment on an order. Adjustments can decrease the total (via
promotions
) or increase it (via
shipments
and
taxes
).
For more information, see the Adjustments documentation.
The Spree::Shipment
model creates shipments according to the items in an
order. An order may have multiple shipments: this depends on your store's
configured shipping categories and shipping methods and the item in the order.
Shipments use Spree::InventoryUnit
s. An inventory unit is created for each
item added to an order for the purpose of tracking what order and shipment an
item belongs to. Inventory units provide a link between the order and
Spree::Shipment
s.
For more information, see the Shipments documentation.
The Spree::Address
model stores customer addresses and shares them with the
order via the ship_address_id
and bill_address_id
. An order may have one or
two different addresses associated it, depending on the customer's preferred
shipping and billing address.
For more information, see the Addresses documentation.
The Spree::Payment
model stores payment information for the order. Once the
payment object is updated with the amount paid, this updates the corresponding
order's payment_total
value.
For more information, see the Payments documentation.
The Spree::ReturnAuthorization
model stores information about customers
returns that have been authorized by an administrator.
Solidus is an open source platform supported by the community. We encourage everyone using Solidus to contribute back to the documentation and the code.
If you’re interested in contributing to the docs, get started with the contributing guidelines. If you see something that needs fixing and can’t do it yourself, please send us an email.