Merge branch 'adminbsb_material_ui'
This commit is contained in:
@@ -5,10 +5,10 @@ class DiningCharge < ApplicationRecord
|
||||
def self.amount_calculate(dining_charges_obj, checkin , checkout)
|
||||
# note :: the first Charge Block will cost all, the Time rounding block will included in 2nd Charge Block
|
||||
if !checkin.nil? && !checkout.nil? && !dining_charges_obj.nil?
|
||||
block_count = 0
|
||||
price = 0
|
||||
minutes = DiningCharge.time_diff(checkout, checkin)
|
||||
free_time = DiningCharge.convert_to_minutes(dining_charges_obj.minimum_free_time.utc.strftime('%H:%M'))
|
||||
block_count = 0
|
||||
price = 0
|
||||
minutes = DiningCharge.time_diff(checkout, checkin)
|
||||
free_time = DiningCharge.convert_to_minutes(dining_charges_obj.minimum_free_time.utc.strftime('%H:%M'))
|
||||
dining_minutes = minutes #- free_time # stayminutes - free minutes
|
||||
if dining_minutes <= free_time
|
||||
price = 0
|
||||
@@ -30,31 +30,43 @@ class DiningCharge < ApplicationRecord
|
||||
# dining charges calculate
|
||||
def self.charges(chargesObj, dining_minutes, type)
|
||||
solid_price = 0
|
||||
|
||||
charge_block = DiningCharge.convert_to_minutes(chargesObj.charge_block.utc.strftime('%H:%M'))
|
||||
|
||||
result = dining_minutes / charge_block
|
||||
|
||||
if result.to_i < 1
|
||||
# for dining minute is under charge_block
|
||||
return 1, result.to_i,chargesObj.unit_price
|
||||
elsif result.to_i >= 1
|
||||
|
||||
solid_price = result * chargesObj.unit_price
|
||||
|
||||
remain_value = dining_minutes % charge_block
|
||||
|
||||
rounding_time = DiningCharge.convert_to_minutes(chargesObj.time_rounding_block.utc.strftime('%H:%M'))
|
||||
|
||||
roundingblock = remain_value / rounding_time
|
||||
|
||||
extra_minutes = remain_value % rounding_time
|
||||
|
||||
if roundingblock.to_i < 1
|
||||
# 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
|
||||
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
|
||||
|
||||
# check for rounding and calculate with rounding price
|
||||
def self.check_rounding(chargesObj,solid_price, roundingblock)
|
||||
rounding_block_remain = roundingblock % 1
|
||||
def self.check_rounding(chargesObj,solid_price, extra_minutes)
|
||||
# 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"
|
||||
return solid_price
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user