From bb4c00440658e5170357bf58bd782ea44f0230de Mon Sep 17 00:00:00 2001 From: San Wai Lwin Date: Fri, 4 May 2018 18:00:44 +0630 Subject: [PATCH 01/16] pull from master --- README.md | 4 + app/assets/javascripts/order_reservation.js | 4 +- .../origami/addorders_controller.rb | 3 - .../origami/dashboard_controller.rb | 7 + .../origami/order_reservation_controller.rb | 2 +- .../origami/payments_controller.rb | 3 + app/models/order_reservation.rb | 5 +- app/pdf/order_set_item_pdf.rb | 4 +- app/views/origami/addorders/detail.html.erb | 80 ++++++------ app/views/origami/dashboard/index.html.erb | 2 + .../origami/order_reservation/index.html.erb | 6 +- app/views/origami/sales/show.html.erb | 122 +++++++++++++++++- 12 files changed, 185 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 0605a14a..dfebed49 100755 --- a/README.md +++ b/README.md @@ -188,6 +188,10 @@ Add Base URL for DOEMAL 1) settings/lookups => { type:order_reservation, name: BaseURL, value:'{doemal url}' } 2) settings/lookups => { type:order_reservation, name: Token, value:'{doemal token}' } +Add Feature for Dine-in Cashier + ** '0' means can not use dine-in cashier and '1' means can use dine-in cashier ** + => settings/lookups => { type:dinein_cashier, name: DineInCashier, value:'{0 or 1}' } + Add Feature for Quick Service ** '0' means can not use quick service and '1' means can use quick service ** => settings/lookups => { type:quick_service, name: QuickService, value:'{0 or 1}' } diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 990e4a74..07eab9e1 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -282,8 +282,8 @@ function callback_url(callback,ref_no,order_id,status,time,exptime){ function timeFormat(date){ var isPM = date.getHours() >= 12; var isMidday = date.getHours() == 12; - var time = [date.getHours() - (isPM && !isMidday ? 12 : 0), - date.getMinutes() || '00'].join(':') + + var time = [(date.getHours()>10? date.getHours() : '0'+date.getHours()) - (isPM && !isMidday ? 12 : 0), + (date.getMinutes()>10? date.getMinutes() : '0'+date.getMinutes()) || '00'].join(':') + (isPM ? ' PM' : ' AM'); return time; } diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 100635cd..a9820011 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -18,9 +18,6 @@ class Origami::AddordersController < BaseOrigamiController if check_mobile @webview = true end - - today = DateTime.now - day = Date.today.wday @menus = Menu.all @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') @table_id = params[:id] diff --git a/app/controllers/origami/dashboard_controller.rb b/app/controllers/origami/dashboard_controller.rb index 8bdd5c27..027b89a5 100644 --- a/app/controllers/origami/dashboard_controller.rb +++ b/app/controllers/origami/dashboard_controller.rb @@ -56,6 +56,13 @@ class Origami::DashboardController < BaseOrigamiController # get printer info @print_settings = PrintSetting.get_precision_delimiter() @current_user = current_user + #dine-in cashier + dinein_cashier = Lookup.collection_of('dinein_cashier') + @dinein_cashier = 0 + if !dinein_cashier[0].nil? + @dinein_cashier = dinein_cashier[0][1] + end + #quick service quick_service = Lookup.collection_of('quick_service') @quick_service = 0 diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb index 12a3ee2f..32f0e63d 100644 --- a/app/controllers/origami/order_reservation_controller.rb +++ b/app/controllers/origami/order_reservation_controller.rb @@ -1,7 +1,7 @@ class Origami::OrderReservationController < BaseOrigamiController def index - @order = OrderReservation.latest_order + @order = OrderReservation.latest_order #.active @count_on_order = OrderReservation.get_count_on_order end diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index 3c5219af..7df42118 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -279,6 +279,9 @@ class Origami::PaymentsController < BaseOrigamiController new_total = Sale.get_rounding_adjustment(saleObj.grand_total) @rounding_adj = new_total-saleObj.grand_total saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:@rounding_adj) + @sale_data.grand_total = new_total + @sale_data.old_grand_total = saleObj.grand_total + @sale_data.rounding_adjustment = @rounding_adj else @rounding_adj = @sale_data.rounding_adjustment end diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index e5b95f8c..f4f610fc 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -7,6 +7,7 @@ class OrderReservation < ApplicationRecord has_many :order_reservation_items has_one :delivery + scope :active, -> { where("created_at BETWEEN '#{DateTime.now.utc.beginning_of_day}' AND '#{DateTime.now.utc.end_of_day}'") } scope :latest_order, -> { order("order_reservation_id desc, created_at desc") } SEND_TO_KITCHEN = "send_to_kitchen" @@ -218,7 +219,7 @@ class OrderReservation < ApplicationRecord def self.check_order_send_to_kitchen today = Time.now.utc - order_reservation = OrderReservation.where("status='accepted' and requested_time > '#{today}'") + order_reservation = OrderReservation.where("status='accepted' and requested_time > '#{today}' and expected_waiting_time < '#{today}'") if order_reservation.length > 0 if ENV["SERVER_MODE"] == 'cloud' ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation @@ -228,7 +229,7 @@ class OrderReservation < ApplicationRecord def self.check_order_ready_to_delivery today = Time.now.utc - order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time > '#{today}'") + order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time > '#{today}' and expected_waiting_time < '#{today}'") if order_reservation.length > 0 if ENV["SERVER_MODE"] == 'cloud' ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation diff --git a/app/pdf/order_set_item_pdf.rb b/app/pdf/order_set_item_pdf.rb index 1e7b9c7f..14a8ff62 100755 --- a/app/pdf/order_set_item_pdf.rb +++ b/app/pdf/order_set_item_pdf.rb @@ -4,8 +4,8 @@ class OrderSetItemPdf < Prawn::Document def initialize(print_settings,order_set_item, print_status, options, alt_name, before_updated_qty) self.page_width = print_settings.page_width self.page_height = print_settings.page_height - self.header_font_size = printer_settings.header_font_size.to_i - self.item_font_size = printer_settings.item_font_size.to_i + self.header_font_size = print_settings.header_font_size.to_i + self.item_font_size = print_settings.item_font_size.to_i self.margin = 0 self.price_width = 40 # No Need for item self.qty_width = 40 diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index 5f451408..241fe79c 100644 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -43,46 +43,46 @@ Products <% @menu.each do |menu| %> - <% if !menu.valid_time.nil? %> - <% if menu.menu_category_id.nil? %> - - <% if type %> - <% if !menu.code.include? "SPL" %> - - <% end%> - - <% else %> - <% if @table.get_current_checkout_booking.nil? %> - <% if !menu.code.include? "SPL" %> - - <% end%> - <% else %> - - <% end%> - - <% end %> - <% end%> - <% end %> - <%end %> - + <% if !menu.valid_time.nil? %> + <% if menu.menu_category_id.nil? %> + + <% if type %> + <% if !menu.code.include? "SPL" %> + + <% end%> + + <% else %> + <% if @table.get_current_checkout_booking.nil? %> + <% if !menu.code.include? "SPL" %> + + <% end%> + <% else %> + + <% end%> + + <% end %> + <% end%> + <% end %> + <%end %> + diff --git a/app/views/origami/dashboard/index.html.erb b/app/views/origami/dashboard/index.html.erb index b6b36427..bbb19c78 100644 --- a/app/views/origami/dashboard/index.html.erb +++ b/app/views/origami/dashboard/index.html.erb @@ -28,6 +28,7 @@ <% end %> + <% if @dinein_cashier == '1' %>
@@ -36,6 +37,7 @@
<%= t :dine_in_cashier %>
+ <% end %> <% if @order_reservation == '1' %>
diff --git a/app/views/origami/order_reservation/index.html.erb b/app/views/origami/order_reservation/index.html.erb index 89c4b4e9..34664428 100644 --- a/app/views/origami/order_reservation/index.html.erb +++ b/app/views/origami/order_reservation/index.html.erb @@ -378,7 +378,7 @@
- + @@ -411,4 +411,6 @@
-
\ No newline at end of file +
+ + diff --git a/app/views/origami/sales/show.html.erb b/app/views/origami/sales/show.html.erb index 0eaabce1..7e3fc7e1 100755 --- a/app/views/origami/sales/show.html.erb +++ b/app/views/origami/sales/show.html.erb @@ -198,13 +198,74 @@
- <% if @sale.sale_status != 'void' %> - - <% end %> + <% if @sale.sale_status != 'void' %> + <% if current_login_employee.role == "cashier" %> + Void + <% else %> + + <% end %> + <% end %>
+ + + + From 7cc7419b67d696d6ce89295e7864d97012280ad8 Mon Sep 17 00:00:00 2001 From: San Wai Lwin Date: Mon, 7 May 2018 10:22:15 +0630 Subject: [PATCH 02/16] Edit waste and spoile report excel --- .../reports/waste_and_spoilage/index.xls.erb | 113 +++++++++++------- 1 file changed, 69 insertions(+), 44 deletions(-) diff --git a/app/views/reports/waste_and_spoilage/index.xls.erb b/app/views/reports/waste_and_spoilage/index.xls.erb index 4b4fa0a3..48f26650 100755 --- a/app/views/reports/waste_and_spoilage/index.xls.erb +++ b/app/views/reports/waste_and_spoilage/index.xls.erb @@ -5,52 +5,77 @@
Report For <%= @sale_type? @sale_type : 'Waste' %>
- <% @sale_data.each do |sale| %> + <% receipt_arr = Array.new %> + <% menu_cat_arr = Array.new %> + <% footer_arr = Array.new %> + <% count = 0 %> <% waste_and_spoil_item_count = 0%> - - - - - - - - - - - - - - - + + <% @sale_data.each do |sale| %> + <% if !receipt_arr.include?(sale.receipt_no) %> + + + + + + + + + + + + + + + + + + <% receipt_arr.push(sale.receipt_no) %> + <% menu_cat_arr.clear %> + <% count = 0 %> + <% end %> - <% sale.sale_items.each do |item| %> - <% if !item.item_instance_code.nil?%> - <% waste_and_spoil_item_count += item.qty.to_i%> - - - - - - - - <% end %> - <% end %> - - - - - - - - <% end %> + + + <% if !sale.item_instance_code.nil?%> + <% waste_and_spoil_item_count += sale.qty.to_i %> + + <% if !menu_cat_arr.include?(sale.name) %> + + <% menu_cat_arr.push(sale.name) %> + <% else %> + + <% end %> + + + + + + + <% end %> + <% count = count + 1 %> + <% if sale.sale_items.count == count %> + + + + + + + + <% footer_arr.push(sale.sale_id) %> + <% end %> + + <% end %>
- Receipt No :<%= sale.receipt_no %> - Date : <%= sale.created_at.utc.getlocal.strftime("%e,%b %Y %I:%M %p") %>
Item NameItem CodeQtyPriceTotal Price
 
+ Receipt No :<%= sale.receipt_no %> + Date : <%= sale.created_at.utc.getlocal.strftime("%e,%b %Y %I:%M %p") %>
Menu CategoryItem NameItem CodeQtyPriceTotal Price
<%= item.product_name %><%= item.product_code %><%= item.qty %><%= item.price %><%= item.price %>
Total Qty: - <%= waste_and_spoil_item_count %> - Grand Total: - - <%= sale.grand_total %> - -
<%= sale.name %> <%= sale.product_name %><%= sale.product_code %><%= sale.qty.to_i %><%= sale.unit_price %><%= sale.price %>
Total Qty: + + <%= waste_and_spoil_item_count %> + <% waste_and_spoil_item_count = 0%> + Grand Total: + + <%= sale.grand_total %> + +
From 391cc19117490325212aca5dc17cb7e645c2c7c5 Mon Sep 17 00:00:00 2001 From: phyusin Date: Mon, 7 May 2018 13:32:58 +0630 Subject: [PATCH 03/16] check order reservation --- .../javascripts/channels/check_new_order.js | 3 + .../channels/check_order_ready_to_delivery.js | 4 + .../channels/check_order_send_to_kitchen.js | 3 + app/assets/javascripts/order_reservation.js | 2 + .../reports/order_reservation_controller.rb | 9 +- app/models/order_reservation.rb | 28 +++++ app/views/layouts/_left_sidebar.html.erb | 3 + .../origami/order_reservation/index.html.erb | 60 +++++++++++ .../_shift_sale_report_filter.html.erb | 49 +-------- .../reports/order_reservation/index.html.erb | 101 +----------------- config/locales/en.yml | 1 + config/locales/mm.yml | 1 + config/routes.rb | 1 + public/beep-07.wav | Bin 0 -> 9702 bytes 14 files changed, 119 insertions(+), 146 deletions(-) create mode 100644 public/beep-07.wav diff --git a/app/assets/javascripts/channels/check_new_order.js b/app/assets/javascripts/channels/check_new_order.js index 5bd64013..08872705 100644 --- a/app/assets/javascripts/channels/check_new_order.js +++ b/app/assets/javascripts/channels/check_new_order.js @@ -34,6 +34,9 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', { swal.close(); } }); + // $("#notify_new_orderLabel").text("You have new orders."); + // $("#notify_new_orderBody").text("Are you accept or reject for these orders "+order_lists+"?"); + // $("#notify_new_order").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_ready_to_delivery.js b/app/assets/javascripts/channels/check_order_ready_to_delivery.js index 84dd1982..53fa23af 100644 --- a/app/assets/javascripts/channels/check_order_ready_to_delivery.js +++ b/app/assets/javascripts/channels/check_order_ready_to_delivery.js @@ -34,6 +34,10 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe swal.close(); } }); + + // $("#notify_order_ready_to_deliveryLabel").text("You have orders that are ready to deliver."); + // $("#notify_order_ready_to_deliveryBody").text("Could you ready these orders "+order_lists+" to deliver?"); + // $("#notify_order_ready_to_delivery").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_send_to_kitchen.js b/app/assets/javascripts/channels/check_order_send_to_kitchen.js index 6727dbdb..82e107ee 100644 --- a/app/assets/javascripts/channels/check_order_send_to_kitchen.js +++ b/app/assets/javascripts/channels/check_order_send_to_kitchen.js @@ -34,6 +34,9 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend swal.close(); } }); + // $("#notify_order_send_to_kitchenLabel").text("You have to send order to kitchen."); + // $("#notify_order_send_to_kitchenBody").text("Could you send these orders "+order_lists+" to kitchen?"); + // $("#notify_order_send_to_kitchen").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 07eab9e1..942ef3cf 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -294,6 +294,8 @@ function showNewOrder(order_reservation){ var date = new Date(order_reservation.requested_time); var time = timeFormat(date); var requested_date = date.getFullYear() + '-' + (date.getMonth() > 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() > 10? date.getDate() : '0' + date.getDate()) +' '+time; + var audio = new Audio('/beep-07.wav'); // define your audio + audio.play(); swal({ html: true, title: 'Information', diff --git a/app/controllers/reports/order_reservation_controller.rb b/app/controllers/reports/order_reservation_controller.rb index fb9517e4..22c408fe 100644 --- a/app/controllers/reports/order_reservation_controller.rb +++ b/app/controllers/reports/order_reservation_controller.rb @@ -1,7 +1,7 @@ class Reports::OrderReservationController < BaseReportController # authorize_resource :class => false def index - @payments = [["All Payment",''], ["Cash Payment","cash"], ["Credit Payment","creditnote"], ["FOC Payment","foc"], ["Other Payment","card"]] + @providers = [["All",''], ["food2u","food2u"], ["Self Pick-Up","pick_up"], ["Ygndoor2door","ygndoor2door"], ["Direct Delivery","direct_delivery"]] from, to = get_date_range_from_params @@ -17,8 +17,9 @@ class Reports::OrderReservationController < BaseReportController @shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at) end end - payment_type = params[:payment_type] - @sale_data = Sale.get_sales_by_order_reservation(@shift_sale_range,@shift,from,to,payment_type) + + provider = params[:provider] + @sale_data = OrderReservation.get_order_reservation_by_shift(@shift_sale_range,@shift,from,to,provider) @from = from @to = to # get printer info @@ -40,7 +41,7 @@ class Reports::OrderReservationController < BaseReportController def show from, to = get_date_range_from_params - @sale_data = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) + @sale_data = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED) date_arr = Array.new @sale_data.each do |sale| diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index f4f610fc..8ea716c2 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -237,6 +237,34 @@ class OrderReservation < ApplicationRecord end end + def self.get_order_reservation_by_shift(shift_sale_range,shift,from,to,provider) + ## => left join -> show all sales although no orders + if provider.blank? + provider = '' + else + if provider.present? + provider = " and deliveries.provider = '#{provider}'" + end + end + + query = OrderReservation.joins(" JOIN deliveries on deliveries.order_reservation_id = order_reservations.order_reservation_id") + .joins(" JOIN sales on sales.sale_id = order_reservations.sale_id") + if shift.present? + query = query.where("sales.shift_sale_id in (?) #{provider} and sales.sale_status= 'completed' and sale_payments.payment_amount != 0", shift.to_a) + .joins("join sale_payments on sale_payments.sale_id = sales.sale_id") + .group("sales.sale_id") + elsif shift_sale_range.present? + query = query.where("sales.sale_status='completed' #{provider} and sale_payments.payment_amount != 0 and sales.shift_sale_id in (?)",shift_sale_range.to_a) + .joins("join sale_payments on sale_payments.sale_id = sales.sale_id") + .group("sales.sale_id") + else + query = query.where("sales.sale_status='completed' and sales.receipt_date between ? and ? #{provider} and sale_payments.payment_amount != 0",from,to) + .joins("join sale_payments on sale_payments.sale_id = sales.sale_id") + .group("sales.sale_id") + end + return query +end + private def generate_custom_id self.order_reservation_id = SeedGenerator.generate_id(self.class.name, "ODRS") diff --git a/app/views/layouts/_left_sidebar.html.erb b/app/views/layouts/_left_sidebar.html.erb index ea3a7b61..7820c3bb 100644 --- a/app/views/layouts/_left_sidebar.html.erb +++ b/app/views/layouts/_left_sidebar.html.erb @@ -132,6 +132,9 @@
  • Product Sale
  • +
  • + Order Reservation +
  • Receipt
  • diff --git a/app/views/origami/order_reservation/index.html.erb b/app/views/origami/order_reservation/index.html.erb index 34664428..150c4ee9 100644 --- a/app/views/origami/order_reservation/index.html.erb +++ b/app/views/origami/order_reservation/index.html.erb @@ -409,6 +409,66 @@ + +
    diff --git a/app/views/reports/order_reservation/_shift_sale_report_filter.html.erb b/app/views/reports/order_reservation/_shift_sale_report_filter.html.erb index a1db6824..737325db 100755 --- a/app/views/reports/order_reservation/_shift_sale_report_filter.html.erb +++ b/app/views/reports/order_reservation/_shift_sale_report_filter.html.erb @@ -18,10 +18,10 @@ - <% if defined? payments %> + <% if defined? provider %>
    - <%= select_tag "payment_type", options_for_select(@payments, :selected => params[:payment_type]), :class => "form-control" %> + <%= select_tag "provider", options_for_select(@providers, :selected => params[:provider]), :class => "form-control" %>
    <% end %>
    @@ -56,28 +56,8 @@ var url = $('#custom_excel').attr('data-url'); $('#frm_report').attr('action',url) $('#frm_report').submit(); - // window.location = url; - }); - - var item = $('#item').val(); - var payment_type = $('#payment_type'); - - if(item == 'order'){ - $('#cashier').hide(); - $('#waiter').show(); - if(payment_type){ - $('#payment_type').hide(); - } - } - else if(item == 'sale'){ - $('#waiter').hide(); - $('#cashier').show(); - } - else{ - $('#waiter').hide(); - $('#cashier').show(); - $("#item").val('sale'); - } + // window.location = url; + }); }); <% if params[:shift_name].to_i > 0%> @@ -91,7 +71,6 @@ $("#from").val("<%=params[:from] rescue '-'%>"); $("#to").val("<%=params[:to] rescue '-'%>"); $("#sel_period").val(<%=params[:period] rescue '-'%>); - $("#sel_sale_type").val(<%=params[:sale_type] rescue '-'%>); // shift = $(".shift-id").text() // if (shift.length>0) { // $('.shift_name > option[value="'+shift+'"]').attr('selected','selected'); @@ -105,24 +84,4 @@ $(".btn-group button").removeClass("active"); <% report_type = params[:report_type].blank? ? "0" : params[:report_type] %> $("#btn_report_type_<%= report_type %>").addClass("active"); - - $('#item').change(function(){ - var item = $('#item').val(); - var payment_type = $('#payment_type'); - - if(item == 'sale'){ - $('#waiter').hide(); - $('#cashier').show(); - if(payment_type){ - $('#payment_type').show(); - } - } - else{ - $('#cashier').hide(); - $('#waiter').show(); - if(payment_type){ - $('#payment_type').hide(); - } - } - }); diff --git a/app/views/reports/order_reservation/index.html.erb b/app/views/reports/order_reservation/index.html.erb index 567b056b..459a9e58 100755 --- a/app/views/reports/order_reservation/index.html.erb +++ b/app/views/reports/order_reservation/index.html.erb @@ -1,7 +1,7 @@ @@ -151,9 +60,7 @@ var check_arr = []; search_by_period(); $('#sel_period').change(function(){ - search_by_period(); - }); function search_by_period(){ @@ -216,7 +123,7 @@ from = $("#from").val(); to = $("#to").val(); } - url = '<%= reports_get_shift_by_date_path %>'; + url = '<%= reports_get_shift_by_order_reservation_path %>'; $.get(url, {period :period, period_type :period_type, from :from, to :to, report_type :shift_item} , function(data){ diff --git a/config/locales/en.yml b/config/locales/en.yml index cdce1df7..45e3d3fb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -470,6 +470,7 @@ en: adult: "Adult" foreigner: "Foreigner" local: "Local" + order_reservation_report: "Order Reservation" code_txt: "code " charge_txt: "charge" diff --git a/config/locales/mm.yml b/config/locales/mm.yml index aba51ed5..6c0d36a1 100644 --- a/config/locales/mm.yml +++ b/config/locales/mm.yml @@ -464,6 +464,7 @@ mm: adult: "လူကြီး" foreigner: "နိုင်ငံခြားသား" local: "နိုင်ငံသား" + order_reservation_report: "ၾကိဳတင္ order မွာယူျခင္း" code_txt: "ကုတ်ဒ် " charge_txt: "ကောက်ခံသည်" diff --git a/config/routes.rb b/config/routes.rb index 0f329c95..ce5d44a5 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -445,6 +445,7 @@ scope "(:locale)", locale: /en|mm/ do resources :order_reservation, :only => [:index, :show] get "saleitem/get_shift_by_date", to: "saleitem#show", as: "get_shift_by_sale_item" get "receipt_no/get_shift_by_date", to: "receipt_no#get_shift_by_date", as: "get_shift_by_date" + get "order_reservation/get_shift_by_date", to: "order_reservation#show", as: "get_shift_by_order_reservation" end diff --git a/public/beep-07.wav b/public/beep-07.wav new file mode 100644 index 0000000000000000000000000000000000000000..015e1f642e91b72578bca1c318f7a7c0d515d843 GIT binary patch literal 9702 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 Ay#N3J literal 0 HcmV?d00001 From 1716d14df3fc9262ad05e90ea3b51bf510bd88de Mon Sep 17 00:00:00 2001 From: phyusin Date: Tue, 8 May 2018 17:28:09 +0630 Subject: [PATCH 04/16] change order reservation --- .../javascripts/channels/check_new_order.js | 21 +- .../channels/check_order_ready_to_delivery.js | 22 +- .../channels/check_order_send_to_kitchen.js | 21 +- app/assets/javascripts/order_reservation.js | 158 ++++++--- .../order_reservation_controller.rb | 20 +- .../origami/order_reservation_controller.rb | 16 +- app/controllers/settings/menus_controller.rb | 4 +- app/models/order_reservation.rb | 53 ++- .../origami/order_reservation/index.html.erb | 306 +++++++++++++----- config/locales/en.yml | 1 + config/locales/mm.yml | 1 + 11 files changed, 430 insertions(+), 193 deletions(-) diff --git a/app/assets/javascripts/channels/check_new_order.js b/app/assets/javascripts/channels/check_new_order.js index 08872705..d0061443 100644 --- a/app/assets/javascripts/channels/check_new_order.js +++ b/app/assets/javascripts/channels/check_new_order.js @@ -18,25 +18,8 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', { }); // alert(order_lists); - swal({ - html: true, - title: 'Information', - target: document.getElementById('notify_new_order'), - text: "You have new orders.
    "+ - "Are you accept or reject for these orders "+order_lists+"?", - type: 'success', - timer: 1000, - closeOnConfirm: false, - closeOnCancel: false, - allowOutsideClick: false - },function(isConfirm){ - if(isConfirm){ - swal.close(); - } - }); - // $("#notify_new_orderLabel").text("You have new orders."); - // $("#notify_new_orderBody").text("Are you accept or reject for these orders "+order_lists+"?"); - // $("#notify_new_order").modal({show: true, keyboard: false, backdrop: false}); + $("#notify_new_order_lists").text(order_lists); + $("#notify_new_order").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_ready_to_delivery.js b/app/assets/javascripts/channels/check_order_ready_to_delivery.js index 53fa23af..d2bebadb 100644 --- a/app/assets/javascripts/channels/check_order_ready_to_delivery.js +++ b/app/assets/javascripts/channels/check_order_ready_to_delivery.js @@ -18,26 +18,8 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe }); // alert(order_lists); - swal({ - html: true, - title: 'Information', - target: document.getElementById('notify_order_ready_to_delivery'), - text: "You have orders that are ready to deliver.
    "+ - "Could you ready these orders "+order_lists+" to deliver?", - type: 'success', - timer: 1000, - closeOnConfirm: false, - closeOnCancel: false, - allowOutsideClick: false - },function(isConfirm){ - if(isConfirm){ - swal.close(); - } - }); - - // $("#notify_order_ready_to_deliveryLabel").text("You have orders that are ready to deliver."); - // $("#notify_order_ready_to_deliveryBody").text("Could you ready these orders "+order_lists+" to deliver?"); - // $("#notify_order_ready_to_delivery").modal({show: true, keyboard: false, backdrop: false}); + $("#notify_order_ready_to_delivery_lists").text(order_lists); + $("#notify_order_ready_to_delivery").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_send_to_kitchen.js b/app/assets/javascripts/channels/check_order_send_to_kitchen.js index 82e107ee..9b83b3c6 100644 --- a/app/assets/javascripts/channels/check_order_send_to_kitchen.js +++ b/app/assets/javascripts/channels/check_order_send_to_kitchen.js @@ -18,25 +18,8 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend }); // alert(order_lists); - swal({ - html: true, - title: 'Information', - target: document.getElementById('notify_order_send_to_kitchen'), - text: "You have to send order to kitchen.
    "+ - "Could you send these orders "+order_lists+" to kitchen?", - type: 'success', - timer: 1000, - closeOnConfirm: false, - closeOnCancel: false, - allowOutsideClick: false - },function(isConfirm){ - if(isConfirm){ - swal.close(); - } - }); - // $("#notify_order_send_to_kitchenLabel").text("You have to send order to kitchen."); - // $("#notify_order_send_to_kitchenBody").text("Could you send these orders "+order_lists+" to kitchen?"); - // $("#notify_order_send_to_kitchen").modal({show: true, keyboard: false, backdrop: false}); + $("#notify_order_send_to_kitchen_lists").text(order_lists); + $("#notify_order_send_to_kitchen").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 942ef3cf..5ff2d0ad 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -11,6 +11,8 @@ $(function() { $(".nav-item").on("click", function(){ type = $(this).attr("data-type"); refreshDetailData(); + $('#accepted').show(); + $('#cancel').show(); if (type == "pending") { $(".first-1").click(); $('#accepted').text("ACCEPT"); @@ -27,7 +29,11 @@ $(function() { $(".fourth-1").click(); $('#accepted').text("PICK-UP"); $('#accepted').attr("data-value","completed"); - } + }else if(type == "processed"){ + $(".fifth-1").click(); + $('#accepted').hide(); + $('#cancel').hide(); + } // console.log(type); }); @@ -36,7 +42,6 @@ $(function() { $("#status").text($(this).attr("data-value")); var requested_time = $("#requested_date_time").text(); $("#requested_order_time").text(requested_time); - showTimePicker(requested_time); $("#waiting_timeModal").modal({show : true, backdrop: false, keyboard : false}); }else{ var status = $(this).attr("data-value"); @@ -48,38 +53,106 @@ $(function() { }); $("#cancel").on("click", function(){ - var status = $(this).attr("data-value"); + var order_status = $("#order_status").text(); + $("#status").text($(this).attr("data-value")); + if(order_status!="new" && order_status!= "accepted"){ + $("#AccessCodeModal").modal({show: true, backdrop: false, keyboard: false}); + }else{ + $("#rejected_reasonModal").modal({show: true, backdrop: false, keyboard: false}); + } + }); + + $(".send_status").on("click",function(){ + var status = $("#status").text(); var order_id = $('#order_id').text(); var callback = $('#callback_url').text(); var ref_no = $('#ref_no').text(); - callback_url(callback,ref_no,order_id,status); + var reason = $('#reject_reason').val(); + var approved_code = $("#approved_code").text(); + callback_url(callback,ref_no,order_id,status,"","","",reason,approved_code); }); - $("#save").on("click",function(){ - $("#waiting_timeErr").text(""); + $(".timer_type").on("click",function(){ + if($(this).hasClass("selected-item")){ + $(this).removeClass("selected-item"); + }else{ + $(this).addClass("selected-item"); + } + }); + + $(".time_interval").on("click",function(){ + var type = ''; + if($(".timer_type").hasClass("selected-item")){ + type = '+'; + } + var minutes = $(this).attr("data-value"); + // console.log(type); + // console.log($(this).attr("data-value")); + var status = $("#status").text(); var order_id = $('#order_id').text(); var ref_no = $('#ref_no').text(); var callback = $('#callback_url').text(); var requested_time = new Date($("#requested_date_time").text()); - var date_time = requested_time.getFullYear()+'-'+(requested_time.getMonth() > 10? requested_time.getMonth() : '0'+ (requested_time.getMonth() + 1))+'-'+(requested_time.getDate()> 10? requested_time.getDate() : '0' + requested_time.getDate()); - var waiting_time = new Date(date_time+' '+$("#waiting_time").val()); - // requested_time.setHours(requested_time.getHours() - 1); - // console.log(requested_time); - // console.log(date_time); - if(waiting_time.getTime() < requested_time.getTime()){ - var time_diff = (requested_time.getTime() - waiting_time.getTime()); - var expected_time = (Math.floor(time_diff) / 1000) / 60; + if(type == '+'){ + requested_time.setMinutes(requested_time.getMinutes() + minutes); }else{ - var time_diff = (waiting_time.getTime() - requested_time.getTime()); - var expected_time = (Math.floor(time_diff) / 1000) / 60; - // $("#waiting_time").val(""); - // $("#waiting_timeErr").text("Expected waiting time is greater than requested time!"); + requested_time.setMinutes(requested_time.getMinutes() - minutes); + } + console.log(requested_time); + callback_url(callback,ref_no,order_id,status,type,minutes,requested_time); + }); + + $(document).on('click','.access_number', function(event){ + if(event.handled !== true) { + var original_value = $('#access_code').val(); + var input_type = $(this).attr("data-type"); + + switch (input_type) { + case 'num': + var input_value = $(this).attr("data-value"); + if (original_value){ + $('#access_code').val(original_value + input_value); + }else{ + $('#access_code').val(original_value + input_value); + } + break; + case 'ok': + var type = $(this).attr("data-action"); + code = $('#access_code').val(); + check_emp_access_code(code,type) + break; + case 'clr': + $('#access_code').val(""); + break; + } + event.handled = true; + } else { + return false; } - callback_url(callback,ref_no,order_id,status,expected_time,waiting_time); }); }); +function check_emp_access_code(access_code,type) { + var url = "/origami/check_emp_access_code/" + access_code ; + $.ajax({ + type: 'POST', + url: url, + data: {}, + success: function (result) { + console.log(result) + if (result.status == true) { + // createAccessCode(code); + $("#approved_code").text(code); + $('#AccessCodeModal').modal('hide'); + $("#rejected_reasonModal").modal({show: true, backdrop: false, keyboard: false}); + }else{ + swal("Opps",result.message,"warning") + } + } + }); +} + function customTableClick(){ $(".custom-table .custom-tr").on("click", function(){ $(".custom-tr").removeClass("tr-active"); @@ -96,6 +169,7 @@ function refreshDetailData(){ $("#sr_number").text(""); $("#delivery_info").text(""); $("#contact_info").text(""); + $("#invoice_no").text(""); $('.summary-items').html(""); $('#sub_total').text("0.00"); $('#delivery_fee').text("0.00"); @@ -184,6 +258,7 @@ function show_order_detail(url,sr_no){ $('#callback_url').text(data.callback_url); $('#order_id').text(data.order_reservation_id); + $("#trans_ref").text(data.transaction_ref); if(delivery.delivery_type == "service"){ $("#delivery_info").text("(DELIVERY)"); }else if(delivery.delivery_type == "pick_up"){ @@ -197,11 +272,13 @@ function show_order_detail(url,sr_no){ }else if(data.reservation_remark!=null && data.reservation_remark!=""){ $("#order_remark").text(data.reservation_remark); } + $("#sr_number").text("NO."+sr_no); + $("#order_status").text(data.status); if (data["receipt_no"]) { - $("#contact_info").text(data["receipt_no"]); + $("#invoice_no").text(data["receipt_no"]); }else{ - $("#contact_info").text(data["order_reservation_id"]); + $("#invoice_no").text(data["order_reservation_id"]); } } @@ -211,40 +288,42 @@ function show_order_detail(url,sr_no){ //end Ajax } -function showTimePicker(requested_time){ - // var date = new Date(requested_time); - // var time = timeFormat(date); - // console.log(time); - $('.timepicker').bootstrapMaterialDatePicker({ - format: 'HH:mm', - useSeconds: false, - clearButton: true, - date: false - }); -} -function callback_url(callback,ref_no,order_id,status,time,exptime){ +function callback_url(callback,ref_no,order_id,status,min_type,time,exptime,reason,approved_code){ var url = 'order_reservation/update'; var post_url = "order_reservation/send_status"; var waiting_time = ""; + var expected_time = ""; + var type = ""; + var reject_reason = ""; + var access_code = ""; if(time!=undefined && time!=""){ waiting_time = time; } - var expected_time = ""; if(exptime!=undefined && exptime!=""){ expected_time = exptime; } + if(min_type!=undefined && min_type!=""){ + type = min_type; + } + if(reason!=undefined && reason!=""){ + reject_reason = reason; + } + if(approved_code!=undefined && approved_code!=""){ + access_code = approved_code; + } + $.ajax({ type: "POST", url: post_url, - data: {url: callback, ref_no: ref_no, status: status, waiting_time: waiting_time}, + data: {url: callback, ref_no: ref_no, status: status, waiting_time: waiting_time, min_type: type, reason: reject_reason}, dataType: "json", success: function(data) { if(data.status){ $.ajax({ type: "POST", url: url, - data: {'order_id': order_id, 'status': status, 'expected_time' : expected_time}, + data: {order_id: order_id, status: status, expected_time: expected_time, remark: reason, access_code: access_code}, dataType: "json", success: function(data) { if (data.status) { @@ -294,8 +373,13 @@ function showNewOrder(order_reservation){ var date = new Date(order_reservation.requested_time); var time = timeFormat(date); var requested_date = date.getFullYear() + '-' + (date.getMonth() > 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() > 10? date.getDate() : '0' + date.getDate()) +' '+time; + //audio play var audio = new Audio('/beep-07.wav'); // define your audio - audio.play(); + // setTimeout(function(){ + // audio.loop = true; + audio.play(); + // },10000); + swal({ html: true, title: 'Information', diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb index f34c0f6f..84ee8676 100644 --- a/app/controllers/api/order_reserve/order_reservation_controller.rb +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -6,23 +6,27 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController def check_customer customer_id = 0 + status = false if !params[:name] render :json => { :status => false, :message => "name is required!" } elsif !params[:email] render :json => { :status => false, :message => "email is required!" } elsif !params[:membership_id] render :json => { :status => false, :message => "membership_id is required!" } - end - - check_customer = Customer.find_by_email_and_membership_id(params[:email],params[:membership_id]) - if !check_customer.nil? - customer_id = check_customer.customer_id else - customer = Customer.addCustomer(params) - customer_id = customer.id + status = true end - render :json => { :status => true, :data => { :customer_id => customer_id} } + if status + check_customer = Customer.find_by_email_and_membership_id(params[:email],params[:membership_id]) + if !check_customer.nil? + customer_id = check_customer.customer_id + else + customer = Customer.addCustomer(params) + customer_id = customer.id + end + render :json => { :status => true, :data => { :customer_id => customer_id} } + end end def create diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb index 32f0e63d..42140f90 100644 --- a/app/controllers/origami/order_reservation_controller.rb +++ b/app/controllers/origami/order_reservation_controller.rb @@ -8,7 +8,9 @@ class Origami::OrderReservationController < BaseOrigamiController def update @id = params[:order_id] @status = params[:status] - expected_waiting_time = params[:expected_time] + expected_waiting_time = params[:expected_time] + remark = params[:remark] + access_code = params[:access_code] @order_reservation = OrderReservation.find(@id) status = true @@ -23,8 +25,8 @@ class Origami::OrderReservationController < BaseOrigamiController elsif @status == "completed" result = OrderReservation.update_doemal_payment(@order_reservation,current_user) else - if @status == "cancel" - OrderReservation.update_order_reservation(@id, nil, "cancelled") + if @status == "rejected" + OrderReservation.update_order_reservation(@id, nil, "rejected",nil,remark,access_code,current_user) result = {:status=> true, :message => "rejected" } else OrderReservation.update_order_reservation(@id, nil, "accepted", expected_waiting_time) @@ -46,13 +48,7 @@ class Origami::OrderReservationController < BaseOrigamiController end def send_status - if params[:status] == "cancel" - status = "rejected" - else - status = params[:status] - end - - response = OrderReservation.send_status_to_ordering(params[:url],params[:ref_no],status,params[:waiting_time]) + response = OrderReservation.send_status_to_ordering(params[:url],params[:ref_no],params[:status],params[:waiting_time],params[:min_type],params[:reason]) render :json => response end diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index f73226f4..39b9b021 100755 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -195,7 +195,9 @@ class Settings::MenusController < ApplicationController # end end - file_path = "public/menus/" + menu.name + ".xlsx" + directory_name = "public/menus" + Dir.mkdir(directory_name) unless File.exists?(directory_name) + file_path = directory_name +"/" + menu.name + ".xlsx" p.serialize(file_path) render :json => { status: true, path: file_path } end diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index 8ea716c2..e1f7c209 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -138,7 +138,7 @@ class OrderReservation < ApplicationRecord end end - def self.send_status_to_ordering(url,ref_no,status,waiting_time=nil) + def self.send_status_to_ordering(url,ref_no,status,waiting_time=nil,min_type=nil,reason=nil) base_url = 'https://api.doemal.com' token = '3T-tnlYtFJ-5Z1vY6XQqxQ' order_reservation = Lookup.collection_of("order_reservation") @@ -158,7 +158,9 @@ class OrderReservation < ApplicationRecord post_url = base_url + url if !waiting_time.nil? - send_params = {id: ref_no, waiting_time: waiting_time, status: status} + send_params = {id: ref_no,type: min_type, waiting_time: waiting_time, status: status} + elsif !reason.nil? + send_params = {id: ref_no, status: status, reason: reason} else send_params = {id: ref_no, status: status} end @@ -185,7 +187,7 @@ class OrderReservation < ApplicationRecord return response end - def self.update_order_reservation(id, sale_id, status, expected_waiting_time=nil) + def self.update_order_reservation(id, sale_id, status, expected_waiting_time=nil, remark=nil, access_code=nil, current_user=nil) order_reservation = OrderReservation.find(id) if sale_id.present? order_reservation.sale_id = sale_id @@ -194,7 +196,52 @@ class OrderReservation < ApplicationRecord order_reservation.expected_waiting_time = DateTime.parse(expected_waiting_time).utc end order_reservation.status = status + if !remark.nil? + order_reservation.order_remark = remark + end order_reservation.save + + if !order_reservation.sale_id.nil? && status == "rejected" + void_doemal_payment(order_reservation.sale_id, remark, access_code, current_user) + end + end + + def self.void_doemal_payment(sale_id, remark, access_code, current_user) + if Sale.exists?(sale_id) + sale = Sale.find_by_sale_id(sale_id) + # update count for shift sale + if(sale.sale_status == "completed") + if sale.shift_sale_id != nil + shift = ShiftSale.find(sale.shift_sale_id) + shift.calculate(sale_id, "void") + end + else + # void before sale payment complete + if sale.shift_sale_id != nil + shift = ShiftSale.find(sale.shift_sale_id) + shift.total_void = shift.total_void + sale.grand_total + shift.save + end + end + + sale.payment_status = 'void' + sale.sale_status = 'void' + sale.save + + # FOr Sale Audit + action_by = current_user.name + approved_by = Employee.find_by_emp_id(access_code) + # remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}" + sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, approved_by.name,remark,"SALEVOID" ) + + # update complete order items in oqs + SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr| + AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| + aoi.delivery_status = 1 + aoi.save + end + end + end end def self.get_count_on_order diff --git a/app/views/origami/order_reservation/index.html.erb b/app/views/origami/order_reservation/index.html.erb index 150c4ee9..5322206e 100644 --- a/app/views/origami/order_reservation/index.html.erb +++ b/app/views/origami/order_reservation/index.html.erb @@ -1,48 +1,62 @@ <%= stylesheet_link_tag 'order_reservation', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'order_reservation', 'data-turbolinks-track': 'reload' %>
    + + <% + pending_count = 0 + accepted_count = 0 + delivered_count = 0 + completed_count = 0 + processed_count = 0 + %> + <% if !@count_on_order.nil? + @count_on_order.each do |count_order| + if count_order.status == "new" + pending_count = count_order.count + elsif count_order.status == "accepted" + accepted_count = count_order.count + elsif count_order.status == "send_to_kitchen" + delivered_count = count_order.count + elsif count_order.status == "ready_to_delivery" + completed_count = count_order.count + elsif count_order.status == "delivered" + processed_count = count_order.count + end + end + end %> + + +
    +
    + +
    +
    @@ -230,7 +286,11 @@ - + + + + + @@ -296,7 +356,7 @@ - @@ -321,7 +381,7 @@ -
    +
    @@ -336,8 +396,8 @@ + + + <% i=1 @order.each do |order| %> - <% if order.status == 'delivered' %> + <% if order.status == 'delivered' && (order.created_at.utc.getlocal.strftime("%Y-%m-%d") == DateTime.now.strftime("%Y-%m-%d")) %> @@ -114,18 +127,31 @@ - - - - - - - - - + + + + + + + + + <% end end %> + + + + + + + + + + + + +
    - NAME
    - + REF.
    +
    REQUESTED TIME
    @@ -346,14 +406,20 @@
    - PHONE
    - + NAME
    +
    EXPECTED TIME
    + PHONE
    + +
    ADDRESS
    @@ -391,37 +457,41 @@ - - - + -
    + + + + + diff --git a/config/locales/en.yml b/config/locales/en.yml index 45e3d3fb..63e45b92 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -79,6 +79,7 @@ en: processing: "Processing" delivering: "Delivering" completed: "Completed" + processed: "Processed" views: btn: diff --git a/config/locales/mm.yml b/config/locales/mm.yml index 6c0d36a1..f6f353e2 100644 --- a/config/locales/mm.yml +++ b/config/locales/mm.yml @@ -74,6 +74,7 @@ mm: processing: "Processing" delivering: "Delivering" completed: "Completed" + processed: "Processed" views: btn: From 4faee913f35c78fd879c6b4ef0b62cb08875f068 Mon Sep 17 00:00:00 2001 From: phyusin Date: Wed, 9 May 2018 11:28:01 +0630 Subject: [PATCH 05/16] change order reservation -not finished --- .../javascripts/channels/check_new_order.js | 19 +++- .../channels/check_order_ready_to_delivery.js | 19 +++- .../channels/check_order_send_to_kitchen.js | 19 +++- app/assets/javascripts/order_reservation.js | 27 ++++-- .../order_reservation_controller.rb | 8 ++ .../origami/order_reservation_controller.rb | 1 + .../reports/order_reservation_controller.rb | 4 +- app/models/order_reservation.rb | 18 +++- .../origami/order_reservation/index.html.erb | 25 +++--- .../reports/order_reservation/index.html.erb | 89 +++++++++++++++++-- config/locales/en.yml | 9 +- config/locales/mm.yml | 7 ++ config/routes.rb | 1 + 13 files changed, 211 insertions(+), 35 deletions(-) diff --git a/app/assets/javascripts/channels/check_new_order.js b/app/assets/javascripts/channels/check_new_order.js index d0061443..403874e9 100644 --- a/app/assets/javascripts/channels/check_new_order.js +++ b/app/assets/javascripts/channels/check_new_order.js @@ -18,8 +18,23 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', { }); // alert(order_lists); - $("#notify_new_order_lists").text(order_lists); - $("#notify_new_order").modal({show: true, keyboard: false, backdrop: false}); + swal({ + title: 'Information', + target: document.getElementById("notify_new_order"), + text: "You have new orders
    "+ + "Are you accept or reject for these orders "+order_lists+"?", + type: 'success', + html: true, + closeOnConfirm: false, + closeOnCancel: false, + allowOutsideClick: false + }, function (isConfirm) { + if(isConfirm){ + swal.close(); + } + }); + // $("#notify_new_order_lists").text(order_lists); + // $("#notify_new_order").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_ready_to_delivery.js b/app/assets/javascripts/channels/check_order_ready_to_delivery.js index d2bebadb..4627dede 100644 --- a/app/assets/javascripts/channels/check_order_ready_to_delivery.js +++ b/app/assets/javascripts/channels/check_order_ready_to_delivery.js @@ -18,8 +18,23 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe }); // alert(order_lists); - $("#notify_order_ready_to_delivery_lists").text(order_lists); - $("#notify_order_ready_to_delivery").modal({show: true, keyboard: false, backdrop: false}); + swal({ + title: 'Information', + target: document.getElementById("notify_order_ready_to_delivery"), + text: "You have orders that are ready to deliver
    "+ + "Could you ready these orders "+order_lists+" to deliver?", + type: 'success', + html: true, + closeOnConfirm: false, + closeOnCancel: false, + allowOutsideClick: false + }, function (isConfirm) { + if(isConfirm){ + swal.close(); + } + }); + // $("#notify_order_ready_to_delivery_lists").text(order_lists); + // $("#notify_order_ready_to_delivery").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/channels/check_order_send_to_kitchen.js b/app/assets/javascripts/channels/check_order_send_to_kitchen.js index 9b83b3c6..31c6b75c 100644 --- a/app/assets/javascripts/channels/check_order_send_to_kitchen.js +++ b/app/assets/javascripts/channels/check_order_send_to_kitchen.js @@ -18,8 +18,23 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend }); // alert(order_lists); - $("#notify_order_send_to_kitchen_lists").text(order_lists); - $("#notify_order_send_to_kitchen").modal({show: true, keyboard: false, backdrop: false}); + swal({ + title: 'Information', + target: document.getElementById("notify_order_send_to_kitchen"), + text: "You have to send order to kitchen
    "+ + "Could you send these orders "+order_lists+" to kitchen?", + type: 'success', + html: true, + closeOnConfirm: false, + closeOnCancel: false, + allowOutsideClick: false + }, function (isConfirm) { + if(isConfirm){ + swal.close(); + } + }); + // $("#notify_order_send_to_kitchen_lists").text(order_lists); + // $("#notify_order_send_to_kitchen").modal({show: true, keyboard: false, backdrop: false}); } } }); diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 5ff2d0ad..2764d2a5 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -55,7 +55,7 @@ $(function() { $("#cancel").on("click", function(){ var order_status = $("#order_status").text(); $("#status").text($(this).attr("data-value")); - if(order_status!="new" && order_status!= "accepted"){ + if(order_status!="new" && order_status!= "accepted" && order_status!="send_to_kitchen"){ $("#AccessCodeModal").modal({show: true, backdrop: false, keyboard: false}); }else{ $("#rejected_reasonModal").modal({show: true, backdrop: false, keyboard: false}); @@ -63,13 +63,24 @@ $(function() { }); $(".send_status").on("click",function(){ - var status = $("#status").text(); - var order_id = $('#order_id').text(); - var callback = $('#callback_url').text(); - var ref_no = $('#ref_no').text(); - var reason = $('#reject_reason').val(); - var approved_code = $("#approved_code").text(); - callback_url(callback,ref_no,order_id,status,"","","",reason,approved_code); + $("#reject_reasonErr").html(""); + if($('#reject_reason').val() != ""){ + var order_status = $("#order_status").text(); + var status = $("#status").text(); + var order_id = $('#order_id').text(); + var callback = $('#callback_url').text(); + var ref_no = $('#ref_no').text(); + var reason = ""; + var approved_code = $("#approved_code").text(); + if(order_status == 'ready_to_delivery'){ + reason = "VOID ::" + $('#reject_reason').val(); + }else{ + reason = $('#reject_reason').val(); + } + callback_url(callback,ref_no,order_id,status,"","","",reason,approved_code); + }else{ + $("#reject_reasonErr").html("This is required field"); + } }); $(".timer_type").on("click",function(){ diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb index 84ee8676..59e99967 100644 --- a/app/controllers/api/order_reserve/order_reservation_controller.rb +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -75,4 +75,12 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController end end end + + def update_status + order_reservation_id = params[:id] + status = params[:status] + remark = params[:remark] + + + end end diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb index 42140f90..bf32f43b 100644 --- a/app/controllers/origami/order_reservation_controller.rb +++ b/app/controllers/origami/order_reservation_controller.rb @@ -3,6 +3,7 @@ class Origami::OrderReservationController < BaseOrigamiController def index @order = OrderReservation.latest_order #.active @count_on_order = OrderReservation.get_count_on_order + @count_on_completed = OrderReservation.get_count_on_completed end def update diff --git a/app/controllers/reports/order_reservation_controller.rb b/app/controllers/reports/order_reservation_controller.rb index 22c408fe..b101c37e 100644 --- a/app/controllers/reports/order_reservation_controller.rb +++ b/app/controllers/reports/order_reservation_controller.rb @@ -1,7 +1,7 @@ class Reports::OrderReservationController < BaseReportController # authorize_resource :class => false def index - @providers = [["All",''], ["food2u","food2u"], ["Self Pick-Up","pick_up"], ["Ygndoor2door","ygndoor2door"], ["Direct Delivery","direct_delivery"]] + @providers = [["All",''], ["food2u","food2u"], ["Pick-Up","pick_up"], ["ygndoor2door","ygndoor2door"], ["Direct Delivery","direct_delivery"]] from, to = get_date_range_from_params @@ -19,7 +19,7 @@ class Reports::OrderReservationController < BaseReportController end provider = params[:provider] - @sale_data = OrderReservation.get_order_reservation_by_shift(@shift_sale_range,@shift,from,to,provider) + @order_reservation_data = OrderReservation.get_order_reservation_by_shift(@shift_sale_range,@shift,from,to,provider) @from = from @to = to # get printer info diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index e1f7c209..35b2e2ee 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -199,6 +199,11 @@ class OrderReservation < ApplicationRecord if !remark.nil? order_reservation.order_remark = remark end + + if status == "delivered" + order_reservation.payment_status = "paid" + end + order_reservation.save if !order_reservation.sale_id.nil? && status == "rejected" @@ -245,7 +250,14 @@ class OrderReservation < ApplicationRecord end def self.get_count_on_order - order_reservation = OrderReservation.select("COUNT(order_reservation_id) as count, status").group("status") + order_reservation = OrderReservation.select("COUNT(order_reservation_id) as count, status") + .where("status != 'delivered'") + .group("status") + end + + def self.get_count_on_completed + order_reservation = OrderReservation.select("COUNT(order_reservation_id) as count") + .where("created_at BETWEEN '#{DateTime.now.beginning_of_day}' AND '#{DateTime.now.end_of_day}' AND status = 'delivered'").first() end def self.get_pending_orders @@ -294,7 +306,9 @@ class OrderReservation < ApplicationRecord end end - query = OrderReservation.joins(" JOIN deliveries on deliveries.order_reservation_id = order_reservations.order_reservation_id") + query = OrderReservation.select("order_reservations.*, deliveries.provider, deliveries.delivery_fee, customers.name, customers.email") + .joins(" JOIN deliveries on deliveries.order_reservation_id = order_reservations.order_reservation_id") + .joins(" JOIN customers on customers.customer_id = order_reservations.customer_id") .joins(" JOIN sales on sales.sale_id = order_reservations.sale_id") if shift.present? query = query.where("sales.shift_sale_id in (?) #{provider} and sales.sale_status= 'completed' and sale_payments.payment_amount != 0", shift.to_a) diff --git a/app/views/origami/order_reservation/index.html.erb b/app/views/origami/order_reservation/index.html.erb index 5322206e..b6648bab 100644 --- a/app/views/origami/order_reservation/index.html.erb +++ b/app/views/origami/order_reservation/index.html.erb @@ -19,11 +19,14 @@ delivered_count = count_order.count elsif count_order.status == "ready_to_delivery" completed_count = count_order.count - elsif count_order.status == "delivered" - processed_count = count_order.count end end - end %> + end + + if !@count_on_completed.nil? + processed_count = @count_on_completed.count + end + %>
    @@ -237,7 +240,7 @@
    <%=i%> @@ -443,6 +446,10 @@ + +
    +
    +
    @@ -508,6 +515,7 @@ - --> diff --git a/app/views/reports/order_reservation/index.html.erb b/app/views/reports/order_reservation/index.html.erb index 459a9e58..d10a234c 100755 --- a/app/views/reports/order_reservation/index.html.erb +++ b/app/views/reports/order_reservation/index.html.erb @@ -28,25 +28,104 @@
    - - + <% if @shift_from %> <% if @shift_data.employee %> <% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %> <% end %> - + <% end %> - + + + + + + + + + + + + + + + - + <% if @print_settings.precision.to_i > 0 + precision = @print_settings.precision + else + precision = 0 + end + #check delimiter + if @print_settings.delimiter + delimiter = "," + else + delimiter = "" + end %> + <% + total_amount = 0 + discount_amount = 0 + delivery_fee = 0 + convenience_charge = 0 + total_tax = 0 + delivery_tax = 0 + convenience_tax = 0 + commercial_tax = 0 + grand_total = 0 + %> + <% unless @order_reservation_data.blank? %> + <% @order_reservation_data.each do |order_reservation| %> + <% + provider = "" + total_amount = order_reservation.total_amount + discount_amount = order_reservation.discount_amount + delivery_fee = order_reservation.delivery_fee + convenience_charge = order_reservation.convenience_charge + total_tax = order_reservation.total_tax + grand_total = order_reservation.grand_total + %> + <% + if order_reservation.provider == 'pick_up' + provider = "Pick-Up" + elsif order_reservation.provider == 'direct_delivery' + provider = "Direct Delivery" + else + provider = order_reservation.provider + end + + # JSON.parse(order_reservation.taxes).each do |tax| + # delivery_tax = tax.delivery_tax + # convenience_tax = tax.convenience_tax + # commercial_tax = tax.commercial_tax + # end + %> + + + + + + + + + + + + + + + + + + <% end + end %>
    <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%> <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%>
    <%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )<%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )
    <%= t :customer %><%= t("views.right_panel.detail.type") %><%= t("views.right_panel.detail.requested_time") %><%= t("views.right_panel.detail.provider") %><%= t :payment_method %><%= t :payment %> <%= t("views.right_panel.detail.status")%><%= t("views.right_panel.detail.sub_total") %><%= t("views.right_panel.detail.discount_amount") %><%= t("views.right_panel.detail.delivery_fee") %><%= t("views.right_panel.detail.convenience_charge") %><%= t("views.right_panel.detail.delivery_tax") %><%= t("views.right_panel.detail.convenience_tax") %><%= t("views.right_panel.detail.commercial_tax") %><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.tax") %><%= t("views.right_panel.detail.grand_total") %>
    <%= order_reservation.email %><%= order_reservation.order_reservation_type %><%= order_reservation.requested_time.utc.getlocal.strftime("%d %m %Y %I:%M %p") %><%= provider%><%= order_reservation.payment_type%><%= order_reservation.payment_status%><%= number_with_precision(total_amount , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(discount_amount , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(delivery_fee , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(convenience_charge , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(delivery_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(convenience_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(commercial_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(total_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%>
    diff --git a/config/locales/en.yml b/config/locales/en.yml index 63e45b92..8c19c4ee 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -436,7 +436,7 @@ en: item: "Item" revenue: "Revenue" total_price_by: "Total Price By" - sub_total: "Sub Total" + sub_totalိိ: "Sub Total" cash_received: "Cash Received" card_sales: "Card Sales" select_payments: "Select Payments" @@ -472,6 +472,13 @@ en: foreigner: "Foreigner" local: "Local" order_reservation_report: "Order Reservation" + requested_time: "Requested Time" + provider: "Provider" + delivery_fee: "Delivery Fee" + delivery_tax: "Delivery Tax" + convenience_charge: "Convenience Charge" + convenience_tax: "Convenience Tax" + commercial_tax: "Commercial Tax" code_txt: "code " charge_txt: "charge" diff --git a/config/locales/mm.yml b/config/locales/mm.yml index f6f353e2..e6bdc2cf 100644 --- a/config/locales/mm.yml +++ b/config/locales/mm.yml @@ -466,6 +466,13 @@ mm: foreigner: "နိုင်ငံခြားသား" local: "နိုင်ငံသား" order_reservation_report: "ၾကိဳတင္ order မွာယူျခင္း" + requested_time: "Requested Time" + provider: "Provider" + delivery_fee: "Delivery Fee" + delivery_tax: "Delivery Tax" + convenience_charge: "Convenience Charge" + convenience_tax: "Convenience Tax" + commercial_tax: "Commercial Tax" code_txt: "ကုတ်ဒ် " charge_txt: "ကောက်ခံသည်" diff --git a/config/routes.rb b/config/routes.rb index 8ccdcb5c..6b888e1d 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -88,6 +88,7 @@ scope "(:locale)", locale: /en|mm/ do namespace :order_reserve do post "customer" => "order_reservation#check_customer" post "order" => "order_reservation#create" + post "callback/:id" => "order_reservation#update_status" end end From 1e05522c4268ff5ec62d09330fc86a0f343c0c97 Mon Sep 17 00:00:00 2001 From: phyusin Date: Wed, 9 May 2018 13:34:30 +0630 Subject: [PATCH 06/16] change report UI --- app/assets/javascripts/order_reservation.js | 2 +- .../reports/order_reservation/index.html.erb | 82 ++++++++++++------- 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 2764d2a5..a1342846 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -73,7 +73,7 @@ $(function() { var reason = ""; var approved_code = $("#approved_code").text(); if(order_status == 'ready_to_delivery'){ - reason = "VOID ::" + $('#reject_reason').val(); + reason = "VOID || " + $('#reject_reason').val(); }else{ reason = $('#reject_reason').val(); } diff --git a/app/views/reports/order_reservation/index.html.erb b/app/views/reports/order_reservation/index.html.erb index d10a234c..37157392 100755 --- a/app/views/reports/order_reservation/index.html.erb +++ b/app/views/reports/order_reservation/index.html.erb @@ -71,26 +71,45 @@ delimiter = "" end %> <% - total_amount = 0 - discount_amount = 0 - delivery_fee = 0 - convenience_charge = 0 - total_tax = 0 - delivery_tax = 0 - convenience_tax = 0 - commercial_tax = 0 - grand_total = 0 + + discount_amount = 0.0 + delivery_fee = 0.0 + convenience_charge = 0.0 + delivery_tax = 0.0 + convenience_tax = 0.0 + commercial_tax = 0.0 + + total_discount_amount = 0 + total_delivery_fee = 0 + total_convenience_charge = 0 + total_delivery_tax = 0 + total_convenience_tax = 0 + total_commercial_tax = 0 + total_tax = 0.0 + total_amount = 0.0 + grand_total = 0.0 %> <% unless @order_reservation_data.blank? %> <% @order_reservation_data.each do |order_reservation| %> <% provider = "" - total_amount = order_reservation.total_amount discount_amount = order_reservation.discount_amount - delivery_fee = order_reservation.delivery_fee + delivery_fee = order_reservation.delivery_fee ? order_reservation.delivery_fee : 0.0 convenience_charge = order_reservation.convenience_charge - total_tax = order_reservation.total_tax - grand_total = order_reservation.grand_total + + (order_reservation.taxes).each do |tax| %> + + <% end + + total_discount_amount += discount_amount.to_f + total_delivery_fee += delivery_fee.to_f + total_convenience_charge += convenience_charge + total_delivery_tax += delivery_tax + total_convenience_tax += convenience_tax + total_commercial_tax += commercial_tax + total_tax += order_reservation.total_tax + total_amount += order_reservation.total_amount + grand_total += order_reservation.grand_total %> <% if order_reservation.provider == 'pick_up' @@ -100,12 +119,6 @@ else provider = order_reservation.provider end - - # JSON.parse(order_reservation.taxes).each do |tax| - # delivery_tax = tax.delivery_tax - # convenience_tax = tax.convenience_tax - # commercial_tax = tax.commercial_tax - # end %>
    <%= order_reservation.email %><%= provider%> <%= order_reservation.payment_type%> <%= order_reservation.payment_status%><%= number_with_precision(total_amount , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(discount_amount , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(delivery_fee , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(convenience_charge , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(delivery_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(convenience_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(commercial_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(total_tax , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%><%= number_with_precision(order_reservation.total_amount, precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(discount_amount , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(delivery_fee , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(convenience_charge , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(delivery_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(convenience_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(commercial_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(order_reservation.total_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(order_reservation.grand_total , precision:precision.to_i, delimiter:delimiter) rescue '0.0' %>
    <%= number_with_precision(total_amount , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_discount_amount , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_delivery_fee , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_convenience_charge , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_delivery_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_convenience_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_commercial_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(total_tax , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%><%= number_with_precision(grand_total , precision:precision.to_i, delimiter:delimiter) rescue '0.0'%>
    From 2cdb18d338e9762c3235f6740560810b28b55d28 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Wed, 9 May 2018 13:56:37 +0630 Subject: [PATCH 07/16] menu cache for menu category --- app/assets/javascripts/addorder.js | 235 +-------------- .../origami/addorders_controller.rb | 19 +- app/views/origami/addorders/detail.html.erb | 285 +++++++++++------- app/views/origami/home/index.html.erb | 1 - app/views/origami/home/show.html.erb | 22 +- config/routes.rb | 2 +- 6 files changed, 201 insertions(+), 363 deletions(-) diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 71cf182e..87124f55 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -2,6 +2,7 @@ $(function() { var role = $('#role').val(); type = window.location.href.indexOf("quick_service"); modify_order = window.location.href.indexOf("modify_order"); + //click menu sidebar menu category $(".product").on("click", function(){ var url = $(this).attr('data-ref'); @@ -101,6 +102,7 @@ $(function() { $('.sub_category_list').addClass("hidden"); var menu_id = $(this).attr("data-id"); var url = "get_menu_category/"+menu_id; + console.log(menu_id); show_menu_item_list(url,menu_id); var sub_id = $(this).attr("data-sub-id"); if (sub_id == "true") { @@ -133,117 +135,6 @@ $(function() { for(var ii in categories) { if (categories[ii]["id"] == menu_id) { var menu_items = categories[ii]["items"]; - // for(var field in menu_items) { - // if (menu_items[field].is_sub_item == false) { - // instances = menu_items[field].instances ; - - // if (!instances.length > 0) { - // swal("Hello Please Check!","Does not have instance item in this menu items ("+ menu_items[field].name+")","warning"); - // } - // if (instances.length > 0) { - // qty = 1; - // options = []; - // price = 0; - - // if (JSON.stringify(menu_items[field].item_sets)!='[]') { - // fa_plus = ''; - // add = ''; - // menu_item_box = 'add_icon'; - // data_target = 'sx_item_set_detailModal'; - // data_modal = 'modal' - // add_icon = "set_item_box" - // code = menu_items[field].code; - // name = menu_items[field].name; - // instances = menu_items[field].instances; - // $(instances).each(function(i){ - // if (instances[i].is_default == true) { - // price = parseFloat(instances[i].price).toFixed(2); - // }else{ - // price = 0; - // } - // }); - // is_available = menu_items[field].is_available ; - // is_on_promotion = 0; - // item_attributes = menu_items[field].attributes; - // promotion_price = menu_items[field].promotion_price; - // }else{ - // fa_plus = 'material-icons'; - // add = 'view_list' - // menu_item_box = 'menu_item_box'; - // data_target = 'sx_item_detailModal'; - // data_modal = '' - // add_icon = "add_icon" - - // $(instances).each(function(i){ - // if (instances[i].is_default === true) { - // code = instances[i].code; - // name = instances[i].name; - // price = parseFloat(instances[i].price).toFixed(2); - // is_available = instances[i].is_available ; - // is_on_promotion = instances[i].is_on_promotion; - // item_attributes = instances[i].values; - // promotion_price = instances[i].promotion_price; - // code = instances[i].code; - // } - // }); - // } - - // if (menu_items[field].image) { - // if (modify_order) { - // image_path = "../../"+menu_items[field].image; - // }else{ - // image_path = menu_items[field].image; - // } - - // }else{ - // if (modify_order) { - // image_path = "../../image/logo.png"; - // }else{ - // image_path = "image/logo.png"; - // } - // } - - // row = '
    ' - // +'
    ' - // +'
    '+ menu_items[field].name +'
    ' - // +"
    " - // +"" - // +add+ '' - // +'
    ' - // +'
    ' - // +"
    " - - // // +"
    " - // // +"" - // // +"
    " - - // +'' - // +'
    '; - // $('.menu_items_list').append(row); - // } - // //end instances in menu-items alest 1 instance - // } - // //end is_sub_item false - // } show_menu_list(menu_items); } } @@ -272,118 +163,7 @@ $(function() { var menu_items_list = $('.menu_items_list'); menu_items_list.empty(); menu_items = data.menu_items; -show_menu_list(menu_items); - // for(var field in menu_items) { - // if (menu_items[field].is_sub_item == false) { - // instances = menu_items[field].instances ; - - // if (!instances.length > 0) { - // swal("Hello Please Check!","Does not have instance item in this menu items ("+ menu_items[field].name+")","warning"); - // } - // if (instances.length > 0) { - // qty = 1; - // options = []; - // price = 0; - - // if (JSON.stringify(menu_items[field].item_sets)!='[]') { - // fa_plus = ''; - // add = ''; - // menu_item_box = 'add_icon'; - // data_target = 'sx_item_set_detailModal'; - // data_modal = 'modal' - // add_icon = "set_item_box" - // code = menu_items[field].code; - // name = menu_items[field].name; - // instances = menu_items[field].instances; - // $(instances).each(function(i){ - // if (instances[i].is_default == true) { - // price = parseFloat(instances[i].price).toFixed(2); - // }else{ - // price = 0; - // } - // }); - // is_available = menu_items[field].is_available ; - // is_on_promotion = 0; - // item_attributes = menu_items[field].attributes; - // promotion_price = menu_items[field].promotion_price; - // }else{ - // fa_plus = 'material-icons'; - // add = 'view_list' - // menu_item_box = 'menu_item_box'; - // data_target = 'sx_item_detailModal'; - // data_modal = '' - // add_icon = "add_icon" - - // $(instances).each(function(i){ - // if (instances[i].is_default === true) { - // code = instances[i].code; - // name = instances[i].name; - // price = parseFloat(instances[i].price).toFixed(2); - // is_available = instances[i].is_available ; - // is_on_promotion = instances[i].is_on_promotion; - // item_attributes = instances[i].values; - // promotion_price = instances[i].promotion_price; - // code = instances[i].code; - // } - // }); - // } - - // if (menu_items[field].image) { - // if (modify_order) { - // image_path = "../../"+menu_items[field].image; - // }else{ - // image_path = menu_items[field].image; - // } - - // }else{ - // if (modify_order) { - // image_path = "../../image/logo.png"; - // }else{ - // image_path = "image/logo.png"; - // } - // } - - // row = '
    ' - // +'
    ' - // +'
    '+ menu_items[field].name +'
    ' - // +"
    " - // +"" - // +add+ '' - // +'
    ' - // +'
    ' - // +"
    " - - // // +"
    " - // // +"" - // // +"
    " - - // +'' - // +'
    '; - // $('.menu_items_list').append(row); - // } - // //end instances in menu-items alest 1 instance - // } - // //end is_sub_item false - // } + show_menu_list(menu_items); } }); //end Ajax @@ -1376,7 +1156,6 @@ show_menu_list(menu_items); $(".keypress_qty").on('keyup change', function (){ // $('.keypress_qty').keyup(function(e){ - id = $(this).attr('id'); value = $(this).val(); @@ -1429,11 +1208,7 @@ show_menu_list(menu_items); for(var j in menus) { var categories = menus[j]["categories"]; for(var ii in categories) { - if (menu_id == categories[ii]["parent_id"]) { - console.log("parrrrrrrrrrrrrrrrr"); - console.log(categories[ii]["parent_id"]); - console.log(menu_id); - + if (menu_id == categories[ii]["parent_id"]) { $(sub_category).removeClass('hidden'); row = '' ; $(sub_category).append(row); diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index fd298fb3..e4e17328 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -18,14 +18,17 @@ class Origami::AddordersController < BaseOrigamiController if check_mobile @webview = true end - - # if params[:menus].present? - # @menus = JSON.parse(params[:menus], object_class: OpenStruct) - # @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') - # else - @menus = Menu.all - @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') - # end +puts params[:menu] +puts "sssssssssssssssssssssssssss" + if params[:menus].present? + @menus = JSON.parse(params[:menus], object_class: OpenStruct) + @menu = JSON.parse(params[:category], object_class: OpenStruct) + puts @menus.to_json + puts @menu.to_json + else + @menus = Menu.all + @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') + end @table_id = params[:id] @table = DiningFacility.find(@table_id) diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index 43ab6db0..46847924 100644 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -5,29 +5,16 @@ <% type = request.path_info.include?('quick_service')%> <% modify_order = request.path_info.include?('modify_order')%> -
    +
    -
    - -
  • +
  • - <%= @menus[0].name %> - -
  • - -
    -
    -
    -
    - +
    + + + + + +
    +
    +
    +
    + + <%end %>
    +
    -
    +
    <% if type && modify_order%>
    diff --git a/config/locales/en.yml b/config/locales/en.yml index 8c19c4ee..1c03285a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -479,6 +479,7 @@ en: convenience_charge: "Convenience Charge" convenience_tax: "Convenience Tax" commercial_tax: "Commercial Tax" + select_providers: "Select Providers" code_txt: "code " charge_txt: "charge" diff --git a/config/locales/mm.yml b/config/locales/mm.yml index e6bdc2cf..3a1aa2b6 100644 --- a/config/locales/mm.yml +++ b/config/locales/mm.yml @@ -473,6 +473,7 @@ mm: convenience_charge: "Convenience Charge" convenience_tax: "Convenience Tax" commercial_tax: "Commercial Tax" + select_providers: "Select Providers" code_txt: "ကုတ်ဒ် " charge_txt: "ကောက်ခံသည်" From efa53508834e829602f8d711c31eccdda746a26c Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Wed, 9 May 2018 16:46:54 +0630 Subject: [PATCH 10/16] cache menu --- app/assets/javascripts/addorder.js | 1 - app/views/origami/addorders/detail.html.erb | 187 +++++++++--------- .../origami/dashboard/_menu.json.jbuilder | 12 ++ 3 files changed, 100 insertions(+), 100 deletions(-) diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 87124f55..c079377f 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -102,7 +102,6 @@ $(function() { $('.sub_category_list').addClass("hidden"); var menu_id = $(this).attr("data-id"); var url = "get_menu_category/"+menu_id; - console.log(menu_id); show_menu_item_list(url,menu_id); var sub_id = $(this).attr("data-sub-id"); if (sub_id == "true") { diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index 46847924..36861d05 100644 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -77,56 +77,14 @@ @@ -212,43 +170,43 @@
    <% if type %> -
    -
    - ORDER DETAILS -
    +
    +
    + ORDER DETAILS +
    - <% if modify_order %> - <% if @table.nil? %> -
    Table :
    - - - <% else%> -
    Table : <%=@table.name%>
    - - - <% end%> + <% if modify_order %> + <% if @table.nil? %> +
    Table :
    + + + + <% else%> +
    Table : <%=@table.name%>
    + + + + <% end%> - - - + + + -
    - -
    - <% else%> - -
    +
    + +
    + <% else%> + +
    -
    -
    - -
    - <% end%> - - -
    +
    +
    + +
    + <% end%> +
    <% else %>
    @@ -259,6 +217,7 @@ +