From 7bf2499e83ffb4c4691ec088d0bfa042c0c02a4a Mon Sep 17 00:00:00 2001 From: Yan Date: Thu, 22 Jun 2017 17:32:13 +0630 Subject: [PATCH] add options in oqs --- app/assets/javascripts/OQS.js | 5 ++-- app/controllers/crm/customers_controller.rb | 6 ++-- app/controllers/oqs/print_controller.rb | 27 +++++++++-------- .../origami/request_bills_controller.rb | 2 +- app/models/printer/order_queue_printer.rb | 20 ++++++++----- app/pdf/order_item_pdf.rb | 30 ++++++++----------- app/pdf/order_summary_pdf.rb | 12 ++++++++ app/views/oqs/home/index.html.erb | 4 +-- 8 files changed, 62 insertions(+), 44 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 87121ea3..4c8300e2 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -111,8 +111,9 @@ $(document).ready(function(){ // Print Order Item $('#print_order_item').on('click',function(){ - var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); - var params = { 'id':assigned_item_id }; + var assigned_item_id = $('.selected-item').children('.card-block').children('.assigned-order-item').text(); + var options = $('.selected-item').children('.card-block').find('.item-options').text(); + var params = { 'options':options }; $.ajax({ type: 'GET', url: '/oqs/print/print/'+assigned_item_id, diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index ce585686..17012ad1 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -93,7 +93,8 @@ class Crm::CustomersController < BaseCrmController :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' - } + }, + :timeout => 10 ) rescue Net::OpenTimeout response = { status: false } @@ -163,7 +164,8 @@ end :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' - } + }, + :timeout => 10 ) rescue Net::OpenTimeout response = { status: false } diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index ff2cf98d..f3fd5675 100644 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -2,9 +2,10 @@ class Oqs::PrintController < ApplicationController # Print Order Item def print unique_code="OrderItemPdf" - assigned_item_id=params[:id] - assigned_item=AssignedOrderItem.find(assigned_item_id) - assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + assigned_item_id = params[:id] + options = params[:options] + assigned_item = AssignedOrderItem.find(assigned_item_id) + assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); # order queue stations oqs = assigned_item.order_queue_station @@ -13,9 +14,9 @@ class Oqs::PrintController < ApplicationController print_status = assigned_item.print_status == true ? " (Re-Print)" : "" # 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, assigned_item.order_id, assigned_item.item_code, print_status ) + print_settings = PrintSetting.find_by_unique_code(unique_code) + order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_item(oqs, assigned_item.order_id, assigned_item.item_code, print_status, options ) # update print status for completed same order items assigned_items.each do |ai| @@ -27,10 +28,10 @@ class Oqs::PrintController < ApplicationController # Print Order Details with booking id def print_order_summary unique_code="OrderSummaryPdf" - assigned_item_id=params[:id] - table_name=params[:table_name] - assigned_item=AssignedOrderItem.find(assigned_item_id) - assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + assigned_item_id = params[:id] + table_name = params[:table_name] + assigned_item = AssignedOrderItem.find(assigned_item_id) + assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); # order queue stations oqs = assigned_item.order_queue_station @@ -43,13 +44,13 @@ class Oqs::PrintController < ApplicationController booking = Booking.find_by_dining_facility_id(dining.id) # print when complete click - print_settings=PrintSetting.find_by_unique_code(unique_code) - order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) + print_settings = PrintSetting.find_by_unique_code(unique_code) + order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) 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| - ai.print_status=true + ai.print_status = true ai.save end end diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index 37eef687..93453ffc 100644 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -22,7 +22,7 @@ class Origami::RequestBillsController < BaseOrigamiController unique_code = "ReceiptBillPdf" # customer= Customer.where('customer_id=' +.customer_id) - customer= Customer.find( @sale_data.customer_id) + customer= Customer.find(@sale_data.customer_id) # get member information member_info = Customer.get_member_account(customer) # get printer info diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index 63666a68..f8fb5027 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -1,13 +1,13 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker - def print_order_item(oqs,order_id, item_code, print_status) + 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" - pdf = OrderItemPdf.new(order_item[0], print_status) + pdf = OrderItemPdf.new(order_item[0], print_status, options) pdf.render_file filename if oqs.print_copy @@ -31,7 +31,9 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker if oqs.cut_per_item order.each do|odi| filename = "tmp/order_item_#{odi.item_name}" + ".pdf" - pdf = OrderItemPdf.new(odi, print_status) + # For Item Options + options = odi.options == "[]"? "" : odi.options + pdf = OrderItemPdf.new(odi, print_status, options) # pdf.render_file "tmp/order_item.pdf" pdf.render_file filename if oqs.print_copy @@ -65,7 +67,10 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker if oqs.cut_per_item order.each do|odi| filename = "tmp/order_item_#{odi.item_name}" + ".pdf" - pdf = OrderItemPdf.new(odi, print_status) + # For Item Options + options = odi.options == "[]"? "" : odi.options + pdf = OrderItemPdf.new(odi, print_status, options) + pdf.render_file filename if oqs.print_copy @@ -98,7 +103,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker # Query for OQS with status 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") + OrderItem.select("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.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 @@ -107,16 +112,17 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker .where("order_items.item_code = '#{ id }'") .group("order_items.item_code") 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") + OrderItem.select("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.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 }'") + .group("order_items.order_items_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") + OrderItem.select("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.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 diff --git a/app/pdf/order_item_pdf.rb b/app/pdf/order_item_pdf.rb index e5c5395f..749a8a16 100644 --- a/app/pdf/order_item_pdf.rb +++ b/app/pdf/order_item_pdf.rb @@ -1,6 +1,6 @@ class OrderItemPdf < Prawn::Document attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width - def initialize(order_item, print_status) + def initialize(order_item, print_status, options) self.page_width = 210 self.page_height = 2500 self.margin = 5 @@ -29,7 +29,7 @@ class OrderItemPdf < Prawn::Document order_info(order_item.order_by,order_item.order_at) # order items - order_items(order_item) + order_items(order_item, options) end # Write Order Information to PDF @@ -52,23 +52,11 @@ class OrderItemPdf < Prawn::Document end # Write Order items to PDF - def order_items(order_item) + def order_items(order_item, options) y_position = cursor - # No Need for Order Item - # bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do - # text "Item", :size => self.item_font_size,:align => :left - # end - - # bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do - # text "Qty", :size => self.item_font_size,:align => :right - # end - - # stroke_horizontal_rule - # move_down 5 - #Add Order Item - add_order_items(order_item) + add_order_items(order_item, options) dash(1, :space => 1, :phase => 1) stroke_horizontal_line 0, (self.page_width - self.margin) @@ -76,7 +64,7 @@ class OrderItemPdf < Prawn::Document end # Add order items under order info - def add_order_items(order_item) + def add_order_items(order_item, options) y_position = cursor move_down 5 @@ -91,6 +79,14 @@ class OrderItemPdf < Prawn::Document move_down 5 + # add option + y_position = cursor + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "#{options}", :size => self.item_font_size,:align => :left + end + + move_down 5 + end end diff --git a/app/pdf/order_summary_pdf.rb b/app/pdf/order_summary_pdf.rb index a1459512..b9c1f6fe 100644 --- a/app/pdf/order_summary_pdf.rb +++ b/app/pdf/order_summary_pdf.rb @@ -92,6 +92,18 @@ class OrderSummaryPdf < Prawn::Document end move_down 5 + + # add option + options = odi.options == "[]"? "" : odi.options + + if options != "" + y_position = cursor + bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do + text "#{options}", :size => self.item_font_size,:align => :left + end + + move_down 5 + end end end diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index e38c859e..85858a02 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -50,7 +50,7 @@ ] -

<%= qid.options %>

+

<%= qid.options == "[]"? "" : qid.options %>

Order at @@ -100,7 +100,7 @@ ] -

<%= qid.options %>

+

<%= qid.options == "[]"? "" : qid.options %>

Order at