Class: Spree::Adjustment

Inherits:
Object
  • Object
show all
Extended by:
DisplayMoney
Defined in:
app/models/spree/adjustment.rb

Instance Method Summary collapse

Methods included from DisplayMoney

money_methods

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

#currencyObject



83
84
85
# File 'app/models/spree/adjustment.rb', line 83

def currency
  adjustable ? adjustable.currency : order.currency
end

#promotion?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'app/models/spree/adjustment.rb', line 87

def promotion?
  source_type == 'Spree::PromotionAction'
end

#tax?Boolean

Returns:

  • (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