You need to use the recalculate
method on a Spree::Order
to keep its total
up-to-date. Note that the total changes every time that line items and
adjustments are added or modified. The recalculate
method calls out to the
Spree::OrderUpdater
class
.
For example, the solidus_backend
gem's
Spree::Admin::AdjustmentsController
uses the
recalculate
method to update totals throughout the lifetime of an order:
def update_totals
@order.reload.recalculate
end
The update_totals
method is called every time that adjustments are created,
destroyed, and updated.
Whenever you change the code that touches the values of a Spree::Order
, use
the recalculate
method to ensure your order's totals are accurate. For
example, you would want to call the recalculate
method in the following
scenarios:
Spree::Payment
that changes the order's
payment_state
value.Spree:LineItem
on the order has a price change.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.