Sha256: 9d5dd1b052d42eb19a111e750969151698acb260d8b3e5cfdc3a2232b80c234b

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module Spree
  # Records the costs of different shipping methods for a shipment and which
  # method has been selected to deliver the shipment.
  #
  class ShippingRate < Spree::Base
    belongs_to :shipment, class_name: 'Spree::Shipment', touch: true, optional: true
    belongs_to :shipping_method, -> { with_deleted }, class_name: 'Spree::ShippingMethod', inverse_of: :shipping_rates, optional: true

    has_many :taxes,
             class_name: "Spree::ShippingRateTax",
             foreign_key: "shipping_rate_id",
             inverse_of: :shipping_rate,
             dependent: :destroy

    delegate :order, :currency, to: :shipment
    delegate :name, :tax_category, :tax_category_id, to: :shipping_method
    delegate :code, to: :shipping_method, prefix: true
    alias_attribute :amount, :cost

    alias_method :discounted_amount, :amount
    deprecate discounted_amount: :total_before_tax, deprecator: Spree::Deprecation
    alias_method :total_before_tax, :amount

    extend DisplayMoney
    money_methods :amount

    def display_price
      price = display_amount.to_s

      return price if taxes.to_a.empty? || amount == 0

      tax_explanations = taxes.map(&:label).join(tax_label_separator)

      I18n.t 'spree.shipping_rate.display_price.display_price_with_explanations',
             price: price,
             explanations: tax_explanations
    end
    alias_method :display_cost, :display_price

    private

    def tax_label_separator
      I18n.t 'spree.shipping_rate.display_price.tax_label_separator'
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
solidus_core-2.10.5 app/models/spree/shipping_rate.rb
solidus_core-2.10.3 app/models/spree/shipping_rate.rb
solidus_core-2.10.2 app/models/spree/shipping_rate.rb
solidus_core-2.10.1 app/models/spree/shipping_rate.rb
solidus_core-2.10.0 app/models/spree/shipping_rate.rb
solidus_core-2.10.0.beta1 app/models/spree/shipping_rate.rb