mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Use localize_number in models
This commit is contained in:
committed by
Rob Harrington
parent
920900b619
commit
2cd570383f
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
9
app/models/spree/calculator/flat_rate_decorator.rb
Normal file
9
app/models/spree/calculator/flat_rate_decorator.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
require 'spree/localized_number'
|
||||
|
||||
module Spree
|
||||
Calculator::FlatRate.class_eval do
|
||||
extend Spree::LocalizedNumber
|
||||
|
||||
localize_number :preferred_amount
|
||||
end
|
||||
end
|
||||
@@ -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
|
||||
|
||||
@@ -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|
|
||||
|
||||
11
app/models/spree/calculator/price_sack_decorator.rb
Normal file
11
app/models/spree/calculator/price_sack_decorator.rb
Normal file
@@ -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
|
||||
@@ -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?)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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] }
|
||||
|
||||
Reference in New Issue
Block a user