Sha256: 928742ce7382a4977d153394047d78468d7957319dcb569c521f3a4f08369fd7

Contents?: true

Size: 1.04 KB

Versions: 36

Compression:

Stored size: 1.04 KB

Contents

module Spree
  class Order < Spree::Base
    module CurrencyUpdater
      extend ActiveSupport::Concern

      included do

        def homogenize_line_item_currencies
          update_line_item_currencies!
          update_with_updater!
        end

      end

      # Updates prices of order's line items
      def update_line_item_currencies!
        line_items.where('currency != ?', currency).each do |line_item|
          update_line_item_price!(line_item)
        end
      end

      # Returns the price object from given item
      def price_from_line_item(line_item)
        line_item.variant.prices.where(currency: currency).first
      end

      # Updates price from given line item
      def update_line_item_price!(line_item)
        price = price_from_line_item(line_item)

        if price
          line_item.update_attributes!(currency: price.currency, price: price.amount)
        else
          raise RuntimeError, "no #{currency} price found for #{line_item.product.name} (#{line_item.variant.sku})"
        end
      end

    end
  end
end

Version data entries

36 entries across 36 versions & 2 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/order/currency_updater.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/order/currency_updater.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/order/currency_updater.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/order/currency_updater.rb
spree_core-3.2.9 app/models/spree/order/currency_updater.rb
spree_core-3.1.14 app/models/spree/order/currency_updater.rb
spree_core-3.2.8 app/models/spree/order/currency_updater.rb
spree_core-3.1.13 app/models/spree/order/currency_updater.rb
spree_core-3.2.7 app/models/spree/order/currency_updater.rb
spree_core-3.1.12 app/models/spree/order/currency_updater.rb
spree_core-3.2.6 app/models/spree/order/currency_updater.rb
spree_core-3.1.11 app/models/spree/order/currency_updater.rb
spree_core-3.1.10 app/models/spree/order/currency_updater.rb
spree_core-3.2.5 app/models/spree/order/currency_updater.rb
spree_core-3.1.9 app/models/spree/order/currency_updater.rb
spree_core-3.2.4 app/models/spree/order/currency_updater.rb
spree_core-3.1.8 app/models/spree/order/currency_updater.rb
spree_core-3.1.7 app/models/spree/order/currency_updater.rb
spree_core-3.2.3 app/models/spree/order/currency_updater.rb
spree_core-3.2.2 app/models/spree/order/currency_updater.rb