calculate induties in bill

This commit is contained in:
Myat Zin Wai Maw
2019-06-19 17:12:44 +06:30
parent 4ef7eef803
commit f7213b1213
13 changed files with 146 additions and 46 deletions

View File

@@ -27,7 +27,7 @@ class Sale < ApplicationRecord
SALE_STATUS_OUTSTANDING = "outstanding"
SALE_STATUS_COMPLETED = "completed"
def generate_invoice_from_booking(booking_id, requested_by, cashier, order_source = nil)
def generate_invoice_from_booking(booking_id, requested_by, cashier, order_source = nil, current_checkin_induties_count)
booking = Booking.find(booking_id)
status = false
Rails.logger.debug "Booking -> " + booking.id.to_s
@@ -50,12 +50,32 @@ class Sale < ApplicationRecord
# dining charges
charges = DiningCharge.where('dining_facility_id=?',booking.dining_facility_id).take
if !charges.nil?
block_count, diningprice = DiningCharge.amount_calculate(charges, booking.checkin_at, booking.checkout_at)
block_count, diningprice , checkin_minutes = DiningCharge.amount_calculate(charges, booking.checkin_at, booking.checkout_at)
if charges.charge_type =='hr'
dining_time = booking.checkin_at.strftime('%H:%M %p').to_s + " - " + booking.checkout_at.strftime('%H:%M %p').to_s
else
dining_time = booking.checkin_at.strftime('%B %d, %H:%M %p').to_s + " - " + booking.checkout_at.strftime('%B %d, %H:%M %p').to_s
end
# later_time = booking.checkout_at
# early_time = booking.checkin_at
# distance_in_minutes = ((later_time - early_time)/60.0).round
# # time = ((later_time.hour*3600+later_time.min*60+later_time.sec) - (early_time.hour*3600+early_time.min*60+early_time.sec))/24
# puts "Hello time"
# puts distance_in_minutes
# # puts checkin_minutes / 60
# puts "Hello block_count"
basic_pay_amount =0
name =""
if current_checkin_induties_count != "0"
basic_pay = Commission.where('commission_type=?','Basic Pay')
basic_pay.each do |pay|
basic_pay_amount =pay.amount
name =pay.name
end
induties_pay_amount = (current_checkin_induties_count.to_i * (checkin_minutes.to_i / 60).to_f * basic_pay_amount).to_i
create_saleitem_indutycharges(charges, current_checkin_induties_count.to_i, induties_pay_amount, booking.dining_facility.name, dining_time, order_source, basic_pay_amount)
end
create_saleitem_diningcharges(charges, block_count, diningprice, booking.dining_facility.name, dining_time, order_source)
end
@@ -330,7 +350,25 @@ class Sale < ApplicationRecord
sale = Sale.find(self.id)
self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source)
end
def create_saleitem_indutycharges(chargeObj, current_checkin_induties_count, induties_pay_amount, dining_name, dining_time, order_source = nil, basic_pay_amount)
sale_item = SaleItem.new
sale_item.menu_category_code = "IndutyCharge"
sale_item.menu_category_name = "Induty Charge"
sale_item.product_code = ""
sale_item.product_name ='Vocalist' + " ( " + dining_time.to_s + " )"
sale_item.account_id = 0
sale_item.product_alt_name = "-"
sale_item.qty = current_checkin_induties_count
sale_item.unit_price = basic_pay_amount
sale_item.taxable_price = induties_pay_amount
sale_item.is_taxable = chargeObj.taxable
sale_item.sale_id = self.id
sale_item.price = induties_pay_amount
sale_item.save
# Re-calc
sale = Sale.find(self.id)
self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source)
end
def update_item (item)
#save sale_audit