class Printer::OrderQueuePrinter < Printer::PrinterWorker def print_order_item(oqs,order_id, item_code, print_status, options="") #Use CUPS service #Generate PDF #Print 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" # check for item not to show if order_item[0].price != 0 pdf = OrderItemPdf.new(order_item[0], print_status, options) 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 # Query for per order def print_order_summary(oqs, order_id, order_items, print_status) #Use CUPS service #Generate PDF #Print order=print_query('order_summary', order_id) # For Print Per Item if oqs.cut_per_item order_items.each do|odi| filename = "tmp/order_item_#{odi.item_name}" + ".pdf" # For Item Options options = odi.options == "[]"? "" : odi.options # check for item not to show if odi.price != 0 || odi.price != 10 pdf = OrderItemPdf.new(odi, print_status, options) # pdf.render_file "tmp/order_item.pdf" pdf.render_file filename if oqs.print_copy self.print(filename, oqs.printer_name) self.print(filename.gsub(".","-copy."), oqs.printer_name) else self.print(filename, oqs.printer_name) end end end # For Print Order Summary else filename = "tmp/order_summary_#{ order_id }" + ".pdf" pdf = OrderSummaryPdf.new(order, print_status, order_items) 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" # For Item Options options = odi.options == "[]"? "" : odi.options # check for item not to show if odi.price != 0 pdf = OrderItemPdf.new(odi, print_status, options) 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 # 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) end end end # Query for OQS with status def print_query(type, id) if type == "order_item" OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.type, 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 = '#{ id }' AND order_items.price != 0") .group("order_items.item_code") elsif type == "order_summary" OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.type, 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("orders.order_id = '#{ id }' AND order_items.price != 0") .group("order_items.order_items_id") else # order summary for booking OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.type, 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 }' AND order_items.price != 0") end end end