update dining charge down and up
This commit is contained in:
@@ -30,31 +30,43 @@ class DiningCharge < ApplicationRecord
|
|||||||
# dining charges calculate
|
# dining charges calculate
|
||||||
def self.charges(chargesObj, dining_minutes, type)
|
def self.charges(chargesObj, dining_minutes, type)
|
||||||
solid_price = 0
|
solid_price = 0
|
||||||
|
|
||||||
charge_block = DiningCharge.convert_to_minutes(chargesObj.charge_block.utc.strftime('%H:%M'))
|
charge_block = DiningCharge.convert_to_minutes(chargesObj.charge_block.utc.strftime('%H:%M'))
|
||||||
|
|
||||||
result = dining_minutes / charge_block
|
result = dining_minutes / charge_block
|
||||||
|
|
||||||
if result.to_i < 1
|
if result.to_i < 1
|
||||||
# for dining minute is under charge_block
|
# for dining minute is under charge_block
|
||||||
return 1, result.to_i,chargesObj.unit_price
|
return 1, result.to_i,chargesObj.unit_price
|
||||||
elsif result.to_i >= 1
|
elsif result.to_i >= 1
|
||||||
|
|
||||||
solid_price = result * chargesObj.unit_price
|
solid_price = result * chargesObj.unit_price
|
||||||
|
|
||||||
remain_value = dining_minutes % charge_block
|
remain_value = dining_minutes % charge_block
|
||||||
|
|
||||||
rounding_time = DiningCharge.convert_to_minutes(chargesObj.time_rounding_block.utc.strftime('%H:%M'))
|
rounding_time = DiningCharge.convert_to_minutes(chargesObj.time_rounding_block.utc.strftime('%H:%M'))
|
||||||
|
|
||||||
roundingblock = remain_value / rounding_time
|
roundingblock = remain_value / rounding_time
|
||||||
|
|
||||||
|
extra_minutes = remain_value % rounding_time
|
||||||
|
|
||||||
if roundingblock.to_i < 1
|
if roundingblock.to_i < 1
|
||||||
# no time rounding block
|
# no time rounding block
|
||||||
return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price, roundingblock)
|
return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price, extra_minutes)
|
||||||
else
|
else
|
||||||
solid_price += (roundingblock * chargesObj.time_rounding_block_price)
|
solid_price += (roundingblock * chargesObj.time_rounding_block_price)
|
||||||
return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price, roundingblock)
|
|
||||||
|
return result.to_i, DiningCharge.check_rounding(chargesObj, solid_price, extra_minutes)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# check for rounding and calculate with rounding price
|
# check for rounding and calculate with rounding price
|
||||||
def self.check_rounding(chargesObj,solid_price, roundingblock)
|
def self.check_rounding(chargesObj,solid_price, extra_minutes)
|
||||||
rounding_block_remain = roundingblock % 1
|
# rounding_block_remain = roundingblock / 1
|
||||||
|
free_time = DiningCharge.convert_to_minutes(chargesObj.minimum_free_time.utc.strftime('%H:%M'))
|
||||||
|
rounding_block_remain = extra_minutes - free_time
|
||||||
|
|
||||||
if chargesObj.time_rounding == "down"
|
if chargesObj.time_rounding == "down"
|
||||||
return solid_price
|
return solid_price
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user