From 9efd54e68b7528a00995547feda942c7fe860be7 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Thu, 1 Feb 2018 15:30:30 +0630 Subject: [PATCH 1/6] update remove job from cable and cup control in print --- app/controllers/api/bill_controller.rb | 3 +- .../api/call_waiters_controller.rb | 3 +- app/models/dining_facility.rb | 10 +++- app/models/order.rb | 13 ++++- app/models/order_queue_station.rb | 47 +++++++++++++++++-- app/models/sale.rb | 39 ++++++++++++++- app/models/sale_payment.rb | 5 +- config/schedule.rb | 2 +- 8 files changed, 110 insertions(+), 12 deletions(-) diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 387b7bf8..4b58e52d 100755 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -46,7 +46,8 @@ class Api::BillController < Api::ApiController Promotion.promo_activate(@sale) - BillBroadcastJob.perform_later(table) + #BillBroadcastJob.perform_later(table) + ActionCable.server.broadcast "bill_channel",table: table else @status = false @error_message = "No Current Open Shift" diff --git a/app/controllers/api/call_waiters_controller.rb b/app/controllers/api/call_waiters_controller.rb index bfb1023a..7cf80a5d 100644 --- a/app/controllers/api/call_waiters_controller.rb +++ b/app/controllers/api/call_waiters_controller.rb @@ -5,7 +5,8 @@ class Api::CallWaitersController < ActionController::API @table_id = params[:dining_id] @time = params[:time] @table = DiningFacility.find(@table_id) - CallWaiterJob.perform_later(@table,@time) + # CallWaiterJob.perform_later(@table,@time) + ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time # get printer info @shop = Shop::ShopDetail diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index c4da3475..c897b278 100755 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -155,6 +155,14 @@ class DiningFacility < ApplicationRecord def self.check_in_booking(table_id) table = DiningFacility.find(table_id) #Send to background job for processing - CheckInBookingJob.perform_later(table) + # CheckInBookingJob.perform_later(table) + ActionCable.server.broadcast "check_in_booking_channel",table: table + end + + def self.checkin_time + table = DiningFacility.get_checkin_booking + if table.length > 0 + ActionCable.server.broadcast "checkin_channel",table: table + end end end diff --git a/app/models/order.rb b/app/models/order.rb index 6c22cb92..16edc1fa 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -279,6 +279,16 @@ class Order < ApplicationRecord def process_order_queue #Send to background job for processing OrderQueueProcessorJob.perform_later(self.id, self.table_id) + # order = Order.find(order_id) + + # #Execute orders and send to order stations + # if order + # oqs = OrderQueueStation.new + # oqs.process_order(order, table_id) + # end + + # assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) + # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order end @@ -287,7 +297,8 @@ class Order < ApplicationRecord table = DiningFacility.find(booking.dining_facility_id) type = 'order' #Send to background job for processing - OrderBroadcastJob.perform_later(table,type) + # OrderBroadcastJob.perform_later(table,type) + ActionCable.server.broadcast "order_channel",table: table,type:type end #Origami: Cashier : to view order Table diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index 2be68fb3..aea44395 100755 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -123,9 +123,25 @@ class OrderQueueStation < ApplicationRecord end print_settings=PrintSetting.find_by_unique_code(unique_code) - order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="") + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + + if print_status + order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="") + else + cup_start = `#{"sudo service cups start"}` + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + + if print_status + order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="") + + end + end + AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai| # update print status for order items ai.print_status=true @@ -159,8 +175,23 @@ class OrderQueueStation < ApplicationRecord order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first() # print when complete click print_settings=PrintSetting.find_by_unique_code(unique_code) - order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" ) + + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + + if print_status + order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" ) + else + cup_start = `#{"sudo service cups start"}` + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + + if print_status + order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" ) + end + end # update print status for completed same order items assigned_order_item.each do |ai| @@ -168,4 +199,12 @@ class OrderQueueStation < ApplicationRecord ai.save end end + + def check_cup_status(status) + if status.include? "Active: active (running)" || "Active: active (exited)" #"Cup Server is already running" + return true + end + return false + end + end diff --git a/app/models/sale.rb b/app/models/sale.rb index f6aed95e..49f126af 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -128,7 +128,9 @@ class Sale < ApplicationRecord booking.checkout_by = requested_by.name booking.save - InventoryJob.perform_now(self.id) + # InventoryJob.perform_now(self.id) + saleObj = Sale.find(self.id) + InventoryDefinition.calculate_product_count(saleObj) return true, self.id end @@ -137,6 +139,41 @@ class Sale < ApplicationRecord end + #fOR Quick Service pay and create + def self.request_bill(order,current_user,current_login_employee) + @sale = Sale.new + sale_order=SaleOrder.new + + if shift = ShiftSale.current_open_shift(current_user.id) + order_id = order.order_id # order_id + bk_order = BookingOrder.find_by_order_id(order_id) + check_booking = Booking.find_by_booking_id(bk_order.booking_id) + + if check_booking.sale_id.nil? + # Create Sale if it doesn't exist + # puts "current_login_employee" + # puts current_login_employee.name + @status, @sale_id = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee, cashier = nil) + @sale_data = Sale.find_by_sale_id(@sale_id) + @sale_items = SaleItem.where("sale_id=?",@sale_id) + else + @sale_data = Sale.find_by_sale_id(check_booking.sale_id) + @sale_items = SaleItem.where("sale_id=?",@sale_data.sale_id) + end + + # Bind shift sale id to sale + @sale_data.shift_sale_id = shift.id + @sale_data.save + + # Promotion Activation + Promotion.promo_activate(@sale) + @status = true + return @status, @sale + else + @status = false + @message = "No Current Open Shift for This Employee" + end + end #This is when spilt bill is request - then we cannot link order to invoice #Cos there will be multiple orders - and items are spilt from there. #Unless order is spilt by then it is possible. diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index ed1b9170..9ba5a3bb 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -335,7 +335,7 @@ class SalePayment < ApplicationRecord #record an payment in sale-audit remark = "#{response} Rebate- for Customer #{self.sale.customer_id} | Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} " - sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1) + sale_audit = SaleAudit.record_paymal(sObj.sale_id, remark, 1) if !response.nil? if response["status"] == true @@ -408,7 +408,8 @@ class SalePayment < ApplicationRecord type = 'payment' #Send to background job for processing - OrderBroadcastJob.perform_later(table,type) + # OrderBroadcastJob.perform_later(table,type) + ActionCable.server.broadcast "order_channel",table: table,type:type end end diff --git a/config/schedule.rb b/config/schedule.rb index 17f336a0..4b3f6a3b 100755 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -11,5 +11,5 @@ every 30.minutes do end every 1.minutes do - runner "CheckinJob.perform" + runner "DiningFacility.checkin_time" end \ No newline at end of file From 6657c11122c3bc5a7c74e4927cd14a98b34746a9 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Thu, 1 Feb 2018 17:14:34 +0630 Subject: [PATCH 2/6] update cups restart for order --- .../javascripts/channels/call_waiter.js | 22 +++++++-- app/models/order.rb | 35 ++++++++++---- app/models/order_queue_station.rb | 47 ++----------------- 3 files changed, 46 insertions(+), 58 deletions(-) diff --git a/app/assets/javascripts/channels/call_waiter.js b/app/assets/javascripts/channels/call_waiter.js index 941a6359..f0a804a2 100644 --- a/app/assets/javascripts/channels/call_waiter.js +++ b/app/assets/javascripts/channels/call_waiter.js @@ -7,15 +7,27 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', { received: function(data) { table = data.table + time = data.time // for Notificaiotn message var element = "#notify-wrapper" - var placementFrom = "top"; - var placementAlign = "center"; var animateEnter = ""; var animateExit = ""; - var colorName = "alert-warning"; - var text = " Calling Waiter
"+table.name ; + + if (time == 'print_error') { + var colorName = "alert-danger"; + var placementFrom = "center"; + var placementAlign = "center"; + var text = " Hello
"+table ; + style ="" + }else{ + var colorName = "alert-warning"; + var placementFrom = "top"; + var placementAlign = "center"; + var text = " Calling Waiter
"+table.name ; + style ="width:180px !important;" + } + if (text != null || colorName != null){ showNotification(element, colorName, text, placementFrom, placementAlign, animateEnter, animateExit); @@ -43,7 +55,7 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', { enter: animateEnter, exit: animateExit }, - template: '