From 45531453c7743f87f53d4467766785adbb020159 Mon Sep 17 00:00:00 2001 From: San Wai Lwin Date: Thu, 3 May 2018 09:31:36 +0630 Subject: [PATCH] Pull from master --- README.md | 8 + app/assets/javascripts/addorder.js | 36 ++- .../javascripts/channels/order_reservation.js | 59 +++-- app/assets/javascripts/order_reservation.js | 117 +++++++-- app/assets/stylesheets/order_reservation.scss | 6 + app/controllers/api/bill_controller.rb | 4 +- .../api/call_waiters_controller.rb | 4 +- .../order_reservation_controller.rb | 10 +- .../concerns/token_verification.rb | 3 +- .../origami/addorders_controller.rb | 8 +- .../origami/dashboard_controller.rb | 16 ++ app/controllers/origami/dinga_controller.rb | 7 +- .../origami/order_reservation_controller.rb | 10 +- app/controllers/origami/paymal_controller.rb | 6 +- .../origami/payments_controller.rb | 5 +- .../origami/request_bills_controller.rb | 4 +- .../origami/second_display_controller.rb | 4 +- .../origami/split_bill_controller.rb | 4 +- .../reports/order_reservation_controller.rb | 63 +++++ .../reports/receipt_no_controller.rb | 2 +- app/models/dining_facility.rb | 4 +- app/models/menu_category.rb | 8 + app/models/order.rb | 16 +- app/models/order_reservation.rb | 119 ++------- app/models/sale_payment.rb | 15 +- app/pdf/receipt_bill_a5_pdf.rb | 13 +- app/pdf/receipt_bill_pdf.rb | 13 +- app/uploaders/menu_item_image_uploader.rb | 2 +- app/views/origami/addorders/detail.html.erb | 18 +- app/views/origami/dashboard/index.html.erb | 9 +- app/views/origami/dinga/index.html.erb | 4 +- app/views/origami/home/show.html.erb | 2 +- .../order_reservation/get_order.json.jbuilder | 6 +- .../origami/order_reservation/index.html.erb | 193 +++++++++++--- app/views/origami/paymal/index.html.erb | 6 +- app/views/origami/payments/show.html.erb | 3 +- app/views/print_settings/_form.html.erb | 2 +- .../_shift_sale_report_filter.html.erb | 128 +++++++++ .../reports/order_reservation/index.html.erb | 248 ++++++++++++++++++ .../reports/order_reservation/index.xls.erb | 106 ++++++++ config/initializers/mysql2_adapter.rb | 2 +- config/routes.rb | 1 + config/secrets.yml | 6 +- ...0180406080240_create_order_reservations.rb | 2 + lib/tasks/clear_data.rake | 3 + public/menus/Main Menu.xlsx | Bin 4585 -> 0 bytes public/menus/Shwe Myittar.xlsx | Bin 3942 -> 0 bytes 47 files changed, 1042 insertions(+), 263 deletions(-) create mode 100644 app/controllers/reports/order_reservation_controller.rb create mode 100755 app/views/reports/order_reservation/_shift_sale_report_filter.html.erb create mode 100755 app/views/reports/order_reservation/index.html.erb create mode 100755 app/views/reports/order_reservation/index.xls.erb delete mode 100644 public/menus/Main Menu.xlsx delete mode 100644 public/menus/Shwe Myittar.xlsx diff --git a/README.md b/README.md index 43a2091e..0605a14a 100755 --- a/README.md +++ b/README.md @@ -188,6 +188,14 @@ 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 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}' } + +Add Feature for Order and Reservation + ** '0' means can not use order reservation and '1' means can use order reservation ** + => settings/lookups => { type:order_reservation, name: OrderReservation, value:'{0 or 1}' } + * ToDo list 1. Migration diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 1044bc6f..6203d513 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -101,6 +101,13 @@ $(function() { var menu_id = $(this).attr("data-id"); var url = "get_menu_category/"+menu_id; show_menu_item_list(url); + + var sub_id = $(this).attr("data-sub-id"); + if (sub_id == "true") { + var sub_url = "get_menu_sub_category/"+menu_id; + sub_category = $(this).find('.sub_category_list'); + show_sub_category_list(sub_url,sub_category); + } }); //End menu category Click @@ -457,9 +464,10 @@ $(function() { var items = $('.selected-set'); if (items.length >= min_qty) { - + if ($('#server_mode').val() != "cloud") { item = get_set_item(items); customer_display_view(item,"set_add"); + } var option = [] attribute_arr = [] @@ -786,8 +794,10 @@ $(function() { $('.add_to_order').attr('data-options',JSON.stringify(option_arr)); $('.add_to_order').attr('data-opt',JSON.stringify(option_arr)); var item_data = $(this); - item = get_item(item_data,"add_to_order"); - customer_display_view(item,"add"); + if ($('#server_mode').val() != "cloud") { + item = get_item(item_data,"add_to_order"); + customer_display_view(item,"add"); + } show_item_detail(item_data,"add_to_order"); calculate_sub_total(); @@ -796,8 +806,10 @@ $(function() { // click plus icon for add $(document).on('click', '.add_icon', function(event){ var item_data = $(this); - item = get_item(item_data,"add_icon"); - customer_display_view(item,"add"); + if ($('#server_mode').val() != "cloud") { + item = get_item(item_data,"add_icon"); + customer_display_view(item,"add"); + } show_item_detail(item_data,"add_icon"); calculate_sub_total(); }); //End Add Icon Click @@ -922,7 +934,9 @@ console.log(d_option) window.location.href = "/origami/room/" + table_id } } - customer_display_view(null,"reload"); + if ($('#server_mode').val() != "cloud") { + customer_display_view(null,"reload"); + } } }); // }else{ @@ -1225,7 +1239,7 @@ console.log(d_option) //click menu sidebar menu category - $(document).on('click', '.sub_click', function(event){ + $(document).on('click', '.sub_clickssss', function(event){ event.preventDefault(); var menu_id = $(this).attr("data-id"); var url = "get_menu_sub_category/"+menu_id; @@ -1260,11 +1274,11 @@ console.log(d_option) data = data.sub_category; if (data.length>0) { - if ((sub_category.hasClass('hidden'))) { + // if ((sub_category.hasClass('hidden'))) { $(sub_category).removeClass('hidden'); - }else{ - $(sub_category).addClass('hidden'); - } + // }else{ + // $(sub_category).addClass('hidden'); + // } for(var i in data) { diff --git a/app/assets/javascripts/channels/order_reservation.js b/app/assets/javascripts/channels/order_reservation.js index 605afe16..0a3ef37c 100644 --- a/app/assets/javascripts/channels/order_reservation.js +++ b/app/assets/javascripts/channels/order_reservation.js @@ -7,31 +7,46 @@ App.checkin = App.cable.subscriptions.create('OrderReservationChannel', { received: function(data) { var order = data.data; - var rowCount = $('.order_reserve_cable tbody tr').length+1; + if(order.length > 0){ + $('.order_reserve_cable tbody').html(""); + $.each(order, function(key,value){ + var rowCount = key+1; + var date = new Date(value.created_at); + var deliveries = value["delivery"]; + var isPM = date.getHours() >= 12; + var isMidday = date.getHours() == 12; + var time = [date.getHours() - (isPM && !isMidday ? 12 : 0), + date.getMinutes() || '00'].join(':') + + (isPM ? ' PM' : 'AM'); + var created_at = date.getFullYear() +'-'+ (date.getMonth() > 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ date.getDate(); - var date = new Date(order.requested_time); - var requested_time = date.getHours()+ ':' + date.getMinutes()+ '-' + date.getMinutes(); - - var isPM = date.getHours() >= 12; - var isMidday = date.getHours() == 12; - var result = document.querySelector('#result'); - var time = [date.getHours() - (isPM && !isMidday ? 12 : 0), - date.getMinutes() || '00'].join(':') + - (isPM ? ' PM' : 'AM'); + var delivery_type = ""; + if(deliveries.delivery_type == "service"){ + delivery_type = "DELIVERY"; + }else if(deliveries.delivery_type == "pick_up"){ + delivery_type = "PICK-UP"; + }else{ + delivery_type = "DIRECT DELIVERY"; + } - row = '' - +''+rowCount - +'' - +''+time - +'' - +''+order.grand_total - +'' - +'' - +''+ order.status +'' - +'' - +' ' + row = '' + +''+rowCount + +'' + +''+created_at + +'' + +''+time + +'' + +''+value.grand_total + +'' + +'' + +''+ delivery_type +'' + +'' + +' ' + + $('.order_reserve_cable tbody').append(row); + }); + } - $('.order_reserve_cable tbody').append(row); } }); diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js index 9b7c3fbb..b99dad8d 100644 --- a/app/assets/javascripts/order_reservation.js +++ b/app/assets/javascripts/order_reservation.js @@ -24,8 +24,8 @@ $(function() { // console.log(type); }); - jQuery(function(){ - jQuery('.first-1').click(); + $(function(){ + $('.first-1').click(); }); $(".custom-tr").on("click", function(){ @@ -38,6 +38,7 @@ $(function() { }); function refreshDetailData(){ + $('#requested_date_time').text(""); $("#sr_number").text(""); $("#delivery_info").text(""); $("#contact_info").text(""); @@ -45,6 +46,7 @@ $(function() { $('#sub_total').text("0.00"); $('#delivery_fee').text("0.00"); $('#total_charges').text("0.00"); + $('#discount_amount').text("0.00"); $('#total_tax').text("0.00"); $('#grand_total').text("0.00"); } @@ -63,6 +65,30 @@ $(function() { var delivery = data["delivery"]; var items = data["order_items"]; var item_list = $('.summary-items'); + + var newDate = new Date(data.requested_time); + var isPM = newDate.getHours() >= 12; + var isMidday = newDate.getHours() == 12; + var time = [newDate.getHours() - (isPM && !isMidday ? 12 : 0), + newDate.getMinutes() || '00'].join(':') + + (isPM ? ' PM' : 'AM'); + var requested_date = newDate.getFullYear() + '-' + (newDate.getMonth() > 10? newDate.getMonth() : '0' + (newDate.getMonth() + 1)) +'-'+ (newDate.getDate() > 10? newDate.getDate() : '0' + newDate.getDate()) +' '+time; + + if((data.expected_waiting_time!=undefined) && (data.expected_waiting_time!=null)){ + var expDate = new Date(data.expected_waiting_time); + var isPM = expDate.getHours() >= 12; + var isMidday = expDate.getHours() == 12; + var exptime = [expDate.getHours() - (isPM && !isMidday ? 12 : 0), + expDate.getMinutes() || '00'].join(':') + + (isPM ? ' PM' : 'AM'); + var expected_time = expDate.getFullYear() + '-' + (expDate.getMonth() > 10? expDate.getMonth() : '0' + (expDate.getMonth() + 1)) +'-'+ (expDate.getDate() > 10? expDate.getDate() : '0' + expDate.getDate()) +' '+exptime; + $('.expected_time').show(); + $('#expected_time').text(expected_time? expected_time : ''); + }else{ + $('.expected_time').hide(); + $('#expected_time').text(''); + } + item_list.empty(); if(items!=undefined && items!=""){ @@ -84,13 +110,25 @@ $(function() { $('.summary-items').append(row); } + if(data.discount_amount > 0){ + $("#discount").show(); + } + + $('#requested_date_time').text(requested_date); $('#sub_total').text(data.total_amount); - $('#delivery_fee').text(delivery.delivery_fee); - $('#total_charges').text(0); + $('#delivery_fee').text((parseFloat(delivery.delivery_fee) > 0)? delivery.delivery_fee : '0.0'); + $('#total_charges').text((parseFloat(data.convenience_charge) > 0)? data.convenience_charge : '0.0'); + $('#discount_amount').text((parseFloat(data.discount_amount) > 0)? data.discount_amount : '0.0'); $('#total_tax').text(data.total_tax); $('#grand_total').text(data.grand_total); - var address = delivery.address +', ' +delivery.township+", (" +delivery.direction_address+")" + var address = delivery.address; + if(delivery.township != null && delivery.township!=""){ + address += ', ' +delivery.township; + }else if(delivery.direction_address!=null && delivery.direction_address!=""){ + address += ", (" +delivery.direction_address+")"; + } + $('#requested_time').text(requested_date); $('#customer_name').text(data.customer_name); $('#phone').text(data.phone); $('#address').text(address); @@ -100,10 +138,12 @@ $(function() { $('#callback_url').text(data.callback_url); $('#order_id').text(data.order_reservation_id); - if(delivery.provider == "direct_delivery"){ + if(delivery.delivery_type == "service"){ $("#delivery_info").text("(DELIVERY)"); - }else if(delivery.provider == "self_pick_up"){ + }else if(delivery.delivery_type == "pick_up"){ $("#delivery_info").text("(PICK-UP)"); + }else{ + $("#delivery_info").text("(DIRECT DELIVERY)"); } if(data.order_remark!=null && data.order_remark!=""){ @@ -111,7 +151,7 @@ $(function() { }else if(data.reservation_remark!=null && data.reservation_remark!=""){ $("#order_remark").text(data.reservation_remark); } - $("#sr_number").text("No."+sr_no); + $("#sr_number").text("NO."+sr_no); if (data["receipt_no"]) { $("#contact_info").text(data["receipt_no"]); }else{ @@ -126,11 +166,10 @@ $(function() { } $("#accepted").on("click", function(){ - var status = $(this).attr("data-value"); - var order_id = $('#order_id').text(); - var ref_no = $('#ref_no').text(); - var callback = $('#callback_url').text(); - callback_url(callback,ref_no,order_id,status); + 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}); }); $("#cancel").on("click", function(){ @@ -141,20 +180,44 @@ $(function() { callback_url(callback,ref_no,order_id,status); }); - function callback_url(callback,ref_no,order_id,status){ + function showTimePicker(requested_time){ + // var date = new Date(requested_time); + // var isPM = date.getHours() >= 12; + // var isMidday = date.getHours() == 12; + // var time = [date.getHours() - (isPM && !isMidday ? 12 : 0), + // date.getMinutes() || '00'].join(':') + + // (isPM ? 'pm' : 'am'); + // 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){ var url = 'order_reservation/update'; var post_url = "order_reservation/send_status"; + var waiting_time = ""; + if(time!=undefined && time!=""){ + waiting_time = time; + } + var expected_time = ""; + if(exptime!=undefined && exptime!=""){ + expected_time = exptime; + } $.ajax({ type: "POST", url: post_url, - data: {url: callback, ref_no: ref_no, status: status}, + data: {url: callback, ref_no: ref_no, status: status, waiting_time: waiting_time}, dataType: "json", success: function(data) { if(data.status){ $.ajax({ type: "POST", url: url, - data: {'order_id': order_id, 'status': status}, + data: {'order_id': order_id, 'status': status, 'expected_time' : expected_time}, dataType: "json", success: function(data) { if (data.status) { @@ -188,5 +251,27 @@ $(function() { } }); } + + $("#save").on("click",function(){ + $("#waiting_timeErr").text(""); + 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); + 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; + callback_url(callback,ref_no,order_id,status,expected_time,waiting_time); + }else{ + $("#waiting_time").val(""); + $("#waiting_timeErr").text("Expected waiting time is greater than requested time!"); + } + + }); }); diff --git a/app/assets/stylesheets/order_reservation.scss b/app/assets/stylesheets/order_reservation.scss index c33e1f32..4a5c591a 100644 --- a/app/assets/stylesheets/order_reservation.scss +++ b/app/assets/stylesheets/order_reservation.scss @@ -85,4 +85,10 @@ } .tr-active{ background-color : #FFCDD2; +} +.div_order_margin { + margin: 0px 0px 0px -5px !important +} +.div_card_order { + margin: 0px -5px !important } \ No newline at end of file diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index a4c8b383..2fb3d621 100755 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -47,9 +47,9 @@ class Api::BillController < Api::ApiController Promotion.promo_activate(@sale) #BillBroadcastJob.perform_later(table) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "bill_channel",table: table - end + #end else @status = false @error_message = "No Current Open Shift" diff --git a/app/controllers/api/call_waiters_controller.rb b/app/controllers/api/call_waiters_controller.rb index d0a0e3df..b8c11897 100644 --- a/app/controllers/api/call_waiters_controller.rb +++ b/app/controllers/api/call_waiters_controller.rb @@ -6,9 +6,9 @@ class Api::CallWaitersController < ActionController::API @time = params[:time] @table = DiningFacility.find(@table_id) # CallWaiterJob.perform_later(@table,@time) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time - end + #end # get printer info @shop = Shop.first unique_code = "CallWaiterPdf" diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb index 61e89c39..57337b5e 100644 --- a/app/controllers/api/order_reserve/order_reservation_controller.rb +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -59,10 +59,12 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController order_reservation = params order_reservation_id, flag = OrderReservation.addOrderReservationInfo(order_reservation) - order_reservation = OrderReservation.find(order_reservation_id) - # if ENV["SERVER_MODE"] != 'cloud' - # ActionCable.server.broadcast "order_reservation_channel",data: order_reservation - # end + order_reservation = OrderReservation.get_pending_orders #find(order_reservation_id) + + if flag #&& ENV["SERVER_MODE"] != 'cloud' + ActionCable.server.broadcast "order_reservation_channel",data: order_reservation + end + if flag render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is successfully created!" } else diff --git a/app/controllers/concerns/token_verification.rb b/app/controllers/concerns/token_verification.rb index 85c9b858..b49ef597 100755 --- a/app/controllers/concerns/token_verification.rb +++ b/app/controllers/concerns/token_verification.rb @@ -24,8 +24,7 @@ module TokenVerification end end - @user = Employee. - (token) + @user = Employee.authenticate_by_token(token) if @user return true #Maybe log - login? diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 2eab460a..100635cd 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -184,11 +184,9 @@ puts items_arr.to_json @status, @sale = Sale.request_bill(@order,current_user,current_login_employee) # for second display - if ENV["SERVER_MODE"] != 'cloud' - - ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale" - - end + #if ENV["SERVER_MODE"] != 'cloud' + ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale" + #end result = {:status=> @status, :data => @sale } render :json => result.to_json end diff --git a/app/controllers/origami/dashboard_controller.rb b/app/controllers/origami/dashboard_controller.rb index f888ac57..8bdd5c27 100644 --- a/app/controllers/origami/dashboard_controller.rb +++ b/app/controllers/origami/dashboard_controller.rb @@ -56,6 +56,22 @@ class Origami::DashboardController < BaseOrigamiController # get printer info @print_settings = PrintSetting.get_precision_delimiter() @current_user = current_user + #quick service + quick_service = Lookup.collection_of('quick_service') + @quick_service = 0 + if !quick_service[0].nil? + @quick_service = quick_service[0][1] + end + #order reservation + order_reservation = Lookup.collection_of('order_reservation') + @order_reservation = 0 + if !order_reservation.empty? + order_reservation.each do |order_reserve| + if order_reserve[0] == 'OrderReservation' + @order_reservation = order_reserve[1] + end + end + end end end diff --git a/app/controllers/origami/dinga_controller.rb b/app/controllers/origami/dinga_controller.rb index 586403f9..87caddfa 100644 --- a/app/controllers/origami/dinga_controller.rb +++ b/app/controllers/origami/dinga_controller.rb @@ -86,11 +86,12 @@ def create # saleObj = Sale.find(sale_id) sale_payment = SalePayment.new - status, @sale = sale_payment.process_payment(saleObj, @user, cash, "dinga",account_no) - if status == true + status, @sale,@membership_data = sale_payment.process_payment(saleObj, @user, cash, "dinga",account_no) + + if status == true && @membership_data["status"] == true @out = true, "Success!" else - @out =false, "Please try again payment!" + @out =false, @membership_data["message"] end end end diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb index 562eaaed..12a3ee2f 100644 --- a/app/controllers/origami/order_reservation_controller.rb +++ b/app/controllers/origami/order_reservation_controller.rb @@ -1,12 +1,14 @@ class Origami::OrderReservationController < BaseOrigamiController def index - @order = OrderReservation.all + @order = OrderReservation.latest_order + @count_on_order = OrderReservation.get_count_on_order end def update @id = params[:order_id] - @status = params[:status] + @status = params[:status] + expected_waiting_time = params[:expected_time] @order_reservation = OrderReservation.find(@id) status = true @@ -25,7 +27,7 @@ class Origami::OrderReservationController < BaseOrigamiController OrderReservation.update_order_reservation(@id, nil, "cancelled") result = {:status=> true, :message => "rejected" } else - OrderReservation.update_order_reservation(@id, nil, "accepted") + OrderReservation.update_order_reservation(@id, nil, "accepted", expected_waiting_time) result = {:status=> true, :message => "accepted" } end end @@ -50,7 +52,7 @@ class Origami::OrderReservationController < BaseOrigamiController status = params[:status] end - response = OrderReservation.send_status_to_ordering(params[:url],params[:ref_no],status) + response = OrderReservation.send_status_to_ordering(params[:url],params[:ref_no],status,params[:waiting_time]) render :json => response end diff --git a/app/controllers/origami/paymal_controller.rb b/app/controllers/origami/paymal_controller.rb index 1321cf87..e9d3cb6c 100644 --- a/app/controllers/origami/paymal_controller.rb +++ b/app/controllers/origami/paymal_controller.rb @@ -88,11 +88,11 @@ def create # saleObj = Sale.find(sale_id) sale_payment = SalePayment.new - status, @sale = sale_payment.process_payment(saleObj, @user, cash, "paymal",account_no) - if status == true + status, @sale,@membership_data = sale_payment.process_payment(saleObj, @user, cash, "paymal",account_no) + if status == true && @membership_data["status"] == true @out = true, "Success!" else - @out =false, "Please try again payment!" + @out =false, @membership_data["message"] end end end diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index dbd1cbb1..3baed9f3 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -6,7 +6,7 @@ class Origami::PaymentsController < BaseOrigamiController def first_bill sale_id = params[:sale_id] # sale_id sale_data = Sale.find_by_sale_id(sale_id) - sale_items = SaleItem.where("sale_id=?",sale_id) + sale_items = SaleItem.unscoped.select("sale_id,product_code,item_instance_code,product_name,product_alt_name,account_id,status,remark,SUM(qty) as qty,SUM(unit_price) as unit_price,SUM(taxable_price) as taxable_price,SUM(price) as price,is_taxable").where("sale_id=?",sale_id).group("item_instance_code,unit_price") member_info = nil # For Cashier by Zone @@ -99,6 +99,7 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) + sale_items = SaleItem.unscoped.select("sale_id,product_code,item_instance_code,product_name,product_alt_name,account_id,status,remark,SUM(qty) as qty,SUM(unit_price) as unit_price,SUM(taxable_price) as taxable_price,SUM(price) as price,is_taxable").where("sale_id=?",sale_id).group("item_instance_code,unit_price") shop_details = Shop.first # rounding adjustment if shop_details.is_rounding_adj @@ -204,7 +205,7 @@ class Origami::PaymentsController < BaseOrigamiController discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) printer = Printer::ReceiptPrinter.new(print_settings) - filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data) + filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data) render json: JSON.generate({:status => saleObj.rebate_status, :message => "Can't Rebate coz of Sever Error ", :filename => filename, :receipt_no => sale_receipt_no, :printer_name => printer_name}) diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb index 8c1d3a43..0c50a5da 100755 --- a/app/controllers/origami/request_bills_controller.rb +++ b/app/controllers/origami/request_bills_controller.rb @@ -39,9 +39,9 @@ class Origami::RequestBillsController < ApplicationController # Promotion Activation Promotion.promo_activate(@sale) #bill channel - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "bill_channel",table: table - end + #end if order.source == "quick_service" result = {:status=> @status, :data => @sale.sale_id } render :json => result.to_json diff --git a/app/controllers/origami/second_display_controller.rb b/app/controllers/origami/second_display_controller.rb index 611b49a9..ac869719 100644 --- a/app/controllers/origami/second_display_controller.rb +++ b/app/controllers/origami/second_display_controller.rb @@ -13,9 +13,9 @@ class Origami::SecondDisplayController < BaseOrigamiController else tax_profiles = nil end - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status] - end + # end end #Shop Name in Navbor helper_method :shop_detail diff --git a/app/controllers/origami/split_bill_controller.rb b/app/controllers/origami/split_bill_controller.rb index 547a8a7e..5f074bb5 100755 --- a/app/controllers/origami/split_bill_controller.rb +++ b/app/controllers/origami/split_bill_controller.rb @@ -335,9 +335,9 @@ class Origami::SplitBillController < BaseOrigamiController end Promotion.promo_activate(sale) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "bill_channel",table: table - end + #end render :json => { status: status } else render :json => { status: false, error_message: 'No Current Open Shift!'} diff --git a/app/controllers/reports/order_reservation_controller.rb b/app/controllers/reports/order_reservation_controller.rb new file mode 100644 index 00000000..fb9517e4 --- /dev/null +++ b/app/controllers/reports/order_reservation_controller.rb @@ -0,0 +1,63 @@ +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"]] + + from, to = get_date_range_from_params + + @shift_sale_range = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) + + @shift = '' + if params[:shift_name].to_i != 0 + shift_sale = ShiftSale.find(params[:shift_name]) + if to.blank? + @shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at) + else + + @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) + @from = from + @to = to + # get printer info + @print_settings = PrintSetting.get_precision_delimiter() + if @shift.present? + @shift.each do |sh| + @shift_from = sh.shift_started_at.nil? ? '-' : sh.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p") + @shift_to = sh.shift_closed_at.nil? ? '-' : sh.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p") + @shift_data = sh + end + end + + respond_to do |format| + format.html + format.xls + end + end + + def show + from, to = get_date_range_from_params + + @sale_data = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) + + date_arr = Array.new + @sale_data.each do |sale| + local_opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc.getlocal.strftime("%e %b %I:%M%p") + local_closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc.getlocal.strftime("%e %b %I:%M%p") + opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc + closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc + shift_id = sale.id.nil? ? '-' : sale.id + str = {:shift_id => shift_id, :local_opening_date => local_opening_date, :local_closing_date => local_closing_date, :opening_date => opening_date, :closing_date => closing_date} + date_arr.push(str) + end + + out = {:status => 'ok', :message => date_arr} + + respond_to do |format| + format.json { render json: out } + end + end + +end \ No newline at end of file diff --git a/app/controllers/reports/receipt_no_controller.rb b/app/controllers/reports/receipt_no_controller.rb index cff7887c..a86fb9b2 100755 --- a/app/controllers/reports/receipt_no_controller.rb +++ b/app/controllers/reports/receipt_no_controller.rb @@ -20,7 +20,7 @@ authorize_resource :class => false payment_type = params[:payment_type] @sale_data = Sale.get_shift_sales_by_receipt_no(@shift_sale_range,@shift,from,to,payment_type) @sale_taxes = Sale.get_separate_tax(@shift_sale_range,@shift,from,to,payment_type) - @tax_profiles = TaxProfile.order('order_by asc') + @tax_profiles = TaxProfile.order('order_by asc').limit(2) @from = from @to = to # get printer info diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index 793ba287..cff5fd60 100755 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -156,9 +156,9 @@ class DiningFacility < ApplicationRecord table = DiningFacility.find(table_id) #Send to background job for processing # CheckInBookingJob.perform_later(table) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "check_in_booking_channel",table: table - end + #end end def self.checkin_time diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb index 7fb23647..6440444a 100755 --- a/app/models/menu_category.rb +++ b/app/models/menu_category.rb @@ -78,6 +78,14 @@ class MenuCategory < ApplicationRecord end end + def get_sub_category + menu_category = MenuCategory.find_by_menu_category_id(self.id) + if menu_category + return true + end + return false + end + private # def generate_menu_category_code diff --git a/app/models/order.rb b/app/models/order.rb index a4f27778..01a7b583 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -321,9 +321,9 @@ class Order < ApplicationRecord end else msg = ' Print Error ! Please contact to service' - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error' - end + #end if !sidekiq.nil? OrderQueueProcessorJob.perform_later(self.id, self.table_id) else @@ -337,9 +337,9 @@ class Order < ApplicationRecord end end assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "order_queue_station_channel",order: assign_order - end + #end end end @@ -376,9 +376,9 @@ class Order < ApplicationRecord type = 'order' #Send to background job for processing # OrderBroadcastJob.perform_later(table,type) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "order_channel",table: table,type:type - end + #end end end @@ -532,9 +532,9 @@ class Order < ApplicationRecord end end end - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status - end + #end end private diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index 3c401e31..d60d908e 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -5,7 +5,9 @@ class OrderReservation < ApplicationRecord before_create :generate_custom_id has_many :order_reservation_items - belongs_to :delivery + has_one :delivery + + scope :latest_order, -> { order("order_reservation_id desc, created_at desc") } SEND_TO_KITCHEN = "send_to_kitchen" READY_TO_DELIVERY = "ready_to_deliver" @@ -19,7 +21,7 @@ class OrderReservation < ApplicationRecord order_reservation = OrderReservation.new order_reservation.order_reservation_type = order_reserve[:order_type] order_reservation.customer_id = order_reserve[:cus_info] - order_reservation.requested_time = DateTime.parse(order_reserve[:requested_time]).utc.strftime("%Y-%m-%d %H:%M:%S") + order_reservation.requested_time = Time.parse(order_reserve[:requested_time]).utc order_reservation.callback_url = order_reserve[:callback_url] order_reservation.transaction_ref = order_reserve[:reference] if order_reserve[:order_info] @@ -27,9 +29,11 @@ class OrderReservation < ApplicationRecord order_reservation.payment_type = order_reserve[:payment_info][:payment_type] order_reservation.payment_status = order_reserve[:payment_info][:payment_status] order_reservation.payment_ref = order_reserve[:payment_info][:payment_ref] + order_reservation.taxes = order_reserve[:payment_info][:taxes] order_reservation.total_amount = order_reserve[:payment_info][:sub_total] order_reservation.total_tax = order_reserve[:payment_info][:total_tax] order_reservation.discount_amount = order_reserve[:payment_info][:discount_amount] + order_reservation.convenience_charge = order_reserve[:payment_info][:convenience_charge] order_reservation.grand_total = order_reserve[:payment_info][:grand_total] order_reservation.order_remark = order_reserve[:order_info][:order_remark] end @@ -130,96 +134,10 @@ class OrderReservation < ApplicationRecord result = {:status=> true, :message => DELIVERED } return result - # rebate_amount = nil - - # For Cashier by Zone - # bookings = Booking.where("sale_id='#{sale_id}'") - - # if bookings[0].dining_facility_id.to_i > 0 - # table = DiningFacility.find(bookings[0].dining_facility_id) - # cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) - # cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) - # else - # shift = ShiftSale.find(saleObj.shift_sale_id) - # cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) - # end - - # For Print - # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server - # receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf - # unique_code = "ReceiptBillPdf" - # if !receipt_bill_a5_pdf.empty? - # receipt_bill_a5_pdf.each do |receipt_bilA5| - # if receipt_bilA5[0] == 'ReceiptBillA5Pdf' - # if receipt_bilA5[1] == '1' - # unique_code = "ReceiptBillA5Pdf" - # else - # unique_code = "ReceiptBillPdf" - # end - # end - # end - # end - - # customer= Customer.find(saleObj.customer_id) - - # get member information - # rebate = MembershipSetting.find_by_rebate(1) - # credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote') - - # if customer.membership_id != nil && rebate && credit_data.nil? - # member_info = Customer.get_member_account(customer) - # if member_info["status"] == true - # rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) - # current_balance = SaleAudit.paymal_search(sale_id) - # end - # end - - #orders print out - # if params[:type] == "quick_service" - # booking = Booking.find_by_sale_id(sale_id) - # if booking.dining_facility_id.to_i>0 - # table_id = booking.dining_facility_id - # else - # table_id = 0 - # end - - # booking.booking_orders.each do |order| - # # Order.pay_process_order_queue(order.order_id, table_id) - # oqs = OrderQueueStation.new - # oqs.pay_process_order_queue(order.order_id, table_id) - # end - - # end - - #for card sale data - # card_data = Array.new - # card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id) - # if !card_sale_trans_ref_no.nil? - # card_sale_trans_ref_no.each do |cash_sale_trans| - # card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s - # card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s - # card_no = cash_sale_trans.pan.last(4) - # card_no = card_no.rjust(19,"**** **** **** ") - # card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id}) - # end - # end - - # get printer info - # print_settings=PrintSetting.find_by_unique_code(unique_code) - # Calculate Food and Beverage Total - # item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items) - # discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) - - # printer = Printer::ReceiptPrinter.new(print_settings) - # filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data) - - # render json: JSON.generate({:status => saleObj.rebate_status, :message => "Can't Rebate coz of Sever Error ", :filename => filename, :receipt_no => sale_receipt_no, :printer_name => printer_name}) - - #end end end - def self.send_status_to_ordering(url,ref_no,status) + def self.send_status_to_ordering(url,ref_no,status,waiting_time=nil) base_url = 'https://api.doemal.com' token = '3T-tnlYtFJ-5Z1vY6XQqxQ' order_reservation = Lookup.collection_of("order_reservation") @@ -238,10 +156,15 @@ class OrderReservation < ApplicationRecord Rails.logger.debug "Doemal URL" + base_url post_url = base_url + url + if !waiting_time.nil? + send_params = {id: ref_no, waiting_time: waiting_time, status: status} + else + send_params = {id: ref_no, status: status} + end begin response = HTTParty.post(post_url, - :body => { id: ref_no, status: status}.to_json, + :body => send_params.to_json, :headers => { 'Authorization' => 'Token token='+token, 'Content-Type' => 'application/json', @@ -261,15 +184,29 @@ class OrderReservation < ApplicationRecord return response end - def self.update_order_reservation(id, sale_id, status) + def self.update_order_reservation(id, sale_id, status, expected_waiting_time=nil) order_reservation = OrderReservation.find(id) if sale_id.present? order_reservation.sale_id = sale_id end + if !expected_waiting_time.nil? + order_reservation.expected_waiting_time = DateTime.parse(expected_waiting_time).utc + end order_reservation.status = status order_reservation.save end + def self.get_count_on_order + order_reservation = OrderReservation.select("COUNT(order_reservation_id) as count, status").group("status") + end + + def self.get_pending_orders + order_reservation = OrderReservation.select("order_reservations.*,deliveries.provider,deliveries.delivery_type") + .joins(" JOIN deliveries as del on del.order_reservation_id=order_reservations.order_reservation_id") + .where("order_reservations.status='new'") + .order("order_reservations.order_reservation_id desc, order_reservations.created_at desc") + end + private def generate_custom_id self.order_reservation_id = SeedGenerator.generate_id(self.class.name, "ODRS") diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 098b5733..5f372581 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -23,6 +23,7 @@ class SalePayment < ApplicationRecord if (amount_due >= 0) payment_status = false + membership_data = nil #route to payment type case payment_method when "cash" @@ -52,11 +53,11 @@ class SalePayment < ApplicationRecord when "foc" payment_status = foc_payment when "paymal" - payment_status = paymal_payment + payment_status,membership_data = paymal_payment when "JunctionPay" payment_status = junction_pay_payment when "dinga" - payment_status = dinga_payment + payment_status,membership_data = dinga_payment else puts "it was something else" end @@ -73,7 +74,7 @@ class SalePayment < ApplicationRecord end end - return true, self.save + return true, self.save,membership_data else #record an payment in sale-audit # remark = "No outstanding Amount - Grand Total [#{invoice.grand_total}] | Due [#{amount_due}] | Paid [#{invoice.amount_received}]" @@ -430,7 +431,7 @@ class SalePayment < ApplicationRecord sale_update_payment_status(0) end - return payment_status + return payment_status,membership_data end def junction_pay_payment @@ -480,7 +481,7 @@ class SalePayment < ApplicationRecord sale_update_payment_status(0) end - return payment_status + return payment_status,membership_data end @@ -607,9 +608,9 @@ class SalePayment < ApplicationRecord type = 'payment' #Send to background job for processing # OrderBroadcastJob.perform_later(table,type) - if ENV["SERVER_MODE"] != 'cloud' + #if ENV["SERVER_MODE"] != 'cloud' ActionCable.server.broadcast "order_channel",table: table,type:type - end + #end end end end diff --git a/app/pdf/receipt_bill_a5_pdf.rb b/app/pdf/receipt_bill_a5_pdf.rb index 7253bfe1..78b27e3f 100644 --- a/app/pdf/receipt_bill_a5_pdf.rb +++ b/app/pdf/receipt_bill_a5_pdf.rb @@ -202,10 +202,12 @@ class ReceiptBillA5Pdf < Prawn::Document y_position = cursor move_down line_move sub_total = 0.0 + total_qty = 0.0 sale_items.each do |item| # check for item not to show if item.price != 0 sub_total += item.price #(item.qty*item.unit_price) - comment for room charges + total_qty += item.qty qty = item.qty total_price = item.price #item.qty*item.unit_price - comment for room charges price = item.unit_price @@ -240,12 +242,15 @@ class ReceiptBillA5Pdf < Prawn::Document move_down line_move y_position = cursor - bounding_box([0,y_position], :width =>self.description_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do text "Sub Total", :size => self.item_font_size,:align => :left end - bounding_box([self.description_width,y_position], :width =>self.label_width) do - text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}" ,:delimiter => ',', :size => self.item_font_size,:align => :right - end + bounding_box([self.item_width + self.price_width + 11,y_position], :width =>self.qty_width, :height => self.item_height) do + text "#{number_with_precision(total_qty, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :center + end + bounding_box([self.item_width + self.price_width + 8,y_position], :width =>self.total_width, :height => self.item_height) do + text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :right + end end def all_total(sale_data,precision,delimiter) diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 7ebe5997..fe42bbf3 100755 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -196,10 +196,12 @@ class ReceiptBillPdf < Prawn::Document y_position = cursor move_down line_move sub_total = 0.0 + total_qty = 0.0 sale_items.each do |item| # check for item not to show if item.price != 0 sub_total += item.price #(item.qty*item.unit_price) - comment for room charges + total_qty += item.qty qty = item.qty total_price = item.price #item.qty*item.unit_price - comment for room charges price = item.unit_price @@ -235,12 +237,15 @@ class ReceiptBillPdf < Prawn::Document move_down line_move y_position = cursor - bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do + bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do text "Sub Total", :size => self.item_font_size,:align => :left end - bounding_box([self.item_description_width,y_position], :width =>self.label_width) do - text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}" ,:delimiter => ',', :size => self.item_font_size,:align => :right - end + bounding_box([self.item_width + self.price_width + 11,y_position], :width =>self.qty_width, :height => self.item_height) do + text "#{number_with_precision(total_qty, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :center + end + bounding_box([self.item_width + self.price_width + 8,y_position], :width =>self.total_width, :height => self.item_height) do + text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :right + end end def all_total(sale_data,precision,delimiter) diff --git a/app/uploaders/menu_item_image_uploader.rb b/app/uploaders/menu_item_image_uploader.rb index 91bbdc37..90755159 100755 --- a/app/uploaders/menu_item_image_uploader.rb +++ b/app/uploaders/menu_item_image_uploader.rb @@ -33,7 +33,7 @@ class MenuItemImageUploader < CarrierWave::Uploader::Base # Process files as they are uploaded: # process scale: [200, 300] - process :resize_to_fit => [200, 150] + process :resize_to_fit => [400, 250]#[200, 150] # # def scale(width, height) diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb index 235e958a..fd823182 100755 --- a/app/views/origami/addorders/detail.html.erb +++ b/app/views/origami/addorders/detail.html.erb @@ -46,7 +46,7 @@ <% if type %> <% if !menu.code.include? "SPL" %> -