Class: Spree::Adjustment
- Inherits:
-
Object
- Object
- Spree::Adjustment
- Extended by:
- DisplayMoney
- Defined in:
- app/models/spree/adjustment.rb
Instance Method Summary collapse
- #amount=(amount) ⇒ Object
- #currency ⇒ Object
- #promotion? ⇒ Boolean
- #tax? ⇒ Boolean
-
#update!(target = adjustable) ⇒ Object
Passing a target here would always be recommended as it would avoid hitting the database again and would ensure you’re compute values over the specific object amount passed here.
Methods included from DisplayMoney
Instance Method Details
#amount=(amount) ⇒ Object
79 80 81 |
# File 'app/models/spree/adjustment.rb', line 79 def amount=(amount) self[:amount] = Spree::LocalizedNumber.parse(amount) end |
#currency ⇒ Object
83 84 85 |
# File 'app/models/spree/adjustment.rb', line 83 def currency adjustable ? adjustable.currency : order.currency end |
#promotion? ⇒ Boolean
87 88 89 |
# File 'app/models/spree/adjustment.rb', line 87 def promotion? source_type == 'Spree::PromotionAction' end |
#tax? ⇒ Boolean
91 92 93 |
# File 'app/models/spree/adjustment.rb', line 91 def tax? source_type == 'Spree::TaxRate' end |
#update!(target = adjustable) ⇒ Object
Passing a target here would always be recommended as it would avoid hitting the database again and would ensure you’re compute values over the specific object amount passed here.
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'app/models/spree/adjustment.rb', line 98 def update!(target = adjustable) return amount if closed? || source.blank? amount = source.compute_amount(target) attributes = { amount: amount, updated_at: Time.current } attributes[:eligible] = source.promotion.eligible?(target) if promotion? update_columns(attributes) source.promotion.touch if promotion? amount end |