Class: Spree::Adjustment
- Inherits:
-
Base
- Object
- ActiveRecord::Base
- Base
- Spree::Adjustment
show all
- Extended by:
- DisplayMoney
- Defined in:
- app/models/spree/adjustment.rb
Overview
Adjustments represent a change to the item_total
of an Order. Each adjustment has an amount
that can be either positive or negative.
Adjustments can be “opened” or “closed”. Once an adjustment is closed, it will not be automatically updated.
Boolean attributes
-
eligible?
This boolean attributes stores whether this adjustment is currently eligible for its order. Only eligible adjustments count towards the order’s adjustment total. This allows an adjustment to be preserved if it becomes ineligible so it might be reinstated.
Instance Method Summary
collapse
money_methods
Methods inherited from Base
page
#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference
Instance Method Details
#cancellation? ⇒ Boolean
Returns true when this is a cancellation adjustment (Cancellation adjustments have a UnitCancel source).
143
144
145
|
# File 'app/models/spree/adjustment.rb', line 143
def cancellation?
source_type == 'Spree::UnitCancel'
end
|
#close ⇒ Object
117
118
119
120
|
# File 'app/models/spree/adjustment.rb', line 117
def close
ActiveSupport::Deprecation.warn "Adjustment#close is deprecated. Instead use Adjustment#finalize", caller
finalize
end
|
#close! ⇒ Object
122
123
124
125
|
# File 'app/models/spree/adjustment.rb', line 122
def close!
ActiveSupport::Deprecation.warn "Adjustment#close! is deprecated. Instead use Adjustment#finalize!", caller
finalize!
end
|
#closed? ⇒ Boolean
102
103
104
105
|
# File 'app/models/spree/adjustment.rb', line 102
def closed?
ActiveSupport::Deprecation.warn "Adjustment#closed? is deprecated. Instead use Adjustment#finalized?", caller
finalized?
end
|
#currency ⇒ Object
128
129
130
|
# File 'app/models/spree/adjustment.rb', line 128
def currency
adjustable ? adjustable.currency : Spree::Config[:currency]
end
|
#finalize ⇒ Object
71
72
73
|
# File 'app/models/spree/adjustment.rb', line 71
def finalize
update_attributes(finalized: true)
end
|
#finalize! ⇒ Object
63
64
65
|
# File 'app/models/spree/adjustment.rb', line 63
def finalize!
update_attributes!(finalized: true)
end
|
#open ⇒ Object
107
108
109
110
|
# File 'app/models/spree/adjustment.rb', line 107
def open
ActiveSupport::Deprecation.warn "Adjustment#open is deprecated. Instead use Adjustment#unfinalize", caller
unfinalize
end
|
#open! ⇒ Object
112
113
114
115
|
# File 'app/models/spree/adjustment.rb', line 112
def open!
ActiveSupport::Deprecation.warn "Adjustment#open! is deprecated. Instead use Adjustment#unfinalize!", caller
unfinalize!
end
|
#open? ⇒ Boolean
97
98
99
100
|
# File 'app/models/spree/adjustment.rb', line 97
def open?
ActiveSupport::Deprecation.warn "Adjustment#open? is deprecated. Instead use Adjustment#finalized?", caller
!closed?
end
|
Returns true when this is a promotion adjustment (Promotion adjustments have a PromotionAction source).
133
134
135
|
# File 'app/models/spree/adjustment.rb', line 133
def promotion?
source_type == 'Spree::PromotionAction'
end
|
#state ⇒ Object
80
81
82
83
|
# File 'app/models/spree/adjustment.rb', line 80
def state
ActiveSupport::Deprecation.warn "Adjustment#state is deprecated. Instead use Adjustment#finalized?", caller
finalized? ? "closed" : "open"
end
|
#state=(new_state) ⇒ Object
85
86
87
88
89
90
91
92
93
94
95
|
# File 'app/models/spree/adjustment.rb', line 85
def state=(new_state)
ActiveSupport::Deprecation.warn "Adjustment#state= is deprecated. Instead use Adjustment#finalized=", caller
case new_state
when "open"
self.finalized = false
when "closed"
self.finalized = true
else
raise "invaliid adjustment state #{new_state}"
end
end
|
#tax? ⇒ Boolean
Returns true when this is a tax adjustment (Tax adjustments have a TaxRate source).
138
139
140
|
# File 'app/models/spree/adjustment.rb', line 138
def tax?
source_type == 'Spree::TaxRate'
end
|
#unfinalize ⇒ Object
75
76
77
|
# File 'app/models/spree/adjustment.rb', line 75
def unfinalize
update_attributes(finalized: false)
end
|
#unfinalize! ⇒ Object
67
68
69
|
# File 'app/models/spree/adjustment.rb', line 67
def unfinalize!
update_attributes!(finalized: false)
end
|
#update!(target = nil) ⇒ BigDecimal
Recalculate and persist the amount from this adjustment’s source based on the adjustable (Order, Shipment, or LineItem)
If the adjustment has no source (such as when created manually from the admin) or is closed, this is a noop.
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'app/models/spree/adjustment.rb', line 155
def update!(target = nil)
if target
ActiveSupport::Deprecation.warn("Passing a target to Adjustment#update! is deprecated. The adjustment will use the correct target from it's adjustable association.", caller)
end
return amount if finalized?
if source.present?
self.amount = source.compute_amount(target || adjustable)
if promotion?
self.eligible = source.promotion.eligible?(adjustable, promotion_code: promotion_code)
end
update_columns(eligible: eligible, amount: amount, updated_at: Time.now) if changed?
end
amount
end
|