merge with r-19
This commit is contained in:
@@ -26,25 +26,16 @@ class Order < ApplicationRecord
|
||||
def generate
|
||||
booking = nil
|
||||
if self.new_booking
|
||||
if self.table_id.to_i > 0
|
||||
table_id = self.table_id
|
||||
else
|
||||
table_id = nil
|
||||
end
|
||||
#add extra time
|
||||
if self.is_extra_time && self.extra_time
|
||||
booking = Booking.create({:dining_facility_id => table_id,:type => "TableBooking",
|
||||
:checkin_at => Time.now.utc,:checkout_at => Time.now.utc + self.extra_time.to_i,
|
||||
:checkin_at => Time.now.utc, :checkout_at => Time.now.utc + self.extra_time.to_i,
|
||||
:checkin_by => self.employee_name,
|
||||
:booking_status => "assign",
|
||||
:customer_id => self.customer_id,
|
||||
:shop_code=>self.shop_code})
|
||||
:booking_status => "assign" })
|
||||
else
|
||||
booking = Booking.create({:dining_facility_id => table_id,:type => "TableBooking",
|
||||
:checkin_at => Time.now.utc, :checkin_by => self.employee_name,
|
||||
:booking_status => "assign",
|
||||
:customer_id => self.customer_id,
|
||||
:shop_code=>self.shop_code })
|
||||
:booking_status => "assign" })
|
||||
end
|
||||
#end extra time
|
||||
|
||||
@@ -54,7 +45,6 @@ class Order < ApplicationRecord
|
||||
# table.status = "occupied"
|
||||
# table.save
|
||||
end
|
||||
|
||||
else
|
||||
booking = Booking.find(self.booking_id)
|
||||
#add extra time
|
||||
@@ -74,7 +64,7 @@ class Order < ApplicationRecord
|
||||
|
||||
self.adding_line_items
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
|
||||
booking.orders << self
|
||||
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
@@ -111,7 +101,7 @@ class Order < ApplicationRecord
|
||||
|
||||
self.adding_line_items
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
|
||||
booking.orders << self
|
||||
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
@@ -122,7 +112,6 @@ class Order < ApplicationRecord
|
||||
send_order_broadcast(booking)
|
||||
|
||||
return true, booking
|
||||
|
||||
end
|
||||
|
||||
return false
|
||||
@@ -137,49 +126,36 @@ class Order < ApplicationRecord
|
||||
def adding_line_items
|
||||
if self.items
|
||||
#re-order to
|
||||
ordered_list = re_order_items(self.items)
|
||||
|
||||
items = re_order_items(self.items)
|
||||
#loop to add all items to order
|
||||
ordered_list.each do |item|
|
||||
item_instance_codes = items.map { |i| i[:item_instance_code] }
|
||||
menu_items = MenuItem.search_by_item_code(item_instance_codes)
|
||||
menu_items += Product.search_by_product_code(item_instance_codes) if menu_items.length < item_instance_codes.length
|
||||
|
||||
menu_item = MenuItem.search_by_item_code(item[:item_instance_code])
|
||||
|
||||
# For Product while item code not in menu item
|
||||
if menu_item.nil?
|
||||
menu_item = Product.search_by_product_code(item[:item_instance_code])
|
||||
end
|
||||
|
||||
#if (!menu_item.nil?)
|
||||
# Rails.logger.debug menu_item
|
||||
set_order_items = Array.new
|
||||
##If menu Item set item - must add child items to order as well, where price is only take from menu_item
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (item.include? 'sub_items') || (item.include? :sub_items)
|
||||
item[:sub_items].each do |si|
|
||||
# Retrive instance's Price
|
||||
set_item = MenuItem.search_by_item_code(si[:item_instance_code])
|
||||
set_order_items.push({"item_instance_code"=>si[:item_instance_code], "item_instance_name"=>set_item[:name], "quantity"=>si[:quantity], "price"=>set_item[:price], "options"=>si[:options]})
|
||||
end
|
||||
end
|
||||
set_order_items = set_order_items.to_json
|
||||
else
|
||||
set_order_items = nil
|
||||
items.each do |order_item|
|
||||
menu_item = menu_items.find { |i| i[:item_instance_code].downcase == order_item[:item_instance_code].downcase }
|
||||
sub_order_items = []
|
||||
if order_item[:sub_items].length > 0
|
||||
sub_menu_items = MenuItem.search_by_item_code(order_item[:sub_items].map { |i| i[:item_instance_code] })
|
||||
order_item[:sub_items].each do |sub_order_item|
|
||||
sub_menu_item = sub_menu_items.find { |i| i[:item_instance_code] == sub_order_item[:item_instance_code] }
|
||||
sub_order_items << { item_instance_code: sub_order_item[:item_instance_code], item_instance_name: sub_menu_item[:name], quantity: sub_order_item[:quantity], price: sub_menu_item[:price], options: sub_order_item[:options] }
|
||||
end
|
||||
|
||||
# not insert with price 0
|
||||
# puts item[:price]
|
||||
# puts item
|
||||
# if(item[:price] != 0 )
|
||||
# OrderItem.processs_item(menu_item[:item_code], menu_item[:name], menu_item[:account_id],
|
||||
# item[:quantity],menu_item[:price], item[:options], set_order_items, self.id,
|
||||
# self.employee_name)
|
||||
# end
|
||||
|
||||
OrderItem.processs_item(menu_item[:item_code], item[:item_instance_code], menu_item[:name], menu_item[:alt_name], menu_item[:account_id],
|
||||
item[:quantity],menu_item[:price], item[:options], set_order_items, self.id,
|
||||
self.employee_name, menu_item[:taxable])
|
||||
|
||||
#end
|
||||
end
|
||||
sub_order_items = sub_order_items.to_json
|
||||
self.order_items.build({
|
||||
item_code: menu_item[:item_code],
|
||||
item_instance_code: order_item[:item_instance_code],
|
||||
item_name: menu_item[:name],
|
||||
alt_name: menu_item[:alt_name],
|
||||
account_id: menu_item[:account_id],
|
||||
qty: order_item[:quantity],
|
||||
price: menu_item[:price],
|
||||
options: order_item[:options],
|
||||
set_menu_items: sub_order_items,
|
||||
item_order_by: employee_name,
|
||||
taxable: menu_item[:taxable]
|
||||
})
|
||||
end
|
||||
|
||||
self.item_count = self.order_items.count
|
||||
@@ -190,7 +166,6 @@ class Order < ApplicationRecord
|
||||
self.errors.add(:order_items, :blank, message: "Order items cannot be blank")
|
||||
return false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def update_items_status_to_billed(items)
|
||||
@@ -211,72 +186,14 @@ class Order < ApplicationRecord
|
||||
end
|
||||
|
||||
def default_values
|
||||
self.customer = Customer.find(1) if self.customer_id.nil?
|
||||
self.customer = Customer.walkin if self.customer_id.nil?
|
||||
self.source = "emenu" if self.source.nil?
|
||||
self.order_type = "dine-in" if self.order_type.nil?
|
||||
end
|
||||
|
||||
protected
|
||||
def re_order_items(form_items) #reorder inputs items as parents and child
|
||||
parent_id = Array.new
|
||||
parents = Array.new
|
||||
parents_and_children_items = Array.new
|
||||
|
||||
new_items_list = Array.new
|
||||
|
||||
form_items.each do |parent|
|
||||
if !parent[:parent_order_item_id].nil?
|
||||
if (!parent_id.include?(parent[:parent_order_item_id]))
|
||||
parent_id.push(parent[:parent_order_item_id])
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Rails.logger.debug "Parent Id count -> " + parent_id.count.to_s
|
||||
|
||||
|
||||
parent_id.each do |pid|
|
||||
form_items.each do |item|
|
||||
Rails.logger.debug "Adding - Parents -> " + pid.to_s + " - " + item[:order_item_id].to_s
|
||||
if (pid == item[:order_item_id])
|
||||
parents.push(item)
|
||||
end
|
||||
end
|
||||
end
|
||||
Rails.logger.debug "Parents count -> " + parents.count.to_s
|
||||
|
||||
parents.each do |parent|
|
||||
children = Array.new
|
||||
form_items.each do |item|
|
||||
if (parent[:order_item_id] == item[:parent_order_item_id] )
|
||||
children.push(item)
|
||||
#Items to remove for new list
|
||||
parents_and_children_items.push(item)
|
||||
end
|
||||
end
|
||||
parent[:sub_items] = children
|
||||
end
|
||||
Rails.logger.debug "Parent/children Items to remove -> " + parents_and_children_items.count.to_s
|
||||
|
||||
#Remove process items
|
||||
#c = a.reject{ |e| b.include? e }
|
||||
|
||||
new_items_list = form_items - parents_and_children_items
|
||||
|
||||
|
||||
Rails.logger.debug "New list count -> " + new_items_list.count.to_s
|
||||
|
||||
#Add parent to the list
|
||||
#new_items_list = new_items_list + parents
|
||||
|
||||
Rails.logger.debug "Re-Order List (Parent)-"
|
||||
|
||||
Rails.logger.debug parents
|
||||
|
||||
Rails.logger.debug "Re-Order List -"
|
||||
Rails.logger.debug new_items_list
|
||||
|
||||
return new_items_list
|
||||
def re_order_items(items) #reorder inputs items as parents and child
|
||||
new_items = items.select { |i| i[:parent_order_item_id].blank? }.map { |x| x[:sub_items] = items.select { |y| x[:order_item_id] == y[:parent_order_item_id] }; x }
|
||||
end
|
||||
|
||||
|
||||
@@ -485,66 +402,31 @@ class Order < ApplicationRecord
|
||||
end
|
||||
|
||||
#Process order items and send to order queue
|
||||
def self.process_order_queue(order_id,table_id,source)
|
||||
def self.process_order_queue(order_id, table_id, source)
|
||||
print_status = nil
|
||||
cup_status = nil
|
||||
|
||||
#Send to background job for processing
|
||||
order = Order.find(order_id)
|
||||
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||
#Send to background job for processing
|
||||
order = Order.find(order_id)
|
||||
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
cup_status = `#{"sudo service cups status"}`
|
||||
print_status = check_cup_status(cup_status)
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
if Printer::PrinterWorker.printers.blank?
|
||||
msg = 'Print Error ! Please contact to service'
|
||||
ActionCable.server.broadcast "call_waiter_channel", table: msg, time:'print_error', from: ''
|
||||
end
|
||||
end
|
||||
|
||||
if print_status
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, source)
|
||||
end
|
||||
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||
end
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
cup_start = `#{"sudo service cups start"}`
|
||||
cup_status = `#{"sudo service cups status"}`
|
||||
print_status = check_cup_status(cup_status)
|
||||
end
|
||||
|
||||
if print_status
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, source)
|
||||
end
|
||||
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||
end
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
|
||||
msg = ' Print Error ! Please contact to service'
|
||||
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
|
||||
end
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, source)
|
||||
end
|
||||
assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||
end
|
||||
end
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, source)
|
||||
end
|
||||
assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
ActionCable.server.broadcast "order_queue_station_channel", order: assign_order
|
||||
end
|
||||
end
|
||||
|
||||
def self.check_cup_status(status)
|
||||
|
||||
Reference in New Issue
Block a user