40 lines
872 B
Ruby
40 lines
872 B
Ruby
module PriceCalculation
|
|
extend ActiveSupport::Concern
|
|
|
|
# Gross price = net price + deposit + tax.
|
|
# @return [Number] Gross price.
|
|
def gross_price
|
|
add_percent(price, tax) + deposit
|
|
end
|
|
|
|
def gross_price_without_deposit
|
|
add_percent(price, tax)
|
|
end
|
|
|
|
def net_deposit_price
|
|
remove_percent(deposit, tax)
|
|
end
|
|
|
|
# @return [Number] Price for the foodcoop-member.
|
|
def fc_price
|
|
add_percent(gross_price, FoodsoftConfig[:price_markup].to_i)
|
|
end
|
|
|
|
def fc_price_without_deposit
|
|
add_percent(gross_price_without_deposit, FoodsoftConfig[:price_markup].to_i)
|
|
end
|
|
|
|
def fc_deposit_price
|
|
add_percent(deposit, FoodsoftConfig[:price_markup].to_i)
|
|
end
|
|
|
|
private
|
|
|
|
def remove_percent(value, percent)
|
|
(value / ((percent * 0.01) + 1)).round(2)
|
|
end
|
|
|
|
def add_percent(value, percent)
|
|
(value * ((percent * 0.01) + 1)).round(2)
|
|
end
|
|
end
|