From 9ff5122b72f90a45d4703d5ce317655eca47e561 Mon Sep 17 00:00:00 2001 From: Nweni Date: Fri, 16 Jun 2017 18:21:57 +0630 Subject: [PATCH 01/31] Update --- app/views/origami/home/index.html.erb | 20 ++++++++++---------- lib/tasks/clear_data.rake | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 9f6cd7d6..ad09225b 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -82,10 +82,10 @@
-
+
<% @booking_orders.each do |bko| - # No Show completed + # No Show completed if bko.sale_status == 'completed' next end @@ -146,7 +146,7 @@
<% @booking_rooms.each do |rmo| - # No Show completed + # No Show completed if rmo.sale_status == 'completed' next end @@ -207,8 +207,8 @@
<% - @orders.each do |odr| - # No Show completed + @orders.each do |odr| + # No Show completed if odr.sale_status == 'completed' next end @@ -289,7 +289,7 @@

Customer :

- +
@@ -300,14 +300,14 @@ - + <% # For Sale Items sub_total = 0 if @selected_item_type == "Sale" @selected_item.sale_items.each do |sale_item| sub_total += (sale_item.qty*sale_item.unit_price) - %> + %> @@ -319,7 +319,7 @@ %> <% - # For Order Items + # For Order Items if @selected_item_type == "Order" @selected_item.order_items.each do |order_item| sub_total += (order_item.qty*order_item.unit_price) @@ -363,7 +363,7 @@ - +
Price
<%= sale_item.product_name %> <%= sale_item.qty %><%=@selected_item.grand_total rescue 0%>
diff --git a/lib/tasks/clear_data.rake b/lib/tasks/clear_data.rake index 552c2a60..9d4e0ddd 100644 --- a/lib/tasks/clear_data.rake +++ b/lib/tasks/clear_data.rake @@ -11,7 +11,7 @@ namespace :clear do Sale.delete_all SaleAudit.delete_all SalePayment.delete_all - + DiningFacility.update_all(status:'available') puts "Clear Data Done." end end From 29b76adba72e3a66c3904860c1ad29935600ff95 Mon Sep 17 00:00:00 2001 From: Nweni Date: Sat, 17 Jun 2017 11:35:17 +0630 Subject: [PATCH 02/31] Update --- app/controllers/origami/home_controller.rb | 30 +++++++++---------- app/models/order.rb | 4 +-- app/views/origami/home/index.html.erb | 16 +++++----- .../origami/redeem_payments/index.html.erb | 7 +++-- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index dbde3293..aac40da5 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -1,8 +1,8 @@ class Origami::HomeController < BaseOrigamiController def index if params[:booking_id] != nil - type=params[:booking_id].split('-')[0]; - # Sale + type=params[:booking_id].split('-')[0]; + # Sale if type == "SAL" @selected_item = Sale.find(params[:booking_id]) @selected_item_type="Sale" @@ -10,23 +10,23 @@ class Origami::HomeController < BaseOrigamiController else @selected_item = Order.find(params[:booking_id]) @selected_item_type="Order" - end - end + end + end @completed_orders = Order.get_completed_order() @booking_orders = Order.get_booking_order_table() - @booking_rooms = Order.get_booking_order_rooms() + @booking_rooms = Order.get_booking_order_rooms() @orders = Order.get_orders() - end + end def item_show selection(params[:booking_id],1) - end + end def selection(selected_id, is_ajax) str = [] - type=selected_id.split('-')[0]; - # Sale + type=selected_id.split('-')[0]; + # Sale if type == "SAL" @order_details = SaleItem.get_order_items_details(params[:booking_id]) @order_details.each do |ord_detail| @@ -37,8 +37,8 @@ class Origami::HomeController < BaseOrigamiController @order_details = OrderItem.get_order_items_details(params[:booking_id]) @order_details.each do |ord_detail| str.push(ord_detail) - end - end + end + end if is_ajax == 1 render :json => str.to_json else @@ -54,21 +54,21 @@ class Origami::HomeController < BaseOrigamiController else sale = Order.find(params[:sale_id]) end - + status = sale.update_attributes(customer_id: params[:customer_id]) - + if status == true render json: JSON.generate({:status => true}) else render json: JSON.generate({:status => false, :error_message => "Record not found"}) - end + end end def get_customer @customer = Customer.find(params[:customer_id]) - + response = Customer.get_member_account(@customer) respond_to do |format| diff --git a/app/models/order.rb b/app/models/order.rb index f3ae798c..9c65304b 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -231,7 +231,7 @@ class Order < ApplicationRecord .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("(orders.status = 'new' or orders.status = 'billed') and (dining_facilities.type=? and dining_facilities.is_active=?)",DiningFacility::TABLE_TYPE,true) - .group("bookings.booking_id") + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id") # For PG # booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true # sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id @@ -262,7 +262,7 @@ class Order < ApplicationRecord .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("(orders.status = 'new' or orders.status = 'billed') and (dining_facilities.type=? and dining_facilities.is_active=?)",DiningFacility::ROOM_TYPE,true) - .group("bookings.booking_id") + .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.customer_id,orders.order_id") # For PG # booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true # sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.customer_id,orders.order_id diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 05d0f28d..ca15cc4c 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -354,14 +354,14 @@ Discount: (<%=@selected_item.total_discount rescue 0%>) - - Tax: - <%=@selected_item.total_tax rescue 0%> - - - Grand Total: - <%=@selected_item.grand_total rescue 0%> - + + Tax: + <%=@selected_item.total_tax rescue 0%> + + + Grand Total: + <%=@selected_item.grand_total rescue 0%> + diff --git a/app/views/origami/redeem_payments/index.html.erb b/app/views/origami/redeem_payments/index.html.erb index 0991e562..edca5471 100644 --- a/app/views/origami/redeem_payments/index.html.erb +++ b/app/views/origami/redeem_payments/index.html.erb @@ -21,7 +21,7 @@ <% end %>
- +

@@ -66,7 +66,7 @@
00
-
Nett
+
Nett
Del
Clr
@@ -123,6 +123,9 @@ $(document).on('click', '.cashier_number', function(event){ case 'del' : var cash=$('#used_amount').text(); $('#used_amount').text(cash.substr(0,cash.length-1)); + case 'nett': + alert($('#valid_amount').text()) + $('#used_amount').text($('#valid_amount').text()); break; } From 1d2fb7b6ab8d45e37048b15cca8b69c040a68b03 Mon Sep 17 00:00:00 2001 From: Yan Date: Sat, 17 Jun 2017 12:13:01 +0630 Subject: [PATCH 03/31] dump.rdb --- dump.rdb | Bin 18163 -> 18163 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index b21f067994bac5cdd41cbb593e9e26e89dcc0cab..211fd505548a6a60b85596d4201ab6d1155b4f22 100644 GIT binary patch delta 64 zcmV-G0Kfn9jREtG0gx~f0`x;!`UrJ%Wn?XFWo^QsClHZBkpuh*a*@{Q3^g@5IW9Ok WIXN*gHnYnCAVmn`cg^DNkRg;y{2B!S delta 64 zcmV-G0Kfn9jREtG0gx~fAnZd~`UrJ%Wn?XFWo^Pxwi1y-kpqrKQ<2u`3^O%2GcGqc WIX5&gIJ3(EAVmnvI2O=|kSyay+8EdX From 064f13290619b9a3d88b6c5de608cb69dd2c1bd4 Mon Sep 17 00:00:00 2001 From: Nweni Date: Sat, 17 Jun 2017 12:13:38 +0630 Subject: [PATCH 04/31] Update --- app/views/settings/order_queue_stations/_form.html.erb | 2 +- app/views/settings/order_queue_stations/index.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/settings/order_queue_stations/_form.html.erb b/app/views/settings/order_queue_stations/_form.html.erb index bc76f044..61f134c7 100644 --- a/app/views/settings/order_queue_stations/_form.html.erb +++ b/app/views/settings/order_queue_stations/_form.html.erb @@ -4,7 +4,7 @@
<%= f.input :station_name %> <%= f.input :is_active %> - <%= f.input :auto_print %> + <%= f.input :printer_name %> <%= f.input :font_size %> <%= f.input :print_copy %> diff --git a/app/views/settings/order_queue_stations/index.html.erb b/app/views/settings/order_queue_stations/index.html.erb index 287fb10b..90339f11 100644 --- a/app/views/settings/order_queue_stations/index.html.erb +++ b/app/views/settings/order_queue_stations/index.html.erb @@ -32,7 +32,7 @@ <%= link_to settings_order_queue_station.station_name, settings_order_queue_station_path(settings_order_queue_station) %> <%= settings_order_queue_station.is_active %> - <%= settings_order_queue_station.auto_print %> + <%= settings_order_queue_station.print_copy %> <%= settings_order_queue_station.printer_name %> <%= settings_order_queue_station.cut_per_item %> From b2ed77947eb2f10a8b3f313647100ee082140dd3 Mon Sep 17 00:00:00 2001 From: Nweni Date: Sat, 17 Jun 2017 13:32:16 +0630 Subject: [PATCH 05/31] Update --- app/controllers/api/bill_controller.rb | 16 ++++++++++++++++ app/controllers/origami/payments_controller.rb | 13 ++++++------- app/models/printer/receipt_printer.rb | 3 ++- app/pdf/receipt_bill_pdf.rb | 14 ++++++-------- .../settings/order_queue_stations/_form.html.erb | 4 ++-- .../settings/order_queue_stations/index.html.erb | 2 +- 6 files changed, 33 insertions(+), 19 deletions(-) diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 6b1fb225..5b3ef646 100644 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -22,6 +22,22 @@ class Api::BillController < Api::ApiController @status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee) end + + unique_code = "ReceiptBillPdf" + customer= Customer.where('customer_id=' + @sale.customer_id) + + # get printer info + print_settings=PrintSetting.find_by_unique_code(unique_code) + + # find order id by sale id + # sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id) + + # Calculate Food and Beverage Total + food_total, beverage_total = SaleItem.calculate_food_beverage(@sale.sale_items) + + printer = Printer::ReceiptPrinter.new(print_settings) + printer.print_receipt_bill(print_settings,@sale.sale_items,@sale,customer.name, food_total, beverage_total) + end diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index ca497b81..27062c31 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -12,7 +12,7 @@ class Origami::PaymentsController < BaseOrigamiController sale_payment = SalePayment.new sale_payment.process_payment(saleObj, @user, cash, "cash") - unique_code = "ReceiptBillPdf" + unique_code = "ReceiptBillPdf" customer= Customer.find(saleObj.customer_id) # get member information @@ -20,11 +20,10 @@ class Origami::PaymentsController < BaseOrigamiController # get printer info print_settings=PrintSetting.find_by_unique_code(unique_code) - # Calculate Food and Beverage Total food_total, beverage_total = SaleItem.calculate_food_beverage(saleObj.sale_items) - printer = Printer::ReceiptPrinter.new(print_settings) + printer = Printer::ReceiptPrinter.new(print_settings) printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, food_total, beverage_total, member_info) end end @@ -41,7 +40,7 @@ class Origami::PaymentsController < BaseOrigamiController @sale_data = Sale.find_by_sale_id(sale_id) #get customer amount - @customer = Customer.find(@sale_data.customer_id) + @customer = Customer.find(@sale_data.customer_id) # get member information response = Customer.get_member_account(@customer) @@ -84,19 +83,19 @@ class Origami::PaymentsController < BaseOrigamiController saleObj = Sale.find(sale_id) - unique_code = "ReceiptBillPdf" + unique_code = "ReceiptBillPdf" customer= Customer.find(saleObj.customer_id) # get member information member_info = Customer.get_member_account(customer) - + # get printer info print_settings=PrintSetting.find_by_unique_code(unique_code) # Calculate Food and Beverage Total food_total, beverage_total = SaleItem.calculate_food_beverage(saleObj.sale_items) - printer = Printer::ReceiptPrinter.new(print_settings) + printer = Printer::ReceiptPrinter.new(print_settings) printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, food_total, beverage_total, member_info) end diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb index 92468b0e..bfef5588 100644 --- a/app/models/printer/receipt_printer.rb +++ b/app/models/printer/receipt_printer.rb @@ -52,7 +52,7 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker self.print(filename) end - + def print_receipt_payment_by_foc(sale_id) #Use CUPS service #Generate PDF @@ -70,6 +70,7 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker #Generate PDF #Print pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, food_total, beverage_total, member_info) + pdf.render_file "tmp/receipt_bill.pdf" self.print("tmp/receipt_bill.pdf") end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 524ee7e5..c0d8aa74 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -11,7 +11,6 @@ class ReceiptBillPdf < Prawn::Document self.item_height = 15 self.item_description_width = (self.page_width-20) / 2 self.label_width = 100 - # @item_width = self.page_width.to_i / 2 # @qty_width = @item_width.to_i / 3 # @double = @qty_width * 1.3 @@ -36,7 +35,6 @@ class ReceiptBillPdf < Prawn::Document if member_info != nil member_info(member_info) end - footer end @@ -206,10 +204,10 @@ class ReceiptBillPdf < Prawn::Document # show member information def member_info(member_info) - + move_down 7 - if member_info["status"] == true - member_info["data"].each do |res| + if member_info["status"] == true + member_info["data"].each do |res| move_down 5 y_position = cursor @@ -219,9 +217,9 @@ class ReceiptBillPdf < Prawn::Document bounding_box([self.item_description_width,y_position], :width =>self.label_width) do text "#{ res["balance"] }" , :size => self.item_font_size,:align => :right end - - end - end + + end + end end def footer diff --git a/app/views/settings/order_queue_stations/_form.html.erb b/app/views/settings/order_queue_stations/_form.html.erb index 61f134c7..789d1d27 100644 --- a/app/views/settings/order_queue_stations/_form.html.erb +++ b/app/views/settings/order_queue_stations/_form.html.erb @@ -4,14 +4,14 @@
<%= f.input :station_name %> <%= f.input :is_active %> - + <%= f.input :printer_name %> <%= f.input :font_size %> <%= f.input :print_copy %> <%= f.input :cut_per_item %> <%= f.input :use_alternate_name %> <%= f.input :processing_items, as: :hidden %> - + <%= f.input :auto_print %>
diff --git a/app/views/settings/order_queue_stations/index.html.erb b/app/views/settings/order_queue_stations/index.html.erb index 90339f11..287fb10b 100644 --- a/app/views/settings/order_queue_stations/index.html.erb +++ b/app/views/settings/order_queue_stations/index.html.erb @@ -32,7 +32,7 @@ <%= link_to settings_order_queue_station.station_name, settings_order_queue_station_path(settings_order_queue_station) %> <%= settings_order_queue_station.is_active %> - + <%= settings_order_queue_station.auto_print %> <%= settings_order_queue_station.print_copy %> <%= settings_order_queue_station.printer_name %> <%= settings_order_queue_station.cut_per_item %> From 420e1b9cbc4e253261986a9504f92d6fa5425aa7 Mon Sep 17 00:00:00 2001 From: Yan Date: Sat, 17 Jun 2017 14:15:08 +0630 Subject: [PATCH 06/31] all info details in oqs --- app/assets/javascripts/OQS.js | 42 ++++++++++++++++++++------ app/controllers/oqs/home_controller.rb | 16 ++++++++++ app/views/oqs/home/index.html.erb | 16 ++-------- config/routes.rb | 1 + 4 files changed, 53 insertions(+), 22 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 9ad540ab..8e252749 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -23,21 +23,42 @@ $(document).ready(function(){ // }, 10000); $('.queue_station').on('click',function(){ - var orderZone=$(this).children().children().children('.order-zone').text(); - var orderItem=$(this).children().children().children('.order-item').text(); - var orderQty=$(this).children().children().children('.order-qty').text(); - var orderBy=$(this).children().children().children().children('.order-by').text(); - var orderAt=$(this).children().children().children().children('.order-at').text(); - var orderCustomer=$(this).children().children('.order-customer').text(); + var orderZone=$(this).children().children().children('.order-zone').text().trim(); + // var orderItem=$(this).children().children().children('.order-item').text(); + //var assigned_item_id = $(this).children().find(".assigned-order-item").text(); + var orderQty = $(this).children().children().children('.order-qty').text(); + var orderBy = $(this).children().children().children().children('.order-by').text(); + var orderAt = $(this).children().children().children().children('.order-at').text(); + var orderCustomer = $(this).children().children('.order-customer').text(); $('#order-title').text("ORDER DETAILS - " + orderZone); $('#order-by').text(orderBy); $('#order-at').text(orderAt); $('#order-customer').text(orderCustomer); $('#order-from').text(orderZone); + // clear order items + $("#oqs-order-details-table").children("tbody").empty(); - $('#order-items').text(orderItem); - $('#order-qty').text(orderQty); + // Call get_order_items() for Order Items by dining + $.ajax({ + type: 'GET', + url: '/oqs/' + orderZone, + success: function(res){ + for (i = 0; i < res.length; i++) { + var data = JSON.stringify(res[i]); + var parse_data = JSON.parse(data); + + var order_item_row = "" + + "" + parse_data.item_name + "" + + "" + parse_data.qty + "" + + ""; + $("#oqs-order-details-table").children("tbody").append(order_item_row); + } + } + }) + + // $('#order-items').text(orderItem); + // $('#order-qty').text(orderQty); $('.queue_station').removeClass('selected-item'); $(this).addClass('selected-item'); @@ -49,7 +70,8 @@ $(document).ready(function(){ var _self = $(this); // To know in ajax return var assigned_item_id=$(this).attr('id').substr(15); var params = { 'id':assigned_item_id }; - + + // Call update_delivery_status() for changed delivery and move to delivery $.ajax({ type: 'POST', url: '/oqs/update_delivery', @@ -84,6 +106,7 @@ $(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 }; @@ -94,6 +117,7 @@ $(document).ready(function(){ }); }); + // Print Order Summary $('#print_order_summary').on('click',function(){ var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); var params = { 'id':assigned_item_id }; diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 7af42166..67f96a26 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -22,6 +22,22 @@ class Oqs::HomeController < BaseOqsController @queue_stations_items end + # Get Order items + def get_order_items + items = [] + table_name = params[:table_id] + dining = DiningFacility.find_by_name(table_name); + booking_id = dining.get_current_booking + BookingOrder.where("booking_id='#{ booking_id }'").find_each do |bo| + order=Order.find(bo.order_id); + order.order_items.each do |oi| + items.push(oi) + end + end + + render :json => items.to_json + end + def show end diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index f2120cde..1f13383d 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -133,7 +133,7 @@
-
ORDER DETAILS -
+
ORDER DETAILS - Table
@@ -159,7 +159,7 @@
- +
@@ -167,17 +167,7 @@ - - - - - - +
Items
- - - -
diff --git a/config/routes.rb b/config/routes.rb index 19b07979..3a1e5295 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -129,6 +129,7 @@ Rails.application.routes.draw do #--------- Order Queue Station ------------# namespace :oqs do root "home#index" + get "/:table_id", to: "home#get_order_items" post 'update_delivery', to: "home#update_delivery_status" From e55ab32fad0f1793fdf3971a255c59925495c0ab Mon Sep 17 00:00:00 2001 From: Nweni Date: Sat, 17 Jun 2017 16:00:56 +0630 Subject: [PATCH 07/31] Update --- app/assets/javascripts/OQS.js | 33 ++++++++++++------------ app/controllers/oqs/home_controller.rb | 33 ++++++++++++------------ app/views/origami/payments/show.html.erb | 2 +- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 9ad540ab..0e44876d 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -17,15 +17,16 @@ //= require cable $(document).ready(function(){ + // auto refresh every 10 seconds // setTimeout(function(){ // window.location.reload(1); // }, 10000); - $('.queue_station').on('click',function(){ + $('.queue_station').on('click',function(){ var orderZone=$(this).children().children().children('.order-zone').text(); var orderItem=$(this).children().children().children('.order-item').text(); - var orderQty=$(this).children().children().children('.order-qty').text(); + var orderQty=$(this).children().children().children('.order-qty').text(); var orderBy=$(this).children().children().children().children('.order-by').text(); var orderAt=$(this).children().children().children().children('.order-at').text(); var orderCustomer=$(this).children().children('.order-customer').text(); @@ -44,19 +45,19 @@ $(document).ready(function(){ }); // complete for queue item - $('.order-complete').on('click',function(e){ + $('.order-complete').on('click',function(e){ //e.preventDefault(); - var _self = $(this); // To know in ajax return - var assigned_item_id=$(this).attr('id').substr(15); + var _self = $(this); // To know in ajax return + var assigned_item_id=$(this).attr('id').substr(15); var params = { 'id':assigned_item_id }; - + $.ajax({ type: 'POST', url: '/oqs/update_delivery', data: params, dataType: 'json', - success: function(data){ - for (i = 0; i < data.length; i++) { + success: function(data){ + for (i = 0; i < data.length; i++) { var queue_station = $('#assigned_queue_' + data[i]).parent().parent(".queue_station"); var station = queue_station.parent().parent().attr('id'); @@ -65,7 +66,7 @@ $(document).ready(function(){ // Remove a queue card from current station queue_station.children('.card-footer').remove(); - + // Add removed queue card from station to completed $("#completed").children('.card-columns').append(queue_station); @@ -73,33 +74,33 @@ $(document).ready(function(){ var station_count=parseInt($("#"+station+"_count").text()) - 1; $("#"+station+"_count").text(station_count); } - - // update queue item count in completed station + + // update queue item count in completed station $("#completed_count").text(parseInt($("#completed_count").text()) + data.length); alert("updated!"); // Page reload location.reload(); } - }); + }); }); $('#print_order_item').on('click',function(){ - var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); + var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); var params = { 'id':assigned_item_id }; $.ajax({ type: 'GET', - url: '/oqs/print/print/'+assigned_item_id, + url: '/oqs/print/print/'+assigned_item_id, success: function(data){ } }); }); $('#print_order_summary').on('click',function(){ - var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); + var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); var params = { 'id':assigned_item_id }; $.ajax({ type: 'GET', - url: '/oqs/print/print_order_summary/'+assigned_item_id, + url: '/oqs/print/print_order_summary/'+assigned_item_id, success: function(data){ } }); }); diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 7af42166..fc439640 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -1,22 +1,22 @@ class Oqs::HomeController < BaseOqsController def index queue_stations=OrderQueueStation.all - + @queue_items_details = queue_items_query(0) - @queue_completed_item = queue_items_query(1) - + @queue_completed_item = queue_items_query(1) + @queue_stations_items=Array.new # Calculate Count for each station tab - queue_stations.each do |que| + queue_stations.each do |que| i=0 - @queue_items_details.each do |qid| - if qid.station_name == que.station_name - i=i+1 - end - end - @queue_stations_items.push({:station_name => que.station_name, :is_active => que.is_active ,:item_count => i }) + @queue_items_details.each do |qid| + if qid.station_name == que.station_name + i=i+1 + end + end + @queue_stations_items.push({:station_name => que.station_name, :is_active => que.is_active ,:item_count => i }) end @queue_stations_items @@ -35,24 +35,23 @@ class Oqs::HomeController < BaseOqsController # update delivery status for completed same order items assigned_items.each do |ai| ai.delivery_status=true - ai.save + ai.save removed_item.push(ai.assigned_order_item_id) - end - render :json => removed_item.to_json + end + render :json => removed_item.to_json end # Query for OQS with status def queue_items_query(status) AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.station_name, oqs.is_active, df.name as zone, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, cus.name as customer_name, odt.created_at") - .joins(" left join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = assigned_order_items.order_queue_station_id + .joins("left join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = assigned_order_items.order_queue_station_id left join dining_facilities as df on df.zone_id = oqpz.zone_id left join order_queue_stations as oqs ON oqs.id = assigned_order_items.order_queue_station_id left join orders as od ON od.order_id = assigned_order_items.order_id left join order_items as odt ON odt.item_code = assigned_order_items.item_code left join customers as cus ON cus.customer_id = od.customer_id") - .where("assigned_order_items.delivery_status = #{status}") + .where("assigned_order_items.delivery_status = #{status}") .group("assigned_order_items.assigned_order_item_id") - .order("odt.item_name DESC") + .order("odt.item_name DESC") end end - diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index 995e13e9..9ac19b1a 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -235,7 +235,7 @@
- +
From b093a993ba002c92659bbb34338c55c031c11d87 Mon Sep 17 00:00:00 2001 From: Phyo Date: Sat, 17 Jun 2017 18:00:59 +0630 Subject: [PATCH 08/31] Zone and OQS --- .../order_queue_stations_controller.rb | 2 +- app/controllers/settings/rooms_controller.rb | 81 +++++++++++++ app/controllers/settings/tables_controller.rb | 81 +++++++++++++ app/controllers/settings/zones_controller.rb | 10 +- app/models/employee.rb | 3 + app/models/order_queue_station.rb | 8 +- app/models/zone.rb | 5 + app/views/layouts/_header.html.erb | 1 + .../order_queue_stations/_form.html.erb | 7 ++ app/views/settings/rooms/_form.html.erb | 16 +++ .../rooms/_settings_room.json.jbuilder | 2 + app/views/settings/rooms/edit.html.erb | 10 ++ app/views/settings/rooms/index.html.erb | 51 ++++++++ app/views/settings/rooms/new.html.erb | 11 ++ app/views/settings/rooms/show.html.erb | 49 ++++++++ app/views/settings/tables/_form.html.erb | 16 +++ .../tables/_settings_table.json.jbuilder | 2 + app/views/settings/tables/edit.html.erb | 10 ++ app/views/settings/tables/index.html.erb | 49 ++++++++ app/views/settings/tables/new.html.erb | 11 ++ app/views/settings/tables/show.html.erb | 47 ++++++++ app/views/settings/zones/_form.html.erb | 4 +- app/views/settings/zones/edit.html.erb | 16 ++- app/views/settings/zones/index.html.erb | 64 +++++----- app/views/settings/zones/show.html.erb | 110 +++++++++++++++--- ...20170403142424_create_dining_facilities.rb | 2 +- 26 files changed, 608 insertions(+), 60 deletions(-) create mode 100644 app/controllers/settings/rooms_controller.rb create mode 100644 app/controllers/settings/tables_controller.rb create mode 100644 app/views/settings/rooms/_form.html.erb create mode 100644 app/views/settings/rooms/_settings_room.json.jbuilder create mode 100644 app/views/settings/rooms/edit.html.erb create mode 100644 app/views/settings/rooms/index.html.erb create mode 100644 app/views/settings/rooms/new.html.erb create mode 100644 app/views/settings/rooms/show.html.erb create mode 100644 app/views/settings/tables/_form.html.erb create mode 100644 app/views/settings/tables/_settings_table.json.jbuilder create mode 100644 app/views/settings/tables/edit.html.erb create mode 100644 app/views/settings/tables/index.html.erb create mode 100644 app/views/settings/tables/new.html.erb create mode 100644 app/views/settings/tables/show.html.erb diff --git a/app/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb index e8b9bbe0..6a0a52ae 100644 --- a/app/controllers/settings/order_queue_stations_controller.rb +++ b/app/controllers/settings/order_queue_stations_controller.rb @@ -71,6 +71,6 @@ class Settings::OrderQueueStationsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def settings_order_queue_station_params - params.require(:order_queue_station).permit(:station_name, :is_active, :processing_items, :print_copy, :printer_name, :font_size, :cut_per_item, :use_alternate_name, :created_by) + params.require(:order_queue_station).permit(:station_name, :is_active, :processing_items, :print_copy, :printer_name, :font_size, :cut_per_item, :use_alternate_name, :created_by,{ zone_ids: [] }) end end diff --git a/app/controllers/settings/rooms_controller.rb b/app/controllers/settings/rooms_controller.rb new file mode 100644 index 00000000..69e3ec22 --- /dev/null +++ b/app/controllers/settings/rooms_controller.rb @@ -0,0 +1,81 @@ +class Settings::RoomsController < ApplicationController + before_action :set_settings_room, only: [:show, :edit, :update, :destroy] + before_action :set_settings_zone, only: [:index, :show, :edit, :new, :update,:create] + # GET /settings/rooms + # GET /settings/rooms.json + def index + @settings_rooms = @zone.rooms + end + + # GET /settings/rooms/1 + # GET /settings/rooms/1.json + def show + @room = Room.find(params[:id]) + end + + # GET /settings/rooms/new + def new + @settings_room = Room.new + end + + # GET /settings/rooms/1/edit + def edit + end + + # POST /settings/rooms + # POST /settings/rooms.json + def create + @settings_room = Room.new(settings_room_params) + @settings_room.type = DiningFacility::ROOM_TYPE + @settings_room.zone_id = params[:zone_id] + respond_to do |format| + if @settings_room.save + format.html { redirect_to settings_zone_rooms_path, notice: 'Room was successfully created.' } + format.json { render :show, status: :created, location: @settings_room } + else + puts "abc" + format.html { render :new } + format.json { render json: @settings_room.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /settings/rooms/1 + # PATCH/PUT /settings/rooms/1.json + def update + respond_to do |format| + if @settings_room.update(settings_room_params) + format.html { redirect_to settings_zone_rooms_path, notice: 'Room was successfully updated.' } + format.json { render :show, status: :ok, location: @settings_room } + else + format.html { render :edit } + format.json { render json: @settings_room.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /settings/rooms/1 + # DELETE /settings/rooms/1.json + def destroy + @settings_room.destroy + respond_to do |format| + format.html { redirect_to settings_zones_path, notice: 'Room was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_settings_room + @settings_room = Room.find(params[:id]) + end + + def set_settings_zone + @zone = Zone.find(params[:zone_id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def settings_room_params + params.require(:room).permit(:name, :status, :seater, :order_by,:is_active ,:id, :zone_id, :created_by) + end +end diff --git a/app/controllers/settings/tables_controller.rb b/app/controllers/settings/tables_controller.rb new file mode 100644 index 00000000..124a0d94 --- /dev/null +++ b/app/controllers/settings/tables_controller.rb @@ -0,0 +1,81 @@ +class Settings::TablesController < ApplicationController + before_action :set_settings_table, only: [:show, :edit, :update, :destroy] + before_action :set_settings_zone, only: [:index, :show, :edit, :new, :update,:create] + # GET /settings/tables + # GET /settings/tables.json + def index + @settings_tables = @zone.tables + end + + # GET /settings/tables/1 + # GET /settings/tables/1.json + def show + @table = Table.find(params[:id]) + end + + # GET /settings/tables/new + def new + @settings_table = Table.new + end + + # GET /settings/tables/1/edit + def edit + end + + # POST /settings/tables + # POST /settings/tables.json + def create + @settings_table = Table.new(settings_table_params) + @settings_table.type = DiningFacility::TABLE_TYPE + @settings_table.zone_id = params[:zone_id] + respond_to do |format| + if @settings_table.save + format.html { redirect_to settings_zone_tables_path, notice: 'Table was successfully created.' } + format.json { render :show, status: :created, location: @settings_table } + else + puts "abc" + format.html { render :new } + format.json { render json: @settings_table.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /settings/tables/1 + # PATCH/PUT /settings/tables/1.json + def update + respond_to do |format| + if @settings_table.update(settings_table_params) + format.html { redirect_to settings_zone_tables_path, notice: 'Table was successfully updated.' } + format.json { render :show, status: :ok, location: @settings_table } + else + format.html { render :edit } + format.json { render json: @settings_table.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /settings/tables/1 + # DELETE /settings/tables/1.json + def destroy + @settings_table.destroy + respond_to do |format| + format.html { redirect_to settings_zones_path, notice: 'Table was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_settings_table + @settings_table = Table.find(params[:id]) + end + + def set_settings_zone + @zone = Zone.find(params[:zone_id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def settings_table_params + params.require(:table).permit(:name, :status, :seater, :order_by,:is_active ,:id, :zone_id, :created_by) + end +end diff --git a/app/controllers/settings/zones_controller.rb b/app/controllers/settings/zones_controller.rb index 779c03fe..5752b5e3 100644 --- a/app/controllers/settings/zones_controller.rb +++ b/app/controllers/settings/zones_controller.rb @@ -10,6 +10,8 @@ class Settings::ZonesController < ApplicationController # GET /settings/zones/1 # GET /settings/zones/1.json def show + @settings_tables = @settings_zone.tables + @settings_rooms = @settings_zone.rooms end # GET /settings/zones/new @@ -28,7 +30,7 @@ class Settings::ZonesController < ApplicationController respond_to do |format| if @settings_zone.save - format.html { redirect_to @settings_zone, notice: 'Zone was successfully created.' } + format.html { redirect_to settings_zone_path(@settings_zone), notice: 'Zone was successfully created.' } format.json { render :show, status: :created, location: @settings_zone } else format.html { render :new } @@ -42,7 +44,7 @@ class Settings::ZonesController < ApplicationController def update respond_to do |format| if @settings_zone.update(settings_zone_params) - format.html { redirect_to @settings_zone, notice: 'Zone was successfully updated.' } + format.html { redirect_to settings_zone_path(@settings_zone), notice: 'Zone was successfully updated.' } format.json { render :show, status: :ok, location: @settings_zone } else format.html { render :edit } @@ -56,7 +58,7 @@ class Settings::ZonesController < ApplicationController def destroy @settings_zone.destroy respond_to do |format| - format.html { redirect_to settings_zones_url, notice: 'Zone was successfully destroyed.' } + format.html { redirect_to settings_zones_path, notice: 'Zone was successfully destroyed.' } format.json { head :no_content } end end @@ -69,6 +71,6 @@ class Settings::ZonesController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def settings_zone_params - params.require(:settings_zone).permit(:name, :is_active, :created_by) + params.require(:zone).permit(:name, :is_active, :created_by) end end diff --git a/app/models/employee.rb b/app/models/employee.rb index 1f3cace0..98b8380b 100644 --- a/app/models/employee.rb +++ b/app/models/employee.rb @@ -6,6 +6,9 @@ class Employee < ApplicationRecord validates :emp_id, uniqueness: true, numericality: true, length: {in: 1..4}, allow_blank: true validates :password, numericality: true, length: {in: 3..9}, allow_blank: true + def self.collection + Employee.select("id, name").map { |e| [e.name, e.id] } + end def self.login(emp_id, password) user = Employee.find_by_emp_id(emp_id) diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index b0619af2..874f2fb0 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -5,10 +5,12 @@ class OrderQueueStation < ApplicationRecord has_many :assigned_order_items has_many :order_items + has_many :order_queue_process_by_zones + has_many :zones, through: :order_queue_process_by_zones scope :active, -> {where(is_active: true)} - def process_order (order) + def process_order (order) oqs_stations = OrderQueueStation.active order_items = order.order_items @@ -20,10 +22,10 @@ class OrderQueueStation < ApplicationRecord #Loop through the processing items pq_items.each do |pq_item| #Processing through the looping items - order_items.each do |order_item| + order_items.each do |order_item| if (pq_item == order_item.item_code) #Same Order_items can appear in two location. - AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) + AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) end end diff --git a/app/models/zone.rb b/app/models/zone.rb index e5ad15c7..164b80f4 100644 --- a/app/models/zone.rb +++ b/app/models/zone.rb @@ -2,7 +2,12 @@ class Zone < ApplicationRecord # model association has_many :tables, dependent: :destroy has_many :rooms, dependent: :destroy + has_many :order_queue_stations # validations validates_presence_of :name, :created_by + + def self.collection + Zone.select("id, name").map { |e| [e.name, e.id] } + end end diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 58ecd9b5..a385806c 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -14,6 +14,7 @@
  • <%= link_to "Menu Item Options",settings_menu_item_options_path, :tabindex =>"-1" %>

  • <%= link_to "Order Queue Stations",settings_order_queue_stations_path, :tabindex =>"-1" %>
  • +
  • <%= link_to "Zones", settings_zones_path, :tabindex =>"-1" %>

  • <%= link_to "Cashier Terminals ", settings_cashier_terminals_path, :tabindex =>"-1" %>
  • <%= link_to "Employees", settings_employees_path, :tabindex =>"-1" %>
  • diff --git a/app/views/settings/order_queue_stations/_form.html.erb b/app/views/settings/order_queue_stations/_form.html.erb index db7ed5fd..d54b69b9 100644 --- a/app/views/settings/order_queue_stations/_form.html.erb +++ b/app/views/settings/order_queue_stations/_form.html.erb @@ -1,3 +1,8 @@ + <%= simple_form_for([:settings,@settings_order_queue_station]) do |f| %> <%= f.error_notification %> @@ -7,6 +12,8 @@ <%= f.input :printer_name %> <%= f.input :font_size %> <%= f.input :print_copy %> + <%= f.label "Select Zones", :class => 'control-label' %> + <%= f.collection_check_boxes :zone_ids , Zone.all, :id, :name , :class => 'ta'%> <%= f.input :cut_per_item %> <%= f.input :use_alternate_name %> <%= f.input :processing_items, as: :hidden %> diff --git a/app/views/settings/rooms/_form.html.erb b/app/views/settings/rooms/_form.html.erb new file mode 100644 index 00000000..c164ab67 --- /dev/null +++ b/app/views/settings/rooms/_form.html.erb @@ -0,0 +1,16 @@ +<%= simple_form_for([:settings,@zone,@settings_room]) do |f| %> + <%= f.error_notification %> + +
    + <%= f.input :name %> + <%= f.input :status %> + <%= f.input :seater %> + <%= f.input :order_by %> + <%= f.input :is_active %> + <%= f.input :created_by, :collection => Employee.collection %> +
    + +
    + <%= f.button :submit %> +
    +<% end %> diff --git a/app/views/settings/rooms/_settings_room.json.jbuilder b/app/views/settings/rooms/_settings_room.json.jbuilder new file mode 100644 index 00000000..3b3010d8 --- /dev/null +++ b/app/views/settings/rooms/_settings_room.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! settings_table, :id, :name, :status, :seater, :order_by, :is_active, :created_by, :created_at, :updated_at +json.url settings_table_url(settings_room, format: :json) diff --git a/app/views/settings/rooms/edit.html.erb b/app/views/settings/rooms/edit.html.erb new file mode 100644 index 00000000..7ae2b31d --- /dev/null +++ b/app/views/settings/rooms/edit.html.erb @@ -0,0 +1,10 @@ +
    + + <%= render 'form', settings_table: @settings_room %> +
    diff --git a/app/views/settings/rooms/index.html.erb b/app/views/settings/rooms/index.html.erb new file mode 100644 index 00000000..1480682d --- /dev/null +++ b/app/views/settings/rooms/index.html.erb @@ -0,0 +1,51 @@ + + + + +
    +
    + + + + + + + + + + + + + + + + + <% @settings_rooms.each do |room| %> + + + + + + + + <% if Employee.exists?(room.created_by) %> + + <% else %> + + <% end %> + + + + + <% end %> + +
    NameStatusTypeSeaterOrder byis ActiveCreated ByCreated At
    <%= link_to room.name, settings_menu_path(room) %><%= room.status %>Room<%= room.seater rescue "-" %><%= room.order_by rescue "-" %><%= room.is_active %><%= Employee.find(room.created_by).name %><%= room.created_by %><%= room.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_room_path(@zone,room) %><%= link_to 'Destroy', settings_zone_room_path(@zone,room), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    diff --git a/app/views/settings/rooms/new.html.erb b/app/views/settings/rooms/new.html.erb new file mode 100644 index 00000000..60bd48ee --- /dev/null +++ b/app/views/settings/rooms/new.html.erb @@ -0,0 +1,11 @@ + +
    + + <%= render 'form', settings_table: @settings_room %> +
    diff --git a/app/views/settings/rooms/show.html.erb b/app/views/settings/rooms/show.html.erb new file mode 100644 index 00000000..893ea325 --- /dev/null +++ b/app/views/settings/rooms/show.html.erb @@ -0,0 +1,49 @@ + + +
    +
    +
    +

    Room

    + + + + + + + + + + + + + + + + + + + + + + + <% if Employee.exists?(@room.created_by) %> + + <% else %> + + <% end %> + + + + + +
    NameStatusRoomSeaterOrder byis ActiveCreated ByCreated At
    <%= link_to @room.name, settings_menu_path(@room) %><%= @room.status %>Room<%= @room.seater rescue "-" %><%= @room.order_by rescue "-" %><%= @room.is_active rescue "-" %><%= Employee.find(@room.created_by).name %><%= @room.created_by %><%= @room.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_room_path(@zone,@room) %><%= link_to 'Destroy', settings_zone_room_path(@zone,@room), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    +
    diff --git a/app/views/settings/tables/_form.html.erb b/app/views/settings/tables/_form.html.erb new file mode 100644 index 00000000..a411175c --- /dev/null +++ b/app/views/settings/tables/_form.html.erb @@ -0,0 +1,16 @@ +<%= simple_form_for([:settings,@zone,@settings_table]) do |f| %> + <%= f.error_notification %> + +
    + <%= f.input :name %> + <%= f.input :status %> + <%= f.input :seater %> + <%= f.input :order_by %> + <%= f.input :is_active %> + <%= f.input :created_by, :collection => Employee.collection %> +
    + +
    + <%= f.button :submit %> +
    +<% end %> diff --git a/app/views/settings/tables/_settings_table.json.jbuilder b/app/views/settings/tables/_settings_table.json.jbuilder new file mode 100644 index 00000000..97a32ec3 --- /dev/null +++ b/app/views/settings/tables/_settings_table.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! settings_table, :id, :name, :status, :seater, :order_by, :is_active, :created_by, :created_at, :updated_at +json.url settings_table_url(settings_table, format: :json) diff --git a/app/views/settings/tables/edit.html.erb b/app/views/settings/tables/edit.html.erb new file mode 100644 index 00000000..325aaf39 --- /dev/null +++ b/app/views/settings/tables/edit.html.erb @@ -0,0 +1,10 @@ +
    + + <%= render 'form', settings_table: @settings_table %> +
    diff --git a/app/views/settings/tables/index.html.erb b/app/views/settings/tables/index.html.erb new file mode 100644 index 00000000..c1e509b7 --- /dev/null +++ b/app/views/settings/tables/index.html.erb @@ -0,0 +1,49 @@ + + + + +
    +
    + + + + + + + + + + + + + + + + <% @settings_tables.each do |table| %> + + + + + + + <% if Employee.exists?(table.created_by) %> + + <% else %> + + <% end %> + + + + + <% end %> + +
    NameStatusSeaterOrder byis ActiveCreated ByCreated At
    <%= link_to table.name, settings_menu_path(table) %><%= table.status %><%= table.seater rescue "-" %><%= table.order_by rescue "-" %><%= table.is_active %><%= Employee.find(table.created_by).name %><%= table.created_by %><%= table.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_table_path(@zone,table) %><%= link_to 'Destroy', settings_zone_table_path(@zone,table), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    diff --git a/app/views/settings/tables/new.html.erb b/app/views/settings/tables/new.html.erb new file mode 100644 index 00000000..52b87627 --- /dev/null +++ b/app/views/settings/tables/new.html.erb @@ -0,0 +1,11 @@ + +
    + + <%= render 'form', settings_table: @settings_table %> +
    diff --git a/app/views/settings/tables/show.html.erb b/app/views/settings/tables/show.html.erb new file mode 100644 index 00000000..7b8bd8ed --- /dev/null +++ b/app/views/settings/tables/show.html.erb @@ -0,0 +1,47 @@ + + +
    +
    +
    +

    Table

    + + + + + + + + + + + + + + + + + + + + + <% if Employee.exists?(@table.created_by) %> + + <% else %> + + <% end %> + + + + + +
    NameStatusSeaterOrder byis ActiveCreated ByCreated At
    <%= link_to @table.name, settings_menu_path(@table) %><%= @table.status %><%= @table.seater rescue "-" %><%= @table.order_by rescue "-" %><%= @table.is_active rescue "-" %><%= Employee.find(@table.created_by).name %><%= @table.created_by %><%= @table.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_table_path(@zone,@table) %><%= link_to 'Destroy', settings_zone_table_path(@zone,@table), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    +
    diff --git a/app/views/settings/zones/_form.html.erb b/app/views/settings/zones/_form.html.erb index c43a3244..a7740211 100644 --- a/app/views/settings/zones/_form.html.erb +++ b/app/views/settings/zones/_form.html.erb @@ -1,10 +1,10 @@ -<%= simple_form_for(@settings_zone) do |f| %> +<%= simple_form_for([:settings,@settings_zone]) do |f| %> <%= f.error_notification %>
    <%= f.input :name %> <%= f.input :is_active %> - <%= f.input :created_by %> + <%= f.input :created_by, :collection => Employee.collection %>
    diff --git a/app/views/settings/zones/edit.html.erb b/app/views/settings/zones/edit.html.erb index 177c4c61..b9b19f7e 100644 --- a/app/views/settings/zones/edit.html.erb +++ b/app/views/settings/zones/edit.html.erb @@ -1,6 +1,10 @@ -

    Editing Settings Zone

    - -<%= render 'form', settings_zone: @settings_zone %> - -<%= link_to 'Show', @settings_zone %> | -<%= link_to 'Back', settings_zones_path %> +
    + + <%= render 'form', settings_zone: @settings_zone %> +
    diff --git a/app/views/settings/zones/index.html.erb b/app/views/settings/zones/index.html.erb index 40ee09c8..cdbe1f80 100644 --- a/app/views/settings/zones/index.html.erb +++ b/app/views/settings/zones/index.html.erb @@ -1,31 +1,41 @@ -

    <%= notice %>

    -

    Settings Zones

    - - - - - - - - - - - - - <% @settings_zones.each do |settings_zone| %> - - - - - - - - - <% end %> - -
    NameIs activeCreated by
    <%= settings_zone.name %><%= settings_zone.is_active %><%= settings_zone.created_by %><%= link_to 'Show', settings_zone %><%= link_to 'Edit', edit_settings_zone_path(settings_zone) %><%= link_to 'Destroy', settings_zone, method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    +
    + + + + + + + + + -<%= link_to 'New Settings Zone', new_settings_zone_path %> + + <% @settings_zones.each do |settings_zone| %> + + + + <% if Employee.exists?(settings_zone.created_by) %> + + <% else %> + + <% end %> + + + + + <% end %> + +
    NameIs activeCreated by
    <%= settings_zone.name %><%= settings_zone.is_active %><%= Employee.find(settings_zone.created_by).name %><%= settings_zone.created_by %><%= link_to 'Show', settings_zone_path(settings_zone) %><%= link_to 'Edit', edit_settings_zone_path(settings_zone) %><%= link_to 'Destroy', settings_zone_path(settings_zone), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    diff --git a/app/views/settings/zones/show.html.erb b/app/views/settings/zones/show.html.erb index 4c0b93dd..33e8487c 100644 --- a/app/views/settings/zones/show.html.erb +++ b/app/views/settings/zones/show.html.erb @@ -1,19 +1,97 @@ -

    <%= notice %>

    + -

    - Name: - <%= @settings_zone.name %> -

    +
    +
    +
    +

    Zone

    + + + + + + + + + -

    - Is active: - <%= @settings_zone.is_active %> -

    + + + + + <% if Employee.exists?(@settings_zone.created_by) %> + + <% else %> + + <% end %> + + + + +
    NameIs activeCreated by
    <%= @settings_zone.name %><%= @settings_zone.is_active %><%= Employee.find(@settings_zone.created_by).name %><%= @settings_zone.created_by %><%= link_to 'Edit', edit_settings_zone_path(@settings_zone) %><%= link_to 'Destroy', settings_zone_path(@settings_zone), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    +
    +
    +
    +
    +

    Dining Facilities + + <%= link_to "New Table",new_settings_zone_table_path(@settings_zone),:class => 'btn btn-primary btn-sm' %> + <%= link_to "New Room",new_settings_zone_room_path(@settings_zone),:class => 'btn btn-primary btn-sm' %> + +

    + + + + + + + + + + + -

    - Created by: - <%= @settings_zone.created_by %> -

    - -<%= link_to 'Edit', edit_settings_zone_path(@settings_zone) %> | -<%= link_to 'Back', settings_zones_path %> + + <% @settings_tables.each do |settings_table|%> + + + + + + <% if Employee.exists?(settings_table.created_by) %> + + <% else %> + + <% end %> + + + + <% end %> + <% @settings_rooms.each do |room|%> + + + + + + <% if Employee.exists?(room.created_by) %> + + <% else %> + + <% end %> + + + + <% end %> + +
    NameTypeSeaterIs activeCreated by
    <%= link_to settings_table.name, settings_zone_table_path(@settings_zone,settings_table) %>Table<%= settings_table.seater %><%= settings_table.is_active %><%= Employee.find(settings_table.created_by).name %><%= settings_table.created_by %><%= settings_table.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_table_path(@settings_zone, settings_table) %>
    <%= link_to room.name, settings_zone_room_path(@settings_zone,room) %>Room<%= room.seater %><%= room.is_active %><%= Employee.find(room.created_by).name %><%= room.created_by %><%= room.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %><%= link_to 'Edit', edit_settings_zone_room_path(@settings_zone, room) %>
    +
    +
    diff --git a/db/migrate/20170403142424_create_dining_facilities.rb b/db/migrate/20170403142424_create_dining_facilities.rb index 599151c6..cf81e775 100644 --- a/db/migrate/20170403142424_create_dining_facilities.rb +++ b/db/migrate/20170403142424_create_dining_facilities.rb @@ -4,7 +4,7 @@ class CreateDiningFacilities < ActiveRecord::Migration[5.1] t.references :zone, foreign_key: true t.string :name, :null => false t.string :status, :null => false, :default => "available" - t.string :type, :null => false, :default => "table" + t.string :type, :null => false, :default => "Table" t.integer :seater, :null => false, :default => 2 t.integer :order_by From b62d5349c695019fc00820d9e07d97ee790e9d39 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Sun, 18 Jun 2017 00:03:09 +0630 Subject: [PATCH 09/31] assign queue and other bug --- app/assets/javascripts/CRM.js | 3 +- app/assets/stylesheets/CRM.scss | 12 +++ app/controllers/crm/customers_controller.rb | 2 +- .../crm/dining_queues_controller.rb | 30 +++++- app/models/customer.rb | 52 ++++++---- app/models/dining_queue.rb | 8 +- app/views/crm/dining_queues/_form.html.erb | 2 +- app/views/crm/dining_queues/assign.html.erb | 44 +++++++++ app/views/crm/dining_queues/index.html.erb | 95 ++++++++++++------- app/views/origami/payments/show.html.erb | 2 +- app/views/reports/receipt_no/index.html.erb | 2 +- config/routes.rb | 3 + ...=> 20170617163811_create_dining_queues.rb} | 1 + 13 files changed, 191 insertions(+), 65 deletions(-) create mode 100644 app/views/crm/dining_queues/assign.html.erb rename db/migrate/{20170612031153_create_dining_queues.rb => 20170617163811_create_dining_queues.rb} (81%) diff --git a/app/assets/javascripts/CRM.js b/app/assets/javascripts/CRM.js index fc535ff7..c7457bed 100644 --- a/app/assets/javascripts/CRM.js +++ b/app/assets/javascripts/CRM.js @@ -17,4 +17,5 @@ //= require turbolinks //= require cable //= require jquery-ui -//= require bootstrap-datepicker \ No newline at end of file +//= require bootstrap-datepicker +//= require bootstrap/modal \ No newline at end of file diff --git a/app/assets/stylesheets/CRM.scss b/app/assets/stylesheets/CRM.scss index a88efe96..8ddc1605 100644 --- a/app/assets/stylesheets/CRM.scss +++ b/app/assets/stylesheets/CRM.scss @@ -3,6 +3,7 @@ @import "theme"; @import "jquery-ui"; @import "bootstrap-datepicker3"; +@import "bootstrap/modal"; /* Show it is fixed to the top */ // body { @@ -10,4 +11,15 @@ // padding-top: 4.5rem; // } +.selected-item { + color: #fff !important; + background-color: #ccc !important; +} +.assign { + color: #fff !important; + background-color: red; +} +.assign .text-muted{ + color: #fff !important; +} diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb index 4cacae00..290f6ca1 100644 --- a/app/controllers/crm/customers_controller.rb +++ b/app/controllers/crm/customers_controller.rb @@ -117,7 +117,7 @@ class Crm::CustomersController < BaseCrmController # format.json { render :index, status: :created, location: @crm_customers } else - @crm_customers.destroy + # @crm_customers.destroy if params[:sale_id] format.html { redirect_to '/origami/'+params[:sale_id]+'/customers'} else diff --git a/app/controllers/crm/dining_queues_controller.rb b/app/controllers/crm/dining_queues_controller.rb index 41655d98..251b0781 100644 --- a/app/controllers/crm/dining_queues_controller.rb +++ b/app/controllers/crm/dining_queues_controller.rb @@ -4,7 +4,8 @@ class Crm::DiningQueuesController < BaseCrmController # GET /crm/dining_queues # GET /crm/dining_queues.json def index - @dining_queues = DiningQueue.all + today = DateTime.now.strftime('%Y-%m-%d') + @dining_queues = DiningQueue.where("DATE_FORMAT(created_at,'%Y-%m-%d') = ? ", today).order("queue_no asc") end # GET /crm/dining_queues/1 @@ -38,7 +39,7 @@ class Crm::DiningQueuesController < BaseCrmController printer = Printer::ReceiptPrinter.new(print_settings) printer.print_queue_no(print_settings,@dining_queue) - format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully created.' } + format.html { redirect_to crm_dining_queues_path, notice: 'Queue was successfully created.' } format.json { render :show, status: :created, location: @dining_queue } else format.html { render :new } @@ -52,7 +53,7 @@ class Crm::DiningQueuesController < BaseCrmController def update respond_to do |format| if @dining_queue.update(dining_queue_params) - format.html { redirect_to crm_dining_queues_path, notice: 'Dining queue was successfully updated.' } + format.html { redirect_to crm_dining_queues_path, notice: 'Queue was successfully updated.' } format.json { render :show, status: :ok, location: @dining_queue } else format.html { render :edit } @@ -71,6 +72,27 @@ class Crm::DiningQueuesController < BaseCrmController end end + def assign + @queue = DiningQueue.find(params[:id]) + @tables = DiningFacility.where("status = 'available' ") + respond_to do |format| + format.html # index.html.erb + end + end + + def assign_table + queue = DiningQueue.find(params[:id]) + table_id = params[:table_id] + + queue.update_attributes(dining_facility_id: table_id,status:"Assign") + DiningFacility.find(table_id).update_attributes(status: "occupied") + respond_to do |format| + format.html { redirect_to crm_dining_queues_path, notice: 'Table was successfully assigned.' } + format.json { head :no_content } + end + end + + private # Use callbacks to share common setup or constraints between actions. def set_dining_queue @@ -79,6 +101,6 @@ class Crm::DiningQueuesController < BaseCrmController # Never trust parameters from the scary internet, only allow the white list through. def dining_queue_params - params.require(:dining_queue).permit(:name, :contact_no, :queue_no) + params.require(:dining_queue).permit(:name, :contact_no, :queue_no,:status) end end diff --git a/app/models/customer.rb b/app/models/customer.rb index 0cbf8d58..65decaf1 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -9,28 +9,8 @@ class Customer < ApplicationRecord validates_presence_of :name, :contact_no, :email validates :contact_no, uniqueness: true validates :email, uniqueness: true - - paginates_per 50 - # def self.get_member_group - - # membership = MembershipSetting.find_by_membership_type("paypar_url") - # memberaction = MembershipAction.find_by_membership_type("get_all_member_group") - # app_token = membership.auth_token.to_s - - # url = membership.gateway_url.to_s + memberaction.gateway_url.to_s - # response = HTTParty.get(url, - # :body => { app_token: app_token}.to_json, - # :headers => { - # 'Content-Type' => 'application/json', - # 'Accept' => 'application/json' - # } - # ) - # puts response.body, response.code, response.message, response.headers.inspect - - # return response; - - # end + paginates_per 50 def self.get_member_account(customer) membership = MembershipSetting.find_by_membership_type("paypar_url") @@ -38,6 +18,7 @@ class Customer < ApplicationRecord merchant_uid = memberaction.merchant_account_id.to_s auth_token = memberaction.auth_token.to_s url = membership.gateway_url.to_s + memberaction.gateway_url.to_s +# urltest =self.url_exist?(url) response = HTTParty.get(url, :body => { membership_id: customer.membership_id,merchant_uid:merchant_uid,auth_token:auth_token}.to_json, :headers => { @@ -59,6 +40,35 @@ class Customer < ApplicationRecord end end +# require "net/http" +# def self.url_exist?(url_string) +# url = URI.parse(url_string) + + +# req = Net::HTTP.new(url.host, url.port) +# puts "hhhhhhhhhhhh" +# puts req.to_json +# req.use_ssl = (url.scheme == 'https') +# puts "aaaaaaaaaaaa" +# puts req.use_ssl? +# path = url.path if url.path.present? +# puts "bbbbbbbbbbbbb" +# puts path +# res = req.request_head(path || '/') +# puts "cccccccccccccc" +# puts res.to_json +# puts "ddddddddd" +# puts res.kind_of?(Net::HTTPRedirection) +# if res.kind_of?(Net::HTTPRedirection) +# url_exist?(res['location']) # Go after any redirect and make sure you can access the redirected URL +# else +# ! %W(4 5).include?(res.code[0]) # Not from 4xx or 5xx families +# end +# rescue Errno::ENOENT +# false #false if can't find the server +# end + + # def self.search(search) # where("name LIKE ? OR contact_no LIKE ?", "%#{search}%", "%#{search}%",) # end diff --git a/app/models/dining_queue.rb b/app/models/dining_queue.rb index 09f8b6b5..d710d67f 100644 --- a/app/models/dining_queue.rb +++ b/app/models/dining_queue.rb @@ -1,7 +1,9 @@ class DiningQueue < ApplicationRecord - + belongs_to :dining_facility, :optional => true def self.generate_queue_no - queue_no = DiningQueue.all.count + 1 + today = DateTime.now.strftime('%Y-%m-%d') + dining_queues = DiningQueue.where("DATE_FORMAT(created_at,'%Y-%m-%d') = ? ", today).order("queue_no desc") + queue_no = dining_queues.count + 1 return queue_no end -end +end \ No newline at end of file diff --git a/app/views/crm/dining_queues/_form.html.erb b/app/views/crm/dining_queues/_form.html.erb index 7f02ac15..320bac40 100644 --- a/app/views/crm/dining_queues/_form.html.erb +++ b/app/views/crm/dining_queues/_form.html.erb @@ -10,7 +10,7 @@

    - <%= f.button :submit %> + <%= f.button :submit,"Create Queue" %>
    <% end %> diff --git a/app/views/crm/dining_queues/assign.html.erb b/app/views/crm/dining_queues/assign.html.erb new file mode 100644 index 00000000..5de532cc --- /dev/null +++ b/app/views/crm/dining_queues/assign.html.erb @@ -0,0 +1,44 @@ + +
    +
    + +
    +
    +
    + +
    + <%= form_tag crm_assign_table_path, :method => :post do %> + +
    + + + +
    +
    + +
    + + + +
    + +
    +
    +
    + +
    + <% end %> +
    +
    + diff --git a/app/views/crm/dining_queues/index.html.erb b/app/views/crm/dining_queues/index.html.erb index e7834b98..7050885d 100644 --- a/app/views/crm/dining_queues/index.html.erb +++ b/app/views/crm/dining_queues/index.html.erb @@ -1,38 +1,69 @@ - - -
    -
    - - - - - - - - - +
    +
    + +
    + <% @i = 0 %> . + <% @dining_queues.each do |queue| %> +
    +
    " style="border:1px solid #ccc;margin-bottom: 10px "> +
    + + +

    <%= @i += 1 %> . Queue No

    +

    <%= queue.queue_no %>

    +

    + Name : <%= queue.name %>
    + Contact : <%= queue.contact_no %> +
    + Status : <%= queue.status rescue '-' %> +

    +
    +
    + +
    + <% end %> +
    + + +
    +
    + + +
    -
    - <% @dining_queues.each do |dining_queue| %> - - - - - - - <% end %> - -
    NameContact NoQueue NoAction
    <%= dining_queue.name %><%= dining_queue.contact_no %><%= dining_queue.queue_no %> - <%= link_to 'Edit', edit_crm_dining_queue_path(dining_queue) %> | <%= link_to 'Destroy', crm_dining_queue_path(dining_queue), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    + \ No newline at end of file diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index 995e13e9..9ac19b1a 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -235,7 +235,7 @@
    - +
    diff --git a/app/views/reports/receipt_no/index.html.erb b/app/views/reports/receipt_no/index.html.erb index 9d5c4f88..4dd239e7 100644 --- a/app/views/reports/receipt_no/index.html.erb +++ b/app/views/reports/receipt_no/index.html.erb @@ -44,7 +44,7 @@ <%= sale.receipt_date.strftime("#{sale.receipt_date.day.ordinalize} %b") rescue '-' %> <%=sale.receipt_no.to_s rescue ''%> - <%=sale.cashier_id rescue ''%> + <%=Employee.find(sale.cashier_id).name rescue ''%> <%= number_with_delimiter(sprintf("%.2f",sale.total_amount.to_f), :delimiter => ',') %> <%= number_with_delimiter(sprintf("%.2f",sale.total_discount.to_f), :delimiter => ',') %> <%= number_with_delimiter(sprintf("%.2f",total_sales.to_f), :delimiter => ',') %> diff --git a/config/routes.rb b/config/routes.rb index 19b07979..b5f944b5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -124,6 +124,9 @@ Rails.application.routes.draw do post "update_booking" , to: "bookings#update_booking", as: "update_booking"#assign and cancel get '/print/:id', to: "home#print_order"#print order for crm + get "/dining_queues/:id/assign" =>"dining_queues#assign", :as => "assign" + post "/dining_queues/assign_table" =>"dining_queues#assign_table", :as => "assign_table" + end #--------- Order Queue Station ------------# diff --git a/db/migrate/20170612031153_create_dining_queues.rb b/db/migrate/20170617163811_create_dining_queues.rb similarity index 81% rename from db/migrate/20170612031153_create_dining_queues.rb rename to db/migrate/20170617163811_create_dining_queues.rb index 3cf26418..d4b3eacd 100644 --- a/db/migrate/20170612031153_create_dining_queues.rb +++ b/db/migrate/20170617163811_create_dining_queues.rb @@ -5,6 +5,7 @@ class CreateDiningQueues < ActiveRecord::Migration[5.1] t.string :contact_no t.string :queue_no t.string :status + t.references :dining_facility, foreign_key: true t.timestamps end From 80320b6d3ed5a00cfaedbfe177ad57f8e6a8b1b4 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 18 Jun 2017 00:45:39 +0630 Subject: [PATCH 10/31] oqs updated --- app/assets/javascripts/OQS.js | 2 ++ app/controllers/oqs/home_controller.rb | 26 ++++++++++++++++++++------ app/models/dining_facility.rb | 20 ++++++++++++++++++-- app/models/order_queue_station.rb | 18 +++++++++--------- app/views/oqs/home/index.html.erb | 1 + 5 files changed, 50 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 8e252749..1ffc71b8 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -30,6 +30,7 @@ $(document).ready(function(){ var orderBy = $(this).children().children().children().children('.order-by').text(); var orderAt = $(this).children().children().children().children('.order-at').text(); var orderCustomer = $(this).children().children('.order-customer').text(); + var order_status = $(this).children().children('.order-status').text(); $('#order-title').text("ORDER DETAILS - " + orderZone); $('#order-by').text(orderBy); @@ -43,6 +44,7 @@ $(document).ready(function(){ $.ajax({ type: 'GET', url: '/oqs/' + orderZone, + data: { 'status' : order_status }, success: function(res){ for (i = 0; i < res.length; i++) { var data = JSON.stringify(res[i]); diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 67f96a26..a6898e85 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -26,15 +26,29 @@ class Oqs::HomeController < BaseOqsController def get_order_items items = [] table_name = params[:table_id] + status = params[:status] dining = DiningFacility.find_by_name(table_name); - booking_id = dining.get_current_booking - BookingOrder.where("booking_id='#{ booking_id }'").find_each do |bo| - order=Order.find(bo.order_id); - order.order_items.each do |oi| - items.push(oi) - end + oqpz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id) + if status == "" + AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=0").find_each do |aoi| + oi = OrderItem.find_by_item_code(aoi.item_code) + items.push(oi) + end + else + AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=1").find_each do |aoi| + oi = OrderItem.find_by_item_code(aoi.item_code) + items.push(oi) + end end + # booking_id = dining.get_new_booking + # BookingOrder.where("booking_id='#{ booking_id }'").find_each do |bo| + # order=Order.find(bo.order_id); + # order.order_items.each do |oi| + # items.push(oi) + # end + # end + render :json => items.to_json end diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index a3f8948f..6f898989 100644 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -9,8 +9,24 @@ class DiningFacility < ApplicationRecord scope :active, -> {where(is_active: true)} def get_current_booking - puts "enter booking" - booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and checkin_at between '#{DateTime.now.utc - 5.hours}' and '#{DateTime.now.utc}' and checkout_at is null").limit(1) + puts "enter booking" + booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and checkin_at between '#{DateTime.now.utc - 5.hours}' and '#{DateTime.now.utc}' and checkout_at is null").limit(1) + + if booking.count > 0 then + return booking[0].booking_id + else + return nil + end + end + + def get_new_booking + # query for new + # if status + # to ask when req bill booking_status? + booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and sale_id is null and checkout_at is null").limit(1) + # else + # booking = Booking.where("dining_facility_id = #{self.id} and booking_status ='assign' and sale_id not null").limit(1) + # end if booking.count > 0 then return booking[0].booking_id diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index d6e21c64..86a781d2 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -18,19 +18,19 @@ class OrderQueueStation < ApplicationRecord oqs_stations.each do |oqs| #Get List of items - pq_items = JSON.parse(oqs.processing_items) - - if oqs.id == oqpbz.order_queue_station_id + #Loop through the processing items - pq_items.each do |pq_item| - #Processing through the looping items - order_items.each do |order_item| - if (pq_item == order_item.item_code) + pq_items.each do |pq_item| + #Processing through the looping items + order_items.each do |order_item| + if (pq_item == order_item.item_code) + if oqs.id == oqpbz.order_queue_station_id #Same Order_items can appear in two location. - AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - end + AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) + end end end - end + end end #Print OQS where printing is require diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index 1f13383d..18e72880 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -60,6 +60,7 @@

    +
    From f33f11df64d0db6c23e47434cbb7dece54c8f389 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 18 Jun 2017 03:20:19 +0630 Subject: [PATCH 11/31] rescue member call and update oqs and js route bug --- app/assets/javascripts/origami.js | 13 ++--- app/controllers/api/bill_controller.rb | 21 +++++++- app/controllers/oqs/home_controller.rb | 48 +++++++++++++------ app/controllers/origami/home_controller.rb | 1 + .../origami/payments_controller.rb | 2 +- app/models/customer.rb | 7 ++- app/models/order.rb | 2 +- app/models/sale.rb | 36 +++++++------- app/models/sale_item.rb | 2 + app/models/sale_payment.rb | 9 +++- app/pdf/receipt_bill_pdf.rb | 8 ++-- app/views/origami/home/index.html.erb | 4 +- 12 files changed, 102 insertions(+), 51 deletions(-) diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 6149a2bc..78a21c3b 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -121,7 +121,7 @@ $(document).ready(function(){ // Bill Request $('#request_bills').click(function() { - var order_id=$(".selected-item").find(".orders-id").text(); + var order_id=$(".selected-item").find(".orders-id").text().substr(0,16); if(order_id!=""){ window.location.href = '/origami/' + order_id + '/request_bills' } @@ -133,7 +133,8 @@ $(document).ready(function(){ // Discount for Payment $('#discount').click(function() { - var order_id=$(".selected-item").find(".orders-id").text(); + var order_id=$(".selected-item").find(".orders-id").text().substr(0,16); + if(order_id!=""){ window.location.href = '/origami/' + order_id + '/discount' } @@ -148,7 +149,7 @@ $(document).ready(function(){ $("#pay-discount").on('click', function(e){ e.preventDefault(); var sale_id = $('#sale-id').text(); - var sale_item_id = $('.selected-item').attr('id'); + var sale_item_id = $('.selected-item').attr('id').substr(0,16); var sub_total = $('#order-sub-total').text(); var grand_total = $('#order-grand-total').text(); var discount_type = $('#discount-type').val(); @@ -178,7 +179,7 @@ $(document).ready(function(){ // Payment for Bill $('#pay-bill').click(function() { - var sale_id=$(".selected-item").find(".orders-id").text(); + var sale_id=$(".selected-item").find(".orders-id").text().substr(0,16); if(sale_id!=""){ window.location.href = '/origami/sale/'+ sale_id + "/payment" } @@ -190,7 +191,7 @@ $(document).ready(function(){ }); $('#customer').click(function() { - var sale = $(".selected-item").find(".orders-id").text(); + var sale = $(".selected-item").find(".orders-id").text().substr(0,16); if (sale.substring(0, 3)=="SAL") { var sale_id = sale }else{ @@ -202,7 +203,7 @@ $(document).ready(function(){ }); $('#re-print').click(function() { - var sale_id = $(".selected-item").find(".orders-id").text(); + var sale_id = $(".selected-item").find(".orders-id").text().substr(0,16); window.location.href = '/origami/'+ sale_id + "/reprint" diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 6b1fb225..75d412e7 100644 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -15,13 +15,32 @@ class Api::BillController < Api::ApiController @status, @sale_id = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee) else @status = true + @sale_id = booking.sale_id end end elsif (params[:order_id]) @sale = Sale.new @status, @sale_id = @sale.generate_invoice_from_order(params[:order_id], current_login_employee) - end + + @sale_data = Sale.find_by_sale_id(@sale_id) + @sale_items = SaleItem.where("sale_id=?",@sale_id) + + unique_code = "ReceiptBillPdf" + customer= Customer.where('customer_id=' + @sale_data.customer_id) + + # get printer info + print_settings=PrintSetting.find_by_unique_code(unique_code) + + # find order id by sale id + # sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id) + + # Calculate Food and Beverage Total + food_total, beverage_total = SaleItem.calculate_food_beverage(@sale_items) + + printer = Printer::ReceiptPrinter.new(print_settings) + printer.print_receipt_bill(print_settings,@sale_items,@sale_data,customer.name, food_total, beverage_total) + redirect_to origami_path(@sale_data.sale_id) end diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index a6898e85..979c5b88 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -28,16 +28,24 @@ class Oqs::HomeController < BaseOqsController table_name = params[:table_id] status = params[:status] dining = DiningFacility.find_by_name(table_name); - oqpz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id) - if status == "" - AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=0").find_each do |aoi| - oi = OrderItem.find_by_item_code(aoi.item_code) - items.push(oi) - end - else - AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=1").find_each do |aoi| - oi = OrderItem.find_by_item_code(aoi.item_code) - items.push(oi) + # oqpz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id) + # if status == "" + # AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=0").find_each do |aoi| + # oi = OrderItem.find_by_item_code(aoi.item_code) + # items.push(oi) + # end + # else + # AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=1").find_each do |aoi| + # oi = OrderItem.find_by_item_code(aoi.item_code) + # items.push(oi) + # end + # end + + booking = Booking.find_by_dining_facility_id(dining.id) + BookingOrder.where("booking_id='#{ booking.booking_id }'").find_each do |bo| + order=Order.find(bo.order_id) + order.order_items.each do |oi| + items.push(oi) end end @@ -73,16 +81,26 @@ class Oqs::HomeController < BaseOqsController # Query for OQS with status def queue_items_query(status) + # AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.station_name, oqs.is_active, df.name as zone, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, cus.name as customer_name, odt.created_at") + # .joins(" left join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = assigned_order_items.order_queue_station_id + # left join dining_facilities as df on df.zone_id = oqpz.zone_id + # left join order_queue_stations as oqs ON oqs.id = assigned_order_items.order_queue_station_id + # left join orders as od ON od.order_id = assigned_order_items.order_id + # left join order_items as odt ON odt.item_code = assigned_order_items.item_code + # left join customers as cus ON cus.customer_id = od.customer_id") + # .where("assigned_order_items.delivery_status = #{status}") + # .group("assigned_order_items.assigned_order_item_id") + # .order("odt.item_name DESC") AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.station_name, oqs.is_active, df.name as zone, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, cus.name as customer_name, odt.created_at") - .joins(" left join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = assigned_order_items.order_queue_station_id - left join dining_facilities as df on df.zone_id = oqpz.zone_id - left join order_queue_stations as oqs ON oqs.id = assigned_order_items.order_queue_station_id + .joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id left join orders as od ON od.order_id = assigned_order_items.order_id left join order_items as odt ON odt.item_code = assigned_order_items.item_code - left join customers as cus ON cus.customer_id = od.customer_id") + left join customers as cus ON cus.customer_id = od.customer_id + left join booking_orders as bo on bo.order_id = assigned_order_items.order_id + left join bookings as bk on bk.booking_id = bo.booking_id + left join dining_facilities as df on df.id = bk.dining_facility_id") .where("assigned_order_items.delivery_status = #{status}") .group("assigned_order_items.assigned_order_item_id") - .order("odt.item_name DESC") end end diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb index dbde3293..49ad4806 100644 --- a/app/controllers/origami/home_controller.rb +++ b/app/controllers/origami/home_controller.rb @@ -39,6 +39,7 @@ class Origami::HomeController < BaseOrigamiController str.push(ord_detail) end end + if is_ajax == 1 render :json => str.to_json else diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index ca497b81..2cb218da 100644 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -48,7 +48,7 @@ class Origami::PaymentsController < BaseOrigamiController @balance = 0.00 @accountable_type = '' - if response["data"]==true + if response["status"]==true response["data"].each do |res| if res["accountable_type"] == "RebateAccount" @balance = res["balance"] diff --git a/app/models/customer.rb b/app/models/customer.rb index 0cbf8d58..0fda2bb9 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -39,12 +39,17 @@ class Customer < ApplicationRecord auth_token = memberaction.auth_token.to_s url = membership.gateway_url.to_s + memberaction.gateway_url.to_s + begin response = HTTParty.get(url, :body => { membership_id: customer.membership_id,merchant_uid:merchant_uid,auth_token:auth_token}.to_json, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' - } + }, + :timeout => 10 ) + rescue Net::OpenTimeout + response = { status: false } + end return response; diff --git a/app/models/order.rb b/app/models/order.rb index 2ea76a98..a4328d76 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -246,7 +246,7 @@ class Order < ApplicationRecord .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("sales.sale_status='completed'") - .group("sales.sale_id,bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id") + .group("sales.sale_id") # For PG #bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id end diff --git a/app/models/sale.rb b/app/models/sale.rb index 9683c2b2..1edd835e 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -195,28 +195,28 @@ class Sale < ApplicationRecord existing_tax.delete end - total_tax_amount = 0 - #tax_profile - list by order_by - tax_profiles = TaxProfile.all.order("order_by asc") + # total_tax_amount = 0 + # #tax_profile - list by order_by + # tax_profiles = TaxProfile.all.order("order_by asc") - #Creat new tax records - tax_profiles.each do |tax| - sale_tax = SaleTax.new(:sale => self) - sale_tax.tax_name = tax.name - sale_tax.tax_rate = tax.rate - #include or execulive - # sale_tax.tax_payable_amount = total_taxable * tax.rate - sale_tax.tax_payable_amount = total_taxable * tax.rate / 100 - #new taxable amount - total_taxable = total_taxable + sale_tax.tax_payable_amount + # #Creat new tax records + # tax_profiles.each do |tax| + # sale_tax = SaleTax.new(:sale => self) + # sale_tax.tax_name = tax.name + # sale_tax.tax_rate = tax.rate + # #include or execulive + # # sale_tax.tax_payable_amount = total_taxable * tax.rate + # sale_tax.tax_payable_amount = total_taxable * tax.rate / 100 + # #new taxable amount + # total_taxable = total_taxable + sale_tax.tax_payable_amount - sale_tax.inclusive = tax.inclusive - sale_tax.save + # sale_tax.inclusive = tax.inclusive + # sale_tax.save - total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount - end + # total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount + # end - self.total_tax = total_tax_amount + # self.total_tax = total_tax_amount end diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index ef852bbd..71373f2d 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -30,6 +30,7 @@ class SaleItem < ApplicationRecord # end end + # Calculate food total and beverage total def self.calculate_food_beverage(sale_items) food_prices=0 beverage_prices=0 @@ -43,6 +44,7 @@ class SaleItem < ApplicationRecord return food_prices, beverage_prices end + # get food price or beverage price for item def self.get_price(sale_item_id) food_price=0 beverage_price=0 diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 731fa321..2b0035f3 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -260,12 +260,17 @@ class SalePayment < ApplicationRecord campaign_type_id = memberaction.additional_parameter["campaign_type_id"] auth_token = memberaction.auth_token.to_s url = membership.gateway_url.to_s + memberaction.gateway_url.to_s - response = HTTParty.post(url, :body => { generic_customer_id:generic_customer_id ,merchant_uid:merchant_uid,total_amount: total_amount,campaign_type_id: campaign_type_id, + + begin + response = HTTParty.post(url, :body => { generic_customer_id:generic_customer_id ,merchant_uid:merchant_uid,total_amount: total_amount,campaign_type_id: campaign_type_id, receipt_no: receipt_no,auth_token:auth_token}.to_json, :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' - }) + }, :timeout => 10) + rescue Net::OpenTimeout + response = { status: false } + end puts response.to_json end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 524ee7e5..b04d85ce 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -121,9 +121,9 @@ class ReceiptBillPdf < Prawn::Document pad_top(15) { text_box "#{product_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :overflow => :shrink_to_fix, :size => self.item_font_size, :overflow => :shrink_to_fix - text_box "#{price.to_i}", :at =>[self.item_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix - text_box "#{qty.to_i}", :at =>[item_name_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix - text_box "#{total_price.to_i}", :at =>[(item_name_width),y_position], :width =>self.total_width+5, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix + text_box "#{price}", :at =>[self.item_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix + text_box "#{qty}", :at =>[item_name_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix + text_box "#{total_price}", :at =>[(item_name_width),y_position], :width =>self.total_width+5, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix } move_down 3 end @@ -174,7 +174,7 @@ class ReceiptBillPdf < Prawn::Document text "#{ st.tax_name }", :size => self.item_font_size,:align => :left end bounding_box([self.item_description_width,y_position], :width =>self.label_width) do - text "( " +"#{ st.tax_payable_amount }" +" )" , :size => self.item_font_size,:align => :right + text "#{ st.tax_payable_amount }" , :size => self.item_font_size,:align => :right end end else diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 66d65aea..607f24b2 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -354,14 +354,14 @@ Discount: (<%=@selected_item.total_discount rescue 0%>) - + From e6cef8ef937ab82830ad8283b75e83b0083b95ac Mon Sep 17 00:00:00 2001 From: Phyo Date: Sun, 18 Jun 2017 11:57:14 +0630 Subject: [PATCH 12/31] Redeem amount not cut bug Fix --- app/models/sale_payment.rb | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 731fa321..465a8e5b 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -187,17 +187,17 @@ class SalePayment < ApplicationRecord payment_status = false #Next time - validate if the vochure number is valid - within - self.payment_method = "paypar" - self.payment_amount = self.received_amount - self.payment_reference = self.voucher_no - self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f - self.payment_status = "pending" - payment_method = self.save! customer_data = Customer.find_by_customer_id(self.sale.customer_id) membership_setting = MembershipSetting.find_by_membership_type("paypar_url") membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id) if membership_data["status"]==true + self.payment_method = "paypar" + self.payment_amount = self.received_amount + self.payment_reference = self.voucher_no + self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f + self.payment_status = "pending" + payment_method = self.save! SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') sale_update_payment_status(self.received_amount.to_f) @@ -251,7 +251,12 @@ class SalePayment < ApplicationRecord payparcost = payparcost + pp.payment_amount end end - total_amount = food_prices - payparcost + overall_dis = SaleItem.get_overall_discount(sObj.id) + total_amount = food_prices - payparcost + overall_dis + puts "total_amount" + puts food_prices + puts payparcost + puts total_amount if total_amount > 0 receipt_no = sObj.receipt_no membership = MembershipSetting.find_by_membership_type("paypar_url") @@ -266,7 +271,7 @@ class SalePayment < ApplicationRecord 'Content-Type' => 'application/json', 'Accept' => 'application/json' }) - + puts "haha" puts response.to_json end end From 3a1fba2c6f2f1a3fb96e5e130c5513b3aec622c0 Mon Sep 17 00:00:00 2001 From: Phyo Date: Sun, 18 Jun 2017 13:18:23 +0630 Subject: [PATCH 13/31] Other Payments Bug fix --- app/views/origami/jcb/index.html.erb | 8 +++++++- app/views/origami/master/index.html.erb | 8 +++++++- app/views/origami/mpu/index.html.erb | 8 +++++++- app/views/origami/visa/index.html.erb | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/views/origami/jcb/index.html.erb b/app/views/origami/jcb/index.html.erb index 6d08b25a..9c239931 100644 --- a/app/views/origami/jcb/index.html.erb +++ b/app/views/origami/jcb/index.html.erb @@ -96,6 +96,12 @@
    \ No newline at end of file diff --git a/app/views/reports/daily_sale/index.html.erb b/app/views/reports/daily_sale/index.html.erb new file mode 100644 index 00000000..4aa0c841 --- /dev/null +++ b/app/views/reports/daily_sale/index.html.erb @@ -0,0 +1,190 @@ + + +
    + <%= render :partial=>'shift_sale_report_filter', + :locals=>{ :period_type => true, :shift_name => false, :report_path =>reports_daily_sale_index_path} %> +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + <% if params[:from]%> + + + + <% end %> + + + + + + + + + + + + + + + + + + + <% unless @sale_data.empty? %> + + + <% void = 0 %> + <% mpu = 0 %> + <% master = 0 %> + <% visa = 0 %> + <% jcb = 0 %> + <% paypar = 0 %> + <% cash = 0 %> + <% credit = 0 %> + <% foc = 0 %> + <% discount = 0 %> + <% total = 0 %> + <% grand_total = 0 %> + <% count = 1 %> <% rounding_adj = 0 %> + <% @sale_data.each do |sale| %> + <% void += sale[:void_amount] %> + <% mpu += sale[:mpu_amount] %> + <% master += sale[:master_amount] %> + <% visa += sale[:visa_amount] %> + <% jcb += sale[:jcb_amount] %> + <% paypar += sale[:paypar_amount] %> + <% cash += sale[:cash_amount] %> + <% credit += sale[:credit_amount] %> + <% foc += sale[:foc_amount] %> + <% discount += sale[:total_discount] %> + <% total += sale[:grand_total].to_f + sale[:rounding_adj].to_f %> + <% grand_total += sale[:grand_total].to_f %> + <% rounding_adj += sale[:rounding_adj].to_f %> + + + + + + + + + + + + + + + + + + <% count = count + 1 %> + <% end %> + + + + + + + + + + + + + + + + + + <% total_tax = 0 %> + <% unless @tax.empty? %> + <% @tax.each do |tax| %> + <% total_tax += tax.tax_amount.to_f %> + + + + + + + <% end %> + <% net = total - total_tax %> + + + + + + <% end %> + + <% end %> +
    Sale (<%= params[:from] rescue '-' %> - <%= params[:to] rescue '-'%>)
    Sr.noDateDaily Void AmountDaily mpu SalesDaily master SalesDaily visa SalesDaily jcb SalesDaily paypar SalesDaily Cash SalesDaily Credit SalesDaily FOC Sales(Daily Discount)Grand Total +
    Rounding Adj.
    Rounding Adj.Grand Total
    <%= count %><%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %><%= number_with_delimiter(sprintf("%.2f",sale[:void_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:mpu_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:master_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:visa_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:jcb_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:paypar_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:cash_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:credit_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:foc_amount]), :delimiter => ',') rescue '-'%>(<%= number_with_delimiter(sprintf("%.2f",sale[:total_discount]), :delimiter => ',') rescue '-'%>)<%= number_with_delimiter(sprintf("%.2f",sale[:grand_total].to_f + sale[:rounding_adj].to_f ), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:rounding_adj].to_f), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:grand_total]), :delimiter => ',') rescue '-'%>
    Total<%= number_with_delimiter(sprintf("%.2f",mpu_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",master_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",visa_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",jcb_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",paypar_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",cash), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",credit), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",foc), :delimiter => ',') rescue '-'%>(<%= number_with_delimiter(sprintf("%.2f",discount), :delimiter => ',') rescue '-'%>)<%= number_with_delimiter(sprintf("%.2f",total), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",rounding_adj), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",grand_total), :delimiter => ',') rescue '-'%>
    <%= tax.tax_name rescue '-'%><%= number_with_delimiter(sprintf("%.2f",tax.tax_amount), :delimiter => ',') rescue '-'%> 
    Net Amount<%= number_with_delimiter(sprintf("%.2f",net), :delimiter => ',') rescue '-'%> 
    +
    +
    +
    + + + \ No newline at end of file diff --git a/app/views/reports/daily_sale/index.xls.erb b/app/views/reports/daily_sale/index.xls.erb new file mode 100644 index 00000000..dfcc18d4 --- /dev/null +++ b/app/views/reports/daily_sale/index.xls.erb @@ -0,0 +1,116 @@ +
    +
    + + + <% if params[:from]%> + + + + <% end %> + + + + + + + + + + + + + + + + + + + <% unless @sale_data.empty? %> + + + <% void = 0 %> + <% mpu = 0 %> + <% master = 0 %> + <% visa = 0 %> + <% jcb = 0 %> + <% paypar = 0 %> + <% cash = 0 %> + <% credit = 0 %> + <% foc = 0 %> + <% discount = 0 %> + <% total = 0 %> + <% grand_total = 0 %> + <% count = 1 %> <% rounding_adj = 0 %> + <% @sale_data.each do |sale| %> + <% void += sale[:void_amount] %> + <% mpu += sale[:mpu_amount] %> + <% master += sale[:master_amount] %> + <% visa += sale[:visa_amount] %> + <% jcb += sale[:jcb_amount] %> + <% paypar += sale[:paypar_amount] %> + <% cash += sale[:cash_amount] %> + <% credit += sale[:credit_amount] %> + <% foc += sale[:foc_amount] %> + <% discount += sale[:total_discount] %> + <% total += sale[:grand_total].to_f + sale[:rounding_adj].to_f %> + <% grand_total += sale[:grand_total].to_f %> + <% rounding_adj += sale[:rounding_adj].to_f %> + + + + + + + + + + + + + + + + + + <% count = count + 1 %> + <% end %> + + + + + + + + + + + + + + + + + + <% total_tax = 0 %> + <% unless @tax.empty? %> + <% @tax.each do |tax| %> + <% total_tax += tax.tax_amount.to_f %> + + + + + + + <% end %> + <% net = total - total_tax %> + + + + + + <% end %> + + <% end %> +
    Sale (<%= params[:from] rescue '-' %> - <%= params[:to] rescue '-'%>)
    Sr.noDateDaily Void AmountDaily mpu SalesDaily master SalesDaily visa SalesDaily jcb SalesDaily paypar SalesDaily Cash SalesDaily Credit SalesDaily FOC Sales(Daily Discount)Grand Total +
    Rounding Adj.
    Rounding Adj.Grand Total
    <%= count %><%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %><%= number_with_delimiter(sprintf("%.2f",sale[:void_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:mpu_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:master_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:visa_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:jcb_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:paypar_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:cash_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:credit_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:foc_amount]), :delimiter => ',') rescue '-'%>(<%= number_with_delimiter(sprintf("%.2f",sale[:total_discount]), :delimiter => ',') rescue '-'%>)<%= number_with_delimiter(sprintf("%.2f",sale[:grand_total].to_f + sale[:rounding_adj].to_f ), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:rounding_adj].to_f), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:grand_total]), :delimiter => ',') rescue '-'%>
    Total<%= number_with_delimiter(sprintf("%.2f",mpu_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",master_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",visa_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",jcb_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",paypar_amount), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",cash), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",credit), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",foc), :delimiter => ',') rescue '-'%>(<%= number_with_delimiter(sprintf("%.2f",discount), :delimiter => ',') rescue '-'%>)<%= number_with_delimiter(sprintf("%.2f",total), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",rounding_adj), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",grand_total), :delimiter => ',') rescue '-'%>
    <%= tax.tax_name rescue '-'%><%= number_with_delimiter(sprintf("%.2f",tax.tax_amount), :delimiter => ',') rescue '-'%> 
    Net Amount<%= number_with_delimiter(sprintf("%.2f",net), :delimiter => ',') rescue '-'%> 
    +
    +
    \ No newline at end of file diff --git a/app/views/reports/daily_sale_report.html.erb b/app/views/reports/daily_sale_report.html.erb index e69de29b..786951f5 100644 --- a/app/views/reports/daily_sale_report.html.erb +++ b/app/views/reports/daily_sale_report.html.erb @@ -0,0 +1,20 @@ + + +
    + <%= render :partial=>'shift_sale_report_filter', + :locals=>{ :period_type => true, :shift_name => false, :report_path =>reports_receipt_no_index_path} %> +
    +
    + +
    +
    + +
    +
    diff --git a/config/routes.rb b/config/routes.rb index b5f944b5..22a042bd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -210,6 +210,7 @@ Rails.application.routes.draw do #--------- Reports Controller Sections ------------# namespace :reports do resources :receipt_no, :only => [:index, :show] + resources :daily_sale, :only => [:index, :show] # resources :sales, :only => [:index, :show] # resources :orders, :only => [:index, :show] # resources :customers, :only => [:index, :show] From b65d127fd0463c266cca2dc01852104229f3eb59 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 18 Jun 2017 20:07:28 +0630 Subject: [PATCH 17/31] bill print format and tax fix --- app/assets/javascripts/origami.js | 39 ++++++++++++++------------- app/models/order.rb | 4 +-- app/models/sale.rb | 12 ++++++--- app/pdf/receipt_bill_pdf.rb | 37 ++++++++++++++----------- app/views/origami/home/index.html.erb | 6 ++--- 5 files changed, 56 insertions(+), 42 deletions(-) diff --git a/app/assets/javascripts/origami.js b/app/assets/javascripts/origami.js index 78a21c3b..d4071432 100644 --- a/app/assets/javascripts/origami.js +++ b/app/assets/javascripts/origami.js @@ -55,7 +55,7 @@ $(document).ready(function(){ var cashier=""; var receipt_date=""; - var sub_total=0; + var sub_total=0.0; var discount_amount=0; var tax_amount=0; var grand_total_amount=0; @@ -69,11 +69,11 @@ $(document).ready(function(){ type: "POST", url: "/origami/" + unique_id, data: { 'booking_id' : unique_id }, - success:function(result){ + success:function(result){ for (i = 0; i < result.length; i++) { var data = JSON.stringify(result[i]); var parse_data = JSON.parse(data); - var show_date = ""; + var show_date = ""; // Receipt Header receipt_no = result[i].receipt_no; @@ -81,36 +81,37 @@ $(document).ready(function(){ if(result[i].receipt_date != null){ receipt_date = new Date(result[i].receipt_date); show_date = receipt_date.getDate() + "-" + receipt_date.getMonth() + "-" + receipt_date.getFullYear() + ' ' + receipt_date.getHours()+ ':' + receipt_date.getMinutes() - } - - $("#receipt_no").text(receipt_no); - $("#cashier").text(cashier == null ? "" : cashier); - $("#receipt_date").text(show_date); - + } //Receipt Charges - sub_total += (parse_data.qty*parse_data.price); + sub_total += parseFloat(parse_data.price); discount_amount = parse_data.discount_amount == null? '0.0' : parse_data.discount_amount; tax_amount = parse_data.tax_amount; - grand_total_amount = parse_data.grand_total_amount; - - $("#order-sub-total").text(sub_total); - // $("#order-food").text(''); - // $("#order-beverage").text(''); - $("#order-discount").text(discount_amount); - $("#order-Tax").text(tax_amount); - $("#order-grand-total").text(grand_total_amount); + grand_total_amount = parse_data.grand_total_amount; // Ordered Items var order_items_rows = "" + "" + parse_data.item_name + "" + "" + parse_data.qty + "" + - "" + parse_data.qty*parse_data.price + "" + + "" + parse_data.price + "" + ""; $("#order-items-table").children("tbody").append(order_items_rows); } + + // Cashier Info + $("#receipt_no").text(receipt_no); + $("#cashier").text(cashier == null ? "" : cashier); + $("#receipt_date").text(show_date); + + // Payment Info + $("#order-sub-total").text(sub_total); + // $("#order-food").text(''); + // $("#order-beverage").text(''); + $("#order-discount").text(discount_amount); + $("#order-Tax").text(tax_amount); + $("#order-grand-total").text(grand_total_amount); } }); // End AJAX Call diff --git a/app/models/order.rb b/app/models/order.rb index 14fd8cda..a4328d76 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -231,7 +231,7 @@ class Order < ApplicationRecord .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("(orders.status = 'new' or orders.status = 'billed') and (dining_facilities.type=? and dining_facilities.is_active=?)",DiningFacility::TABLE_TYPE,true) - .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id") + .group("bookings.booking_id") # For PG # booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true # sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status,orders.order_id @@ -262,7 +262,7 @@ class Order < ApplicationRecord .joins("left join orders on orders.order_id = booking_orders.order_id") .joins("left join sales on sales.sale_id = bookings.sale_id") .where("(orders.status = 'new' or orders.status = 'billed') and (dining_facilities.type=? and dining_facilities.is_active=?)",DiningFacility::ROOM_TYPE,true) - .group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.customer_id,orders.order_id") + .group("bookings.booking_id") # For PG # booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true # sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.customer_id,orders.order_id diff --git a/app/models/sale.rb b/app/models/sale.rb index 3714c21e..ccd2a96a 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -23,8 +23,7 @@ class Sale < ApplicationRecord if (booking) Rails.logger.debug "Booking -> Booking Order Count -> " + booking.booking_orders.count.to_s #get all order attached to this booking and combine into 1 invoice - - puts booking.booking_orders.length + booking.booking_orders.each do |order| if booking.sale_id status, sale_id = generate_invoice_from_order(order.order_id, nil, booking, requested_by) @@ -90,6 +89,8 @@ class Sale < ApplicationRecord order.save booking.sale_id = self.id + booking.checkout_at = Time.now.utc + booking.checkout_by = requested_by.name booking.save return true, self.id @@ -190,9 +191,14 @@ class Sale < ApplicationRecord # Tax Calculate def apply_tax(total_taxable) + #if tax is not apply create new record + # self.sale_taxes.each do |existing_tax| + # #delete existing and create new + # existing_tax.delete + # end #if tax is not apply create new record - self.sale_taxes.each do |existing_tax| + SaleTax.where("sale_id='#{self.sale_id}'").find_each do |existing_tax| #delete existing and create new existing_tax.delete end diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 6cacc391..c1ba4936 100644 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -4,9 +4,9 @@ class ReceiptBillPdf < Prawn::Document self.page_width = 210 self.page_height = 2500 self.margin = 5 - self.price_width = 35 + self.price_width = 40 self.qty_width = 20 - self.total_width = 35 + self.total_width = 40 self.item_width = self.page_width - ((self.price_width + self.qty_width + self.total_width)) self.item_height = 15 self.item_description_width = (self.page_width-20) / 2 @@ -53,29 +53,36 @@ class ReceiptBillPdf < Prawn::Document # move_down 2 y_position = cursor bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do - text "Receipt No:", :size => self.item_font_size,:align => :left + text "Receipt No: #{sale_data.receipt_no}", :size => self.item_font_size,:align => :left end - - bounding_box([self.label_width, y_position], :width =>self.item_width) do - text "#{sale_data.receipt_no}" , :size => self.item_font_size, :align => :left + bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do + text "#{ sale_data.bookings[0].dining_facility.name }" , :size => self.item_font_size,:align => :right end move_down 5 y_position = cursor - bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do - text "Customer:", :size => self.item_font_size,:align => :left + bounding_box([0, y_position], :width =>self.item_width) do + text "Waiter: #{sale_data.requested_by}" , :size => self.item_font_size, :align => :left end - bounding_box([self.label_width,y_position], :width =>self.item_width) do - text "#{customer_name}" , :size => self.item_font_size,:align => :left + move_down 5 + + y_position = cursor + bounding_box([0,y_position], :width =>self.item_width, :height => self.item_height) do + text "Cashier: #{sale_data.cashier_name}", :size => self.item_font_size,:align => :left end move_down 5 + # bounding_box([self.label_width,y_position], :width =>self.item_width) do + # text "#{customer_name}" , :size => self.item_font_size,:align => :left + # end + # move_down 5 + y_position = cursor bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do - text "Date:", :size => self.item_font_size,:align => :left + text "Time In: #{ sale_data.bookings[0].checkin_at.strftime('%I:%M %p') }", :size => self.item_font_size,:align => :left end - bounding_box([self.label_width,y_position], :width => self.item_width) do - text "#{sale_data.receipt_date.strftime('%Y-%m-%d %I:%M %p')}" , :size => self.item_font_size,:align => :left + bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do + text "Time Out: #{ sale_data.bookings[0].checkout_at.strftime('%I:%M %p') }" , :size => self.item_font_size,:align => :right end move_down 5 @@ -118,7 +125,7 @@ class ReceiptBillPdf < Prawn::Document y_position = cursor pad_top(15) { - text_box "#{product_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :overflow => :shrink_to_fix, :size => self.item_font_size, :overflow => :shrink_to_fix + text_box "#{product_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :size => self.item_font_size, :overflow => :shrink_to_fix text_box "#{price}", :at =>[self.item_width,y_position], :width => self.price_width, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix text_box "#{qty}", :at =>[item_name_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix text_box "#{total_price}", :at =>[(item_name_width),y_position], :width =>self.total_width+5, :height =>self.item_height, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix @@ -163,7 +170,7 @@ class ReceiptBillPdf < Prawn::Document text "( " +"#{sale_data.total_discount}" +" )" , :size => self.item_font_size,:align => :right end - if sale_data.sale_taxes.length > 1 + if sale_data.sale_taxes.length > 0 sale_data.sale_taxes.each do |st| move_down 5 y_position = cursor diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index ff83dad4..ce2b3a94 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -306,12 +306,12 @@ sub_total = 0 if @selected_item_type == "Sale" @selected_item.sale_items.each do |sale_item| - sub_total += (sale_item.qty*sale_item.unit_price) + sub_total = sub_total + sale_item.price %> <%= sale_item.product_name %> <%= sale_item.qty %> - <%= sale_item.qty*sale_item.price %> + <%= sale_item.price %> <% end @@ -322,7 +322,7 @@ # For Order Items if @selected_item_type == "Order" @selected_item.order_items.each do |order_item| - sub_total += (order_item.qty*order_item.unit_price) + sub_total = sub_total + (order_item.qty*order_item.price) %> <%= order_item.item_name %> From e25ef173082fe6021edc75fc0013a05318ea28f6 Mon Sep 17 00:00:00 2001 From: Nweni Date: Mon, 19 Jun 2017 09:46:51 +0630 Subject: [PATCH 18/31] payment --- app/views/origami/jcb/index.html.erb | 9 ++++++--- app/views/origami/master/index.html.erb | 2 +- app/views/origami/mpu/index.html.erb | 7 +++++-- app/views/origami/payments/show.html.erb | 7 ++++--- app/views/origami/visa/index.html.erb | 9 ++++++--- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/views/origami/jcb/index.html.erb b/app/views/origami/jcb/index.html.erb index 6d08b25a..8f5d3940 100644 --- a/app/views/origami/jcb/index.html.erb +++ b/app/views/origami/jcb/index.html.erb @@ -11,7 +11,7 @@
    - +

    @@ -68,7 +68,7 @@
    00
    -
    Nett
    +
    Nett
    Del
    Clr
    @@ -91,7 +91,7 @@
    - +
    @@ -128,6 +128,9 @@ $(document).on('click', '.cashier_number', function(event){ case 'del' : var cash=$('#amount').text(); $('#amount').text(cash.substr(0,cash.length-1)); + case 'nett': + var remain_amount = $('#validamount').val(); + $('#amount').text(remain_amount); break; } diff --git a/app/views/origami/master/index.html.erb b/app/views/origami/master/index.html.erb index 5767ad0f..efc44149 100644 --- a/app/views/origami/master/index.html.erb +++ b/app/views/origami/master/index.html.erb @@ -11,7 +11,7 @@
    - +

    diff --git a/app/views/origami/mpu/index.html.erb b/app/views/origami/mpu/index.html.erb index f58ca552..001f83be 100644 --- a/app/views/origami/mpu/index.html.erb +++ b/app/views/origami/mpu/index.html.erb @@ -11,7 +11,7 @@
    - +

    @@ -68,7 +68,7 @@
    00
    -
    Nett
    +
    Nett
    Del
    Clr
    @@ -127,6 +127,9 @@ $(document).on('click', '.cashier_number', function(event){ case 'del' : var cash=$('#amount').text(); $('#amount').text(cash.substr(0,cash.length-1)); + case 'nett': + var remain_amount = $('#validamount').val(); + $('#amount').text(remain_amount); break; } diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index 9ac19b1a..91d5b6b2 100644 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -235,9 +235,10 @@
    - - - + + + +
    diff --git a/app/views/origami/visa/index.html.erb b/app/views/origami/visa/index.html.erb index e01ca696..42e7e2ec 100644 --- a/app/views/origami/visa/index.html.erb +++ b/app/views/origami/visa/index.html.erb @@ -11,7 +11,7 @@
    - +

    @@ -68,7 +68,7 @@
    00
    -
    Nett
    +
    Nett
    Del
    Clr
    @@ -91,7 +91,7 @@
    - +
    @@ -127,6 +127,9 @@ $(document).on('click', '.cashier_number', function(event){ case 'del' : var cash=$('#amount').text(); $('#amount').text(cash.substr(0,cash.length-1)); + case 'nett': + var remain_amount = $('#validamount').val(); + $('#amount').text(remain_amount); break; } From dd3c429301389f684d9413e46e0ee7092a198683 Mon Sep 17 00:00:00 2001 From: Yan Date: Mon, 19 Jun 2017 11:56:26 +0630 Subject: [PATCH 19/31] control paypar url and oqs fix --- app/models/order_queue_station.rb | 4 ++- app/models/sale_payment.rb | 50 +++++++++++++++++-------------- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index 0350049c..2df76af8 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -29,7 +29,9 @@ class OrderQueueStation < ApplicationRecord if oqs.id == oqpbz.order_queue_station_id #Same Order_items can appear in two location. AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - end + else + AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) + end end end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 3b67648c..856cd054 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -66,19 +66,20 @@ class SalePayment < ApplicationRecord end - def self.get_paypar_account(url,token,membership_id,campaign_type_id,merchant_uid,auth_token) - begin - response = HTTParty.get(url, - :body => { app_token: token,membership_id:membership_id,campaign_type_id:campaign_type_id,merchant_uid:merchant_uid,auth_token:auth_token}.to_json, - :headers => { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' - }, :timeout => 10 - ) - rescue Net::OpenTimeout - response = { status: false } - end - return response; + def self.get_paypar_account(url,token,membership_id,campaign_type_id,merchant_uid,auth_token) + # Control for Paypar Cloud + begin + response = HTTParty.get(url, + :body => { app_token: token,membership_id:membership_id,campaign_type_id:campaign_type_id,merchant_uid:merchant_uid,auth_token:auth_token}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + }, :timeout => 10 + ) + rescue Net::OpenTimeout + response = { status: false } + end + return response; end def self.redeem(paypar_url,token,membership_id,received_amount,sale_id) @@ -90,13 +91,19 @@ class SalePayment < ApplicationRecord campaign_type_id = membership_actions_data.additional_parameter["campaign_type_id"] sale_data = Sale.find_by_sale_id(sale_id) if sale_data - response = HTTParty.post(url, - :body => { generic_customer_id:membership_id,redeem_amount:received_amount,receipt_no:sale_data.receipt_no,campaign_type_id:campaign_type_id,account_no:"",merchant_uid:merchant_uid,auth_token:auth_token}.to_json, - :headers => { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' - } - ) + # Control for Paypar Cloud + begin + response = HTTParty.post(url, + :body => { generic_customer_id:membership_id,redeem_amount:received_amount,receipt_no:sale_data.receipt_no,campaign_type_id:campaign_type_id,account_no:"",merchant_uid:merchant_uid,auth_token:auth_token}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + }, + :timeout => 10 + ) + rescue Net::OpenTimeout + response = false + end else response = false; end @@ -122,7 +129,6 @@ class SalePayment < ApplicationRecord end def creditnote_payment(customer_id) - payment_status = false self.payment_method = "creditnote" @@ -190,7 +196,6 @@ class SalePayment < ApplicationRecord payment_status = false #Next time - validate if the vochure number is valid - within - customer_data = Customer.find_by_customer_id(self.sale.customer_id) membership_setting = MembershipSetting.find_by_membership_type("paypar_url") membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id) @@ -269,6 +274,7 @@ class SalePayment < ApplicationRecord auth_token = memberaction.auth_token.to_s url = membership.gateway_url.to_s + memberaction.gateway_url.to_s + # Control for Paypar Cloud begin response = HTTParty.post(url, :body => { generic_customer_id:generic_customer_id ,merchant_uid:merchant_uid,total_amount: total_amount,campaign_type_id: campaign_type_id, receipt_no: receipt_no,auth_token:auth_token}.to_json, From b826b479cdd05aea3493f56005dac2398d77d212 Mon Sep 17 00:00:00 2001 From: Yan Date: Mon, 19 Jun 2017 12:07:43 +0630 Subject: [PATCH 20/31] update for oqs print --- app/models/printer/order_queue_printer.rb | 16 ++++++++-------- app/pdf/order_item_pdf.rb | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index dae1ad53..f0b3d576 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -6,12 +6,12 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker #Print order_item= print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) pdf = OrderItemPdf.new(order_item[0]) - pdf.render_file "tmp/receipt.pdf" + pdf.render_file "tmp/order_item.pdf" if oqs.print_copy - self.print("tmp/receipt.pdf", oqs.printer_name) - self.print("tmp/receipt.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) else - self.print("tmp/receipt.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) end end @@ -24,12 +24,12 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker if oqs.cut_per_item order.each do|odi| pdf = OrderItemPdf.new(odi) - pdf.render_file "tmp/receipt.pdf" + pdf.render_file "tmp/order_item.pdf" if oqs.print_copy - self.print("tmp/receipt.pdf", oqs.printer_name) - self.print("tmp/receipt.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) else - self.print("tmp/receipt.pdf", oqs.printer_name) + self.print("tmp/order_item.pdf", oqs.printer_name) end end # For Print Order Summary diff --git a/app/pdf/order_item_pdf.rb b/app/pdf/order_item_pdf.rb index 96008dfd..dd223e49 100644 --- a/app/pdf/order_item_pdf.rb +++ b/app/pdf/order_item_pdf.rb @@ -71,7 +71,7 @@ class OrderItemPdf < Prawn::Document add_order_items(order_item) dash(1, :space => 1, :phase => 1) - stroke_horizontal_line 0, self.page_width + stroke_horizontal_line 0, (self.page_width - self.margin) move_down 5 end From 33128d26a21e7c82ade0aa72a06dcb4b6f595fd0 Mon Sep 17 00:00:00 2001 From: Phyo Date: Mon, 19 Jun 2017 12:17:08 +0630 Subject: [PATCH 21/31] add Back Button in Redeem --- app/views/origami/redeem_payments/index.html.erb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/views/origami/redeem_payments/index.html.erb b/app/views/origami/redeem_payments/index.html.erb index 0991e562..3d7607c4 100644 --- a/app/views/origami/redeem_payments/index.html.erb +++ b/app/views/origami/redeem_payments/index.html.erb @@ -41,7 +41,7 @@

    You can rebate upto <%= @food_prices %>

    -->
    -
    +
    @@ -84,9 +84,15 @@
    Pay
    +
    + +
    +
    + +
    From 2dbbb17634beec5ff77f5e155440199a260971af Mon Sep 17 00:00:00 2001 From: Phyo Date: Mon, 19 Jun 2017 12:21:54 +0630 Subject: [PATCH 22/31] Add extra fields to accounts --- .../settings/accounts_controller.rb | 2 +- app/views/layouts/_header.html.erb | 2 ++ app/views/settings/accounts/_form.html.erb | 7 +++++-- app/views/settings/accounts/index.html.erb | 19 ++++++++++++++----- app/views/settings/accounts/show.html.erb | 12 ++++++++++-- db/migrate/20170331024747_create_accounts.rb | 4 ++++ 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/app/controllers/settings/accounts_controller.rb b/app/controllers/settings/accounts_controller.rb index 74f27c84..90e6a304 100644 --- a/app/controllers/settings/accounts_controller.rb +++ b/app/controllers/settings/accounts_controller.rb @@ -68,6 +68,6 @@ class Settings::AccountsController < ApplicationController # Never trust parameters from the scary internet, only allow the white list through. def account_params - params.require(:account).permit(:title, :account_type) + params.require(:account).permit(:title, :account_type,:discount,:point,:bonus,:rebate) end end diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index a385806c..c729f255 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -23,6 +23,8 @@
  • <%= link_to "Payment Method", settings_payment_method_settings_path, :tabindex =>"-1" %>
  • <%= link_to "Tax Profile", settings_tax_profiles_path, :tabindex =>"-1" %>
  • <%= link_to "Print Setting", print_settings_path, :tabindex =>"-1" %>
  • +
    +
  • <%= link_to "Accounts", settings_accounts_path, :tabindex =>"-1" %>
  • diff --git a/app/views/settings/accounts/_form.html.erb b/app/views/settings/accounts/_form.html.erb index 4231ad32..b2101a43 100644 --- a/app/views/settings/accounts/_form.html.erb +++ b/app/views/settings/accounts/_form.html.erb @@ -4,11 +4,14 @@
    <%= f.input :title %> <%= f.input :account_type, :collection => Lookup.collection_of("account_type") %> + <%= f.input :discount %> + <%= f.input :point %> + <%= f.input :bonus %> + <%= f.input :rebate %>
    <%= f.button :submit %>
    - -<% end %> +<% end %> diff --git a/app/views/settings/accounts/index.html.erb b/app/views/settings/accounts/index.html.erb index d8469a69..23cfb7eb 100644 --- a/app/views/settings/accounts/index.html.erb +++ b/app/views/settings/accounts/index.html.erb @@ -14,9 +14,14 @@ - - - + + + + + + + + @@ -25,10 +30,14 @@ + + + + <% end %> diff --git a/app/views/settings/accounts/show.html.erb b/app/views/settings/accounts/show.html.erb index 6ec1c80a..284bb602 100644 --- a/app/views/settings/accounts/show.html.erb +++ b/app/views/settings/accounts/show.html.erb @@ -17,6 +17,10 @@ + + + + @@ -25,10 +29,14 @@ - + + + + +
    TitleAccount TypeActionTitleAccount TypeCan get DiscountCan get PointsCan get BonusCan rebateAction
    <%= account.title %> <%= account.account_type %><%= account.discount %><%= account.point %><%= account.bonus %><%= account.rebate %> - <%= link_to 'Edit', edit_settings_account_path(account) %> | + <%= link_to 'Edit', edit_settings_account_path(account) %> | <%= link_to 'Destroy', settings_account_path(account), method: :delete, data: { confirm: 'Are you sure?' } %> - +
    Title Account typeCan get DiscountCan get PointsCan get BonusCan rebate Action
    <%= @settings_account.title %> <%= @settings_account.account_type %><%= @settings_account.discount %><%= @settings_account.point %><%= @settings_account.bonus %><%= @settings_account.rebate %><%= link_to 'Edit', edit_settings_account_path(@settings_account, @settings_account) %>
    -
    \ No newline at end of file + diff --git a/db/migrate/20170331024747_create_accounts.rb b/db/migrate/20170331024747_create_accounts.rb index 5816aace..4c4a7b74 100644 --- a/db/migrate/20170331024747_create_accounts.rb +++ b/db/migrate/20170331024747_create_accounts.rb @@ -3,6 +3,10 @@ class CreateAccounts < ActiveRecord::Migration[5.1] create_table :accounts do |t| t.string :title t.string :account_type + t.boolean :discount, :null => false, :default => false + t.boolean :point, :null => false, :default => false + t.boolean :bonus, :null => false, :default => false + t.boolean :rebate, :null => false, :default => false t.timestamps end From d8930cb2b5c7812595fb03fd0564984b2f6846b4 Mon Sep 17 00:00:00 2001 From: Yan Date: Mon, 19 Jun 2017 15:55:21 +0630 Subject: [PATCH 23/31] still --- app/models/order_queue_station.rb | 38 +++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index 2df76af8..f086e3cd 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -31,24 +31,52 @@ class OrderQueueStation < ApplicationRecord AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) else AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - end + end + puts oqs.station_name + puts oqs.auto_print + puts oqs.cut_per_item + puts oqs.print_copy + if oqs.auto_print + print_slip(oqs, order, order_items) + end end end end end #Print OQS where printing is require - end private #Print order_items in 1 slip - def print_slip + def print_slip(oqs, order, items) + unique_code="OrderSummaryPdf" + + # 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,order.order_id) + # update print status for completed same order items + items.each do |ai| + ai.print_status=true + ai.save + end end - #Print order_items in 1 slip per item - def print_slip_item + #Print order_item in 1 slip per item + def print_slip_item(oqs, item) + unique_code="OrderItemPdf" + # 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 ) + + # update print status for completed same order items + item.each do |ai| + ai.print_status=true + ai.save + end end end From d78327f90678f0967564a0905af98d4eebd290c5 Mon Sep 17 00:00:00 2001 From: Phyo Date: Mon, 19 Jun 2017 16:22:39 +0630 Subject: [PATCH 24/31] Membership Setting UI --- .../membership_actions/_form.html.erb | 1 - .../membership_actions/index.html.erb | 80 ++++++++++--------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/app/views/settings/membership_actions/_form.html.erb b/app/views/settings/membership_actions/_form.html.erb index 3084d4ac..ac3e07b0 100644 --- a/app/views/settings/membership_actions/_form.html.erb +++ b/app/views/settings/membership_actions/_form.html.erb @@ -9,7 +9,6 @@ <%= f.input :auth_token %> <%= f.input :merchant_account_id %> <%= f.input :created_by %> - <%= f.input :additional_parameter %>
    diff --git a/app/views/settings/membership_actions/index.html.erb b/app/views/settings/membership_actions/index.html.erb index 635fd34c..4a348ed3 100644 --- a/app/views/settings/membership_actions/index.html.erb +++ b/app/views/settings/membership_actions/index.html.erb @@ -1,41 +1,47 @@ -

    <%= notice %>

    -

    Settings Membership Actions

    - - - - - - - - - - - - - - - - - - <% @settings_membership_actions.each do |settings_membership_action| %> - - - - - - - - - - - - - - <% end %> - -
    Membership typeIs activeGateway communication typeGateway urlAuth tokenMerchant accountCreated byAdditional parameter
    <%= settings_membership_action.membership_type %><%= settings_membership_action.is_active %><%= settings_membership_action.gateway_communication_type %><%= settings_membership_action.gateway_url %><%= settings_membership_action.auth_token %><%= settings_membership_action.merchant_account_id %><%= settings_membership_action.created_by %><%= settings_membership_action.additional_parameter %><%= link_to 'Show', settings_membership_action_path(settings_membership_action) %><%= link_to 'Edit', edit_settings_membership_action_path(settings_membership_action) %><%= link_to 'Destroy', settings_membership_action_path(settings_membership_action), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    +
    + + + + + + + + + + + + + + -<%= link_to 'New Settings Membership Action', new_settings_membership_action_path %> + + <% @settings_membership_actions.each do |settings_membership_action| %> + + + + + + + + + + + + + + <% end %> + +
    Membership typeIs activeGateway communication typeGateway urlAuth tokenMerchant accountCreated byAdditional parameter
    <%= settings_membership_action.membership_type %><%= settings_membership_action.is_active %><%= settings_membership_action.gateway_communication_type %><%= settings_membership_action.gateway_url %><%= settings_membership_action.auth_token %><%= settings_membership_action.merchant_account_id %><%= settings_membership_action.created_by %><%= settings_membership_action.additional_parameter %><%= link_to 'Show', settings_membership_action_path(settings_membership_action) %><%= link_to 'Edit', edit_settings_membership_action_path(settings_membership_action) %><%= link_to 'Destroy', settings_membership_action_path(settings_membership_action), method: :delete, data: { confirm: 'Are you sure?' } %>
    +
    From c02e305c309ea309fad25f1faf2ee0283b37e9d0 Mon Sep 17 00:00:00 2001 From: Phyo Date: Mon, 19 Jun 2017 16:24:44 +0630 Subject: [PATCH 25/31] Zone Created_at Bug Fix --- app/controllers/settings/rooms_controller.rb | 10 ++++++---- app/controllers/settings/tables_controller.rb | 9 +++++---- app/controllers/settings/zones_controller.rb | 5 ++++- app/views/settings/rooms/_form.html.erb | 1 - app/views/settings/tables/_form.html.erb | 1 - app/views/settings/zones/_form.html.erb | 2 +- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/controllers/settings/rooms_controller.rb b/app/controllers/settings/rooms_controller.rb index 69e3ec22..2d5b01e1 100644 --- a/app/controllers/settings/rooms_controller.rb +++ b/app/controllers/settings/rooms_controller.rb @@ -1,6 +1,6 @@ class Settings::RoomsController < ApplicationController before_action :set_settings_room, only: [:show, :edit, :update, :destroy] - before_action :set_settings_zone, only: [:index, :show, :edit, :new, :update,:create] + before_action :set_settings_zone, only: [:index, :show, :edit, :new, :update,:create,:destroy] # GET /settings/rooms # GET /settings/rooms.json def index @@ -28,9 +28,10 @@ class Settings::RoomsController < ApplicationController @settings_room = Room.new(settings_room_params) @settings_room.type = DiningFacility::ROOM_TYPE @settings_room.zone_id = params[:zone_id] + @settings_room.created_by = current_login_employee.name respond_to do |format| if @settings_room.save - format.html { redirect_to settings_zone_rooms_path, notice: 'Room was successfully created.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Room was successfully created.' } format.json { render :show, status: :created, location: @settings_room } else puts "abc" @@ -43,9 +44,10 @@ class Settings::RoomsController < ApplicationController # PATCH/PUT /settings/rooms/1 # PATCH/PUT /settings/rooms/1.json def update + @settings_room.created_by = current_login_employee.name respond_to do |format| if @settings_room.update(settings_room_params) - format.html { redirect_to settings_zone_rooms_path, notice: 'Room was successfully updated.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Room was successfully updated.' } format.json { render :show, status: :ok, location: @settings_room } else format.html { render :edit } @@ -59,7 +61,7 @@ class Settings::RoomsController < ApplicationController def destroy @settings_room.destroy respond_to do |format| - format.html { redirect_to settings_zones_path, notice: 'Room was successfully destroyed.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Room was successfully destroyed.' } format.json { head :no_content } end end diff --git a/app/controllers/settings/tables_controller.rb b/app/controllers/settings/tables_controller.rb index 124a0d94..7c293455 100644 --- a/app/controllers/settings/tables_controller.rb +++ b/app/controllers/settings/tables_controller.rb @@ -28,12 +28,12 @@ class Settings::TablesController < ApplicationController @settings_table = Table.new(settings_table_params) @settings_table.type = DiningFacility::TABLE_TYPE @settings_table.zone_id = params[:zone_id] + @settings_table.created_by = current_login_employee.name respond_to do |format| if @settings_table.save - format.html { redirect_to settings_zone_tables_path, notice: 'Table was successfully created.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Table was successfully created.' } format.json { render :show, status: :created, location: @settings_table } else - puts "abc" format.html { render :new } format.json { render json: @settings_table.errors, status: :unprocessable_entity } end @@ -43,9 +43,10 @@ class Settings::TablesController < ApplicationController # PATCH/PUT /settings/tables/1 # PATCH/PUT /settings/tables/1.json def update + @settings_table.created_by = current_login_employee.name respond_to do |format| if @settings_table.update(settings_table_params) - format.html { redirect_to settings_zone_tables_path, notice: 'Table was successfully updated.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Table was successfully updated.' } format.json { render :show, status: :ok, location: @settings_table } else format.html { render :edit } @@ -59,7 +60,7 @@ class Settings::TablesController < ApplicationController def destroy @settings_table.destroy respond_to do |format| - format.html { redirect_to settings_zones_path, notice: 'Table was successfully destroyed.' } + format.html { redirect_to settings_zone_path(@zone), notice: 'Table was successfully destroyed.' } format.json { head :no_content } end end diff --git a/app/controllers/settings/zones_controller.rb b/app/controllers/settings/zones_controller.rb index 5752b5e3..08a6f189 100644 --- a/app/controllers/settings/zones_controller.rb +++ b/app/controllers/settings/zones_controller.rb @@ -27,7 +27,7 @@ class Settings::ZonesController < ApplicationController # POST /settings/zones.json def create @settings_zone = Zone.new(settings_zone_params) - + @settings_zone.created_by = current_login_employee.name respond_to do |format| if @settings_zone.save format.html { redirect_to settings_zone_path(@settings_zone), notice: 'Zone was successfully created.' } @@ -43,6 +43,7 @@ class Settings::ZonesController < ApplicationController # PATCH/PUT /settings/zones/1.json def update respond_to do |format| + @settings_zone.created_by = current_login_employee.name if @settings_zone.update(settings_zone_params) format.html { redirect_to settings_zone_path(@settings_zone), notice: 'Zone was successfully updated.' } format.json { render :show, status: :ok, location: @settings_zone } @@ -56,6 +57,8 @@ class Settings::ZonesController < ApplicationController # DELETE /settings/zones/1 # DELETE /settings/zones/1.json def destroy + @settings_zone.rooms.destroy + @settings_zone.tables.destroy @settings_zone.destroy respond_to do |format| format.html { redirect_to settings_zones_path, notice: 'Zone was successfully destroyed.' } diff --git a/app/views/settings/rooms/_form.html.erb b/app/views/settings/rooms/_form.html.erb index c164ab67..25af618c 100644 --- a/app/views/settings/rooms/_form.html.erb +++ b/app/views/settings/rooms/_form.html.erb @@ -7,7 +7,6 @@ <%= f.input :seater %> <%= f.input :order_by %> <%= f.input :is_active %> - <%= f.input :created_by, :collection => Employee.collection %>
    diff --git a/app/views/settings/tables/_form.html.erb b/app/views/settings/tables/_form.html.erb index a411175c..169e1601 100644 --- a/app/views/settings/tables/_form.html.erb +++ b/app/views/settings/tables/_form.html.erb @@ -7,7 +7,6 @@ <%= f.input :seater %> <%= f.input :order_by %> <%= f.input :is_active %> - <%= f.input :created_by, :collection => Employee.collection %>
    diff --git a/app/views/settings/zones/_form.html.erb b/app/views/settings/zones/_form.html.erb index a7740211..351f2c94 100644 --- a/app/views/settings/zones/_form.html.erb +++ b/app/views/settings/zones/_form.html.erb @@ -4,7 +4,7 @@
    <%= f.input :name %> <%= f.input :is_active %> - <%= f.input :created_by, :collection => Employee.collection %> +
    From 9089eab19617643954de06fc38151adfacc4cc95 Mon Sep 17 00:00:00 2001 From: Yan Date: Mon, 19 Jun 2017 17:36:39 +0630 Subject: [PATCH 26/31] temp remove options in oqs --- app/controllers/oqs/home_controller.rb | 4 +-- app/models/order_queue_station.rb | 32 ++++++++++------------- app/models/printer/order_queue_printer.rb | 17 ++++++++---- app/pdf/order_summary_pdf.rb | 5 ++-- app/views/oqs/home/index.html.erb | 10 +++++-- 5 files changed, 39 insertions(+), 29 deletions(-) diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index 58aac67c..14d79857 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -2,9 +2,9 @@ class Oqs::HomeController < BaseOqsController def index queue_stations=OrderQueueStation.all - @queue_items_details = queue_items_query(0) + @queue_items_details = queue_items_query(false) - @queue_completed_item = queue_items_query(1) + @queue_completed_item = queue_items_query(true) @queue_stations_items=Array.new diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index f086e3cd..a5267442 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -16,6 +16,7 @@ class OrderQueueStation < ApplicationRecord oqpbz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id) order_items = order.order_items + #Assign OQS id to order Items oqs_stations.each do |oqs| #Get List of items - @@ -26,16 +27,13 @@ class OrderQueueStation < ApplicationRecord #Processing through the looping items order_items.each do |order_item| if (pq_item == order_item.item_code) - if oqs.id == oqpbz.order_queue_station_id - #Same Order_items can appear in two location. + # if oqs.id == oqpbz.order_queue_station_id + # #Same Order_items can appear in two location. + # AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) + # else AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - else - AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs) - end - puts oqs.station_name - puts oqs.auto_print - puts oqs.cut_per_item - puts oqs.print_copy + # end + if oqs.auto_print print_slip(oqs, order, order_items) end @@ -43,29 +41,27 @@ class OrderQueueStation < ApplicationRecord end end end - - #Print OQS where printing is require end private #Print order_items in 1 slip - def print_slip(oqs, order, items) + def print_slip(oqs, order, order_items) unique_code="OrderSummaryPdf" - # 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,order.order_id) - # update print status for completed same order items - items.each do |ai| + AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai| + # update print status for order items ai.print_status=true ai.save - end + end + end #Print order_item in 1 slip per item - def print_slip_item(oqs, item) + def print_slip_item(oqs, assigned_order_item) unique_code="OrderItemPdf" # print when complete click @@ -74,7 +70,7 @@ class OrderQueueStation < ApplicationRecord order_queue_printer.print_order_item(oqs,item.order_id, item.item_code ) # update print status for completed same order items - item.each do |ai| + assigned_order_item.each do |ai| ai.print_status=true ai.save end diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index f0b3d576..52fc3244 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -23,13 +23,15 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker # 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) - pdf.render_file "tmp/order_item.pdf" + # 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) + 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 # For Print Order Summary @@ -37,7 +39,12 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker filename = "tmp/order_summary_#{order_id}" + ".pdf" pdf = OrderSummaryPdf.new(order) pdf.render_file filename - self.print(filename, oqs.printer_name) + 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 diff --git a/app/pdf/order_summary_pdf.rb b/app/pdf/order_summary_pdf.rb index 47c1f6a5..22f27497 100644 --- a/app/pdf/order_summary_pdf.rb +++ b/app/pdf/order_summary_pdf.rb @@ -77,6 +77,7 @@ class OrderSummaryPdf < Prawn::Document move_down 5 order_item.each do|odi| + y_position = cursor bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do text "#{odi.item_name}", :size => self.item_font_size,:align => :left end @@ -84,9 +85,9 @@ class OrderSummaryPdf < Prawn::Document bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do text "#{odi.qty}", :size => self.item_font_size,:align => :left end - end - move_down 5 + 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 18e72880..084ae8cf 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -49,7 +49,10 @@ <%= qid.qty %> ] -

    Medium, Fries, Salad

    +

    Order at @@ -97,7 +100,10 @@ <%= qid.qty %> ] -

    Medium, Fries, Salad

    +

    Order at From 90be2b8d63ab578e870760bec0e888dbd0695625 Mon Sep 17 00:00:00 2001 From: Phyo Date: Mon, 19 Jun 2017 18:54:19 +0630 Subject: [PATCH 27/31] OQS edit bug fix --- app/assets/javascripts/settings/processing_items.js | 2 +- app/controllers/settings/order_queue_stations_controller.rb | 2 +- app/views/settings/order_queue_stations/_form.html.erb | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/settings/processing_items.js b/app/assets/javascripts/settings/processing_items.js index 445b46d5..60c53ba4 100644 --- a/app/assets/javascripts/settings/processing_items.js +++ b/app/assets/javascripts/settings/processing_items.js @@ -40,7 +40,7 @@ $(document).on('turbolinks:load', function() { items.push($(value).attr("data-id")); }); - $("#order_queue_station_processing_items").val(items); + $("#order_queue_station_processing_items").val(JSON.stringify(items)); //$(this).submit(); }) }) diff --git a/app/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb index b63e1ca8..bc7766a7 100644 --- a/app/controllers/settings/order_queue_stations_controller.rb +++ b/app/controllers/settings/order_queue_stations_controller.rb @@ -41,7 +41,7 @@ class Settings::OrderQueueStationsController < ApplicationController # PATCH/PUT /settings/order_queue_stations/1 # PATCH/PUT /settings/order_queue_stations/1.json def update - params[:order_queue_station][:processing_items] = params[:order_queue_station][:processing_items].split(/,/).inspect + # params[:order_queue_station][:processing_items] = params[:order_queue_station][:processing_items].split(/,/).inspect respond_to do |format| if @settings_order_queue_station.update(settings_order_queue_station_params) format.html { redirect_to settings_order_queue_station_path(@settings_order_queue_station), notice: 'Order queue station was successfully updated.' } diff --git a/app/views/settings/order_queue_stations/_form.html.erb b/app/views/settings/order_queue_stations/_form.html.erb index 7a2cba43..67b34798 100644 --- a/app/views/settings/order_queue_stations/_form.html.erb +++ b/app/views/settings/order_queue_stations/_form.html.erb @@ -13,6 +13,7 @@ div.form-inputs span{ <%= f.input :printer_name %> <%= f.input :font_size %> <%= f.input :print_copy %> + <%= f.hidden_field :processing_items %> <%= f.label "Select Zones", :class => 'control-label' %> <%= f.collection_check_boxes :zone_ids , Zone.all, :id, :name , :class => 'ta'%> <%= f.input :cut_per_item %> From c95b0130dc9e94a8e8ac416b0fc58d8717474ede Mon Sep 17 00:00:00 2001 From: Yan Date: Mon, 19 Jun 2017 18:56:36 +0630 Subject: [PATCH 28/31] edit migrate oqs --- db/migrate/20170403151731_create_order_queue_stations.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20170403151731_create_order_queue_stations.rb b/db/migrate/20170403151731_create_order_queue_stations.rb index 6c327b8e..801cdef0 100644 --- a/db/migrate/20170403151731_create_order_queue_stations.rb +++ b/db/migrate/20170403151731_create_order_queue_stations.rb @@ -3,7 +3,7 @@ class CreateOrderQueueStations < ActiveRecord::Migration[5.1] create_table :order_queue_stations do |t| t.string :station_name, :null => false t.boolean :is_active, :null => false, :default => false - t.json :processing_items + t.json :processing_items, :default => "[]" t.boolean :print_copy, :null => false, :default => false t.string :printer_name t.integer :font_size, :null => false, :default => 10 From 80362f87feddabb1a2d844daf475303460967676 Mon Sep 17 00:00:00 2001 From: Phyo Date: Tue, 20 Jun 2017 13:22:27 +0630 Subject: [PATCH 29/31] Rebate Option --- .../origami/redeem_payments_controller.rb | 11 ++-- app/models/sale_item.rb | 55 ++++++++++--------- app/models/sale_payment.rb | 14 ++--- .../origami/redeem_payments/index.html.erb | 6 +- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/app/controllers/origami/redeem_payments_controller.rb b/app/controllers/origami/redeem_payments_controller.rb index 99601449..792cb7a4 100644 --- a/app/controllers/origami/redeem_payments_controller.rb +++ b/app/controllers/origami/redeem_payments_controller.rb @@ -6,7 +6,8 @@ class Origami::RedeemPaymentsController < BaseOrigamiController sale_data = Sale.find_by_sale_id(@sale_id) # limit redeem_amount - food_prices, beverage_prices = SaleItem.calculate_food_beverage(sale_data.sale_items) + rebate_prices = SaleItem.calculate_food_beverage(sale_data.sale_items) + nonrebate_prices = sale_data.total_amount - rebate_prices @payparcount = 0 others = 0 sale_data.sale_payments.each do |sale_payment| @@ -16,11 +17,11 @@ class Origami::RedeemPaymentsController < BaseOrigamiController others = others + sale_payment.payment_amount end end - is_bervage_exceed = others - (beverage_prices + sale_data.total_tax) - if is_bervage_exceed < 0 - @food_prices = food_prices - @payparcount + non_rebate_exceed = others - (nonrebate_prices + sale_data.total_tax) + if non_rebate_exceed < 0 + @redeem_prices = rebate_prices - @payparcount else - @food_prices = food_prices - @payparcount -is_bervage_exceed + @redeem_prices = rebate_prices - @payparcount -non_rebate_exceed end if sale_data diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb index a999b6a8..bec8b5c5 100644 --- a/app/models/sale_item.rb +++ b/app/models/sale_item.rb @@ -32,48 +32,49 @@ class SaleItem < ApplicationRecord # Calculate food total and beverage total def self.calculate_food_beverage(sale_items) - food_prices=0 - beverage_prices=0 - sale_items.each do |si| - food_price, beverage_price = self.get_price(si.sale_item_id) - - food_prices = food_prices + food_price - beverage_prices = beverage_prices + beverage_price + rebateacc = Account.where("rebate=?",true) + puts "Account that can rebate" + rebateacc.each do |i| + puts i.title end - puts food_prices - puts beverage_prices - return food_prices, beverage_prices + prices=0 + sale_items.each do |si| + price = self.get_price(si.sale_item_id,rebateacc) + + prices = prices + price + end + return prices end # get food price or beverage price for item - def self.get_price(sale_item_id) - food_price=0 - beverage_price=0 + def self.get_price(sale_item_id,rebateacc) + price=0 item=SaleItem.select("sale_items.price , menu_items.account_id") .joins("left join menu_items on menu_items.item_code = sale_items.product_code") .where("sale_items.sale_item_id=?", sale_item_id.to_s) - if item[0].account_id == 1 - food_price = item[0].price - else - beverage_price = item[0].price - end - return food_price, beverage_price - end - - def self.get_overall_discount(sale_id) - price = 0.0 - item=SaleItem.where("product_code=?", sale_id) - - item.each do|i| - price += i.price + rebateacc.each do |i| + if item[0].account_id == i.id + price = item[0].price + end end return price end + # def self.get_overall_discount(sale_id) + # price = 0.0 + # item=SaleItem.where("product_code=?", sale_id) + # + # item.each do|i| + # price += i.price + # end + # + # return price + # end + private def generate_custom_id self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI") diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 715c7479..4ca22423 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -241,7 +241,9 @@ class SalePayment < ApplicationRecord end def rebat(sObj) - food_prices, beverage_prices = SaleItem.calculate_food_beverage(sObj.sale_items) + rebate_prices = SaleItem.calculate_food_beverage(sObj.sale_items) + puts "rebate_prices" + puts rebate_prices generic_customer_id = sObj.customer.membership_id if generic_customer_id != nil || generic_customer_id != "" || generic_customer_id != 0 paypar = sObj.sale_payments @@ -251,12 +253,10 @@ class SalePayment < ApplicationRecord payparcost = payparcost + pp.payment_amount end end - overall_dis = SaleItem.get_overall_discount(sObj.id) - total_amount = food_prices - payparcost + overall_dis - puts "total_amount" - puts food_prices - puts payparcost - puts total_amount + # overall_dis = SaleItem.get_overall_discount(sObj.id) + overall_dis = sObj.total_discount + + total_amount = rebate_prices - payparcost + overall_dis if total_amount > 0 receipt_no = sObj.receipt_no membership = MembershipSetting.find_by_membership_type("paypar_url") diff --git a/app/views/origami/redeem_payments/index.html.erb b/app/views/origami/redeem_payments/index.html.erb index e1363d8b..83b24213 100644 --- a/app/views/origami/redeem_payments/index.html.erb +++ b/app/views/origami/redeem_payments/index.html.erb @@ -6,7 +6,7 @@

    - +

    @@ -38,7 +38,7 @@ +

    You can rebate upto <%= @redeem_prices %>

    -->
    @@ -151,7 +151,7 @@ $("#redeem").click(function(){ }else if(valid_amount< redeem_amount){ alert(" Insufficient Amount!") }else{ - if(redeem_amount <= "<%= @food_prices %>"){ + if(redeem_amount <= "<%= @redeem_prices %>"){ $.ajax({ type: "POST", url: "<%=origami_payment_paypar_path%>", From e43818fdf5101667fc01f593e11dd2c482ec533a Mon Sep 17 00:00:00 2001 From: Yan Date: Tue, 20 Jun 2017 13:33:41 +0630 Subject: [PATCH 30/31] oqs updated --- app/assets/javascripts/OQS.js | 4 ++- app/controllers/oqs/print_controller.rb | 11 +++++-- app/models/order_queue_station.rb | 3 ++ app/models/printer/order_queue_printer.rb | 22 +++++++------- app/pdf/order_item_pdf.rb | 18 ++++++------ app/pdf/order_summary_pdf.rb | 29 +++++++++++-------- ...70403151731_create_order_queue_stations.rb | 2 +- 7 files changed, 53 insertions(+), 36 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index e7b85110..87121ea3 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -122,11 +122,13 @@ $(document).ready(function(){ // Print Order Summary $('#print_order_summary').on('click',function(){ + var table_name=$('.selected-item').children().children().children('.order-zone').text().trim(); var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); - var params = { 'id':assigned_item_id }; + var params = { 'table_name':table_name }; $.ajax({ type: 'GET', url: '/oqs/print/print_order_summary/'+assigned_item_id, + data: params, success: function(data){ } }); }); diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index 9fc2a2d7..dbbc8351 100644 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -8,11 +8,12 @@ class Oqs::PrintController < ApplicationController # order queue stations oqs = assigned_item.order_queue_station + 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 ) + order_queue_printer.print_order_item(oqs, assigned_item.order_id, assigned_item.item_code, print_status ) # update print status for completed same order items assigned_items.each do |ai| @@ -25,16 +26,22 @@ class Oqs::PrintController < ApplicationController 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 + "'"); # order queue stations oqs = assigned_item.order_queue_station + print_status = assigned_item.print_status == true ? " (Re-Print)" : "" + + # get dining + dining = DiningFacility.find_by_name(table_name); + 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) - order_queue_printer.print_order_summary(oqs,assigned_item.order_id) + order_queue_printer.print_order_summary(oqs, booking, 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 a5267442..2f0b40aa 100644 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -31,6 +31,9 @@ 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 diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index 52fc3244..ab6794b2 100644 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -1,11 +1,11 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker - def print_order_item(oqs,order_id, item_code) + def print_order_item(oqs,order_id, item_code, print_status) #Use CUPS service #Generate PDF #Print - order_item= print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) - pdf = OrderItemPdf.new(order_item[0]) + order_item = print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code) + pdf = OrderItemPdf.new(order_item[0], print_status) pdf.render_file "tmp/order_item.pdf" if oqs.print_copy self.print("tmp/order_item.pdf", oqs.printer_name) @@ -15,16 +15,16 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end end - def print_order_summary(oqs,order_id) + def print_order_summary(oqs,booking, print_status) #Use CUPS service #Generate PDF #Print - order=print_query('order_summary',order_id) + order=print_query('order_summary',booking.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) + pdf = OrderItemPdf.new(odi, print_status) # pdf.render_file "tmp/order_item.pdf" pdf.render_file filename if oqs.print_copy @@ -36,8 +36,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # For Print Order Summary else - filename = "tmp/order_summary_#{order_id}" + ".pdf" - pdf = OrderSummaryPdf.new(order) + filename = "tmp/order_summary_#{booking.booking_id}" + ".pdf" + pdf = OrderSummaryPdf.new(order, print_status) pdf.render_file filename if oqs.print_copy self.print(filename, oqs.printer_name) @@ -59,15 +59,15 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker left join customers as cus ON cus.customer_id = orders.customer_id") .where("order_items.item_code='" + code + "'") .group("order_items.item_code") - else + else 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("orders.order_id='" + code + "'") - .group("order_items.item_code") + .where("b.booking_id='" + code + "'") + # .group("order_items.item_code") end end diff --git a/app/pdf/order_item_pdf.rb b/app/pdf/order_item_pdf.rb index dd223e49..e5c5395f 100644 --- a/app/pdf/order_item_pdf.rb +++ b/app/pdf/order_item_pdf.rb @@ -1,16 +1,16 @@ 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) - self.page_width = 254 - self.page_height = 1450 - self.margin = 10 + def initialize(order_item, print_status) + self.page_width = 210 + self.page_height = 2500 + self.margin = 5 self.price_width = 40 # No Need for item - self.qty_width = 34 + self.qty_width = 30 self.total_width = 40 # No Need for item - self.item_width = self.page_width - (self.qty_width + (self.margin*4)) + self.item_width = self.page_width - self.qty_width self.item_height = 15 self.item_description_width = self.page_width - (self.price_width + self.qty_width + self.total_width) - self.label_width=80 + self.label_width=100 super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.page_width, self.page_height]) # super(:margin => [10, 5, 30, 5], :page_size => [200,400]) @@ -19,9 +19,9 @@ class OrderItemPdf < Prawn::Document # font "public/fonts/Zawgyi-One.ttf" # font "public/fonts/padauk.ttf" self.header_font_size = 14 - self.item_font_size = 12 + self.item_font_size = 12 - text "#{order_item.dining}", :size => self.header_font_size,:align => :center, :left_margin => -20 + text "#{ order_item.dining+print_status }", :size => self.header_font_size,:align => :center, :left_margin => -20 stroke_horizontal_rule move_down 5 diff --git a/app/pdf/order_summary_pdf.rb b/app/pdf/order_summary_pdf.rb index 22f27497..a1459512 100644 --- a/app/pdf/order_summary_pdf.rb +++ b/app/pdf/order_summary_pdf.rb @@ -1,13 +1,13 @@ class OrderSummaryPdf < 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) - self.page_width = 254 - self.page_height = 1450 - self.margin = 10 + def initialize(order, print_status) + self.page_width = 210 + self.page_height = 2500 + self.margin = 5 self.price_width = 40 # No Need for item - self.qty_width = 34 + self.qty_width = 30 self.total_width = 40 # No Need for item - self.item_width = self.page_width - (self.qty_width + (self.margin*4)) + self.item_width = self.page_width - (self.qty_width - self.margin) self.item_height = 15 self.item_description_width = self.page_width - (self.price_width + self.qty_width + self.total_width) self.label_width=100 @@ -20,7 +20,7 @@ class OrderSummaryPdf < Prawn::Document self.header_font_size = 12 self.item_font_size = 10 - text "#{order[0].dining}", :size => self.header_font_size,:align => :center, :left_margin => -20 + text "#{ order[0].dining + print_status }", :size => self.header_font_size,:align => :center, :left_margin => -20 stroke_horizontal_rule move_down 5 @@ -59,7 +59,7 @@ class OrderSummaryPdf < Prawn::Document 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 + bounding_box([self.item_width-2,y_position], :width => self.qty_width, :height => self.item_height) do text "Qty", :size => self.item_font_size,:align => :left end @@ -78,12 +78,17 @@ class OrderSummaryPdf < Prawn::Document order_item.each do|odi| y_position = cursor - bounding_box([0,y_position], :width => self.item_width, :height => self.item_height) do - text "#{odi.item_name}", :size => self.item_font_size,:align => :left + + # pad_top(15) { + # text_box "#{odi.item_name}", :at =>[0,y_position], :width => self.item_width, :height =>self.item_height, :size => self.item_font_size, :overflow => :shrink_to_fix + # text_box "#{odi.qty}", :at =>[self.item_width,y_position], :width => self.qty_width, :height =>self.item_height, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix + # } + bounding_box([0,y_position], :width => self.item_width) do + text "#{odi.item_name}", :size => self.item_font_size,:align => :left, :height => self.item_height end - bounding_box([self.item_width,y_position], :width => self.qty_width, :height => self.item_height) do - text "#{odi.qty}", :size => self.item_font_size,:align => :left + bounding_box([self.item_width,y_position], :width => self.qty_width) do + text "#{odi.qty}", :size => self.item_font_size,:align => :left, :height => self.item_height end move_down 5 diff --git a/db/migrate/20170403151731_create_order_queue_stations.rb b/db/migrate/20170403151731_create_order_queue_stations.rb index 801cdef0..6c327b8e 100644 --- a/db/migrate/20170403151731_create_order_queue_stations.rb +++ b/db/migrate/20170403151731_create_order_queue_stations.rb @@ -3,7 +3,7 @@ class CreateOrderQueueStations < ActiveRecord::Migration[5.1] create_table :order_queue_stations do |t| t.string :station_name, :null => false t.boolean :is_active, :null => false, :default => false - t.json :processing_items, :default => "[]" + t.json :processing_items t.boolean :print_copy, :null => false, :default => false t.string :printer_name t.integer :font_size, :null => false, :default => 10 From 6528845d827a4f8fdf8ddc7fce185c4ccc1656c3 Mon Sep 17 00:00:00 2001 From: Yan Date: Tue, 20 Jun 2017 15:58:50 +0630 Subject: [PATCH 31/31] oqs updated --- app/controllers/oqs/print_controller.rb | 8 ++- app/models/order_queue_station.rb | 13 ++-- app/models/printer/order_queue_printer.rb | 85 +++++++++++++++++++---- 3 files changed, 83 insertions(+), 23 deletions(-) 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