diff --git a/app/models/calculator/flat_percent_per_item.rb b/app/models/calculator/flat_percent_per_item.rb index 17089b2f2c..b18e1026bd 100644 --- a/app/models/calculator/flat_percent_per_item.rb +++ b/app/models/calculator/flat_percent_per_item.rb @@ -1,4 +1,5 @@ require_dependency 'spree/calculator' +require 'spree/localized_number' class Calculator::FlatPercentPerItem < Spree::Calculator # Spree's FlatPercentItemTotal calculator sums all amounts, and then calculates a percentage @@ -6,11 +7,14 @@ class Calculator::FlatPercentPerItem < Spree::Calculator # In the cart, we display line item individual amounts rounded, so to have consistent # calculations we do the same internally. Here, we round adjustments at the individual # item level first, then multiply by the item quantity. + extend Spree::LocalizedNumber preference :flat_percent, :decimal, :default => 0 attr_accessible :preferred_flat_percent + localize_number :preferred_flat_percent + def self.description I18n.t(:flat_percent_per_item) end diff --git a/app/models/spree/adjustment_decorator.rb b/app/models/spree/adjustment_decorator.rb index 71a166aa56..4d0b8421e3 100644 --- a/app/models/spree/adjustment_decorator.rb +++ b/app/models/spree/adjustment_decorator.rb @@ -1,5 +1,9 @@ +require 'spree/localized_number' + module Spree Adjustment.class_eval do + extend Spree::LocalizedNumber + # Deletion of metadata is handled in the database. # So we don't need the option `dependent: :destroy` as long as # AdjustmentMetadata has no destroy logic itself. @@ -17,6 +21,8 @@ module Spree attr_accessible :included_tax + localize_number :amount + def set_included_tax!(rate) tax = amount - (amount / (1 + rate)) set_absolute_included_tax! tax @@ -73,6 +79,5 @@ module Spree result end - end end diff --git a/app/models/spree/calculator/flat_percent_item_total_decorator.rb b/app/models/spree/calculator/flat_percent_item_total_decorator.rb index 9012261dab..0393d300f7 100644 --- a/app/models/spree/calculator/flat_percent_item_total_decorator.rb +++ b/app/models/spree/calculator/flat_percent_item_total_decorator.rb @@ -1,5 +1,11 @@ +require 'spree/localized_number' + module Spree Calculator::FlatPercentItemTotal.class_eval do + extend Spree::LocalizedNumber + + localize_number :preferred_flat_percent + def compute(object) item_total = line_items_for(object).map(&:amount).sum value = item_total * BigDecimal(self.preferred_flat_percent.to_s) / 100.0 diff --git a/app/models/spree/calculator/flat_rate_decorator.rb b/app/models/spree/calculator/flat_rate_decorator.rb new file mode 100644 index 0000000000..9208223ee4 --- /dev/null +++ b/app/models/spree/calculator/flat_rate_decorator.rb @@ -0,0 +1,9 @@ +require 'spree/localized_number' + +module Spree + Calculator::FlatRate.class_eval do + extend Spree::LocalizedNumber + + localize_number :preferred_amount + end +end diff --git a/app/models/spree/calculator/flexi_rate_decorator.rb b/app/models/spree/calculator/flexi_rate_decorator.rb index c4ef6183c2..f583962e07 100644 --- a/app/models/spree/calculator/flexi_rate_decorator.rb +++ b/app/models/spree/calculator/flexi_rate_decorator.rb @@ -1,5 +1,12 @@ +require 'spree/localized_number' + module Spree Calculator::FlexiRate.class_eval do + extend Spree::LocalizedNumber + + localize_number :preferred_first_item, + :preferred_additional_item + def compute(object) sum = 0 max = self.preferred_max_items.to_i diff --git a/app/models/spree/calculator/per_item_decorator.rb b/app/models/spree/calculator/per_item_decorator.rb index ebaaf6fc1c..6a87ee2c35 100644 --- a/app/models/spree/calculator/per_item_decorator.rb +++ b/app/models/spree/calculator/per_item_decorator.rb @@ -1,5 +1,11 @@ +require 'spree/localized_number' + module Spree Calculator::PerItem.class_eval do + extend Spree::LocalizedNumber + + localize_number :preferred_amount + def compute(object=nil) return 0 if object.nil? self.preferred_amount * line_items_for(object).reduce(0) do |sum, value| diff --git a/app/models/spree/calculator/price_sack_decorator.rb b/app/models/spree/calculator/price_sack_decorator.rb new file mode 100644 index 0000000000..3176820e68 --- /dev/null +++ b/app/models/spree/calculator/price_sack_decorator.rb @@ -0,0 +1,11 @@ +require 'spree/localized_number' + +module Spree + Calculator::PriceSack.class_eval do + extend Spree::LocalizedNumber + + localize_number :preferred_minimal_amount, + :preferred_normal_amount, + :preferred_discount_amount + end +end diff --git a/app/models/spree/payment_decorator.rb b/app/models/spree/payment_decorator.rb index c9ae401541..8aab22a7bb 100644 --- a/app/models/spree/payment_decorator.rb +++ b/app/models/spree/payment_decorator.rb @@ -1,11 +1,17 @@ +require 'spree/localized_number' + module Spree Payment.class_eval do + extend Spree::LocalizedNumber + has_one :adjustment, as: :source, dependent: :destroy after_save :ensure_correct_adjustment, :update_order attr_accessible :source + localize_number :amount + def ensure_correct_adjustment revoke_adjustment_eligibility if ['failed', 'invalid'].include?(state) return if adjustment.try(:finalized?) diff --git a/app/models/spree/variant_decorator.rb b/app/models/spree/variant_decorator.rb index c5e5dca1fe..e1b81f6742 100644 --- a/app/models/spree/variant_decorator.rb +++ b/app/models/spree/variant_decorator.rb @@ -3,6 +3,7 @@ require 'open_food_network/variant_and_line_item_naming' require 'open_food_network/products_cache' Spree::Variant.class_eval do + extend Spree::LocalizedNumber # Remove method From Spree, so method from the naming module is used instead # This file may be double-loaded in delayed job environment, so we check before # removing the Spree method to prevent error. @@ -55,6 +56,8 @@ Spree::Variant.class_eval do .where("o_inventory_items.id IS NULL OR o_inventory_items.visible = (?)", true) } + localize_number :price, :cost_price, :weight + # Define sope as class method to allow chaining with other scopes filtering id. # In Rails 3, merging two scopes on the same column will consider only the last scope. def self.in_distributor(distributor) diff --git a/app/models/variant_override.rb b/app/models/variant_override.rb index c713361b89..453a93f7b4 100644 --- a/app/models/variant_override.rb +++ b/app/models/variant_override.rb @@ -1,4 +1,6 @@ class VariantOverride < ActiveRecord::Base + extend Spree::LocalizedNumber + acts_as_taggable belongs_to :hub, class_name: 'Enterprise' @@ -17,6 +19,8 @@ class VariantOverride < ActiveRecord::Base where(hub_id: hubs) } + localize_number :price + def self.indexed(hub) Hash[ for_hubs(hub).preload(:variant).map { |vo| [vo.variant, vo] }