'
+'
'
- +''+items[field]["table_type"]+'-'+ items[field]["zone"] +''
- +''+ items[field]["zone"] +''
+ +''+table_type+''+ zone+''
+ +''+ zone +''
+''+items[field]["order_id"]+''
+'
'
+'
'
diff --git a/app/assets/javascripts/channels/order_reservation.js b/app/assets/javascripts/channels/order_reservation.js
index 0a3ef37c..468e4c31 100644
--- a/app/assets/javascripts/channels/order_reservation.js
+++ b/app/assets/javascripts/channels/order_reservation.js
@@ -1,35 +1,35 @@
-App.checkin = App.cable.subscriptions.create('OrderReservationChannel', {
-// App.messages = App.cable.subscriptions.create('MessagesChannel', {
-
+App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel', {
connected: function() {},
disconnected: function() {},
- received: function(data) {
+ received: function(data) {
+ var shop_code = data.shop_code;
var order = data.data;
if(order.length > 0){
- $('.order_reserve_cable tbody').html("");
+ $('.custom-table.'+shop_code+'_order_reserve_cable tbody').html("");
+ $("."+shop_code+" > .nav-item.red > a > p.num").text(order.length);
$.each(order, function(key,value){
+ var active_class = "";
+ if(key==0){
+ active_class = "tr-active";
+ showNewOrder(order[key],shop_code);
+ }
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 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 delivery_type = "";
- if(deliveries.delivery_type == "service"){
+ if(value.provider == "food2u" || value.provider == "yangondoor2door"){
delivery_type = "DELIVERY";
- }else if(deliveries.delivery_type == "pick_up"){
+ }else if(value.provider == "pick_up"){
delivery_type = "PICK-UP";
}else{
delivery_type = "DIRECT DELIVERY";
}
- row = '
'
+ row = '
'
+'| '+rowCount
+' | '
+''+created_at
@@ -41,13 +41,13 @@ App.checkin = App.cable.subscriptions.create('OrderReservationChannel', {
+' | '
+''+ delivery_type +''
+' | '
- +'
'
+ +' ';
- $('.order_reserve_cable tbody').append(row);
+ $('.custom-table.'+shop_code+'_order_reserve_cable tbody').append(row);
});
}
-
+ customTableClick();
}
});
diff --git a/app/assets/javascripts/custom.js b/app/assets/javascripts/custom.js
index 043fbb03..ae8b727c 100644
--- a/app/assets/javascripts/custom.js
+++ b/app/assets/javascripts/custom.js
@@ -13,6 +13,16 @@ $(document).ready(function() {
touchScrollStep : 50
});
+ $('#table-slimscroll').slimScroll({
+ height: height,
+ size: '5px',
+ color: 'rgba(0,0,0,0.5)',
+ alwaysVisible: false,
+ borderRadius: '0',
+ railBorderRadius: '0',
+ touchScrollStep : 50
+ });
+
$('#order-detail-slimscroll').slimScroll({
height: height-$('#order-detail-slimscroll').attr('data-height'),
size: '5px',
@@ -44,7 +54,7 @@ $(document).ready(function() {
});
$('#modal-set-slimscroll').slimScroll({
- height: height-$('#modal-slimscroll').attr('data-height'),
+ height: height-$('#modal-set-slimscroll').attr('data-height'),
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
@@ -52,6 +62,17 @@ $(document).ready(function() {
railBorderRadius: '0',
touchScrollStep : 45
});
+
+ $('#customer-info-slimscroll').slimScroll({
+ height: height-$('#customer-info-slimscroll').attr('data-height'),
+ size: '5px',
+ color: 'rgba(0,0,0,0.5)',
+ alwaysVisible: false,
+ borderRadius: '0',
+ railBorderRadius: '0',
+ touchScrollStep : 45
+ });
+
// $('.delete').click(function(){
// var method = $(this).attr('data-method');
diff --git a/app/assets/javascripts/order_reservation.js b/app/assets/javascripts/order_reservation.js
index b99dad8d..081aef7e 100644
--- a/app/assets/javascripts/order_reservation.js
+++ b/app/assets/javascripts/order_reservation.js
@@ -1,12 +1,27 @@
$(function() {
-
+ $("#discount").hide();
+ $(".expected_time").hide();
+ $('#accepted').hide();
+ $('#cancel').hide();
+ $(".tbl_customer").hide();
+ $(".order_close_cashier").hide();
+ $(function() {
+ $('.first-1').click();
+ });
+
+ customTableClick();
+
$(".nav-item").on("click", function(){
type = $(this).attr("data-type");
refreshDetailData();
+ $('#accepted').hide();
+ $('#cancel').hide();
+ $(".tbl_customer").hide();
+ $(".order_close_cashier").hide();
if (type == "pending") {
$(".first-1").click();
- $('#accepted').text("Accepted");
+ $('#accepted').text("ACCEPT");
$('#accepted').attr("data-value","accepted");
}else if(type == "processing"){
$(".second-1").click();
@@ -17,261 +32,486 @@ $(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();
+ $(".order_close_cashier").show();
+ // $('#accepted').hide();
+ // $('#cancel').hide();
+ }
// console.log(type);
});
- $(function(){
- $('.first-1').click();
+ $("#accepted").on("click", function(){
+ if($(this).text().trim() == "ACCEPT"){
+ $("#status").text($(this).attr("data-value"));
+ var requested_time = $("#requested_time").text();
+ $("#requested_order_time").text(requested_time);
+ $("#waiting_timeModal").modal({show : true, backdrop: false, keyboard : false});
+ }else{
+ 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);
+ }
});
- $(".custom-tr").on("click", function(){
- $(".custom-tr").removeClass("tr-active");
- $(this).addClass("tr-active");
+ $("#cancel").on("click", function(){
+ 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});
+ }
+ });
+
+ $(".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());
+ // if(type == 'after'){
+ // requested_time.setMinutes(requested_time.getMinutes() + minutes);
+ // }else{
+ // requested_time.setMinutes(requested_time.getMinutes() - minutes);
+ // }
+ // console.log(requested_time);
+ callback_url(callback,ref_no,order_id,status,type,minutes);
+ });
+
+ $('#order_close_cashier').on('click',function(e){
+ e.preventDefault(); // Prevent the href from redirecting directly
+ var linkURL = '/origami/shift/ordering/close';
+ warnBeforeRedirect(linkURL);
+ });
+
+ $(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;
+ }
+ });
+
+ // $('button[data-dismiss="modal"]').on('click', function(){ $(this).parent().parent().parent().parent().modal('hide'); });
+
+ // $(".new_order_close").on("click",function(){
+ // var code = $(this).attr("data-value");
+ // $("#"+code+"_doemal_new_order").modal("hide");
+ // });
+
+ // $("[data-dismiss='modal']").on('click', function() {
+ // $('body').addClass('modal-open-fix');
+ // if($('body').css("padding-right") == '15px') {
+ // $('body').addClass('modal-open-fix-pad');
+ // }
+ // setTimeout(function() {
+ // if($('body').hasClass('modal-open-fix-pad')) {
+ // $('body').css('padding-right', '15px');
+ // }
+ // $('body').addClass('modal-open').removeClass('modal-open-fix, modal-open-fix-pad');
+ // }, 1000);
+ // });
+});
+
+function warnBeforeRedirect(linkURL) {
+ swal({
+ title: "Alert!",
+ text: "Are you sure you want to close cashier?",
+ type: "warning",
+ showCancelButton: true
+ }, function() {
+ // Redirect the user
+ window.location.href = linkURL;
+ });
+}
+
+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");
+ $(this).addClass("tr-active");
var order_id = $(this).attr("data-id");
var sr_no = $(this).attr("data-sr-no");
var url = "order_reservation/get_order/"+order_id;
show_order_detail(url,sr_no);
});
+}
- function refreshDetailData(){
- $('#requested_date_time').text("");
- $("#sr_number").text("");
- $("#delivery_info").text("");
- $("#contact_info").text("");
- $('.summary-items').html("");
- $('#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");
- }
+function refreshDetailData(){
+ $('#requested_date_time').text("");
+ $("#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");
+ $('#total_charges').text("0.00");
+ $('#discount_amount').text("0.00");
+ $('#total_tax').text("0.00");
+ $('#grand_total').text("0.00");
+ $(".tbl_customer").hide();
+ $(".order_close_cashier").hide();
+}
- //show order list
- function show_order_detail(url,sr_no){
- $('.summary-items').html("");
- //Start Ajax
- $.ajax({
- type: "GET",
- url: url,
- data: {},
- dataType: "json",
- success: function(data) {
- // console.log(data);
- var delivery = data["delivery"];
- var items = data["order_items"];
- var item_list = $('.summary-items');
+//show order list
+function show_order_detail(url,sr_no){
+ $('.summary-items').html("");
+ //Start Ajax
+ $.ajax({
+ type: "GET",
+ url: url,
+ data: {},
+ 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 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('');
- }
+ 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 = 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;
+ $('.expected_time').show();
+ $('#expected_time').text(data.expected_waiting_time? data.expected_waiting_time : '');
+ }else{
+ $('.expected_time').hide();
+ $('#expected_time').text('');
+ }
- item_list.empty();
+ item_list.empty();
- if(items!=undefined && items!=""){
- if(items.length > 0){
- for(var i in items) {
- var item_price = 0;
- if(items[i].price > 0){
- item_price = items[i].price;
- }else{
- item_price = items[i].unit_price;
- }
- var total = items[i].qty * item_price;
- row = '
'
- +''+items[i].item_name
- +' '+items[i].qty+ ' X'+items[i].unit_price+''
- +' | '
- +''+ total +' | '
- +'
';
- $('.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((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;
- 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);
- $('#delivery_to').text(delivery.provider);
-
- $('#ref_no').text(data.transaction_ref);
- $('#callback_url').text(data.callback_url);
- $('#order_id').text(data.order_reservation_id);
-
- if(delivery.delivery_type == "service"){
- $("#delivery_info").text("(DELIVERY)");
- }else if(delivery.delivery_type == "pick_up"){
- $("#delivery_info").text("(PICK-UP)");
+ if(items!=undefined && items!=""){
+ if(items.length > 0){
+ for(var i in items) {
+ var item_price = 0;
+ if(items[i].price > 0){
+ item_price = items[i].price;
}else{
- $("#delivery_info").text("(DIRECT DELIVERY)");
+ item_price = items[i].unit_price;
}
-
- if(data.order_remark!=null && data.order_remark!=""){
- $("#order_remark").text(data.order_remark);
- }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"]);
- }else{
- $("#contact_info").text(data["order_reservation_id"]);
- }
-
+ var total = items[i].qty * item_price;
+ row = '
'
+ +''+items[i].item_name
+ +' '+items[i].qty+ ' X'+items[i].unit_price+''
+ +' | '
+ +''+ total +' | '
+ +'
';
+ $('.summary-items').append(row);
}
+
+ if(data.discount_amount > 0){
+ $("#discount").show();
+ }
+
+ //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');
+ $('#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;
+ 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);
+
+ $('#ref_no').text(data.transaction_ref);
+ $('#callback_url').text(data.callback_url);
+ $('#order_id').text(data.order_reservation_id);
+
+ $("#trans_ref").text(data.transaction_ref);
+ if(delivery.provider == "food2u" || delivery.provider == "yangondoor2door"){
+ $("#delivery_info").text("(DELIVERY)");
+ $("#delivery_to").text("DELIVERY");
+ }else if(delivery.provider == "pick_up"){
+ $("#delivery_info").text("(PICK-UP)");
+ $("#delivery_to").text("PICK-UP");
+ }else{
+ $("#delivery_info").text("(DIRECT DELIVERY)");
+ $("#delivery_to").text("DIRECT DELIVERY");
+ }
+
+ if(data.order_remark!=null && data.order_remark!=""){
+ $("#order_remark").text(data.order_remark);
+ }else if(data.reservation_remark!=null && data.reservation_remark!=""){
+ $("#order_remark").text(data.reservation_remark);
+ }
+
+ if(data.remark!=null && data.remark!=""){
+ var doemal_remark = data.remark.split("||");
+ var remark = doemal_remark[0] +", "+ doemal_remark[1];
+ $("#remark").text(remark);
+ }else{
+ $("#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"]);
+ }
+
}
}
- });
- //end Ajax
+ }
+ });
+ //end Ajax
+}
+
+
+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;
+ }
+ 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;
}
- $("#accepted").on("click", function(){
- 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(){
- 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);
- });
-
- 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, waiting_time: waiting_time},
- dataType: "json",
- success: function(data) {
- if(data.status){
- $.ajax({
- type: "POST",
- url: url,
- data: {'order_id': order_id, 'status': status, 'expected_time' : expected_time},
- dataType: "json",
- success: function(data) {
- if (data.status) {
- swal({
- title: 'Information',
- text: "Order has been "+data.message,
- type: 'success',
- html: true,
- closeOnConfirm: false,
- closeOnCancel: false,
- allowOutsideClick: false
- }, function () {
- window.location.href = '/origami/order_reservation';
- });
- }
+ $.ajax({
+ type: "POST",
+ url: post_url,
+ 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, min_type: min_type, expected_time: waiting_time, remark: reason, access_code: access_code},
+ dataType: "json",
+ success: function(data) {
+ if (data.status) {
+ swal({
+ title: 'Information',
+ text: "Order has been "+data.message,
+ type: 'success',
+ html: true,
+ closeOnConfirm: false,
+ closeOnCancel: false,
+ allowOutsideClick: false
+ }, function () {
+ window.location.href = '/origami/order_reservation';
+ });
+ }else{
+ swal({
+ title: 'Oops',
+ text: data.message,
+ type: 'error',
+ html: true,
+ closeOnConfirm: false,
+ closeOnCancel: false,
+ allowOutsideClick: false
+ }, function () {
+ window.location.href = '/origami/order_reservation';
+ });
}
- });
- }else{
- swal({
- title: 'Oops',
- text: data.message,
- type: 'error',
- html: true,
- closeOnConfirm: false,
- closeOnCancel: false,
- allowOutsideClick: false
- }, function () {
- window.location.href = '/origami/order_reservation';
- });
- }
+ }
+ });
+ }else{
+ swal({
+ title: 'Oops',
+ text: data.message,
+ type: 'error',
+ html: true,
+ closeOnConfirm: false,
+ closeOnCancel: false,
+ allowOutsideClick: false
+ }, function () {
+ window.location.href = '/origami/order_reservation';
+ });
+ }
+ }
+ });
+}
+
+function timeFormat(date){
+ var isPM = date.getHours() >= 12;
+ var isMidday = date.getHours() == 12;
+ var time = [(date.getHours()>10? date.getHours() : '0'+date.getHours()) - (isPM && !isMidday ? 12 : 0),
+ (date.getMinutes()>10? date.getMinutes() : '0'+date.getMinutes()) || '00'].join(':') +
+ (isPM ? ' PM' : ' AM');
+ return time;
+}
+
+function showNewOrder(order_reservation,shop_code){
+ 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;
+ //audio play
+ var audio = new Audio('/beep.mp3'); // define your audio
+ // setTimeout(function(){
+ // audio.loop = true;
+ audio.play();
+ // },10000);
+
+ // $("#new_order").text(order_reservation.order_reservation_id);
+ // $("#new_order_date").text(requested_date);
+ // if($("#"+shop_code+"_doemal_new_order").hasClass("hidden")){
+ // $("#"+shop_code+"_doemal_new_order").removeClass("hidden");
+ // }
+ // $("#"+shop_code+"_doemal_new_order").on('show.bs.modal', function(e){
+ // $("#notify_new_order").addClass("hidden");
+ // $("#notify_order_send_to_kitchen").addClass("hidden");
+ // $("#notify_order_ready_to_delivery").addClass("hidden");
+ // }).on('shown.bs.modal', function(e){
+ // $("#"+shop_code+"_doemal_new_order").focus();
+ // }).on('hide.bs.modal', function (e) {
+ // $("#"+shop_code+"_doemal_new_order").addClass("hidden");
+ // }).modal({show: true, keyboard: false, backdrop: false});
+ swal({
+ title: 'Information',
+ target: document.getElementById(shop_code+"_notify_new_order"),
+ text: "You have new order "+
+ "
"+order_reservation.order_reservation_id+" requested for "+requested_date+"?",
+ type: 'success',
+ html: true,
+ closeOnConfirm: false,
+ closeOnCancel: false,
+ allowOutsideClick: false
+ }, function (isConfirm) {
+ if(isConfirm){
+ audio.pause();
+ swal.close();
}
});
}
+}
- $("#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!");
- }
-
- });
-});
+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/assets/javascripts/origami.js b/app/assets/javascripts/origami.js
index ca021430..27b85958 100755
--- a/app/assets/javascripts/origami.js
+++ b/app/assets/javascripts/origami.js
@@ -192,6 +192,41 @@ $(document).on('turbolinks:load', function() {
return false;
});
+
+ $(document).on('click', '.access_modal', function(event){
+ type = $(this).data("type");
+ $(".ok").attr("data-action",type)
+ $('#AccessCodeModal').modal('show');
+ });
+
+ $(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;
+ }
+ });
});
/* start check first bill or not funs: */
@@ -361,6 +396,7 @@ function resCardSaleTrans(card_sale_trans_id,cmd_type,payment_type, bnk_bill_amo
function resCBPay(resMsg,card_sale_trans_id,cmd_type,payment_type,bnk_bill_amount,sale_id,receipt_no,com_port,cashier_type) {
$("#loading_wrapper").hide();
var jobj = $.parseJSON(resMsg);
+ $("#reference_no").val(jobj.REFNUM);
if(jobj.STATUS == "Approved"){
$.ajax({type: "POST",
url: "/origami/payment/"+payment_type,
@@ -423,3 +459,8 @@ function showHideNavbar(webview,page){
}
}
}
+
+function createAccessCode(code) {
+ localStorage.setItem("access_code",code);
+}
+
diff --git a/app/assets/stylesheets/OQS.scss b/app/assets/stylesheets/OQS.scss
index 88b00402..6a97bdcb 100755
--- a/app/assets/stylesheets/OQS.scss
+++ b/app/assets/stylesheets/OQS.scss
@@ -87,7 +87,7 @@ select.form-control {
}
.green{
- background-color: #009900;
+ background-color: #009900 !important;
}
.left{
margin-left:1px;
@@ -104,4 +104,20 @@ select.form-control {
i.logout_icon{
position: relative;
top: 5px;
+}
+
+.table-block{
+ padding: 24px 8px 0 0;
+}
+
+.label-align{
+ padding-left: 10px;
+}
+
+.table-float{
+ float: left;
+}
+
+.table-width{
+ width: 100%;
}
\ No newline at end of file
diff --git a/app/assets/stylesheets/addorder.scss b/app/assets/stylesheets/addorder.scss
index d8adba16..ba1089d2 100755
--- a/app/assets/stylesheets/addorder.scss
+++ b/app/assets/stylesheets/addorder.scss
@@ -247,4 +247,27 @@ i.logout_icon{
}
.list-menu > a:hover{
text-decoration: none;
+}
+.cashier_number{
+ width: 33%;
+ height:58px;
+ line-height:58px;
+ text-align:center;
+ background:#54A5AF;
+ // float:left;
+ // margin:2px;
+ font-size:20px;
+ color:white;
+ // cursor:pointer;
+}
+.border-top{
+ border-top:1px solid #fff;
+}
+
+.border-right{
+ border-right:1px solid #fff;
+}
+
+.border-left{
+ border-left:1px solid #fff;
}
\ No newline at end of file
diff --git a/app/assets/stylesheets/origami.scss b/app/assets/stylesheets/origami.scss
index 1de250a3..855ee984 100755
--- a/app/assets/stylesheets/origami.scss
+++ b/app/assets/stylesheets/origami.scss
@@ -10,6 +10,7 @@
@import "BSBMaterial/style";
@import "BSBMaterial/themes/all-themes";
@import "reset";
+@import "fileinput.min";
/* Reset */
@@ -93,6 +94,19 @@ select.form-control {
// cursor:pointer;
}
+.access_number{
+ width: 33%;
+ height:58px;
+ line-height:58px;
+ text-align:center;
+ background:#54A5AF;
+ // float:left;
+ // margin:2px;
+ font-size:20px;
+ color:white;
+ // cursor:pointer;
+}
+
.del_cashier_number{
opacity:0.6,
}
@@ -439,6 +453,10 @@ iframe {
width: 150%;
height: 100%;
}
+
+#receipt_pdf {
+ height: 400px;
+}
/* End iframe */
/* section class for webview */
diff --git a/app/channels/check_new_order_channel.rb b/app/channels/check_new_order_channel.rb
new file mode 100644
index 00000000..8a7dfcfb
--- /dev/null
+++ b/app/channels/check_new_order_channel.rb
@@ -0,0 +1,10 @@
+class CheckNewOrderChannel < ApplicationCable::Channel
+ def subscribed
+ stream_from "check_new_order_channel"
+ end
+
+ def unsubscribed
+ stop_all_streams
+ # Any cleanup needed when channel is unsubscribed
+ end
+end
diff --git a/app/channels/check_order_ready_to_delivery_channel.rb b/app/channels/check_order_ready_to_delivery_channel.rb
new file mode 100644
index 00000000..6f5e1a06
--- /dev/null
+++ b/app/channels/check_order_ready_to_delivery_channel.rb
@@ -0,0 +1,10 @@
+class CheckOrderReadyToDeliveryChannel < ApplicationCable::Channel
+ def subscribed
+ stream_from "check_order_ready_to_delivery_channel"
+ end
+
+ def unsubscribed
+ stop_all_streams
+ # Any cleanup needed when channel is unsubscribed
+ end
+end
diff --git a/app/channels/check_order_send_to_kitchen_channel.rb b/app/channels/check_order_send_to_kitchen_channel.rb
new file mode 100644
index 00000000..c0821483
--- /dev/null
+++ b/app/channels/check_order_send_to_kitchen_channel.rb
@@ -0,0 +1,10 @@
+class CheckOrderSendToKitchenChannel < ApplicationCable::Channel
+ def subscribed
+ stream_from "check_order_send_to_kitchen_channel"
+ end
+
+ def unsubscribed
+ stop_all_streams
+ # Any cleanup needed when channel is unsubscribed
+ end
+end
diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb
index 57337b5e..1bb257de 100644
--- a/app/controllers/api/order_reserve/order_reservation_controller.rb
+++ b/app/controllers/api/order_reserve/order_reservation_controller.rb
@@ -6,70 +6,122 @@ 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 = OrderReservation.addCustomer(params)
+ customer_id = customer.id
+ end
+ render :json => { :status => true, :data => { :customer_id => customer_id} }
+ end
end
def create
status = false
if !params[:cus_info]
- render :json => { :status => false, :message => "cus_info is required!" }
+ result = { :status => false, :message => "cus_info is required!" }
elsif !params[:requested_time]
- render :json => { :status => false, :message => "requested_time is required!" }
+ result = { :status => false, :message => "requested_time is required!" }
elsif !params[:callback_url]
- render :json => { :status => false, :message => "callback_url is required!" }
+ result = { :status => false, :message => "callback_url is required!" }
elsif !params[:reference]
- render :json => { :status => false, :message => "reference is required!" }
+ result = { :status => false, :message => "reference is required!" }
elsif !params[:order_type]
- render :json => { :status => false, :message => "order_type is required!" }
+ result = { :status => false, :message => "order_type is required!" }
elsif params[:order_type] == ORDER || params[:order_type] == ORDER_RESERVATION
if !params[:order_info]
- render :json => { :status => false, :message => "order_info is required!" }
+ result = { :status => false, :message => "order_info is required!" }
else
status = true
end
elsif params[:order_type] == RESERVATION || params[:order_type] == ORDER_RESERVATION
if !params[:reservation_info]
- render :json => { :status => false, :message => "reservation_info is required!" }
+ result = { :status => false, :message => "reservation_info is required!" }
else
status = true
end
elsif !params[:payment_info]
- render :json => { :status => false, :message => "payment_info is required!" }
+ result = { :status => false, :message => "payment_info is required!" }
elsif !params[:delivery_info]
- render :json => { :status => false, :message => "delivery_info is required!" }
+ result = { :status => false, :message => "delivery_info is required!" }
end
if status == true
order_reservation = params
order_reservation_id, flag = OrderReservation.addOrderReservationInfo(order_reservation)
- 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!" }
+ shop = Shop.find_by_id(1)
+ if !shop.shop_code.nil?
+ shop_code = shop.shop_code
+ else
+ shop_code = ''
+ end
+
+ result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is successfully created!" }
+ order_reservation = OrderReservation.get_pending_orders #find(order_reservation_id)
+ ActionCable.server.broadcast "order_reservation_channel",data: order_reservation,shop_code: shop_code
else
- render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" }
+ result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" }
end
end
+
+ puts "!!! send doemal ::"
+ puts result
+
+ Rails.logger.debug "send status to doemal"
+ Rails.logger.debug result
+ render :json => result
+ 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/api/restaurant/menu_controller.rb b/app/controllers/api/restaurant/menu_controller.rb
index 96ba3cc0..011e4602 100755
--- a/app/controllers/api/restaurant/menu_controller.rb
+++ b/app/controllers/api/restaurant/menu_controller.rb
@@ -11,7 +11,10 @@ class Api::Restaurant::MenuController < Api::ApiController
# to hash
menu_array = []
all_menu.each do |m|
- menu_array.push(m.to_json(:include => {:menu_categories => { :include => { :menu_items => { :include => [:menu_item_sets, :menu_item_instances => {:include => :menu_instance_item_sets}]} } }}))
+ menu_array.push(m.to_json(:include => {:menu_categories =>
+ { :include => { :menu_items =>
+ { :include => [:menu_item_sets, :menu_item_instances =>
+ { :include => :menu_instance_item_sets}]} } }}))
end
#export Checksum file generate by md5
diff --git a/app/controllers/base_origami_controller.rb b/app/controllers/base_origami_controller.rb
index 66cc2880..61cbac84 100755
--- a/app/controllers/base_origami_controller.rb
+++ b/app/controllers/base_origami_controller.rb
@@ -5,7 +5,7 @@ class BaseOrigamiController < ActionController::Base
before_action :check_user
#before_action :check_installation
- protect_from_forgery with: :exception
+ protect_from_forgery with: :exception
helper_method :shop_detail, :current_token
@@ -15,14 +15,14 @@ class BaseOrigamiController < ActionController::Base
redirect_to origami_dashboard_path
end
- def check_user
+ def check_user
if check_mobile
if current_user.nil?
return render status: 401, json: {
message: "User using other device!"
}.to_json
end
- else
+ else
if current_user.nil?
redirect_to root_path
end
diff --git a/app/controllers/concerns/token_verification.rb b/app/controllers/concerns/token_verification.rb
index b49ef597..c1bce9b2 100755
--- a/app/controllers/concerns/token_verification.rb
+++ b/app/controllers/concerns/token_verification.rb
@@ -18,7 +18,7 @@ module TokenVerification
# Rails.logger.debug "token - " + token.to_s
if(options.length !=0 && options["from"] == "DOEMAL")
if(ENV["SERVER_MODE"] === "cloud")
- from = "local" #request.subdomain.downcase + "." + request.domain.downcase
+ from = request.subdomain.downcase + "." + request.domain.downcase #"local"
aes = MyAesCrypt.new
return aes.checkKeyForAuth(from, token)
end
diff --git a/app/controllers/crm/customers_controller.rb b/app/controllers/crm/customers_controller.rb
index 1d0ad8e4..97f75135 100644
--- a/app/controllers/crm/customers_controller.rb
+++ b/app/controllers/crm/customers_controller.rb
@@ -96,7 +96,7 @@ class Crm::CustomersController < BaseCrmController
# POST /crm/customers
# POST /crm/customers.json
- def create
+ def create
# Remove "" default first
params[:customer][:tax_profiles].delete_at(0)
@crm_customers = Customer.new(customer_params)
diff --git a/app/controllers/oqs/backhome_controller.rb b/app/controllers/oqs/backhome_controller.rb
index 4ac5f0a2..f809ef9f 100755
--- a/app/controllers/oqs/backhome_controller.rb
+++ b/app/controllers/oqs/backhome_controller.rb
@@ -89,6 +89,7 @@ class Oqs::HomeController < BaseOqsController
# Query for OQS with delivery status
def queue_items_query(status)
+ byebug
AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.id as station_id, oqs.station_name, oqs.is_active, oqpz.zone_id, df.name as zone, df.type as type, odt.order_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.options, cus.name as customer_name, odt.created_at")
.joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id
left join order_queue_process_by_zones as oqpz on oqpz.order_queue_station_id = oqs.id
diff --git a/app/controllers/oqs/edit_controller.rb b/app/controllers/oqs/edit_controller.rb
index 4bc99f59..e8f0edb5 100644
--- a/app/controllers/oqs/edit_controller.rb
+++ b/app/controllers/oqs/edit_controller.rb
@@ -27,49 +27,55 @@ class Oqs::EditController < BaseOqsController
remarks = params[:remarks]
order_item = OrderItem.find(order_items_id)
- before_updated_qty = order_item.qty
+ order = Order.find(order_item.order_id)
+ if qty_weight.to_i <= order_item.qty.to_i
+ before_updated_qty = order_item.qty
- order_item.item_order_by = current_user.name
- order_item.qty = qty_weight
- order_item.remark = remarks
- order_item.save
+ order_item.item_order_by = current_user.name
+ order_item.qty = qty_weight
+ order_item.remark = remarks
+ order_item.save
- if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
- # print
- assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code)
- assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'")
-
- if !assigned_items.nil?
- assigned_items.each do |assign_item|
- # order queue stations
- oqs = assign_item.order_queue_station
+ if ENV["SERVER_MODE"] != "cloud" && order.source == 'cashier' #no print in cloud server
+ # print
+ assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code)
+ assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'")
+
+ 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"
+ 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
- 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 )
+ 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
end
+ render :json => {:status=> true }
+ else
+ render :json => {:status=> false, :message => "Not allowed over quantity!" }
end
end
diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb
index 23d6341e..48e686b6 100755
--- a/app/controllers/oqs/home_controller.rb
+++ b/app/controllers/oqs/home_controller.rb
@@ -5,7 +5,8 @@ class Oqs::HomeController < BaseOqsController
# @queue_items_details = queue_items_query(false)
# Query for OQS with delivery status true
- @tables = DiningFacility.all.active.order('status desc')
+ # @tables = DiningFacility.all.active.order('status desc')
+ @tables = DiningFacility.where(:type => 'Table').order('status desc')
@rooms = Room.all.active.order('status desc')
@filter = params[:filter]
@@ -161,9 +162,9 @@ class Oqs::HomeController < BaseOqsController
oqs = "and assigned_order_items.order_queue_station_id = '#{oqs_id}' "
end
- if table_id.to_i>0
- table = "and df.id = '#{table_id}' "
-
+ if !table_id.empty?
+ tableId = table_id.to_a.map{|h| h}.join(",")
+ table = "and df.id IN (#{tableId})"
else
table = ''
end
diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb
index 100635cd..b7c9b1b6 100755
--- a/app/controllers/origami/addorders_controller.rb
+++ b/app/controllers/origami/addorders_controller.rb
@@ -18,11 +18,15 @@ class Origami::AddordersController < BaseOrigamiController
if check_mobile
@webview = true
end
-
- today = DateTime.now
- day = Date.today.wday
- @menus = Menu.all
- @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
+
+ # if params[:menu] == "true"
+ @menus = []
+ @menu = []
+ # 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)
@booking = @table.get_booking
@@ -59,7 +63,7 @@ class Origami::AddordersController < BaseOrigamiController
end
def get_item_instance
- @id = MenuItemInstance.find(params[:id])
+ @instance = MenuItemInstance.find(params[:id])
end
def get_menu()
@@ -115,8 +119,6 @@ class Origami::AddordersController < BaseOrigamiController
end
items_arr.push(items)
}
-puts items_arr.to_json
- puts "sssssssssssssssssssssss"
# begin
# if params[:order_source] == "quick_service"
# customer_id = "CUS-000000000002" # for no customer id from mobile
diff --git a/app/controllers/origami/dashboard_controller.rb b/app/controllers/origami/dashboard_controller.rb
index 8bdd5c27..9977850f 100644
--- a/app/controllers/origami/dashboard_controller.rb
+++ b/app/controllers/origami/dashboard_controller.rb
@@ -3,6 +3,8 @@ class Origami::DashboardController < BaseOrigamiController
def index
@shop = Shop.first
+
+
today = DateTime.now.strftime('%Y-%m-%d')
# @orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
# @sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
@@ -56,6 +58,13 @@ class Origami::DashboardController < BaseOrigamiController
# get printer info
@print_settings = PrintSetting.get_precision_delimiter()
@current_user = current_user
+ #dine-in cashier
+ dinein_cashier = Lookup.collection_of('dinein_cashier')
+ @dinein_cashier = 0
+ if !dinein_cashier[0].nil?
+ @dinein_cashier = dinein_cashier[0][1]
+ end
+
#quick service
quick_service = Lookup.collection_of('quick_service')
@quick_service = 0
@@ -74,4 +83,8 @@ class Origami::DashboardController < BaseOrigamiController
end
end
+def get_all_menu
+ @menus = Menu.all
+end
+
end
diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb
index 745d6f33..81724ff5 100755
--- a/app/controllers/origami/home_controller.rb
+++ b/app/controllers/origami/home_controller.rb
@@ -30,9 +30,9 @@ class Origami::HomeController < BaseOrigamiController
@membership = MembershipSetting::MembershipSetting
@payment_methods = PaymentMethodSetting.all
- bookings = Booking.all
- if !bookings.today.nil?
- @order_items_count = Hash.new
+ # bookings = Booking.all
+ # if !bookings.today.nil?
+ # @order_items_count = Hash.new
# bookings.each do |booking|
# if booking.sale_id.nil? && booking.booking_status != 'moved'
# if !booking.booking_orders.empty?
@@ -60,7 +60,7 @@ class Origami::HomeController < BaseOrigamiController
# end
# end
# end
- end
+ # end
@dining.bookings.active.each do |booking|
if booking.sale_id.nil? && booking.booking_status != 'moved'
@@ -129,6 +129,18 @@ class Origami::HomeController < BaseOrigamiController
end
end
+def check_emp_access_code
+ pin_code = params[:code]
+ employee = Employee.find_by_emp_id(pin_code)
+ if employee && (employee.role == "manager" || employee.role == "supervisor")
+ result = {:status=> true, :message=>"Success" }
+ else
+ result = {:status=> false, :message=>"Invalid Access Code" }
+ end
+ render :json => result.to_json
+
+end
+
private
def set_dining
diff --git a/app/controllers/origami/moveroom_controller.rb b/app/controllers/origami/moveroom_controller.rb
index 316ab894..8f1430a6 100755
--- a/app/controllers/origami/moveroom_controller.rb
+++ b/app/controllers/origami/moveroom_controller.rb
@@ -3,12 +3,16 @@ class Origami::MoveroomController < BaseOrigamiController
authorize_resource :class => false
def move_dining
+ @webview = check_mobile
+
@tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc')
@complete = Sale.all
@orders = Order.all.order('date desc')
@status_order = ""
+ @status_sale = ""
+ @sale_array = Array.new
@dining = DiningFacility.find(params[:dining_id])
@dining.bookings.each do |booking|
if booking.sale_id.nil?
@@ -16,21 +20,38 @@ class Origami::MoveroomController < BaseOrigamiController
booking.booking_orders.each do |booking_order|
order = Order.find(booking_order.order_id)
@obj_order = order
+ @customer = order.customer
@date = order.created_at
+ @booking= booking
order.order_items.each do |item|
@order_items.push(item)
end
+ accounts = @customer.tax_profiles
+ @account_arr =[]
+ accounts.each do |acc|
+ account = TaxProfile.find(acc)
+ @account_arr.push(account)
+ end
end
@status_order = 'order'
else
sale = Sale.find(booking.sale_id)
- if sale.sale_status != "completed"
+ if sale.sale_status != "completed" && sale.sale_status != "waste" && sale.sale_status != "spoile"
+ @sale_array.push(sale)
if @status_order == 'order'
@status_order = 'sale'
end
+ @booking= booking
@date = sale.created_at
@status_sale = 'sale'
@obj_sale = sale
+ @customer = sale.customer
+ accounts = @customer.tax_profiles
+ @account_arr =[]
+ accounts.each do |acc|
+ account = TaxProfile.find(acc)
+ @account_arr.push(account)
+ end
end
end
end
diff --git a/app/controllers/origami/movetable_controller.rb b/app/controllers/origami/movetable_controller.rb
index bbc02bdc..7efdd46c 100755
--- a/app/controllers/origami/movetable_controller.rb
+++ b/app/controllers/origami/movetable_controller.rb
@@ -3,6 +3,8 @@ class Origami::MovetableController < BaseOrigamiController
authorize_resource :class => false
def move_dining
+ @webview = check_mobile
+
@tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc')
@complete = Sale.all
@@ -16,7 +18,6 @@ class Origami::MovetableController < BaseOrigamiController
if booking.sale_id.nil?
@order_items = Array.new
booking.booking_orders.each do |booking_order|
-
order = Order.find(booking_order.order_id)
@obj_order = order
@customer = order.customer
@@ -35,7 +36,7 @@ class Origami::MovetableController < BaseOrigamiController
@status_order = 'order'
else
sale = Sale.find(booking.sale_id)
- if sale.sale_status != "completed"
+ if sale.sale_status != "completed" && sale.sale_status != "waste" && sale.sale_status != "spoile"
@sale_array.push(sale)
if @status_order == 'order'
@status_order = 'sale'
diff --git a/app/controllers/origami/order_reservation_controller.rb b/app/controllers/origami/order_reservation_controller.rb
index 12a3ee2f..a3421fbd 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
- @order = OrderReservation.latest_order
+ @order = OrderReservation.latest_order #.active
@count_on_order = OrderReservation.get_count_on_order
+ @count_on_completed = OrderReservation.get_count_on_completed
+ @shop = Shop.find_by_id(1)
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/other_charges_controller.rb b/app/controllers/origami/other_charges_controller.rb
index 28ab2c06..4b94990b 100755
--- a/app/controllers/origami/other_charges_controller.rb
+++ b/app/controllers/origami/other_charges_controller.rb
@@ -15,12 +15,11 @@ class Origami::OtherChargesController < BaseOrigamiController
@table = DiningFacility.find(@sale_data.bookings[0].dining_facility_id)
else
@table = nil
- end
-
+ end
end
end
- def create
+ def create
sale_id = params[:sale_id]
other_charges_items = JSON.parse(params[:other_charges_items])
sub_total = params[:sub_total]
@@ -79,8 +78,6 @@ class Origami::OtherChargesController < BaseOrigamiController
if !table.nil?
dining = {:table_id => table_id, :table_type => table.type }
render :json => dining.to_json
- end
-
- end
-
+ end
+ end
end
\ No newline at end of file
diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb
index 3baed9f3..7df42118 100755
--- a/app/controllers/origami/payments_controller.rb
+++ b/app/controllers/origami/payments_controller.rb
@@ -279,6 +279,9 @@ class Origami::PaymentsController < BaseOrigamiController
new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
@rounding_adj = new_total-saleObj.grand_total
saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:@rounding_adj)
+ @sale_data.grand_total = new_total
+ @sale_data.old_grand_total = saleObj.grand_total
+ @sale_data.rounding_adjustment = @rounding_adj
else
@rounding_adj = @sale_data.rounding_adjustment
end
@@ -446,8 +449,7 @@ class Origami::PaymentsController < BaseOrigamiController
end
saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0)
- puts "FOC"
- puts saleObj.to_json
+
sale_payment = SalePayment.new
sale_payment.process_payment(saleObj, current_user.name, cash, "foc" ,remark)
# For Cashier by Zone
diff --git a/app/controllers/origami/pending_order_controller.rb b/app/controllers/origami/pending_order_controller.rb
index 9a413316..4fa6002b 100644
--- a/app/controllers/origami/pending_order_controller.rb
+++ b/app/controllers/origami/pending_order_controller.rb
@@ -4,11 +4,12 @@ class Origami::PendingOrderController < BaseOrigamiController
# @order = Order.where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status = 'billed' and source = 'quick_service'",DateTime.now.strftime('%Y-%m-%d'))
@sale = Sale.pending_sale
@order = Sale.pending_order
-
+ @completed = Sale.completed_sale
end
def show
@sales = Sale.pending_sale
@orders = Sale.pending_order
+ @completed = Sale.completed_sale
@id = params[:sale_id]
if(@id[0,3] == "SAL")
@sale = Sale.find(@id)
@@ -41,4 +42,27 @@ class Origami::PendingOrderController < BaseOrigamiController
end
end
+
+ def completed_sale
+ @sales = Sale.pending_sale
+ @orders = Sale.pending_order
+ @completed = Sale.completed_sale
+ @id = params[:sale_id]
+
+ @sale = Sale.find(@id)
+ @order = SaleOrder.find_by_sale_id(@sale.sale_id).order_id
+ @booking = BookingOrder.find_by_order_id(@order).booking_id
+ @bookings = Booking.find(@booking)
+ @status = "sale"
+
+ if @bookings.dining_facility_id.to_i > 0
+ @table_id = Booking.find(@bookings.booking_id).dining_facility_id
+ @dining = DiningFacility.find(@table_id)
+ else
+ @table_id = nil
+ @dining = nil
+ end
+
+ end
+
end
diff --git a/app/controllers/origami/quick_service_controller.rb b/app/controllers/origami/quick_service_controller.rb
index d5d3437b..86433417 100644
--- a/app/controllers/origami/quick_service_controller.rb
+++ b/app/controllers/origami/quick_service_controller.rb
@@ -10,24 +10,30 @@ class Origami::QuickServiceController < ApplicationController
def index
today = DateTime.now
day = Date.today.wday
- @menus = Menu.all
- @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
+ # if params[:menu] == "true"
+ @menus = []
+ @menu = []
+ # else
+ # @menus = Menu.all
+ # @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
+ # end
@zone = Zone.all
@customer = Customer.all
@tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc')
- # @tables = Table.all.active.order('zone_id asc').group("zone_id")
- # @rooms = Room.all.active.order('zone_id asc').group("zone_id")
- # @all_table = Table.all.active.order('status desc')
- # @all_room = Room.all.active.order('status desc')
- render "origami/addorders/detail"
+ render "origami/addorders/detail"
end
def modify_order
today = DateTime.now
day = Date.today.wday
- @menus = Menu.all
- @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
+ # if params[:menu] == "true"
+ @menus = []
+ @menu = []
+ # else
+ # @menus = Menu.all
+ # @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
+ # end
if(params[:id][0,3] == "BKI")
@table_id = nil
@table = nil
diff --git a/app/controllers/origami/sale_edit_controller.rb b/app/controllers/origami/sale_edit_controller.rb
index 1743f881..0f27567a 100755
--- a/app/controllers/origami/sale_edit_controller.rb
+++ b/app/controllers/origami/sale_edit_controller.rb
@@ -5,8 +5,10 @@ class Origami::SaleEditController < BaseOrigamiController
sale_id = params[:sale_id]
if params[:table_id]
@table_id = params[:table_id]
+ @table_type = DiningFacility.find(@table_id).type
else
@table_id = nil
+ @table_type = nil
end
@cashier_type = params[:type]
@@ -17,6 +19,7 @@ class Origami::SaleEditController < BaseOrigamiController
def item_void
saleitemId = params[:sale_item_id]
remark = params[:remark]
+ access_code = params[:access_code]
saleitemObj = SaleItem.find(saleitemId)
saleitemObj.status = 'void'
saleitemObj.remark = remark
@@ -47,7 +50,11 @@ class Origami::SaleEditController < BaseOrigamiController
end
end
end
- action_by = current_user.id
+ # FOr Sale Audit
+ action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,"SALEITEMVOID" )
@@ -58,6 +65,7 @@ class Origami::SaleEditController < BaseOrigamiController
def item_foc
saleitemId = params[:sale_item_id]
remark = params[:remark]
+ access_code = params[:access_code]
saleitemObj = SaleItem.find(saleitemId)
saleitemObj.status = 'foc'
saleitemObj.remark = remark
@@ -79,7 +87,10 @@ 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
+ action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,"SALEITEMFOC" )
@@ -111,6 +122,7 @@ class Origami::SaleEditController < BaseOrigamiController
saleitemId = params[:sale_item_id]
update_qty = params[:update_qty]
update_price = params[:update_price]
+ access_code = params[:access_code]
saleitemObj = SaleItem.find(saleitemId)
sale = Sale.find(saleitemObj.sale_id)
@@ -119,7 +131,10 @@ 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
+ action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,"SALEITEMEDIT" )
# saleitemObj.remark = 'edit'
@@ -152,6 +167,7 @@ class Origami::SaleEditController < BaseOrigamiController
# make cancel void item
def item_void_cancel
saleitemId = params[:sale_item_id]
+ access_code = params[:access_code]
saleitemObj = SaleItem.find(saleitemId)
both = SaleItem.where('product_code=?', saleitemObj.product_code)
both.each do |item|
@@ -168,7 +184,10 @@ 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
+ action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,"ITEMCANCELVOID" )
diff --git a/app/controllers/origami/split_bill_controller.rb b/app/controllers/origami/split_bill_controller.rb
index 5f074bb5..2d2ca4fb 100755
--- a/app/controllers/origami/split_bill_controller.rb
+++ b/app/controllers/origami/split_bill_controller.rb
@@ -19,7 +19,9 @@ class Origami::SplitBillController < BaseOrigamiController
table_bookings = Booking.where("dining_facility_id = #{dining_id} and sale_id IS NOT NULL")
if !table_bookings.nil?
table_bookings.each do |table_booking|
- @sale_data.push(table_booking.sale)
+ if table_booking.sale.sale_status != 'waste' && table_booking.sale.sale_status != 'spoile'
+ @sale_data.push(table_booking.sale)
+ end
end
end
diff --git a/app/controllers/origami/table_invoices_controller.rb b/app/controllers/origami/table_invoices_controller.rb
index 1e8b1fbd..bc89d598 100755
--- a/app/controllers/origami/table_invoices_controller.rb
+++ b/app/controllers/origami/table_invoices_controller.rb
@@ -22,7 +22,7 @@ class Origami::TableInvoicesController < BaseOrigamiController
end
end
#end rounding adjustment
- if sale.sale_status != "completed"
+ if sale.sale_status != "completed" && sale.sale_status != "waste" && sale.sale_status != "spoile"
@sale_array.push(sale)
end
end
@@ -52,7 +52,7 @@ class Origami::TableInvoicesController < BaseOrigamiController
end
end
#end rounding adjustment
- if sale.sale_status != "completed" && sale.sale_status != 'void'
+ if sale.sale_status != "completed" && sale.sale_status != 'void' && sale.sale_status != "waste" && sale.sale_status != "spoile"
@sale_array.push(sale)
end
end
diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb
index 83dce707..5d9aa923 100755
--- a/app/controllers/origami/void_controller.rb
+++ b/app/controllers/origami/void_controller.rb
@@ -5,6 +5,7 @@ class Origami::VoidController < BaseOrigamiController
sale_id = params[:sale_id]
remark = params[:remark]
order_source = params[:type] #tax profile source
+ access_code = params[:access_code]
if Sale.exists?(sale_id)
sale = Sale.find_by_sale_id(sale_id)
@@ -71,6 +72,10 @@ class Origami::VoidController < BaseOrigamiController
# FOr Sale Audit
action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,"SALEVOID" )
diff --git a/app/controllers/origami/waste_spoile_controller.rb b/app/controllers/origami/waste_spoile_controller.rb
index 2b2d9c33..9cfde698 100755
--- a/app/controllers/origami/waste_spoile_controller.rb
+++ b/app/controllers/origami/waste_spoile_controller.rb
@@ -3,7 +3,8 @@ class Origami::WasteSpoileController < BaseOrigamiController
sale_id = params[:sale_id]
remark = params[:remark]
- order_source = params[:type] #tax profile source
+ order_source = params[:type]
+ access_code = params[:access_code] #tax profile source
if Sale.exists?(sale_id)
sale = Sale.find_by_sale_id(sale_id)
SaleTax.where("sale_id='#{sale_id}'").find_each do |existing_tax|
@@ -54,6 +55,9 @@ class Origami::WasteSpoileController < BaseOrigamiController
# FOr Sale Audit
action_by = current_user.name
+ if access_code != "null"
+ 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, action_by,remark,remark )
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/reports/receipt_no_controller.rb b/app/controllers/reports/receipt_no_controller.rb
index a86fb9b2..aa1dd8bd 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').limit(2)
+ @tax_profiles = TaxProfile.where('group_type = "cashier"').order('order_by asc').limit(2)
@from = from
@to = to
# get printer info
diff --git a/app/controllers/settings/cashier_terminals_controller.rb b/app/controllers/settings/cashier_terminals_controller.rb
index 31e8da04..1d1c5497 100755
--- a/app/controllers/settings/cashier_terminals_controller.rb
+++ b/app/controllers/settings/cashier_terminals_controller.rb
@@ -16,10 +16,12 @@ class Settings::CashierTerminalsController < ApplicationController
# GET /settings/cashier_terminals/new
def new
@settings_cashier_terminal = CashierTerminal.new
+ @server_mode = ENV["SERVER_MODE"]
end
# GET /settings/cashier_terminals/1/edit
def edit
+ @server_mode = ENV["SERVER_MODE"]
end
# POST /settings/cashier_terminals
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/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb
index adcbc507..2458096e 100755
--- a/app/controllers/settings/order_queue_stations_controller.rb
+++ b/app/controllers/settings/order_queue_stations_controller.rb
@@ -18,10 +18,12 @@ class Settings::OrderQueueStationsController < ApplicationController
# GET /settings/order_queue_stations/new
def new
@settings_order_queue_station = OrderQueueStation.new
+ @server_mode = ENV["SERVER_MODE"]
end
# GET /settings/order_queue_stations/1/edit
def edit
+ @server_mode = ENV["SERVER_MODE"]
end
# POST /settings/order_queue_stations
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 5eab518f..fbf66f57 100755
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -126,6 +126,7 @@ class Ability
# can :overall_void, :void
can :index, :home
can :show, :home
+ can :check_emp_access_code, :home
can :read, Order
can :update, Order
can :manage, Booking
@@ -151,6 +152,7 @@ class Ability
can :create, :payment
can :reprint, :payment
can :rounding_adj, :payment
+ can :foc, :payment
can :print, :payment
can :move_dining, :movetable
@@ -183,6 +185,16 @@ class Ability
can :print, :print
can :print_order_summary, :print
+
+ can :edit, :sale_edit
+ can :item_void, :sale_edit
+ can :item_void_cancel, :sale_edit
+ can :cancel_all_void, :sale_edit
+ can :apply_void, :sale_edit
+ can :item_foc, :sale_edit
+ can :item_edit, :sale_edit
+
+ can :overall_void, :void
elsif user.role == "account"
@@ -236,6 +248,7 @@ class Ability
can :reprint, :payment
can :rounding_adj, :payment
can :print, :payment
+ can :foc, :payment
can :manage, Commission
can :manage, Commissioner
diff --git a/app/models/customer.rb b/app/models/customer.rb
index c380f24b..b05caaf6 100755
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -352,28 +352,6 @@ class Customer < ApplicationRecord
end
- #new customer for doemal
- def self.addCustomer(params)
- if params[:gender] == "female"
- gender = "Female"
- else
- gender = "Male"
- end
- customer = Customer.new
- customer.name = params[:name]
- customer.email = params[:email]
- customer.contact_no = params[:contact_no]
- customer.gender = params[:gender]
- customer.address = params[:address]
- customer.date_of_birth = params[:date_of_birth] ? Time.parse(params[:date_of_birth]).strftime("%Y-%m-%d") : ''
- customer.membership_id = params[:membership_id]
- customer.customer_type = "Takeaway"
- customer.tax_profiles = ["2"]
- customer.save
-
- return customer
- end
-
WALKIN = "CUS-000000000001"
TAKEAWAY = "CUS-000000000002"
diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb
index 6440444a..218bacb8 100755
--- a/app/models/menu_category.rb
+++ b/app/models/menu_category.rb
@@ -45,16 +45,21 @@ class MenuCategory < ApplicationRecord
from_t = Time.parse(menu.valid_time_from.strftime("%H:%M:%S"))
to_t = Time.parse(menu.valid_time_to.strftime("%H:%M:%S"))
current_t = Time.parse(Time.now.utc.getlocal.strftime("%H:%M:%S"))
-
+
from = from_t.hour * 3600 + from_t.min*60 + from_t.sec
to = to_t.hour * 3600 + to_t.min* 60 + to_t.sec
current = current_t.hour * 3600 + current_t.min*60+current_t.sec
+
if from > to
h = to_t.hour
if h < 12 # before noon
if h == 0
to = 24
to = to * 3600 + to_t.min* 60 + to_t.sec
+ else
+
+ h += 24
+ to = h*3600 + to_t.min* 60 + to_t.sec
end
else # (after) noon
if h > 12
@@ -64,13 +69,9 @@ class MenuCategory < ApplicationRecord
end
end
- # from = from.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
- # to = to.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
- # current = current.split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
-
day = Date.today.wday
dayresult = menu.valid_days.include?(day.to_s)
-
+
if current.between?(from, to) && menu.valid_days.include?(day.to_s)
return true
else
@@ -80,7 +81,7 @@ class MenuCategory < ApplicationRecord
def get_sub_category
menu_category = MenuCategory.find_by_menu_category_id(self.id)
- if menu_category
+ if !menu_category.nil?
return true
end
return false
diff --git a/app/models/my_aes_crypt.rb b/app/models/my_aes_crypt.rb
index 8f3cde09..4116f2a2 100644
--- a/app/models/my_aes_crypt.rb
+++ b/app/models/my_aes_crypt.rb
@@ -64,7 +64,7 @@ class MyAesCrypt
shop_json["data"].each do |j|
if j["lookup"] == from
# add [0...44] for production cloud for remove \n
- if(j["value"]["key"] == token)
+ if(j["value"]["key"].gsub(/\s+/, "") == token)
return true
end
end
diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb
index 889491ed..1541828c 100755
--- a/app/models/order_queue_station.rb
+++ b/app/models/order_queue_station.rb
@@ -57,7 +57,11 @@ class OrderQueueStation < ApplicationRecord
if oqs.auto_print && order_source != "quick_service"
if oqs_order_items.length > 0
- print_slip(oqs, order, oqs_order_items)
+ if oqs.cut_per_item
+ print_slip_item(oqs, order, oqs_order_items)
+ else
+ print_slip(oqs, order, oqs_order_items)
+ end
is_auto_printed = true
end
end
@@ -91,8 +95,12 @@ class OrderQueueStation < ApplicationRecord
end
if oqs.auto_print && order_source != "quick_service"
- if oqs_order_items.length > 0
- print_slip(oqs, order, oqs_order_items)
+ if oqs_order_items.length > 0
+ if oqs.cut_per_item
+ print_slip_item(oqs, order, oqs_order_items)
+ else
+ print_slip(oqs, order, oqs_order_items)
+ end
is_auto_printed = true
end
end
@@ -137,8 +145,12 @@ class OrderQueueStation < ApplicationRecord
end
if oqs.auto_print
- if oqs_order_items.length > 0
- print_slip(oqs, order, oqs_order_items)
+ if oqs_order_items.length > 0
+ if oqs.cut_per_item
+ print_slip_item(oqs, order, oqs_order_items)
+ else
+ print_slip(oqs, order, oqs_order_items)
+ end
is_auto_printed = true
end
end
@@ -165,8 +177,12 @@ class OrderQueueStation < ApplicationRecord
end
if oqs.auto_print
- if oqs_order_items.length > 0
- print_slip(oqs, order, oqs_order_items)
+ if oqs_order_items.length > 0
+ if oqs.cut_per_item
+ print_slip_item(oqs, order, oqs_order_items)
+ else
+ print_slip(oqs, order, oqs_order_items)
+ end
is_auto_printed = true
end
end
@@ -211,7 +227,7 @@ class OrderQueueStation < ApplicationRecord
end
#Print order_item in 1 slip per item
- def print_slip_item(oqs, assigned_item)
+ def print_slip_item(oqs, order, assigned_items)
order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf
unique_code="OrderItemPdf"
if !order_slim_pdf.empty?
@@ -232,14 +248,17 @@ class OrderQueueStation < ApplicationRecord
end
end
- order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first()
+ # order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first()
# print when complete click
print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
- order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" )
-
+ if !assigned_items.nil?
+ assigned_items.each do |order_item|
+ order_queue_printer.print_order_item(print_settings, oqs,order_item.order_id, order_item.order_items_id, print_status="" )
+ end
+ end
# update print status for completed same order items
- assigned_order_item.each do |ai|
+ AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai|
ai.print_status=true
ai.save
end
diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb
index d60d908e..84209845 100644
--- a/app/models/order_reservation.rb
+++ b/app/models/order_reservation.rb
@@ -7,6 +7,7 @@ class OrderReservation < ApplicationRecord
has_many :order_reservation_items
has_one :delivery
+ scope :active, -> { where("created_at BETWEEN '#{DateTime.now.utc.beginning_of_day}' AND '#{DateTime.now.utc.end_of_day}'") }
scope :latest_order, -> { order("order_reservation_id desc, created_at desc") }
SEND_TO_KITCHEN = "send_to_kitchen"
@@ -14,6 +15,28 @@ class OrderReservation < ApplicationRecord
DELIVERED = "delivered"
COMPLETED = "completed"
+ #new customer for doemal
+ def self.addCustomer(params)
+ if params[:gender] == "female"
+ gender = "Female"
+ else
+ gender = "Male"
+ end
+ customer = Customer.new
+ customer.name = params[:name]
+ customer.email = params[:email]
+ customer.contact_no = params[:contact_no] ? params[:contact_no] : ''
+ customer.gender = gender
+ customer.address = params[:address] ? params[:address] : ''
+ customer.date_of_birth = params[:date_of_birth] ? Time.parse(params[:date_of_birth]).strftime("%Y-%m-%d") : ''
+ customer.membership_id = params[:membership_id]
+ customer.customer_type = "Takeaway"
+ customer.tax_profiles = ["2"]
+ customer.save
+
+ return customer
+ end
+
def self.addOrderReservationInfo(order_reserve)
Rails.logger.debug order_reserve.to_s
check_order_reservation = OrderReservation.where("transaction_ref = ?",order_reserve[:reference])
@@ -29,7 +52,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]
@@ -39,7 +62,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]
@@ -70,9 +93,6 @@ class OrderReservation < ApplicationRecord
count += 1
items_arr.push(items)
}
-
- puts items_arr.to_json
- puts "sssssssssssssssssssssss"
customer_id = order.customer_id
@order = Order.new
@@ -101,9 +121,12 @@ 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" }
- return result
+ result = {:status=> @status, :data => @sale, :message => "send to kitchen" }
+ else
+ result = {:status=> @status, :message => "No current shift open for this employee!" }
end
+
+ return result
end
def self.update_doemal_payment(order,current_user)
@@ -137,7 +160,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")
@@ -155,9 +178,10 @@ class OrderReservation < ApplicationRecord
end
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}
+ if waiting_time != ""
+ send_params = {id: ref_no,type: min_type, waiting_time: waiting_time, status: status}
+ elsif reason != ""
+ send_params = {id: ref_no, status: status, reason: reason}
else
send_params = {id: ref_no, status: status}
end
@@ -184,29 +208,161 @@ 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
- order_reservation = OrderReservation.select("order_reservations.*,deliveries.provider,deliveries.delivery_type")
+ order_reservation = OrderReservation.select("order_reservations.*,del.provider,del.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
+ def self.check_new_order
+ shop = Shop.find_by_id(1)
+ if !shop.shop_code.nil?
+ shop_code = shop.shop_code
+ else
+ shop_code = ''
+ end
+ order_reservation = OrderReservation.where("status='new'")
+ if order_reservation.length > 0
+ if ENV["SERVER_MODE"] == 'cloud'
+ ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code
+ end
+ end
+ end
+
+ def self.check_order_send_to_kitchen
+ shop = Shop.find_by_id(1)
+ if !shop.shop_code.nil?
+ shop_code = shop.shop_code
+ else
+ shop_code = ''
+ end
+ 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, shop_code: shop_code
+ end
+ end
+ end
+
+ def self.check_order_ready_to_delivery
+ shop = Shop.find_by_id(1)
+ if !shop.shop_code.nil?
+ shop_code = shop.shop_code
+ else
+ shop_code = ''
+ end
+ 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, shop_code: shop_code
+ end
+ 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 3be637d0..af7e7a58 100644
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -475,11 +475,9 @@ class Sale < ApplicationRecord
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
@@ -1195,8 +1193,14 @@ def self.get_wastes_and_spoilages(from,to,status)
else
type = "and sales.sale_status = 'waste'"
end
- query = Sale.all.where("sales.receipt_date between ? and ? #{type}",from,to)
- .group("sales.receipt_no")
+ query = Sale.select("sales.sale_id,sales.receipt_no,sales.created_at,sales.total_amount,sales.grand_total,sales.rounding_adjustment,sales.shift_sale_id,sale_items.product_name,sale_items.product_code,sale_items.item_instance_code,sale_items.qty,sale_items.price,sale_items.unit_price,menu_categories.name")
+ .joins("JOIN sale_items ON sales.sale_id = sale_items.sale_id" +
+ " JOIN menu_item_instances ON sale_items.item_instance_code = menu_item_instances.item_instance_code" +
+ " JOIN menu_items ON menu_item_instances.menu_item_id = menu_items.id" +
+ " JOIN menu_categories ON menu_items.menu_category_id = menu_categories.id")
+ .where("sales.receipt_date between ? and ? #{type}",from,to)
+ .group("sales.receipt_no,menu_categories.id,sale_items.item_instance_code")
+ .order("sales.sale_id,menu_categories.name,sale_items.product_name")
end
# def self.get_separate_tax(from,to,payment_method=nil)
@@ -2660,6 +2664,13 @@ end
query = query.where("bookings.booking_status = 'assign' AND orders.status = 'new' AND orders.source =? ","quick_service")
.group("bookings.booking_id")
end
+ def self.completed_sale
+ query = Sale.all
+ query = query.joins("join sale_orders as sale_orders on sale_orders.sale_id = sales.sale_id")
+ .joins("join orders as orders on orders.order_id = sale_orders.order_id")
+ query = query.where("sales.sale_status != 'new' AND orders.status = 'billed' AND orders.source =? ","quick_service")
+ .group("sales.sale_id")
+ end
def self.all_receipts
query = Sale.select("sales.*,sale_payments.created_at as receipt_close_time,
diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb
index 9e5701ab..d01ee5e0 100755
--- a/app/models/sale_item.rb
+++ b/app/models/sale_item.rb
@@ -98,7 +98,6 @@ class SaleItem < ApplicationRecord
discount_accounts = []
Account.all.each do |a|
discount_account = {:name => a.title, :price => 0}
-
# Check for actual sale items
sale_items.where("status = 'Discount'").each do |si|
if si.account_id == a.id
diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb
index fe42bbf3..59e6a320 100755
--- a/app/pdf/receipt_bill_pdf.rb
+++ b/app/pdf/receipt_bill_pdf.rb
@@ -207,7 +207,6 @@ class ReceiptBillPdf < Prawn::Document
price = item.unit_price
product_name = item.product_name
-
y_position = cursor
pad_top(15) {
diff --git a/app/uploaders/commissioner_image_uploader.rb b/app/uploaders/commissioner_image_uploader.rb
index 639ce7d7..8baa6dac 100644
--- a/app/uploaders/commissioner_image_uploader.rb
+++ b/app/uploaders/commissioner_image_uploader.rb
@@ -19,6 +19,14 @@ class CommissionerImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/uploaders/customer_image_uploader.rb b/app/uploaders/customer_image_uploader.rb
index 1de0f3ad..3c4c6f67 100644
--- a/app/uploaders/customer_image_uploader.rb
+++ b/app/uploaders/customer_image_uploader.rb
@@ -19,6 +19,14 @@ class CustomerImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/uploaders/employee_image_uploader.rb b/app/uploaders/employee_image_uploader.rb
index fd64db42..f1e32849 100644
--- a/app/uploaders/employee_image_uploader.rb
+++ b/app/uploaders/employee_image_uploader.rb
@@ -19,6 +19,14 @@ class EmployeeImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/uploaders/menu_item_image_uploader.rb b/app/uploaders/menu_item_image_uploader.rb
index 90755159..fdf63f8d 100755
--- a/app/uploaders/menu_item_image_uploader.rb
+++ b/app/uploaders/menu_item_image_uploader.rb
@@ -19,6 +19,14 @@ class MenuItemImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/uploaders/product_image_uploader.rb b/app/uploaders/product_image_uploader.rb
index fd037f0a..4b702a00 100755
--- a/app/uploaders/product_image_uploader.rb
+++ b/app/uploaders/product_image_uploader.rb
@@ -19,6 +19,14 @@ class ProductImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/uploaders/shop_image_uploader.rb b/app/uploaders/shop_image_uploader.rb
index 63a01c21..009d83d9 100644
--- a/app/uploaders/shop_image_uploader.rb
+++ b/app/uploaders/shop_image_uploader.rb
@@ -19,6 +19,14 @@ class ShopImageUploader < CarrierWave::Uploader::Base
# "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
+ def filename
+ if Shop.find(1).shop_code.nil?
+ "#{original_filename}" if original_filename.present?
+ else
+ "#{Shop.find(1).shop_code}_#{original_filename}" if original_filename.present?
+ end
+ end
+
# def cache_dir
# '/tmp/images'
# end
diff --git a/app/views/crm/customers/edit.json.jbuilder b/app/views/crm/customers/edit.json.jbuilder
index 60148085..555989a4 100644
--- a/app/views/crm/customers/edit.json.jbuilder
+++ b/app/views/crm/customers/edit.json.jbuilder
@@ -1,4 +1,4 @@
json.extract! @crm_customer, :id, :name, :company, :contact_no, :email, :date_of_birth,
:membership_id, :membership_type, :membership_authentication_code,
- :salutation, :gender,:nrc_no,:address,:card_no, :paypar_account_no, :customer_type, :tax_profiles
+ :salutation, :gender,:nrc_no,:address,:card_no, :paypar_account_no, :customer_type, :image_path, :tax_profiles
json.url crm_customer_url(@crm_customer, format: :json)
\ No newline at end of file
diff --git a/app/views/crm/customers/index.html.erb b/app/views/crm/customers/index.html.erb
index 87f3cabd..96f1f985 100644
--- a/app/views/crm/customers/index.html.erb
+++ b/app/views/crm/customers/index.html.erb
@@ -185,7 +185,7 @@ $(document).on('click',".customer_tr",function(){
url: url,
data: {},
dataType: "json",
- success: function(data) {
+ success: function(data) {
// Selected for Taxes
var taxes = JSON.stringify(data.tax_profiles);
var parse_taxes = JSON.parse(taxes);
@@ -193,7 +193,7 @@ $(document).on('click',".customer_tr",function(){
$("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'});
});
- $('#customer_id').val(data.id);
+ $('#customer_id').val(data.id);
$('#customer_name').val(data.name);
$('#customer_company').val(data.company);
$('#customer_contact_no').val(data.contact_no);
@@ -205,6 +205,9 @@ $(document).on('click',".customer_tr",function(){
$('#paypar_account_no').val(data.paypar_account_no);
$('#customer_address').val(data.address);
$('#customer_date_of_birth').val(data.date_of_birth);
+ if(data.image_path.url!=undefined && data.image_path.url!=null){
+ $('.menu-item-img .img-thumbnail').attr('src',data.image_path.url);
+ }
$('#customer_membership_type').val(data.membership_type);
$('.selectpicker > option[value="'+data.membership_type+'"]').attr('selected','selected');
if (data.gender == 'Male') {
diff --git a/app/views/crm/customers/show.json.jbuilder b/app/views/crm/customers/show.json.jbuilder
index ffc312a2..3a6a8cb9 100644
--- a/app/views/crm/customers/show.json.jbuilder
+++ b/app/views/crm/customers/show.json.jbuilder
@@ -1,4 +1,4 @@
json.extract! @crm_customer, :id, :name, :company, :contact_no, :email, :date_of_birth,
:membership_id, :membership_type, :membership_authentication_code,
- :salutation, :gender,:nrc_no,:address,:card_no, :paypar_account_no, :customer_type, :tax_profiles
+ :salutation, :gender,:nrc_no,:address,:card_no, :paypar_account_no, :customer_type, :image_path, :tax_profiles
json.url crm_customer_url(@crm_customer, format: :json)
diff --git a/app/views/crm/dining_queues/_form.html.erb b/app/views/crm/dining_queues/_form.html.erb
index 51e2c097..7c50a06d 100755
--- a/app/views/crm/dining_queues/_form.html.erb
+++ b/app/views/crm/dining_queues/_form.html.erb
@@ -11,8 +11,8 @@
<%= f.input :queue_no , :class => "dining",:id => "dining", :readonly => true%>
<%= f.hidden_field :customer_id %>
<%= f.input :name %>
- <%= f.input :contact_no %>
- <%= f.input :seater %>
+ <%= f.input :contact_no , input_html: { min: 1, :onkeypress => "return isNumberKey(event);", :onkeyup => "notChar(this.value);" } %>
+ <%= f.input :seater , input_html: { min: 1, :onkeypress => "return isNumberKey(event);", :onkeyup => "notNegative(this.value);" } %>
<%= f.input :remark %>
@@ -111,11 +111,29 @@
diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb
old mode 100755
new mode 100644
index fd823182..62bbf3a4
--- a/app/views/origami/addorders/detail.html.erb
+++ b/app/views/origami/addorders/detail.html.erb
@@ -1,42 +1,36 @@
<%= stylesheet_link_tag 'addorder', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'addorder', 'data-turbolinks-track': 'reload' %>
-
+
<% type = request.path_info.include?('quick_service')%>
<% modify_order = request.path_info.include?('modify_order')%>
-