diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index dbbc8351..ff2cf98d 100644 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -8,6 +8,8 @@ class Oqs::PrintController < ApplicationController # order queue stations oqs = assigned_item.order_queue_station + + # Check Printed print_status = assigned_item.print_status == true ? " (Re-Print)" : "" # print when complete click @@ -22,7 +24,7 @@ class Oqs::PrintController < ApplicationController end end - # Print Order Details + # Print Order Details with booking id def print_order_summary unique_code="OrderSummaryPdf" assigned_item_id=params[:id] @@ -32,6 +34,8 @@ class Oqs::PrintController < ApplicationController # order queue stations oqs = assigned_item.order_queue_station + + # Check Printed print_status = assigned_item.print_status == true ? " (Re-Print)" : "" # get dining @@ -41,7 +45,7 @@ class Oqs::PrintController < ApplicationController # 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_summary(oqs, booking, print_status) + order_queue_printer.print_booking_summary(oqs, booking.booking_id, print_status) # update print status for completed same order items assigned_items.each do |ai| diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index 2f0b40aa..2e85ecde 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -16,6 +16,9 @@ class OrderQueueStation < ApplicationRecord oqpbz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id) order_items = order.order_items + + # get dining + booking = Booking.find_by_dining_facility_id(dining.id) #Assign OQS id to order Items oqs_stations.each do |oqs| @@ -31,9 +34,7 @@ class OrderQueueStation < ApplicationRecord # #Same Order_items can appear in two location. # AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) # else - puts pq_item - puts order_item.item_code - puts oqs.station_name + AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) # end @@ -49,11 +50,11 @@ class OrderQueueStation < ApplicationRecord private #Print order_items in 1 slip def print_slip(oqs, order, order_items) - unique_code="OrderSummaryPdf" + unique_code="OrderSummaryPdf" print_settings=PrintSetting.find_by_unique_code(unique_code) order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_summary(oqs,order.order_id) + order_queue_printer.print_order_summary(oqs,order.order_id, print_status="") AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai| # update print status for order items @@ -70,7 +71,7 @@ class OrderQueueStation < ApplicationRecord # 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(oqs,item.order_id, item.item_code ) + order_queue_printer.print_order_item(oqs,item.order_id, item.item_code, print_status="" ) # update print status for completed same order items assigned_order_item.each do |ai| diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index ab6794b2..63666a68 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -4,22 +4,29 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker #Use CUPS service #Generate PDF #Print - order_item = print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) + order_item = print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) + + filename = "tmp/order_item_#{order_item[0].item_name}" + ".pdf" pdf = OrderItemPdf.new(order_item[0], print_status) - pdf.render_file "tmp/order_item.pdf" + pdf.render_file filename + if oqs.print_copy - self.print("tmp/order_item.pdf", oqs.printer_name) - self.print("tmp/order_item.pdf", oqs.printer_name) + self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") + self.print(filename.gsub(".","-copy."), oqs.printer_name) else - self.print("tmp/order_item.pdf", oqs.printer_name) + self.print(filename, oqs.printer_name) end end - def print_order_summary(oqs,booking, print_status) + # Query for per order + def print_order_summary(oqs, order_id, print_status) #Use CUPS service #Generate PDF - #Print - order=print_query('order_summary',booking.booking_id) + #Print + order=print_query('order_summary', order_id) # For Print Per Item if oqs.cut_per_item order.each do|odi| @@ -36,11 +43,51 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # For Print Order Summary else - filename = "tmp/order_summary_#{booking.booking_id}" + ".pdf" + filename = "tmp/order_summary_#{ order_id }" + ".pdf" pdf = OrderSummaryPdf.new(order, print_status) pdf.render_file filename if oqs.print_copy self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") + self.print(filename.gsub(".","-copy."), oqs.printer_name) + else + self.print(filename, oqs.printer_name) + end + end + end + + # Print for orders in booking + def print_booking_summary(oqs, booking_id, print_status) + order=print_query('booking_summary', booking_id) + # For Print Per Item + if oqs.cut_per_item + order.each do|odi| + filename = "tmp/order_item_#{odi.item_name}" + ".pdf" + pdf = OrderItemPdf.new(odi, print_status) + pdf.render_file filename + + if oqs.print_copy + self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") + self.print(filename.gsub(".","-copy."), oqs.printer_name) + else + self.print(filename, oqs.printer_name) + end + end + # For Print Order Summary + else + filename = "tmp/booking_summary_#{ booking_id }" + ".pdf" + pdf = OrderSummaryPdf.new(order, print_status) + pdf.render_file filename + if oqs.print_copy + self.print(filename, oqs.printer_name) + + #For print copy + pdf.render_file filename.gsub(".","-copy.") self.print(filename.gsub(".","-copy."), oqs.printer_name) else self.print(filename, oqs.printer_name) @@ -49,25 +96,33 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # Query for OQS with status - def print_query(type, code) - if type == 'order_item' + def print_query(type, id) + if type == "order_item" OrderItem.select("order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.name as dining") .joins("left join orders ON orders.order_id = order_items.order_id left join booking_orders AS bo ON bo.order_id=order_items.order_id left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("order_items.item_code='" + code + "'") + .where("order_items.item_code = '#{ id }'") .group("order_items.item_code") - else + elsif type == "order_summary" OrderItem.select("order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.name as dining") .joins("left join orders ON orders.order_id = order_items.order_id left join booking_orders AS bo ON bo.order_id=order_items.order_id left join bookings AS b ON b.booking_id = bo.booking_id left join dining_facilities AS df ON df.id = b.dining_facility_id left join customers as cus ON cus.customer_id = orders.customer_id") - .where("b.booking_id='" + code + "'") - # .group("order_items.item_code") + .where("orders.order_id = '#{ id }'") + else + # order summary for booking + OrderItem.select("order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.name as dining") + .joins("left join orders ON orders.order_id = order_items.order_id + left join booking_orders AS bo ON bo.order_id=order_items.order_id + left join bookings AS b ON b.booking_id = bo.booking_id + left join dining_facilities AS df ON df.id = b.dining_facility_id + left join customers as cus ON cus.customer_id = orders.customer_id") + .where("b.booking_id = '#{ id }'") end end