split bill for order item

This commit is contained in:
phyusin
2018-02-06 16:17:08 +06:30
parent 0780744377
commit f093f1f0a7
3 changed files with 140 additions and 60 deletions

View File

@@ -6,21 +6,31 @@ class Origami::SplitBillController < BaseOrigamiController
@table = DiningFacility.find(dining_id)
@booking = @table.get_booking
@order_items = Array.new
@sale_data = Array.new
table_bookings = Booking.where("dining_facility_id = #{dining_id} and sale_id IS NOT NULL")
if !table_bookings.nil?
table_bookings.each do |table_booking|
@sale_data.push(table_booking.sale)
end
end
if @booking
@booking.booking_orders.each do |booking_order|
@order = Order.find(booking_order.order_id)
if (@order.status == "new")
@order.order_items.each do |item|
@order_items.push(item)
end
end
end
@booking.booking_orders.each do |booking_order|
@order = Order.find(booking_order.order_id)
if (@order.status == "new")
@order.order_items.each do |item|
@order_items.push(item)
end
end
end
else
@booking = nil
end
end
def create
order_ids = params[:order_ids]
order_items = JSON.parse(params[:order_items])
# byebug
status = false
@@ -59,36 +69,65 @@ class Origami::SplitBillController < BaseOrigamiController
:checkin_at => Time.now.utc, :checkin_by => current_user.name,
:booking_status => "assign" })
customer = Customer.find(params[:customer_id])
order_type = "dine_in"
if !customer.nil?
if customer.customer_type == "Takeaway"
order_type = "takeaway"
elsif customer.customer_type == "Delivery"
order_type = "delivery"
order_item_count = 0
order_id = nil
order_items.each do |order_item|
order_item_count = 0
order = Order.find(order_item["order_id"])
if order.order_items.count == 1
order_id = order.id
break
else
order_item_count += 1
end
end
# begin
order = Order.new
order.date = Time.now.utc
order.source = "cashier"
order.order_type = order_type
order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile
order.item_count = order_items.count
order.status = "new"
order.table_id = params[:dining_id] # this is dining facilities's id
order.waiters = current_user.name
order.employee_name = current_user.name
order.guest_info = nil
order.save
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id})
if !order_id.nil?
BookingOrder.find_by_order_id(order_id).delete
order_items.each do |order_item|
orderItem = OrderItem.find(order_item["id"])
orderItem.order_id = order.order_id
orderItem.save
end
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_id})
order_items.each do |order_item|
orderItem = OrderItem.find(order_item["id"])
orderItem.order_id = order_id
orderItem.save!
end
else
if order_ids.count == 1 && order_item_count == 1
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_ids[0]})
else
customer = Customer.find(params[:customer_id])
order_type = "dine_in"
if !customer.nil?
if customer.customer_type == "Takeaway"
order_type = "takeaway"
elsif customer.customer_type == "Delivery"
order_type = "delivery"
end
end
# begin
order = Order.new
order.source = "cashier"
order.order_type = order_type
order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile
order.item_count = order_items.count
order.status = "new"
order.table_id = params[:dining_id] # this is dining facilities's id
order.waiters = current_user.name
order.employee_name = current_user.name
order.guest_info = nil
order.save!
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id})
order_items.each do |order_item|
orderItem = OrderItem.find(order_item["id"])
orderItem.order_id = order.order_id
orderItem.save!
end
end
end
sale = Sale.new
status, sale_id = sale.generate_invoice_from_booking(booking.booking_id, current_user, get_cashier_by_terminal)