Remove code-duplication of artice price calculation

This commit is contained in:
Patrick Gansterer 2017-10-08 12:20:54 +02:00
parent b35357d4b3
commit 2d4891bf1d
3 changed files with 16 additions and 23 deletions

View file

@ -1,5 +1,6 @@
# encoding: utf-8 # encoding: utf-8
class Article < ActiveRecord::Base class Article < ActiveRecord::Base
include PriceCalculation
# @!attribute name # @!attribute name
# @return [String] Article name # @return [String] Article name
@ -67,16 +68,6 @@ class Article < ActiveRecord::Base
before_save :update_price_history before_save :update_price_history
before_destroy :check_article_in_use before_destroy :check_article_in_use
# The financial gross, net plus tax and deposti
def gross_price
((price + deposit) * (tax / 100 + 1)).round(2)
end
# The price for the foodcoop-member.
def fc_price
(gross_price * (FoodsoftConfig[:price_markup] / 100 + 1)).round(2)
end
# Returns true if article has been updated at least 2 days ago # Returns true if article has been updated at least 2 days ago
def recently_updated def recently_updated
updated_at > 2.days.ago updated_at > 2.days.ago

View file

@ -1,4 +1,5 @@
class ArticlePrice < ActiveRecord::Base class ArticlePrice < ActiveRecord::Base
include PriceCalculation
# @!attribute price # @!attribute price
# @return [Number] Net price # @return [Number] Net price
@ -27,17 +28,4 @@ class ArticlePrice < ActiveRecord::Base
validates_numericality_of :unit_quantity, :greater_than => 0 validates_numericality_of :unit_quantity, :greater_than => 0
validates_numericality_of :deposit, :tax validates_numericality_of :deposit, :tax
# Gross price = net price + deposit + tax.
# @return [Number] Gross price.
# @todo remove code-duplication with Article
def gross_price
((price + deposit) * (tax / 100 + 1)).round(2)
end
# @return [Number] Price for the foodcoop-member.
# @todo remove code-duplication with Article
def fc_price
(gross_price * (FoodsoftConfig[:price_markup] / 100 + 1)).round(2)
end
end end

View file

@ -0,0 +1,14 @@
module PriceCalculation
extend ActiveSupport::Concern
# Gross price = net price + deposit + tax.
# @return [Number] Gross price.
def gross_price
((price + deposit) * (tax / 100 + 1)).round(2)
end
# @return [Number] Price for the foodcoop-member.
def fc_price
(gross_price * (FoodsoftConfig[:price_markup] / 100 + 1)).round(2)
end
end