fix first bill amount less than actual sales

This commit is contained in:
Thein Lin Kyaw
2019-09-27 20:35:05 +06:30
parent 9d330bb28c
commit 327a6e17bf
10 changed files with 242 additions and 313 deletions

View File

@@ -19,13 +19,12 @@ class Api::BillController < Api::ApiController
# for Multiple Cashier by Zone
table = DiningFacility.find(booking.dining_facility_id)
bk_order = BookingOrder.find_by_booking_id(booking.booking_id)
order = Order.find(bk_order.order_id)
order = booking.orders.first
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
shift = ShiftSale.where("shift_started_at is not null and shift_closed_at is null and cashier_terminal_id = #{cashier_zone.cashier_terminal_id}").first
#for multiple zone with terminal
if !shift.nil?
cashier = Employee.find(shift.employee_id)
@@ -40,65 +39,59 @@ class Api::BillController < Api::ApiController
end
end
if booking
if booking.sale_id.nil?
@sale = Sale.new
@status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee, cashier, order.source,params[:current_checkin_induties_count])
@sale_data = Sale.find_by_sale_id(@sale_id)
else
@status = true
@sale_id = booking.sale_id
@sale_data = Sale.find_by_sale_id(@sale_id)
end
if @sale_data = booking.sale
@status = true
elsif @sale_data = Sale.generate_invoice_from_booking(booking, current_login_employee, cashier, order.source, params[:current_checkin_induties_count])
@status = true
else
@status = false
end
end
else
@status = false
@status = false
@error_message = "There is no order for '#{params[:booking_id]}'"
end
elsif (params[:order_id])
order = Order.find(params[:order_id])
@sale = Sale.new
@status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee, get_cashier, order.source)
# for Job
booking = Booking.find_by_sale_id(@sale_id)
table = DiningFacility.find(booking.dining_facility_id)
# elsif (params[:order_id])
# order = Order.find(params[:order_id])
# @status, @sale_id = Sale.generate_invoice_from_order(params[:order_id], current_login_employee, get_cashier, order.source)
#
# # for Job
# booking = Booking.find_by_sale_id(@sale_id)
# table = DiningFacility.find(booking.dining_facility_id)
end
# Bind shift sale id to sale
# @sale_data.shift_sale_id = shift_by_terminal.id
# @sale_data.save
if @status
if @sale_data
#check checkInOut pdf print
check_booking = Booking.find_by_sale_id(@sale_id)
checkout_time = Lookup.collection_of('checkout_time')
terminal = DiningFacility.find_by_id(check_booking.dining_facility_id)
terminal = DiningFacility.find_by_id(booking.dining_facility_id)
cashier_terminal = CashierTerminal.find_by_id(terminal.zone_id)
if (!checkout_time.empty?) && (ENV["SERVER_MODE"] != "cloud") #no print in cloud server
unique_code = "CheckInOutPdf"
printer = PrintSetting.find_by_unique_code(unique_code)
# print when complete click
# print when complete click
order_queue_printer = Printer::OrderQueuePrinter.new(printer)
if !printer.nil?
order_queue_printer.print_check_in_out(printer,cashier_terminal , check_booking, table)
order_queue_printer.print_check_in_out(printer,cashier_terminal , booking, table)
end
end
end
Promotion.promo_activate(@sale)
Promotion.promo_activate(@sale_data)
#BillBroadcastJob.perform_later(table)
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
else
from = ""
end
ActionCable.server.broadcast "bill_channel",table: table, from: from
end
ActionCable.server.broadcast "bill_channel",table: table, from: from
end
else
@status = false
@error_message = "No Current Open Shift"
@@ -139,7 +132,7 @@ class Api::BillController < Api::ApiController
is_extra_time = false
extra_time = ''
# params[:order_items].each { |i|
# params[:order_items].each { |i|
# i["item_instance_code"] = i["item_instance_code"].downcase.to_s
# if i["item_instance_code"].include? "ext"
# is_extra_time = true
@@ -175,18 +168,16 @@ class Api::BillController < Api::ApiController
booking_order = BookingOrder.find_by_booking_id(@booking.booking_id)
order = Order.find(booking_order.order_id)
if @booking.sale_id.nil?
@sale = Sale.new
@status, @sale_id = @sale.generate_invoice_from_booking(@booking.booking_id, current_login_employee, cashier, order.source,params[:current_checkin_induties_count])
@sale_data = Sale.find_by_sale_id(@sale_id)
else
if @sale_data = @booking.sale
@status = true
@sale_id = @booking.sale_id
@sale_data = Sale.find_by_sale_id(@sale_id)
elsif @sale_data = Sale.generate_invoice_from_booking(@booking, current_login_employee, cashier, order.source,params[:current_checkin_induties_count])
@status = true
else
@status = false
end
end
# Promotion.promo_activate(@sale)
@status = true
# Promotion.promo_activate(@sale)
# @status = true
# render json: JSON.generate({:status => true, :sale_id => @sale_id, :sale_data => @sale_data.to_json })
else
@status = false
@@ -197,7 +188,7 @@ class Api::BillController < Api::ApiController
@status = false
@error_message = "Create order failed, some error occurred!"
# render json: JSON.generate({:status => false, :error_message => "Create order failed, some error occurred!"})
end
end
else
@status = false
@error_message = "Parameters missing!"