';
- // $('.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
@@ -405,26 +187,30 @@ show_menu_list(menu_items);
item_options = $(this).data('options');
for(var field in item_sets) {
-
+
$('.set_order').attr('data-min-qty',item_sets[field]["min_selectable_qty"]);
value = item_sets[field]["instances"];
- $(value).each(function(i){
+ $(value).each(function(i){
menus = JSON.parse(localStorage.getItem("menus"));
if (menus != null) {
- for(var i in menus) {
- var categories = menus[i]["categories"];
+ for(var j in menus) {
+ var categories = menus[j]["categories"];
for(var ii in categories) {
var items = categories[ii]["items"];
for(var iii in items) {
var result = items[iii]["instances"];
- for(var iv in result) {
- if (value[i]["id"] == result[iv]["id"]) {
+ for(var v in result) {
+
+ if (value[i]["id"] == result[v]["id"]) {
+
+ console.log("ssssssss")
+
row = '
'
- +"
"
+'
'
- +''+result[iv]["name"]+''
+ +''+result[v]["name"]+''
+'
'
+'
'
+'

'
+'
'
+'
'
+''
+'
'
@@ -452,6 +238,8 @@ show_menu_list(menu_items);
}
}
}else{
+ type = window.location.href.indexOf("quick_service");
+ modify_order = window.location.href.indexOf("modify_order");
if (type != -1 && modify_order != -1) {
url = '../../../addorders/get_item_instance/'+value[i]["id"];
console.log("ssssssss")
@@ -1376,7 +1164,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 +1216,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/assets/javascripts/channels/check_new_order.js b/app/assets/javascripts/channels/check_new_order.js
index 5bd64013..403874e9 100644
--- a/app/assets/javascripts/channels/check_new_order.js
+++ b/app/assets/javascripts/channels/check_new_order.js
@@ -19,21 +19,22 @@ 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.
"+
+ 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,
+ html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
- },function(isConfirm){
+ }, 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 84dd1982..4627dede 100644
--- a/app/assets/javascripts/channels/check_order_ready_to_delivery.js
+++ b/app/assets/javascripts/channels/check_order_ready_to_delivery.js
@@ -19,21 +19,22 @@ 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.
"+
+ 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,
+ html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
- },function(isConfirm){
+ }, 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 6727dbdb..31c6b75c 100644
--- a/app/assets/javascripts/channels/check_order_send_to_kitchen.js
+++ b/app/assets/javascripts/channels/check_order_send_to_kitchen.js
@@ -19,21 +19,22 @@ 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.
"+
+ 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,
+ html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
- },function(isConfirm){
+ }, 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/channels/order_reservation.js b/app/assets/javascripts/channels/order_reservation.js
index 68da8d87..52b4cef5 100644
--- a/app/assets/javascripts/channels/order_reservation.js
+++ b/app/assets/javascripts/channels/order_reservation.js
@@ -17,7 +17,7 @@ App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel'
var rowCount = key+1;
var date = new Date(value.created_at);
var time = timeFormat(date);
- var created_at = date.getFullYear() +'-'+ (date.getMonth() > 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate()>10?date.getDate() : '0'+date.getDate());
+ var created_at = date.getFullYear() +'-'+ (date.getMonth() >= 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() >=10?date.getDate() : '0'+date.getDate());
var delivery_type = "";
if(value.delivery_type == "service"){
diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js
index 07eab9e1..d17250ae 100644
--- a/app/assets/javascripts/order_reservation.js
+++ b/app/assets/javascripts/order_reservation.js
@@ -2,6 +2,9 @@
$(function() {
$("#discount").hide();
$(".expected_time").hide();
+ $('#accepted').hide();
+ $('#cancel').hide();
+ $(".tbl_customer").hide();
$(function() {
$('.first-1').click();
});
@@ -11,6 +14,9 @@ $(function() {
$(".nav-item").on("click", function(){
type = $(this).attr("data-type");
refreshDetailData();
+ $('#accepted').hide();
+ $('#cancel').hide();
+ $(".tbl_customer").hide();
if (type == "pending") {
$(".first-1").click();
$('#accepted').text("ACCEPT");
@@ -24,10 +30,15 @@ $(function() {
$('#accepted').text("READY TO DELIVERY");
$('#accepted').attr("data-value","delivery");
}else if(type == "completed"){
+ // $('#cancel').hide();
$(".fourth-1").click();
- $('#accepted').text("PICK-UP");
+ $('#accepted').text("COMPLETE");
$('#accepted').attr("data-value","completed");
- }
+ }else if(type == "processed"){
+ $(".fifth-1").click();
+ // $('#accepted').hide();
+ // $('#cancel').hide();
+ }
// console.log(type);
});
@@ -36,7 +47,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 +58,117 @@ $(function() {
});
$("#cancel").on("click", function(){
- var status = $(this).attr("data-value");
- 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 order_status = $("#order_status").text();
+ $("#status").text($(this).attr("data-value"));
+ 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});
+ }
});
- $("#save").on("click",function(){
- $("#waiting_timeErr").text("");
+ $(".send_status").on("click",function(){
+ $("#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(){
+ 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 = 'after';
+ }
+ 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);
+ // var requested_time = new Date($("#requested_date_time").text());
+ // if(type == 'after'){
+ // requested_time.setMinutes(requested_time.getMinutes() + minutes);
+ // }else{
+ // requested_time.setMinutes(requested_time.getMinutes() - minutes);
+ // }
// 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;
- }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!");
+ callback_url(callback,ref_no,order_id,status,type,minutes);
+ });
+
+ $(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 +185,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");
@@ -116,20 +206,31 @@ function show_order_detail(url,sr_no){
dataType: "json",
success: function(data) {
// console.log(data);
+ $(".tbl_customer").show();
+ if(data.status != "delivered"){
+ $('#accepted').show();
+ if(data.status != "ready_to_delivery" && data.status != "send_to_kitchen"){
+ $('#cancel').show();
+ }
+ }else{
+ $('#accepted').hide();
+ $('#cancel').hide();
+ }
var delivery = data["delivery"];
var items = data["order_items"];
var item_list = $('.summary-items');
var newDate = new Date(data.requested_time);
var time = timeFormat(newDate);
- var requested_date = newDate.getFullYear() + '-' + (newDate.getMonth() > 10? newDate.getMonth() : '0' + (newDate.getMonth() + 1)) +'-'+ (newDate.getDate() > 10? newDate.getDate() : '0' + newDate.getDate()) +' '+time;
+ // var requested_date = newDate.getFullYear() + '-' + (newDate.getMonth() >= 10? newDate.getMonth() : '0' + (newDate.getMonth() + 1)) +'-'+ (newDate.getDate() >= 10? newDate.getDate() : '0' + newDate.getDate()) +' '+time;
+ var requested_date = getOrderMonth(newDate.getMonth()) +' '+ (newDate.getDate() >= 10? newDate.getDate() : '0' + newDate.getDate()) +', '+newDate.getFullYear()+'('+getOrderDay(newDate.getDay())+')'+' '+time;
if((data.expected_waiting_time!=undefined) && (data.expected_waiting_time!=null)){
- var expDate = new Date(data.expected_waiting_time);
- var exptime = timeFormat(expDate);
- var expected_time = expDate.getFullYear() + '-' + (expDate.getMonth() > 10? expDate.getMonth() : '0' + (expDate.getMonth() + 1)) +'-'+ (expDate.getDate() > 10? expDate.getDate() : '0' + expDate.getDate()) +' '+exptime;
+ // var expDate = new Date(data.expected_waiting_time);
+ // var exptime = timeFormat(expDate);
+ // 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 : '');
+ $('#expected_time').text(data.expected_waiting_time? data.expected_waiting_time : '');
}else{
$('.expected_time').hide();
$('#expected_time').text('');
@@ -160,7 +261,8 @@ function show_order_detail(url,sr_no){
$("#discount").show();
}
- $('#requested_date_time').text(requested_date);
+ //customer info detail
+ // $('#requested_date_time').text(requested_date);
$('#sub_total').text(data.total_amount);
$('#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');
@@ -184,6 +286,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 +300,22 @@ 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);
- if (data["receipt_no"]) {
- $("#contact_info").text(data["receipt_no"]);
+
+ if(data.remark!=null && data.remark!=""){
+ var doemal_remark = data.remark.split("||");
+ var remark = doemal_remark[0] +", "+ doemal_remark[1];
+ $("#remark").text(remark);
}else{
- $("#contact_info").text(data["order_reservation_id"]);
+ $("#remark").text("");
+ }
+
+ //no and order id info
+ $("#sr_number").text("NO."+sr_no);
+ $("#order_status").text(data.status);
+ if (data["receipt_no"]) {
+ $("#invoice_no").text(data["receipt_no"]);
+ }else{
+ $("#invoice_no").text(data["order_reservation_id"]);
}
}
@@ -211,40 +325,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, min_type: min_type, expected_time: waiting_time, remark: reason, access_code: access_code},
dataType: "json",
success: function(data) {
if (data.status) {
@@ -293,7 +409,14 @@ function showNewOrder(order_reservation){
if((order_reservation!=undefined) && (order_reservation!=null) && (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 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.wav'); // define your audio
+ // setTimeout(function(){
+ // audio.loop = true;
+ audio.play();
+ // },10000);
+
swal({
html: true,
title: 'Information',
@@ -304,4 +427,14 @@ function showNewOrder(order_reservation){
allowOutsideClick: false
});
}
+}
+
+function getOrderMonth(month){
+ var MONTHS = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"];
+ return MONTHS[month];
+}
+
+function getOrderDay(day){
+ var DAYS = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
+ return DAYS[day];
}
\ No newline at end of file
diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb
index f34c0f6f..1d9e3fab 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
@@ -71,4 +75,42 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController
end
end
end
+
+ def update_status
+ order_reservation_id = params[:id]
+ status = params[:status]
+ remark = params[:remark]
+
+ if params[:status] && params[:remark]
+ reason = status +"||"+remark
+ order_reservation = OrderReservation.find(order_reservation_id)
+
+ if status == 'REMOVE'
+ if order_reservation.status == "new" || order_reservation.status == "accepted"
+ OrderReservation.update_order_reservation(order_reservation_id, nil, "rejected",nil,remark)
+ result = {:status=> true, :message => "rejected" }
+ else
+ result = {:status=> false, :message => "Status :: "+order_reservation.status+" cann't remove!" }
+ end
+ elsif status == 'FOC'
+ if order_reservation.status == "new" || order_reservation.status == "accepted" || order_reservation.status == "send_to_kitchen"
+ OrderReservation.update_order_reservation(order_reservation_id, nil, nil,nil,reason)
+ result = {:status=> true, :message => "FOC successfully" }
+ else
+ result = {:status=> false, :message => "Status :: "+order_reservation.status+" cann't get FOC!" }
+ end
+ elsif status == 'VOID'
+ if order_reservation.status == "ready_to_delivery"
+ OrderReservation.update_order_reservation(order_reservation_id, nil, nil,nil,reason)
+ result = {:status=> true, :message => "VOID successfully" }
+ else
+ result = {:status=> false, :message => "Status :: "+order_reservation.status+" cann't VOID!" }
+ end
+ end
+ else
+ result = { :status => false, :order_reservation_id => order_reservation_id, :message => "status and remark is required!" }
+ end
+
+ render :json => result
+ end
end
diff --git a/app/controllers/api/orders_controller.rb b/app/controllers/api/orders_controller.rb
index d937c6c3..49afe833 100755
--- a/app/controllers/api/orders_controller.rb
+++ b/app/controllers/api/orders_controller.rb
@@ -220,33 +220,39 @@ class Api::OrdersController < Api::ApiController
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# print
assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code)
- # order queue stations
- oqs = assigned_item.order_queue_station
+ assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'")
- order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf
-
- unique_code="OrderItemPdf"
- if !order_slim_pdf.empty?
- order_slim_pdf.each do |order_item_slim|
- if order_item_slim[0] == 'OrderSlimPdf'
- if order_item_slim[1] == '1'
- unique_code="OrderItemSlimPdf"
- else
- unique_code="OrderItemPdf"
- end
- elsif order_item_slim[0] == 'OrderSetPdf'
- if order_item_slim[1] == '1'
- unique_code="OrderSetItemPdf"
- else
- unique_code="OrderItemPdf"
+ if !assigned_items.nil?
+ assigned_items.each do |assign_item|
+ # order queue stations
+ oqs = assign_item.order_queue_station
+
+ order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf
+
+ unique_code="OrderItemPdf"
+ if !order_slim_pdf.empty?
+ order_slim_pdf.each do |order_item_slim|
+ if order_item_slim[0] == 'OrderSlimPdf'
+ if order_item_slim[1] == '1'
+ unique_code="OrderItemSlimPdf"
+ else
+ unique_code="OrderItemPdf"
+ end
+ elsif order_item_slim[0] == 'OrderSetPdf'
+ if order_item_slim[1] == '1'
+ unique_code="OrderSetItemPdf"
+ else
+ unique_code="OrderItemPdf"
+ end
+ end
end
end
+
+ print_settings=PrintSetting.find_by_unique_code(unique_code)
+ order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
+ order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Cancelled)", before_updated_qty )
end
end
-
- print_settings=PrintSetting.find_by_unique_code(unique_code)
- order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
- order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Cancelled)", before_updated_qty )
end
return return_json_status_with_code(200, "updated successfully!")
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/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb
index 32f0e63d..e3536205 100644
--- a/app/controllers/origami/order_reservation_controller.rb
+++ b/app/controllers/origami/order_reservation_controller.rb
@@ -1,41 +1,43 @@
class Origami::OrderReservationController < BaseOrigamiController
def index
+ puts Time.now.utc
@order = OrderReservation.latest_order #.active
@count_on_order = OrderReservation.get_count_on_order
+ @count_on_completed = OrderReservation.get_count_on_completed
end
def update
@id = params[:order_id]
@status = params[:status]
- expected_waiting_time = params[:expected_time]
+ min_type = params[:min_type]
+ if min_type != ""
+ expected_waiting_time = params[:expected_time]
+ else
+ expected_waiting_time = min_type + " " +params[:expected_time]
+ end
+ remark = params[:remark]
+ access_code = params[:access_code]
@order_reservation = OrderReservation.find(@id)
- status = true
-
- if status
- if @status == "processed"
- result = OrderReservation.create_doemal_order(@order_reservation,current_user)
- elsif @status == "delivery"
- OrderReservation.update_order_reservation(@id, nil, "ready_to_delivery")
- response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"ready_to_delivery")
- result = {:status=> true, :message => "ready for delivery" }
- elsif @status == "completed"
- result = OrderReservation.update_doemal_payment(@order_reservation,current_user)
- else
- if @status == "cancel"
- OrderReservation.update_order_reservation(@id, nil, "cancelled")
- result = {:status=> true, :message => "rejected" }
- else
- OrderReservation.update_order_reservation(@id, nil, "accepted", expected_waiting_time)
- result = {:status=> true, :message => "accepted" }
- end
- end
- render :json => result.to_json
+ if @status == "processed"
+ result = OrderReservation.create_doemal_order(@order_reservation,current_user)
+ elsif @status == "delivery"
+ OrderReservation.update_order_reservation(@id, nil, "ready_to_delivery")
+ response = OrderReservation.send_status_to_ordering(@order_reservation.callback_url,@order_reservation.transaction_ref,"ready_to_delivery")
+ result = {:status=> true, :message => "ready for delivery" }
+ elsif @status == "completed"
+ result = OrderReservation.update_doemal_payment(@order_reservation,current_user)
else
- result = {:status=> false, :message => "Order not accepted !" }
- render :json => result.to_json
- end
+ 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)
+ result = {:status=> true, :message => "accepted" }
+ end
+ end
+ render :json => result.to_json
end
def get_order
@@ -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/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb
index 0b3b989d..f90858e3 100755
--- a/app/controllers/origami/sale_edit_controller.rb
+++ b/app/controllers/origami/sale_edit_controller.rb
@@ -50,10 +50,13 @@ class Origami::SaleEditController < BaseOrigamiController
end
end
end
- action_by = current_user.id
- approved_by = Employee.find_by_emp_id(access_code)
+ # FOr Sale Audit
+ action_by = current_user.name
+ if access_code.present?
+ action_by = Employee.find_by_emp_id(access_code).name
+ end
remark = "Void Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}"
- sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMVOID" )
+ sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMVOID" )
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount)
ProductCommission.create_product_commission(@newsaleitem, saleitemObj)
@@ -84,10 +87,12 @@ class Origami::SaleEditController < BaseOrigamiController
order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id
order = Order.find(order_id)
- action_by = current_user.id
- approved_by = Employee.find_by_emp_id(access_code)
+ action_by = current_user.name
+ if access_code.present?
+ action_by = Employee.find_by_emp_id(access_code).name
+ end
remark = "FOC Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}Receipt No #{saleObj.receipt_no}"
- sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"SALEITEMFOC" )
+ sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"SALEITEMFOC" )
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order.source)
ProductCommission.create_product_commission(@newsaleitem, saleitemObj)
@@ -126,10 +131,12 @@ class Origami::SaleEditController < BaseOrigamiController
saleitemObj.unit_price = update_price
saleitemObj.taxable_price = update_qty.to_f * update_price.to_f
- action_by = current_user.id
- approved_by = Employee.find_by_emp_id(access_code)
+ action_by = current_user.name
+ if access_code.present?
+ action_by = Employee.find_by_emp_id(access_code).name
+ end
remark = "Update Qty #{update_qty} Price [#{saleitemObj.price}]| Receipt No #{sale.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}"
- sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,sale.cashier_id, approved_by.name,remark,"SALEITEMEDIT" )
+ sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,sale.cashier_id, action_by,remark,"SALEITEMEDIT" )
# saleitemObj.remark = 'edit'
unless saleitemObj.product_name.include? 'updated'
@@ -177,10 +184,12 @@ class Origami::SaleEditController < BaseOrigamiController
order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id
order = Order.find(order_id)
- action_by = current_user.id
- approved_by = Employee.find_by_emp_id(access_code)
+ action_by = current_user.name
+ if access_code.present?
+ action_by = Employee.find_by_emp_id(access_code).name
+ end
remark = "Cancle Void Sale Item ID #{saleitemObj.sale_item_id} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}|Receipt No #{saleObj.receipt_no}"
- sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, approved_by.name,remark,"ITEMCANCELVOID" )
+ sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,saleObj.cashier_id, action_by,remark,"ITEMCANCELVOID" )
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order.source)
ProductCommission.remove_product_commission(saleitemObj)
diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb
index d601b0c0..f8311cd3 100755
--- a/app/controllers/origami/void_controller.rb
+++ b/app/controllers/origami/void_controller.rb
@@ -72,9 +72,12 @@ class Origami::VoidController < BaseOrigamiController
# FOr Sale Audit
action_by = current_user.name
- approved_by = Employee.find_by_emp_id(access_code)
+ if access_code.present?
+ action_by = Employee.find_by_emp_id(access_code).name
+ end
+
# 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" )
+ sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, action_by,remark,"SALEVOID" )
# For Print
diff --git a/app/controllers/reports/order_reservation_controller.rb b/app/controllers/reports/order_reservation_controller.rb
index fb9517e4..bb351982 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",''], ["Direct Delivery","direct_delivery"],["Pick-Up","pick_up"],["food2u","food2u"], ["ygndoor2door","ygndoor2door"]]
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]
+ @order_reservation_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/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 f4f610fc..64df8ee9 100644
--- a/app/models/order_reservation.rb
+++ b/app/models/order_reservation.rb
@@ -30,7 +30,7 @@ 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.taxes = order_reserve[:payment_info][:taxes].to_json
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]
@@ -40,7 +40,7 @@ class OrderReservation < ApplicationRecord
end
if order_reserve[:reservation_info]
order_reservation.total_customer = order_reserve[:reservation_info][:total_user]
- order_reservation.reservation_remark = order_reserve[:reservation_info][:reservation_note]
+ order_reservation.order_remark = order_reserve[:reservation_info][:reservation_note]
end
order_reservation.save!
if order_reserve[:order_info][:items]
@@ -102,7 +102,7 @@ class OrderReservation < ApplicationRecord
#order reservation status updated
update_order_reservation(order.id, @sale.sale_id, SEND_TO_KITCHEN)
- result = {:status=> @status, :data => @sale, :message => "created" }
+ result = {:status=> @status, :data => @sale, :message => "send to kitchen" }
return result
end
end
@@ -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,20 +187,77 @@ 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
end
if !expected_waiting_time.nil?
- order_reservation.expected_waiting_time = DateTime.parse(expected_waiting_time).utc
+ order_reservation.expected_waiting_time = expected_waiting_time
+ end
+ if !status.nil?
+ order_reservation.status = status
+ end
+ if !remark.nil?
+ order_reservation.order_remark = remark
+ end
+ if status == "delivered"
+ order_reservation.payment_status = "paid"
end
- order_reservation.status = status
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
- 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
@@ -218,8 +277,7 @@ class OrderReservation < ApplicationRecord
end
def self.check_order_send_to_kitchen
- today = Time.now.utc
- order_reservation = OrderReservation.where("status='accepted' and requested_time > '#{today}' and expected_waiting_time < '#{today}'")
+ order_reservation = OrderReservation.where("status='accepted' and requested_time <= '#{Time.now.utc}'")
if order_reservation.length > 0
if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation
@@ -228,8 +286,7 @@ class OrderReservation < ApplicationRecord
end
def self.check_order_ready_to_delivery
- today = Time.now.utc
- order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time > '#{today}' and expected_waiting_time < '#{today}'")
+ order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time <= '#{Time.now.utc}'")
if order_reservation.length > 0
if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation
@@ -237,6 +294,36 @@ 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.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)
+ .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/models/sale.rb b/app/models/sale.rb
index e8a203fa..60cf0d7a 100644
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -430,28 +430,55 @@ class Sale < ApplicationRecord
# customer.tax_profiles.each do |cus_tax|
# if cus_tax.to_i == tax.id
if tax.group_type.to_s == order_source.to_s
- sale_tax = SaleTax.new(:sale => sale)
- sale_tax.tax_name = tax.name
- sale_tax.tax_rate = tax.rate
+ if customer.customer_type.downcase == 'takeaway'
+ if tax.name.downcase == 'commercial tax'
+ sale_tax = SaleTax.new(:sale => sale)
+ sale_tax.tax_name = tax.name
+ sale_tax.tax_rate = tax.rate
- # substract , to give after discount
- total_tax = total_taxable - total_discount
- #include or execulive
- if tax.inclusive
- rate = tax.rate
- divided_value = (100 + rate)/rate
- sale_tax.tax_payable_amount = total_tax / divided_value
- else
- sale_tax.tax_payable_amount = total_tax * tax.rate / 100
- total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount
- end
- #new taxable amount is standard rule for step by step
- if shop.calc_tax_order
- total_taxable = total_taxable + sale_tax.tax_payable_amount
- end
+ # substract , to give after discount
+ total_tax = total_taxable - total_discount
+ #include or execulive
+ if tax.inclusive
+ rate = tax.rate
+ divided_value = (100 + rate)/rate
+ sale_tax.tax_payable_amount = total_tax / divided_value
+ else
+ sale_tax.tax_payable_amount = total_tax * tax.rate / 100
+ total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount
+ end
+ #new taxable amount is standard rule for step by step
+ if shop.calc_tax_order
+ total_taxable = total_taxable + sale_tax.tax_payable_amount
+ end
- sale_tax.inclusive = tax.inclusive
- sale_tax.save
+ sale_tax.inclusive = tax.inclusive
+ sale_tax.save
+ end
+ else
+ sale_tax = SaleTax.new(:sale => sale)
+ sale_tax.tax_name = tax.name
+ sale_tax.tax_rate = tax.rate
+
+ # substract , to give after discount
+ total_tax = total_taxable - total_discount
+ #include or execulive
+ if tax.inclusive
+ rate = tax.rate
+ divided_value = (100 + rate)/rate
+ sale_tax.tax_payable_amount = total_tax / divided_value
+ else
+ sale_tax.tax_payable_amount = total_tax * tax.rate / 100
+ total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount
+ end
+ #new taxable amount is standard rule for step by step
+ if shop.calc_tax_order
+ total_taxable = total_taxable + sale_tax.tax_payable_amount
+ end
+
+ sale_tax.inclusive = tax.inclusive
+ sale_tax.save
+ end
end
# end
# end
@@ -484,6 +511,33 @@ class Sale < ApplicationRecord
# customer.tax_profiles.each do |cus_tax|
# if cus_tax.to_i == tax.id
if tax.group_type.to_s == order_source.to_s
+ if customer.customer_type.downcase == 'takeaway'
+ if tax.name.downcase == 'commercial tax'
+ sale_tax = SaleTax.new(:sale => self)
+ sale_tax.tax_name = tax.name
+ sale_tax.tax_rate = tax.rate
+
+ # substract , to give after discount
+ total_tax = total_taxable - self.total_discount
+ #include or execulive
+ if tax.inclusive
+ rate = tax.rate
+ divided_value = (100 + rate)/rate
+ sale_tax.tax_payable_amount = total_tax / divided_value
+ else
+ sale_tax.tax_payable_amount = total_tax * tax.rate / 100
+ total_tax_amount = total_tax_amount + sale_tax.tax_payable_amount
+ end
+
+ #new taxable amount is standard rule for step by step
+ if shop.calc_tax_order
+ total_taxable = total_taxable + sale_tax.tax_payable_amount
+ end
+
+ sale_tax.inclusive = tax.inclusive
+ sale_tax.save
+ end
+ else
sale_tax = SaleTax.new(:sale => self)
sale_tax.tax_name = tax.name
sale_tax.tax_rate = tax.rate
@@ -507,6 +561,7 @@ class Sale < ApplicationRecord
sale_tax.inclusive = tax.inclusive
sale_tax.save
+ end
end
# end
# end
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/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb
index 43ab6db0..76b18ca1 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')%>
-