Method: Spree::TaxRate.adjust
- Defined in:
- app/models/spree/tax_rate.rb
.adjust(order_tax_zone, items) ⇒ Object
This method is best described by the documentation on #potentially_applicable?
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'app/models/spree/tax_rate.rb', line 74 def self.adjust(order_tax_zone, items) rates = self.match(order_tax_zone) tax_categories = rates.map(&:tax_category) relevant_items, non_relevant_items = items.partition { |item| tax_categories.include?(item.tax_category) } relevant_items.each do |item| item.adjustments.tax.delete_all relevant_rates = rates.select { |rate| rate.tax_category == item.tax_category } store_pre_tax_amount(item, relevant_rates) relevant_rates.each do |rate| rate.adjust(order_tax_zone, item) end end non_relevant_items.each do |item| if item.adjustments.tax.present? item.adjustments.tax.delete_all item.update_column(:pre_tax_amount, nil) item.send(:recalculate_adjustments) end end end |