Class: Spree::TaxCalculator::ShippingRate
- Inherits:
-
Object
- Object
- Spree::TaxCalculator::ShippingRate
- Includes:
- Spree::Tax::TaxHelpers
- Defined in:
- app/models/spree/tax_calculator/shipping_rate.rb
Overview
Default implementation for tax calculations on shipping rates.
The class used for shipping rate tax calculation is configurable, so that the calculation can easily be pushed to third-party services. Users looking to provide their own calculator should adhere to the API of this class.
Instance Attribute Summary collapse
-
#shipping_rate ⇒ Object
readonly
Returns the value of attribute shipping_rate.
Instance Method Summary collapse
-
#calculate(shipping_rate) ⇒ Array<Spree::Tax::ItemTax>
Calculate taxes for a shipping rate.
-
#initialize(order) ⇒ Spree::TaxCalculator::ShippingRate
constructor
Create a new tax calculator.
Constructor Details
#initialize(order) ⇒ Spree::TaxCalculator::ShippingRate
Create a new tax calculator.
22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/spree/tax_calculator/shipping_rate.rb', line 22 def initialize(order) if order.is_a?(::Spree::ShippingRate) Spree::Deprecation.warn "passing a single shipping rate to Spree::TaxCalculator::ShippingRate is DEPRECATED. It now expects an order" shipping_rate = order @order = shipping_rate.order @shipping_rate = shipping_rate else @order = order @shipping_rate = nil end end |
Instance Attribute Details
#shipping_rate ⇒ Object (readonly)
Returns the value of attribute shipping_rate.
16 17 18 |
# File 'app/models/spree/tax_calculator/shipping_rate.rb', line 16 def shipping_rate @shipping_rate end |
Instance Method Details
#calculate(shipping_rate) ⇒ Array<Spree::Tax::ItemTax>
Calculate taxes for a shipping rate.
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/models/spree/tax_calculator/shipping_rate.rb', line 40 def calculate(shipping_rate) shipping_rate ||= @shipping_rate rates_for_item(shipping_rate).map do |rate| amount = rate.compute_amount(shipping_rate) Spree::Tax::ItemTax.new( item_id: shipping_rate.id, label: rate.adjustment_label(amount), tax_rate: rate, amount: amount ) end end |