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' %>
|
- NAME - + REF. + |
REQUESTED TIME @@ -346,14 +406,20 @@ |
|
- PHONE - + NAME + |
EXPECTED TIME |
|
+ PHONE + + |
+ |
|
ADDRESS @@ -391,37 +457,41 @@ Expected Waiting Time for
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
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:
+
+
+ | |