Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 1.26 KB

update-orders.md

File metadata and controls

31 lines (24 loc) · 1.26 KB

Update orders

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:

  • Whenever you create or modify a Spree::Payment that changes the order's payment_state value.
  • Whenever a Spree:LineItem on the order has a price change.