Adjustment
object tracks an adjustment to the price of an Order, an order’s Line Item, or an order’s Shipments within a Spree Commerce storefront.
Adjustments can be either positive or negative. Adjustments with a positive value are sometimes referred to as “charges” while adjustments with a negative value are sometimes referred to as “credits.” These are just terms of convenience since there is only one Spree::Adjustment
model in a storefront which handles this by allowing either positive or negative values.
Adjustments can either be considered included or additional. An “included” adjustment is an adjustment to the price of an item which is included in that price of an item. A good example of this is a GST/VAT tax. An “additional” adjustment is an adjustment to the price of the item on top of the original item price. A good example of that would be how sales tax is handled in countries like the United States.
Adjustments have the following attributes:
amount
The dollar amount of the adjustment.label
: The label for the adjustment to indicate what the adjustment is for.eligible
: Indicates if the adjustment is eligible for the thing it’s adjusting.mandatory
: Indicates if this adjustment is mandatory; i.e that this adjustment must be applied regardless of its eligibility rules.state
: Can either be open
or closed
. Once an adjustment is closed, it will not be automatically updated.included
: Whether or not this adjustment affects the final price of the item it is applied to. Used only for tax adjustments which may themselves be included in the price.Spree::TaxRate
object or a Spree::PromotionAction
object.
The adjustable is the object being adjusted, which is either an order, line item or shipment.
Adjustments can come from one of two locations within Spree’s core:
label
attribute can be used as a good indicator of where the adjustment is coming from.
open
: All open adjustments.tax
: All adjustments which have a source that is a Spree::TaxRate
objectprice
: All adjustments which adjust a Spree::LineItem
object.shipping
: All adjustments which adjust a Spree::Shipment
object.promotion
: All adjustments where the source is a Spree::PromotionAction
object.optional
: All adjustments which are not mandatory
.return_authorization
: All adjustments where the source is a Spree::ReturnAuthorization
.eligible
: Adjustments which have been determined to be eligible
for their adjustable. Useful for determining which adjustments are applying to the adjustable.charge
: Adjustments which increase the price of their adjustable.credit
: Adjustments which decrease the price of their adjustable.included
: Adjustments which are included in the object’s price. Typically tax adjustments.additional
: Adjustments which modify the object’s price. The default for all adjustments.Spree::Adjustment
class itself, or on an adjustments
association. For example, calling any one of these three is valid:
adjustments
association:
all_adjustments
method:
line_item_adjustments
:
shipment_adjustments
:
Spree::Adjustable::Adjuster::Base
and implements an update
method:
Rails.application.config.spree.adjusters
so it is included whenever adjustments are updated (Promotion and Tax are included by default):