Remove code-duplication of artice price calculation
This commit is contained in:
parent
b35357d4b3
commit
2d4891bf1d
3 changed files with 16 additions and 23 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
14
app/models/concerns/price_calculation.rb
Normal file
14
app/models/concerns/price_calculation.rb
Normal 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
|
Loading…
Reference in a new issue