Merge branch 'master' of bitbucket.org:code2lab/sxrestaurant into ui_ux_changes
This commit is contained in:
@@ -31,30 +31,75 @@ $(document).on('turbolinks:load', function() {
|
|||||||
$(".oqs_append").addClass('hide')
|
$(".oqs_append").addClass('hide')
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".oqs_click").on("click", function(){
|
$(".tables").on("click", function(){
|
||||||
$(".oqs_click").removeClass('oqs_active');
|
|
||||||
$(".queue_station").removeClass('queue_station_box');
|
var table_id = $(this).val();
|
||||||
$("#completed").addClass('hide');
|
$('#table_id').val(table_id);
|
||||||
$(".oqs_append").removeClass('hide');
|
oqs_id = $("#oqs_id").val();
|
||||||
$(this).addClass('oqs_active');
|
if (table_id){
|
||||||
$(".queue_station").addClass('queue_station_box');
|
var table = table_id
|
||||||
oqs_id = $(this).find(".oqs-id").text();
|
}else{
|
||||||
console.log(oqs_id);
|
var table = null
|
||||||
var url = 'oqs/get_items/'+oqs_id;
|
}
|
||||||
|
|
||||||
|
if (oqs_id > 0) {
|
||||||
|
$(".oqs_click").removeClass('oqs_active');
|
||||||
|
$(".queue_station").removeClass('queue_station_box');
|
||||||
|
$("#completed").addClass('hide');
|
||||||
|
$(".oqs_append").removeClass('hide');
|
||||||
|
$("#oqs_active").addClass('oqs_active');
|
||||||
|
$(".queue_station").addClass('queue_station_box');
|
||||||
|
// oqs_id = $(this).find(".oqs-id").text();
|
||||||
|
$("#oqs_active").attr('data-id',oqs_id);
|
||||||
|
var url = 'oqs/get_items/'+oqs_id;
|
||||||
|
|
||||||
|
show_details(url,table);
|
||||||
|
}else{
|
||||||
|
$("#completed").removeClass('hide')
|
||||||
|
$(".oqs_append").addClass('hide')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".oqs_click").on("click", function(){
|
||||||
|
oqs_id = $(this).val();
|
||||||
|
var table_id = $('#table_id').val();
|
||||||
|
if (table_id){
|
||||||
|
var table = table_id
|
||||||
|
}else{
|
||||||
|
var table = null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oqs_id > 0) {
|
||||||
|
$(".oqs_click").removeClass('oqs_active');
|
||||||
|
$(".queue_station").removeClass('queue_station_box');
|
||||||
|
$("#completed").addClass('hide');
|
||||||
|
$(".oqs_append").removeClass('hide');
|
||||||
|
$("#oqs_active").addClass('oqs_active');
|
||||||
|
$(".queue_station").addClass('queue_station_box');
|
||||||
|
// oqs_id = $(this).find(".oqs-id").text();
|
||||||
|
$("#oqs_active").attr('data-id',oqs_id);
|
||||||
|
var url = 'oqs/get_items/'+oqs_id;
|
||||||
|
|
||||||
|
show_details(url,table);
|
||||||
|
}else{
|
||||||
|
$("#completed").removeClass('hide')
|
||||||
|
$(".oqs_append").addClass('hide')
|
||||||
|
}
|
||||||
|
|
||||||
show_details(url);
|
|
||||||
|
|
||||||
}); //End Click
|
}); //End Click
|
||||||
|
|
||||||
function show_details(url){
|
function show_details(url,table_id){
|
||||||
var oqs_append = $('.oqs_append');
|
var oqs_append = $('.oqs_append');
|
||||||
oqs_append.empty();
|
oqs_append.empty();
|
||||||
var filter = $('.filter').text();
|
var filter = $('.filter').text();
|
||||||
|
|
||||||
|
console.log(table_id)
|
||||||
//Start Ajax
|
//Start Ajax
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
data: {'filter':filter},
|
data: {'filter':filter,'table_id':table_id},
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
for(var field in data) {
|
for(var field in data) {
|
||||||
@@ -67,7 +112,8 @@ $(document).on('turbolinks:load', function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var date = new Date(data[field]["created_at"]);
|
var date = new Date(data[field]["created_at"]);
|
||||||
var show_date = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes();
|
// var show_date = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes();
|
||||||
|
var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM');
|
||||||
var set_menu_items = data[field]["set_menu_items"];
|
var set_menu_items = data[field]["set_menu_items"];
|
||||||
var set_instance_items = "";
|
var set_instance_items = "";
|
||||||
if(set_menu_items!=null){
|
if(set_menu_items!=null){
|
||||||
@@ -100,7 +146,7 @@ $(document).on('turbolinks:load', function() {
|
|||||||
+set_instance_items
|
+set_instance_items
|
||||||
+'</p>'
|
+'</p>'
|
||||||
|
|
||||||
+'<br/><p class="card-text item-options">'+ options +'</p>'
|
+'<p class="card-text item-options">'+ options +'</p>'
|
||||||
|
|
||||||
+'<span class="card-text">'
|
+'<span class="card-text">'
|
||||||
+'<span class="text-muted">Order at - '
|
+'<span class="text-muted">Order at - '
|
||||||
|
|||||||
@@ -760,7 +760,6 @@ $(function() {
|
|||||||
$("#oqs_loading_wrapper").show();
|
$("#oqs_loading_wrapper").show();
|
||||||
|
|
||||||
type = window.location.href.indexOf("quick_service");
|
type = window.location.href.indexOf("quick_service");
|
||||||
|
|
||||||
if (type != -1) {
|
if (type != -1) {
|
||||||
type = 'quick_service'
|
type = 'quick_service'
|
||||||
var table_type = $('#table_type').text();
|
var table_type = $('#table_type').text();
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann
|
|||||||
disconnected: function() {},
|
disconnected: function() {},
|
||||||
|
|
||||||
received: function(data) {
|
received: function(data) {
|
||||||
// console.log(data.order);
|
|
||||||
var oqs_id = $('.oqs_active').attr('data-id');
|
var oqs_id = $('.oqs_active').attr('data-id');
|
||||||
items = data.order;
|
items = data.order;
|
||||||
for(var field in items) {
|
for(var field in items) {
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ class Oqs::HomeController < BaseOqsController
|
|||||||
# @queue_items_details = queue_items_query(false)
|
# @queue_items_details = queue_items_query(false)
|
||||||
|
|
||||||
# Query for OQS with delivery status true
|
# Query for OQS with delivery status true
|
||||||
|
@tables = DiningFacility.all.active.order('status desc')
|
||||||
|
@rooms = Room.all.active.order('status desc')
|
||||||
|
|
||||||
@filter = params[:filter]
|
@filter = params[:filter]
|
||||||
|
|
||||||
@@ -113,7 +114,11 @@ class Oqs::HomeController < BaseOqsController
|
|||||||
def get_items_by_oqs
|
def get_items_by_oqs
|
||||||
oqs_id = params[:id]
|
oqs_id = params[:id]
|
||||||
filter = params[:filter]
|
filter = params[:filter]
|
||||||
items = queue_items_query(false,oqs_id,filter)
|
table_id = params[:table_id]
|
||||||
|
puts params
|
||||||
|
puts table_id
|
||||||
|
puts "sssssssssssss"
|
||||||
|
items = queue_items_query(false,oqs_id,filter,table_id)
|
||||||
if !items.empty?
|
if !items.empty?
|
||||||
items.each do |item|
|
items.each do |item|
|
||||||
if !item.set_menu_items.nil?
|
if !item.set_menu_items.nil?
|
||||||
@@ -151,13 +156,20 @@ class Oqs::HomeController < BaseOqsController
|
|||||||
|
|
||||||
|
|
||||||
# Query for OQS with delivery status
|
# Query for OQS with delivery status
|
||||||
def queue_items_query(status,oqs_id=nil,filter)
|
def queue_items_query(status,oqs_id=nil,filter,table_id)
|
||||||
if oqs_id == nil
|
if oqs_id == nil
|
||||||
oqs = ''
|
oqs = ''
|
||||||
else
|
else
|
||||||
oqs = "and assigned_order_items.order_queue_station_id = '#{oqs_id}' "
|
oqs = "and assigned_order_items.order_queue_station_id = '#{oqs_id}' "
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if table_id.to_i>0
|
||||||
|
table = "and df.id = '#{table_id}' "
|
||||||
|
|
||||||
|
else
|
||||||
|
table = ''
|
||||||
|
end
|
||||||
|
|
||||||
query = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id,
|
query = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id,
|
||||||
oqs.id as station_id, oqs.station_name,
|
oqs.id as station_id, oqs.station_name,
|
||||||
oqs.is_active, oqpz.zone_id,
|
oqs.is_active, oqpz.zone_id,
|
||||||
@@ -173,7 +185,7 @@ class Oqs::HomeController < BaseOqsController
|
|||||||
left join booking_orders as bo on bo.order_id = assigned_order_items.order_id
|
left join booking_orders as bo on bo.order_id = assigned_order_items.order_id
|
||||||
left join bookings as bk on bk.booking_id = bo.booking_id
|
left join bookings as bk on bk.booking_id = bo.booking_id
|
||||||
left join dining_facilities as df on df.id = bk.dining_facility_id")
|
left join dining_facilities as df on df.id = bk.dining_facility_id")
|
||||||
.where("assigned_order_items.delivery_status = #{status} AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' #{oqs} ")
|
.where("assigned_order_items.delivery_status = #{status} AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' #{oqs} #{table}")
|
||||||
query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",)
|
query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",)
|
||||||
.order("assigned_order_items.assigned_order_item_id desc")
|
.order("assigned_order_items.assigned_order_item_id desc")
|
||||||
.group("odt.order_items_id")
|
.group("odt.order_items_id")
|
||||||
|
|||||||
@@ -286,23 +286,51 @@ class Order < ApplicationRecord
|
|||||||
#Process order items and send to order queue
|
#Process order items and send to order queue
|
||||||
def process_order_queue
|
def process_order_queue
|
||||||
#Send to background job for processing
|
#Send to background job for processing
|
||||||
|
order = Order.find(self.id)
|
||||||
cup_status = `#{"sudo service cups status"}`
|
cup_status = `#{"sudo service cups status"}`
|
||||||
print_status = check_cup_status(cup_status)
|
print_status = check_cup_status(cup_status)
|
||||||
|
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||||
|
|
||||||
if print_status
|
if print_status
|
||||||
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
if !sidekiq.nil?
|
||||||
|
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
||||||
|
else
|
||||||
|
if order
|
||||||
|
oqs = OrderQueueStation.new
|
||||||
|
oqs.process_order(order, self.table_id)
|
||||||
|
end
|
||||||
|
assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
|
||||||
|
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||||
|
end
|
||||||
else
|
else
|
||||||
cup_start = `#{"sudo service cups start"}`
|
cup_start = `#{"sudo service cups start"}`
|
||||||
cup_status = `#{"sudo service cups status"}`
|
cup_status = `#{"sudo service cups status"}`
|
||||||
print_status = check_cup_status(cup_status)
|
print_status = check_cup_status(cup_status)
|
||||||
|
|
||||||
if print_status
|
if print_status
|
||||||
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
if !sidekiq.nil?
|
||||||
|
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
||||||
|
else
|
||||||
|
if order
|
||||||
|
oqs = OrderQueueStation.new
|
||||||
|
oqs.process_order(order, self.table_id)
|
||||||
|
end
|
||||||
|
assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
|
||||||
|
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||||
|
end
|
||||||
else
|
else
|
||||||
msg = ' Print Error ! Please contact to service'
|
msg = ' Print Error ! Please contact to service'
|
||||||
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
|
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
|
||||||
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
if !sidekiq.nil?
|
||||||
|
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
|
||||||
|
else
|
||||||
|
if order
|
||||||
|
oqs = OrderQueueStation.new
|
||||||
|
oqs.process_order(order, self.table_id)
|
||||||
|
end
|
||||||
|
assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
|
||||||
|
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -310,8 +338,18 @@ class Order < ApplicationRecord
|
|||||||
|
|
||||||
#Process order items and send to order queue
|
#Process order items and send to order queue
|
||||||
def self.pay_process_order_queue(id,table_id)
|
def self.pay_process_order_queue(id,table_id)
|
||||||
#Send to background job for processing
|
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||||
OrderQueueProcessorJob.perform_later(id, table_id)
|
if !sidekiq.nil?
|
||||||
|
OrderQueueProcessorJob.perform_later(id, table_id)
|
||||||
|
else
|
||||||
|
order = Order.find(id)
|
||||||
|
if order
|
||||||
|
oqs = OrderQueueStation.new
|
||||||
|
oqs.process_order(order, table_id)
|
||||||
|
end
|
||||||
|
assign_order = AssignedOrderItem.assigned_order_item_by_job(id)
|
||||||
|
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_cup_status(status)
|
def check_cup_status(status)
|
||||||
|
|||||||
2
app/models/receipt.rb
Normal file
2
app/models/receipt.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
class Receipt < ApplicationRecord
|
||||||
|
end
|
||||||
2
app/models/receipt_detail.rb
Normal file
2
app/models/receipt_detail.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
class ReceiptDetail < ApplicationRecord
|
||||||
|
end
|
||||||
@@ -2011,6 +2011,44 @@ end
|
|||||||
.group("bookings.booking_id")
|
.group("bookings.booking_id")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.all_receipts
|
||||||
|
query = Sale.select("sales.*, sale_payments.created_at as receipt_close_time,
|
||||||
|
case when (sale_audits.action='SALEPAYMENT') then sale_audits.remark else 0 end as remark,
|
||||||
|
case when (sale_taxes.tax_name='Service Charges') then sale_taxes.tax_payable_amount else 0 end as service_charges,
|
||||||
|
SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='visa') then sale_payments.payment_amount else 0 end) as visa_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='jcb') then sale_payments.payment_amount else 0 end) as jcb_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end) as credit_amount,
|
||||||
|
SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount,
|
||||||
|
SUM(case when (sale_items.status='foc') then sale_items.price else 0 end) as item_foc,
|
||||||
|
SUM(case when (sale_items.status='Discount') then sale_items.price else 0 end) as item_discount,
|
||||||
|
SUM(sale_items.qty) as qty,
|
||||||
|
sales.cashier_name as cashier_name,
|
||||||
|
surveys.child as child,
|
||||||
|
surveys.adult as adult")
|
||||||
|
.joins("join sale_payments on sale_payments.sale_id = sales.sale_id")
|
||||||
|
.joins("join sale_taxes on sale_taxes.sale_id = sales.sale_id")
|
||||||
|
.joins("join sale_items on sale_items.sale_id = sales.sale_id")
|
||||||
|
.joins("join sale_audits on sale_audits.sale_id = sales.sale_id")
|
||||||
|
.joins("left join surveys on surveys.receipt_no = sales.receipt_no")
|
||||||
|
|
||||||
|
query = query.where("sale_status != 'new' && sale_payments.payment_amount > 0")
|
||||||
|
.group("sale_id")
|
||||||
|
return query
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.all_receipt_details
|
||||||
|
query = SaleItem.select("sale_items.*, sale_payments.created_at as receipt_close_time,
|
||||||
|
sales.requested_at as requested_at, sales.receipt_no as receipt_no,sales.sale_id as s_id")
|
||||||
|
.joins("join sale_payments on sale_payments.sale_id = sale_items.sale_id")
|
||||||
|
.joins("join sales on sales.sale_id = sale_items.sale_id")
|
||||||
|
.group("sale_items.sale_item_id")
|
||||||
|
query = query.where("qty > 0 and sales.sale_status !='new'")
|
||||||
|
return query
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def generate_custom_id
|
def generate_custom_id
|
||||||
|
|||||||
192
app/views/oqs/home/index.html.erb
Executable file → Normal file
192
app/views/oqs/home/index.html.erb
Executable file → Normal file
@@ -1,137 +1,115 @@
|
|||||||
<!-- Column One -->
|
<!-- Column One -->
|
||||||
<div class="row clearfix">
|
<div class="row clearfix" style="margin-top:-50px !important">
|
||||||
<div class="col-lg-8 col-md-8 col-sm-8">
|
<div class="col-lg-11 col-md-11 col-sm-11">
|
||||||
<div class="body p-l-10">
|
<div class="body p-l-10">
|
||||||
<%= form_tag oqs_root_path, :method => :get do %>
|
|
||||||
<div class="row clearfix">
|
<div class="row clearfix">
|
||||||
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-12">
|
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-12">
|
||||||
<input type="text" name="filter" class="form-control" placeholder="Search">
|
<span class="hidden" id="oqs_active"></span>
|
||||||
|
<select class="form-control select oqs_click" name="oqs_id" id="oqs_id">
|
||||||
</div>
|
<option value="0" data-id="0">Processed</option>
|
||||||
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-12">
|
<% @queue_stations.each do |qsi| %>
|
||||||
<button type="submit" class="btn bg-blue waves-effect waves-effect">Search</button>
|
<% if qsi.is_active != false %>
|
||||||
|
<p class="hidden oqs-id"><%= qsi.id %></p>
|
||||||
|
<option value="<%= qsi.id %>" data-id="<%= qsi.id %>" style="padding:5px 20px !important;"> <%= qsi.station_name %></option>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
|
||||||
|
<span class="hidden" id="table_id"></span>
|
||||||
|
<select class="form-control select tables" name="table_id" id="tables">
|
||||||
|
<option value="">Select Table</option>
|
||||||
|
<% @tables.each do |table| %>
|
||||||
|
|
||||||
|
<option value="<%= table.id %>" data-id="<%= table.id %>"> <%= table.name %></option>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<!--
|
||||||
|
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
|
||||||
|
<span class="hidden" id="room_id"></span>
|
||||||
|
<select class="form-control select rooms" name="table_id" id="rooms">
|
||||||
|
<option value="">Select Room</option>
|
||||||
|
<% @rooms.each do |table| %>
|
||||||
|
|
||||||
|
<option value="<%= table.id %>" data-id="<%= table.id %>"> <%= table.name %></option>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</select>
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Nav tabs -->
|
<p class="hidden filter"><%= @filter %></p>
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<div class="card">
|
||||||
<!-- <li class="nav-item nav-search <%= @filter.to_s.length > 0? " " : "hide"%>">
|
<div class="card-block">
|
||||||
<a class="nav-link <%= @filter.to_s.length > 0? "active" : " "%>" data-toggle="tab" href="#search" role="tab">Searching .. <span class="badge badge-pill badge-default" id="completed_count"><%= @queue_completed_item.length %></span></a>
|
<div class="tab-content" id="custom-slimscroll" style="">
|
||||||
</li> -->
|
|
||||||
<li class="nav-item nav-completed">
|
|
||||||
<a class="nav-link active" data-toggle="tab" href="#completed" role="tab">Processed
|
|
||||||
<span class="badge bg-blue-grey" id="completed_count"><%= @queue_completed_item.length %></span></a>
|
|
||||||
</li>
|
|
||||||
<% # For Tab Disable for Station is inactive
|
|
||||||
status=""
|
|
||||||
i=0
|
|
||||||
@queue_stations.each do |qsi|
|
|
||||||
if qsi.is_active == false
|
|
||||||
status="disabled"
|
|
||||||
end %>
|
|
||||||
<li class="nav-item oqs_click" data-id="<%= qsi.id %>">
|
|
||||||
<p class="hidden oqs-id"><%= qsi.id %></p>
|
|
||||||
<a class="nav-link" data-id="<%= qsi.id %>" data-toggle="tab" href="" role="tab" <%= status %>>
|
|
||||||
<%= qsi.station_name %>
|
|
||||||
<% if @filter.nil? %>
|
|
||||||
<span class="badge bg-blue-grey oqs_count<%= i%> oqs_count" data-id="<%= qsi.id %>" id="completed_count">
|
|
||||||
<!-- <span class="badge badge-pill badge-default oqs_count<%= i%> oqs_count" data-id="<%= qsi.id %>"> --> <%= qsi.assigned_order_items.where("delivery_status=0 AND created_at >= '#{Time.now.beginning_of_day.utc}'").count %>
|
|
||||||
</span>
|
|
||||||
<%else%>
|
|
||||||
<span class="label-count badge bg-blue-grey" data-id="<%= qsi.id %>">
|
|
||||||
<% @count.each do |c|%>
|
|
||||||
<% if qsi.id == c.station_id %>
|
|
||||||
<%= c.total %>
|
|
||||||
<%end %>
|
|
||||||
<%end %>
|
|
||||||
</span>
|
|
||||||
<%end%>
|
|
||||||
<% if qsi.auto_print %>
|
|
||||||
<span>(ap)</span>
|
|
||||||
<% end %>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<% i+=1%>
|
|
||||||
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
<!-- Nav tabs - End -->
|
|
||||||
<p class="hidden filter"><%= @filter %></p>
|
|
||||||
|
|
||||||
<div class="tab-content" id="custom-slimscroll" style="">
|
|
||||||
<!--- Panel 0 - Completed -->
|
|
||||||
|
|
||||||
<div class="tab-pane in active" id="completed" role="tabpanel">
|
<div class="tab-pane in active" id="completed" role="tabpanel">
|
||||||
<div class="card-columns" style="padding-top:10px; column-gap: 1.2rem;">
|
<div class="card-columns" style="padding-top:10px; column-gap: 1.2rem;column-count: ;">
|
||||||
<%
|
<%
|
||||||
@queue_completed_item.each do |qid|
|
@queue_completed_item.each do |qid|
|
||||||
%>
|
%>
|
||||||
<div class="card queue_station" data-order-no="<%= qid.order_id %>">
|
<div class="card queue_station" data-order-no="<%= qid.order_id %>">
|
||||||
<div class="card-block">
|
<div class="card-block">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<%if qid.type.present?%>
|
<%if qid.type.present?%>
|
||||||
<span class="col-md-4 order-zone-type font-13"><%= qid.type %>-<%= qid.zone %></span>
|
<span class="col-md-4 order-zone-type font-13"><%= qid.type %>-<%= qid.zone %></span>
|
||||||
<%else%>
|
<%else%>
|
||||||
<span class="col-md-4 order-zone-type font-13"></span>
|
<span class="col-md-4 order-zone-type font-13"></span>
|
||||||
<%end%>
|
<%end%>
|
||||||
|
|
||||||
<span class="order-zone hidden font-13"><%= qid.zone %></span>
|
<span class="order-zone hidden font-13"><%= qid.zone %></span>
|
||||||
<span class="col-md-8"><small class="float-right font-13"><%= qid.order_id %></small></span>
|
<span class="col-md-8"><small class="float-right font-13"><%= qid.order_id %></small></span>
|
||||||
</div>
|
</div>
|
||||||
<p class="m-b--10">
|
<p class="m-b--10">
|
||||||
<span class="order-item font-16">
|
<span class="order-item font-16">
|
||||||
<%= qid.item_name %>
|
<%= qid.item_name %>
|
||||||
</span> [x
|
</span> [x
|
||||||
<span class="order-qty">
|
<span class="order-qty">
|
||||||
<%= qid.qty %>
|
<%= qid.qty %>
|
||||||
</span> ]
|
</span> ]
|
||||||
<% if !qid.set_menu_items.nil? %>
|
<% if !qid.set_menu_items.nil? %>
|
||||||
<% qid.set_menu_items.each do |item_instance|%>
|
<% qid.set_menu_items.each do |item_instance|%>
|
||||||
<br><span class="font-12">
|
<br><span class="font-12">
|
||||||
<%= item_instance %>
|
<%= item_instance %>
|
||||||
</span>
|
</span>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
</p>
|
||||||
</p>
|
|
||||||
|
|
||||||
<br/><p class="card-text item-options"><%= qid.options == "[]"? "" : qid.options %></p>
|
<br/><p class="card-text item-options"><%= qid.options == "[]"? "" : qid.options %></p>
|
||||||
|
|
||||||
<span class="card-text">
|
<span class="card-text">
|
||||||
<span class="text-muted">Order at -
|
<span class="text-muted">Order at -
|
||||||
<span class="order-at font-13">
|
<span class="order-at font-13">
|
||||||
<%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %>
|
<%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %>
|
||||||
</span> <br>
|
</span> <br>
|
||||||
Order By - <span class="order-by font-13">
|
Order By - <span class="order-by font-13">
|
||||||
<%= qid.item_order_by %>
|
<%= qid.item_order_by %>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
|
||||||
|
|
||||||
<p class="hidden order-status">completed</p>
|
<p class="hidden order-status">completed</p>
|
||||||
<p class="hidden order-customer"><%= qid.customer_name %></p>
|
<p class="hidden order-customer"><%= qid.customer_name %></p>
|
||||||
<p class="hidden assigned-order-item"><%= qid.assigned_order_item_id %></p>
|
<p class="hidden assigned-order-item"><%= qid.assigned_order_item_id %></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<%
|
<% end %>
|
||||||
end
|
|
||||||
%>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- End Panel 0 - Completed -->
|
|
||||||
<!--- Order Items -->
|
|
||||||
<div class="card-columns oqs_append" id="oqs_container" style="padding-top:10px; column-gap: 1.2rem;">
|
<div class="card-columns oqs_append" id="oqs_container" style="padding-top:10px; column-gap: 1.2rem;">
|
||||||
</div>
|
</div>
|
||||||
<!--- end of Items-->
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Column Two -->
|
<!-- Column Two -->
|
||||||
<div class="col-lg-3 col-md-3 col-sm-3">
|
<!-- <div class="col-lg-3 col-md-3 col-sm-3">
|
||||||
<div class="card" >
|
<div class="card" >
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div><strong id="order-title">ORDER DETAILS</strong></div>
|
<div><strong id="order-title">ORDER DETAILS</strong></div>
|
||||||
@@ -143,20 +121,18 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th style="width:33%; text-align:">Order By</th>
|
<th style="width:33%; text-align:">Order By</th>
|
||||||
<th style="width:33%; text-align:">Order At</th>
|
<th style="width:33%; text-align:">Order At</th>
|
||||||
<!-- <th style="width:33%; text-align:">Customer</th> -->
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="order-by" style="width:33%; text-align:"></td>
|
<td id="order-by" style="width:33%; text-align:"></td>
|
||||||
<td id="order-at" style="width:33%; text-align:"></td>
|
<td id="order-at" style="width:33%; text-align:"></td>
|
||||||
<!-- <td id="order-customer" style="width:33%; text-align:"></td> -->
|
</tr> -->
|
||||||
</tr>
|
<!-- <tr>
|
||||||
<tr>
|
|
||||||
<td><strong class="hidden cus_name">Customer</strong></td>
|
<td><strong class="hidden cus_name">Customer</strong></td>
|
||||||
<td id="order-customer" colspan="2"></td>
|
<td id="order-customer" colspan="2"></td>
|
||||||
</tr>
|
</tr> -->
|
||||||
</tbody>
|
<!-- </tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-text" id="order-detail-slimscroll" style="min-height:; max-height:; overflow:">
|
<div class="card-text" id="order-detail-slimscroll" style="min-height:; max-height:; overflow:">
|
||||||
@@ -168,17 +144,17 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<!-- Bind With JS -->
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
<!-- Column Three -->
|
<!-- Column Three -->
|
||||||
<div class="col-lg-1 col-md-1 col-sm-1">
|
<div class="col-lg-1 col-md-1 col-sm-1">
|
||||||
<!-- OQS Buttons -->
|
<!-- OQS Buttons -->
|
||||||
|
<br>
|
||||||
<a href="<%= dashboard_path %>" class="btn btn-sm btn-block btn-default waves-effect" role="button" aria-haspopup="true"><i class="material-icons">reply</i> Back </a>
|
<a href="<%= dashboard_path %>" class="btn btn-sm btn-block btn-default waves-effect" role="button" aria-haspopup="true"><i class="material-icons">reply</i> Back </a>
|
||||||
<% if ENV["SERVER_MODE"] != "cloud" %>
|
<% if ENV["SERVER_MODE"] != "cloud" %>
|
||||||
<button type="button" title="Print Order Item" id="print_order_item" class="btn bg-blue btn-block btn-lg waves-effect">Print</a>
|
<button type="button" title="Print Order Item" id="print_order_item" class="btn bg-blue btn-block btn-lg waves-effect">Print</a>
|
||||||
|
|||||||
196
app/views/oqs/home/index_quechange_backup.html.erb
Executable file
196
app/views/oqs/home/index_quechange_backup.html.erb
Executable file
@@ -0,0 +1,196 @@
|
|||||||
|
<!-- Column One -->
|
||||||
|
<div class="row clearfix">
|
||||||
|
<div class="col-lg-8 col-md-8 col-sm-8">
|
||||||
|
<div class="body p-l-10">
|
||||||
|
<%= form_tag oqs_root_path, :method => :get do %>
|
||||||
|
<div class="row clearfix">
|
||||||
|
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-12">
|
||||||
|
<input type="text" name="filter" class="form-control" placeholder="Search">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-12">
|
||||||
|
<button type="submit" class="btn bg-blue waves-effect waves-effect">Search</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Nav tabs -->
|
||||||
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
|
<!-- <li class="nav-item nav-search <%= @filter.to_s.length > 0? " " : "hide"%>">
|
||||||
|
<a class="nav-link <%= @filter.to_s.length > 0? "active" : " "%>" data-toggle="tab" href="#search" role="tab">Searching .. <span class="badge badge-pill badge-default" id="completed_count"><%= @queue_completed_item.length %></span></a>
|
||||||
|
</li> -->
|
||||||
|
<li class="nav-item nav-completed">
|
||||||
|
<a class="nav-link active" data-toggle="tab" href="#completed" role="tab">Processed
|
||||||
|
<span class="badge bg-blue-grey" id="completed_count"><%= @queue_completed_item.length %></span></a>
|
||||||
|
</li>
|
||||||
|
<% # For Tab Disable for Station is inactive
|
||||||
|
status=""
|
||||||
|
i=0
|
||||||
|
@queue_stations.each do |qsi|
|
||||||
|
if qsi.is_active == false
|
||||||
|
status="disabled"
|
||||||
|
end %>
|
||||||
|
<li class="nav-item oqs_click" data-id="<%= qsi.id %>">
|
||||||
|
<p class="hidden oqs-id"><%= qsi.id %></p>
|
||||||
|
<a class="nav-link" data-id="<%= qsi.id %>" data-toggle="tab" href="" role="tab" <%= status %>>
|
||||||
|
<%= qsi.station_name %>
|
||||||
|
<% if @filter.nil? %>
|
||||||
|
<span class="badge bg-blue-grey oqs_count<%= i%> oqs_count" data-id="<%= qsi.id %>" id="completed_count">
|
||||||
|
<!-- <span class="badge badge-pill badge-default oqs_count<%= i%> oqs_count" data-id="<%= qsi.id %>"> --> <%= qsi.assigned_order_items.where("delivery_status=0 AND created_at >= '#{Time.now.beginning_of_day.utc}'").count %>
|
||||||
|
</span>
|
||||||
|
<%else%>
|
||||||
|
<span class="label-count badge bg-blue-grey" data-id="<%= qsi.id %>">
|
||||||
|
<% @count.each do |c|%>
|
||||||
|
<% if qsi.id == c.station_id %>
|
||||||
|
<%= c.total %>
|
||||||
|
<%end %>
|
||||||
|
<%end %>
|
||||||
|
</span>
|
||||||
|
<%end%>
|
||||||
|
<% if qsi.auto_print %>
|
||||||
|
<span>(ap)</span>
|
||||||
|
<% end %>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<% i+=1%>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<!-- Nav tabs - End -->
|
||||||
|
<p class="hidden filter"><%= @filter %></p>
|
||||||
|
|
||||||
|
<div class="tab-content" id="custom-slimscroll" style="">
|
||||||
|
<!--- Panel 0 - Completed -->
|
||||||
|
|
||||||
|
<div class="tab-pane in active" id="completed" role="tabpanel">
|
||||||
|
<div class="card-columns" style="padding-top:10px; column-gap: 1.2rem;">
|
||||||
|
<%
|
||||||
|
@queue_completed_item.each do |qid|
|
||||||
|
%>
|
||||||
|
<div class="card queue_station" data-order-no="<%= qid.order_id %>">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="row">
|
||||||
|
<%if qid.type.present?%>
|
||||||
|
<span class="col-md-4 order-zone-type font-13"><%= qid.type %>-<%= qid.zone %></span>
|
||||||
|
<%else%>
|
||||||
|
<span class="col-md-4 order-zone-type font-13"></span>
|
||||||
|
<%end%>
|
||||||
|
|
||||||
|
<span class="order-zone hidden font-13"><%= qid.zone %></span>
|
||||||
|
<span class="col-md-8"><small class="float-right font-13"><%= qid.order_id %></small></span>
|
||||||
|
</div>
|
||||||
|
<p class="m-b--10">
|
||||||
|
<span class="order-item font-16">
|
||||||
|
<%= qid.item_name %>
|
||||||
|
</span> [x
|
||||||
|
<span class="order-qty">
|
||||||
|
<%= qid.qty %>
|
||||||
|
</span> ]
|
||||||
|
<% if !qid.set_menu_items.nil? %>
|
||||||
|
<% qid.set_menu_items.each do |item_instance|%>
|
||||||
|
<br><span class="font-12">
|
||||||
|
<%= item_instance %>
|
||||||
|
</span>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br/><p class="card-text item-options"><%= qid.options == "[]"? "" : qid.options %></p>
|
||||||
|
|
||||||
|
<span class="card-text">
|
||||||
|
<span class="text-muted">Order at -
|
||||||
|
<span class="order-at font-13">
|
||||||
|
<%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %>
|
||||||
|
</span> <br>
|
||||||
|
Order By - <span class="order-by font-13">
|
||||||
|
<%= qid.item_order_by %>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<p class="hidden order-status">completed</p>
|
||||||
|
<p class="hidden order-customer"><%= qid.customer_name %></p>
|
||||||
|
<p class="hidden assigned-order-item"><%= qid.assigned_order_item_id %></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- End Panel 0 - Completed -->
|
||||||
|
<!--- Order Items -->
|
||||||
|
<div class="card-columns oqs_append" id="oqs_container" style="padding-top:10px; column-gap: 1.2rem;">
|
||||||
|
</div>
|
||||||
|
<!--- end of Items-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Column Two -->
|
||||||
|
<div class="col-lg-3 col-md-3 col-sm-3">
|
||||||
|
<div class="card" >
|
||||||
|
<div class="card-header">
|
||||||
|
<div><strong id="order-title">ORDER DETAILS</strong></div>
|
||||||
|
</div>
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="card-title">
|
||||||
|
<table class="">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width:33%; text-align:">Order By</th>
|
||||||
|
<th style="width:33%; text-align:">Order At</th>
|
||||||
|
<!-- <th style="width:33%; text-align:">Customer</th> -->
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td id="order-by" style="width:33%; text-align:"></td>
|
||||||
|
<td id="order-at" style="width:33%; text-align:"></td>
|
||||||
|
<!-- <td id="order-customer" style="width:33%; text-align:"></td> -->
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong class="hidden cus_name">Customer</strong></td>
|
||||||
|
<td id="order-customer" colspan="2"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card-text" id="order-detail-slimscroll" style="min-height:; max-height:; overflow:">
|
||||||
|
<table class="table" id="oqs-order-details-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width:80%; text-align:left">Items</th>
|
||||||
|
<th style="width:20%; text-align:right">QTY</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- Bind With JS -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Column Three -->
|
||||||
|
<div class="col-lg-1 col-md-1 col-sm-1">
|
||||||
|
<!-- OQS Buttons -->
|
||||||
|
<a href="<%= dashboard_path %>" class="btn btn-sm btn-block btn-default waves-effect" role="button" aria-haspopup="true"><i class="material-icons">reply</i> Back </a>
|
||||||
|
<% if ENV["SERVER_MODE"] != "cloud" %>
|
||||||
|
<button type="button" title="Print Order Item" id="print_order_item" class="btn bg-blue btn-block btn-lg waves-effect">Print</a>
|
||||||
|
<button type="button" class="btn bg-blue btn-block btn-lg waves-effect" id="print_order_summary">Print <br/>Order<br/>Summary</button>
|
||||||
|
<%end%>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).on('turbolinks:load', function() {
|
||||||
|
$('#back').on('click', function () {
|
||||||
|
window.location.href = '/dashboard';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
42
db/migrate/20180306044939_create_receipts.rb
Normal file
42
db/migrate/20180306044939_create_receipts.rb
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
class CreateReceipts < ActiveRecord::Migration[5.1]
|
||||||
|
def change
|
||||||
|
create_table :receipts do |t|
|
||||||
|
t.string :client_code, :limit => 16, :null => false
|
||||||
|
t.string :client_name, :null => false
|
||||||
|
t.string :shop_code, :limit => 16, :null => false
|
||||||
|
t.string :shop_name, :null => false
|
||||||
|
t.integer :receipt_no, :limit => 8, :null => false
|
||||||
|
t.datetime :transaction_time, :null => false
|
||||||
|
t.datetime :receipt_open_time, :null => false
|
||||||
|
t.datetime :receipt_close_time, :null => false
|
||||||
|
t.decimal :gross_sales, :null => false, :default => 0
|
||||||
|
t.decimal :discount_amount, :null => false, :default => 0
|
||||||
|
t.decimal :sales, :null => false, :default => 0
|
||||||
|
t.decimal :tax_amount, :null => false, :default => 0
|
||||||
|
t.decimal :service_charges, :null => false, :default => 0
|
||||||
|
t.decimal :net_sales, :null => false, :default => 0
|
||||||
|
t.decimal :credit_card_sales, :null => false, :default => 0
|
||||||
|
t.decimal :voucher_sales, :null => false, :default => 0
|
||||||
|
t.decimal :foc_amount, :null => false, :default => 0
|
||||||
|
t.decimal :staff_meal_amount, :null => false, :default => 0
|
||||||
|
t.decimal :rounding_amount, :null => false, :default => 0
|
||||||
|
t.decimal :raw_wastage_amount, :null => false, :default => 0
|
||||||
|
t.decimal :semi_wastage_amount, :null => false, :default => 0
|
||||||
|
t.decimal :wastage_amount, :null => false, :default => 0
|
||||||
|
t.decimal :spoilage_amount, :null => false, :default => 0
|
||||||
|
t.decimal :sampling_amount, :null => false, :default => 0
|
||||||
|
t.integer :qty, :null => false, :default => 0
|
||||||
|
t.integer :no_of_pax, :null => false, :default => 0
|
||||||
|
t.integer :no_of_adult, :null => false, :default => 0
|
||||||
|
t.integer :no_of_child, :null => false, :default => 0
|
||||||
|
t.string :terminal_id, :null => false
|
||||||
|
t.string :employee_code, :limit => 4, :null => false
|
||||||
|
t.string :employee_name, :null => false
|
||||||
|
t.boolean :is_valid, :null => false, :default => false
|
||||||
|
t.boolean :overing, :null => false, :default => false
|
||||||
|
t.boolean :cancle, :null => false, :default => false
|
||||||
|
t.text :remarks
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
43
db/migrate/20180306045018_create_receipt_details.rb
Normal file
43
db/migrate/20180306045018_create_receipt_details.rb
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
class CreateReceiptDetails < ActiveRecord::Migration[5.1]
|
||||||
|
def change
|
||||||
|
create_table :receipt_details do |t|
|
||||||
|
t.string :client_code, :null => false
|
||||||
|
t.string :client_name, :null => false
|
||||||
|
t.string :shop_code, :null => false
|
||||||
|
t.string :shop_name, :null => false
|
||||||
|
t.string :receipt_no, :null => false
|
||||||
|
t.datetime :receipt_date, :null => false
|
||||||
|
t.datetime :transaction_date, :null => false
|
||||||
|
t.integer :item_sequence, :null => false
|
||||||
|
t.string :category_code, :null => false
|
||||||
|
t.string :category_name, :null => false
|
||||||
|
t.string :sub_category_code, :null => false
|
||||||
|
t.string :sub_category_name, :null => false
|
||||||
|
t.string :report_group_code, :null => false
|
||||||
|
t.string :report_group_name, :null => false
|
||||||
|
t.string :item_code, :null => false
|
||||||
|
t.string :item_name, :null => false
|
||||||
|
t.integer :qty, :null => false, :default => 0
|
||||||
|
t.string :transaction_type, :null => false
|
||||||
|
t.decimal :gross_sales, :null => false, :default => 0
|
||||||
|
t.string :discount_code, :null => false
|
||||||
|
t.decimal :discount_amount, :null => false, :default => 0
|
||||||
|
t.decimal :sales, :null => false, :default => 0
|
||||||
|
t.decimal :tax_amount, :null => false, :default => 0
|
||||||
|
t.decimal :service_charges, :null => false, :default => 0
|
||||||
|
t.decimal :net_sales, :null => false, :default => 0
|
||||||
|
t.boolean :is_foc, :null => false, :default => false
|
||||||
|
t.boolean :is_set_item, :null => false, :default => false
|
||||||
|
t.boolean :is_staff_meal, :null => false, :default => false
|
||||||
|
t.boolean :is_raw_wastage, :null => false, :default => false
|
||||||
|
t.boolean :is_semi_wastage, :null => false, :default => false
|
||||||
|
t.boolean :is_wastage, :null => false, :default => false
|
||||||
|
t.boolean :is_spoilage, :null => false, :default => false
|
||||||
|
t.boolean :is_sampling, :null => false, :default => false
|
||||||
|
t.boolean :tax_able, :null => false, :default => false
|
||||||
|
t.boolean :is_void, :null => false, :default => false
|
||||||
|
t.text :remarks
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -89,6 +89,10 @@ delete from sym_node;
|
|||||||
|
|
||||||
# Create Trigger for Setting Channel
|
# Create Trigger for Setting Channel
|
||||||
|
|
||||||
|
insert into sym_trigger
|
||||||
|
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
||||||
|
values('seed_generators','seed_generators','setting',current_timestamp,current_timestamp);
|
||||||
|
|
||||||
insert into sym_trigger
|
insert into sym_trigger
|
||||||
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
||||||
values('lookups','lookups','setting',current_timestamp,current_timestamp);
|
values('lookups','lookups','setting',current_timestamp,current_timestamp);
|
||||||
@@ -119,11 +123,11 @@ delete from sym_node;
|
|||||||
|
|
||||||
insert into sym_trigger
|
insert into sym_trigger
|
||||||
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
||||||
values('tax_profiles','customers','setting',current_timestamp,current_timestamp);
|
values('tax_profiles','tax_profiles','setting',current_timestamp,current_timestamp);
|
||||||
|
|
||||||
insert into sym_trigger
|
insert into sym_trigger
|
||||||
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
|
||||||
values('display_images','customers','setting',current_timestamp,current_timestamp);
|
values('display_images','display_images','setting',current_timestamp,current_timestamp);
|
||||||
|
|
||||||
# Create Trigger for Dining Channel
|
# Create Trigger for Dining Channel
|
||||||
|
|
||||||
@@ -339,6 +343,11 @@ delete from sym_node;
|
|||||||
# Add triggers for tables with router
|
# Add triggers for tables with router
|
||||||
|
|
||||||
# Setting Channel # From cloud to Master
|
# Setting Channel # From cloud to Master
|
||||||
|
|
||||||
|
insert into sym_trigger_router
|
||||||
|
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||||
|
values('seed_generators','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||||
|
|
||||||
insert into sym_trigger_router
|
insert into sym_trigger_router
|
||||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||||
values('lookups','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
values('lookups','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||||
@@ -376,6 +385,11 @@ delete from sym_node;
|
|||||||
values('display_images','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
values('display_images','cloud_2_sx', 100, current_timestamp, current_timestamp);
|
||||||
|
|
||||||
# Setting Channel # From Master to cloud
|
# Setting Channel # From Master to cloud
|
||||||
|
|
||||||
|
insert into sym_trigger_router
|
||||||
|
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||||
|
values('seed_generators','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||||
|
|
||||||
insert into sym_trigger_router
|
insert into sym_trigger_router
|
||||||
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
(trigger_id,router_id,initial_load_order,last_update_time,create_time)
|
||||||
values('lookups','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
values('lookups','sx_2_cloud', 100, current_timestamp, current_timestamp);
|
||||||
|
|||||||
238
lib/tasks/receipt.rake
Normal file
238
lib/tasks/receipt.rake
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
namespace :consolidate do
|
||||||
|
desc "Receipt"
|
||||||
|
task :receipt => :environment do
|
||||||
|
Receipt.delete_all
|
||||||
|
sales = Sale.all_receipts
|
||||||
|
|
||||||
|
shop = Shop.find(1)
|
||||||
|
sales.each do |sale|
|
||||||
|
receipt = Receipt.new
|
||||||
|
receipt.client_code = shop.id
|
||||||
|
receipt.client_name = shop.id
|
||||||
|
receipt.shop_code = shop.id
|
||||||
|
receipt.shop_name = shop.id
|
||||||
|
receipt.receipt_no = sale.receipt_no
|
||||||
|
receipt.transaction_time = sale.requested_at #requet-at
|
||||||
|
receipt.receipt_open_time = sale.requested_at #before disco/after tax /after/ser_char
|
||||||
|
receipt.receipt_close_time = sale.receipt_close_time
|
||||||
|
receipt.gross_sales = sale.total_amount + sale.total_tax #before disco/after tax /after/ser_char
|
||||||
|
receipt.discount_amount = sale.total_discount + sale.item_discount
|
||||||
|
receipt.sales = sale.grand_total #after disco/after tax /after/ser_char /no roundingadn
|
||||||
|
receipt.tax_amount = sale.total_tax
|
||||||
|
receipt.service_charges = sale.service_charges
|
||||||
|
receipt.net_sales = sale.total_amount + sale.total_discount #after disco/before tax / no rounding
|
||||||
|
receipt.credit_card_sales = sale.mpu_amount + sale.master_amount + sale.visa_amount + sale.jcb_amount + sale.unionpay_amount + sale.credit_amount #
|
||||||
|
receipt.voucher_sales = 0
|
||||||
|
receipt.foc_amount = sale.foc_amount + sale.item_foc
|
||||||
|
receipt.staff_meal_amount = 0
|
||||||
|
receipt.rounding_amount = sale.rounding_adjustment
|
||||||
|
receipt.raw_wastage_amount = 0
|
||||||
|
receipt.semi_wastage_amount = 0
|
||||||
|
receipt.wastage_amount = 0
|
||||||
|
receipt.spoilage_amount = 0
|
||||||
|
receipt.sampling_amount = 0
|
||||||
|
receipt.qty = sale.qty
|
||||||
|
receipt.no_of_pax = 0
|
||||||
|
receipt.no_of_adult = (sale.adult) ? sale.adult : 0
|
||||||
|
receipt.no_of_child = (sale.child) ? sale.child : 0
|
||||||
|
receipt.terminal_id = ShiftSale.find(sale.shift_sale_id).cashier_terminal_id
|
||||||
|
receipt.employee_code = Employee.find(sale.cashier_id).emp_id
|
||||||
|
receipt.employee_name = sale.cashier_name
|
||||||
|
receipt.is_valid = (sale.payment_status=="void") ? false : true #void is false
|
||||||
|
receipt.overing =false
|
||||||
|
receipt.cancle = (sale.payment_status=="void") ? false : true # void is cancel
|
||||||
|
receipt.remarks = sale.remark
|
||||||
|
receipt.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Receipt Detail"
|
||||||
|
task :receipt_detail => :environment do
|
||||||
|
ReceiptDetail.delete_all
|
||||||
|
sales = Sale.all_receipt_details
|
||||||
|
|
||||||
|
shop = Shop.find(1)
|
||||||
|
|
||||||
|
sale_id = ''
|
||||||
|
count = 0
|
||||||
|
@total_qty = 0
|
||||||
|
@total_gross_sales = 0
|
||||||
|
@total_sales = 0
|
||||||
|
@total_net_sales = 0
|
||||||
|
@z =1
|
||||||
|
@item_sequence = 1
|
||||||
|
sale_count = sales.to_a.count
|
||||||
|
sales.each do |sale|
|
||||||
|
|
||||||
|
if sale.qty > 0
|
||||||
|
|
||||||
|
if sale.item_instance_code !=nil
|
||||||
|
menu_category = MenuCategory.find(MenuItem.find_by_item_code(sale.product_code).menu_category_id)
|
||||||
|
name = menu_category.name
|
||||||
|
code = menu_category.code
|
||||||
|
menu_item = MenuItem.find_by_item_code(sale.product_code)
|
||||||
|
menu_name = menu_item.name
|
||||||
|
menu_code = menu_item.item_code
|
||||||
|
menu_type = menu_item.type
|
||||||
|
end
|
||||||
|
if sale.product_code == "Other Charges" && sale.status == "Other Charges"
|
||||||
|
code = sale.product_code
|
||||||
|
name = sale.product_code
|
||||||
|
menu_name = sale.product_code
|
||||||
|
menu_code = sale.product_code
|
||||||
|
menu_type = sale.product_code
|
||||||
|
end
|
||||||
|
|
||||||
|
@receipt_no = sale.receipt_no
|
||||||
|
@requested_at = sale.requested_at
|
||||||
|
|
||||||
|
if sale_id == sale.sale_id || count == 0 || @z ==0
|
||||||
|
@total_qty += sale.qty
|
||||||
|
@total_gross_sales += sale.price
|
||||||
|
@total_sales += sale.price
|
||||||
|
@total_net_sales += sale.taxable_price
|
||||||
|
end
|
||||||
|
|
||||||
|
if sale_id != sale.sale_id && count !=0
|
||||||
|
|
||||||
|
receipt = ReceiptDetail.new
|
||||||
|
receipt.client_code = shop.id
|
||||||
|
receipt.client_name = shop.id
|
||||||
|
receipt.shop_code = shop.id
|
||||||
|
receipt.shop_name = shop.id
|
||||||
|
receipt.receipt_no = @receipt_no
|
||||||
|
receipt.receipt_date = @requested_at #requet-at
|
||||||
|
receipt.transaction_date = @requested_at #before disco/after tax /after/ser_char
|
||||||
|
receipt.item_sequence = @item_sequence
|
||||||
|
receipt.category_code = ''
|
||||||
|
receipt.category_name = ''
|
||||||
|
receipt.sub_category_code = 0
|
||||||
|
receipt.sub_category_name = 0
|
||||||
|
receipt.report_group_code = 0
|
||||||
|
receipt.report_group_name = 0
|
||||||
|
receipt.item_code = ''
|
||||||
|
receipt.item_name = ''
|
||||||
|
receipt.qty = @total_qty
|
||||||
|
receipt.transaction_type = "Tender"
|
||||||
|
receipt.gross_sales = @total_gross_sales
|
||||||
|
receipt.discount_code = ''
|
||||||
|
receipt.discount_amount = 0
|
||||||
|
receipt.sales = @total_sales
|
||||||
|
receipt.tax_amount = 0
|
||||||
|
receipt.service_charges = 0
|
||||||
|
receipt.net_sales = @total_net_sales
|
||||||
|
receipt.is_set_item = false
|
||||||
|
receipt.is_foc = false
|
||||||
|
receipt.is_staff_meal = false
|
||||||
|
receipt.is_raw_wastage = false
|
||||||
|
receipt.is_semi_wastage = false
|
||||||
|
receipt.is_wastage = false
|
||||||
|
receipt.is_spoilage = false
|
||||||
|
receipt.is_sampling = false
|
||||||
|
receipt.tax_able = false
|
||||||
|
receipt.is_void = false
|
||||||
|
receipt.remarks = ""
|
||||||
|
receipt.save
|
||||||
|
@type = "Tender"
|
||||||
|
@item_sequence = 1
|
||||||
|
@total_qty = 0
|
||||||
|
@total_gross_sales = 0
|
||||||
|
@total_sales = 0
|
||||||
|
@total_net_sales = 0
|
||||||
|
@z = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
discount_amount = (sale.status=="Discount") ? sale.price : 0
|
||||||
|
receipt = ReceiptDetail.new
|
||||||
|
receipt.client_code = shop.id
|
||||||
|
receipt.client_name = shop.id
|
||||||
|
receipt.shop_code = shop.id
|
||||||
|
receipt.shop_name = shop.id
|
||||||
|
receipt.receipt_no = sale.receipt_no
|
||||||
|
receipt.receipt_date = sale.requested_at #requet-at
|
||||||
|
receipt.transaction_date = sale.requested_at #before disco/after tax /after/ser_char
|
||||||
|
receipt.item_sequence = @item_sequence
|
||||||
|
receipt.category_code = name
|
||||||
|
receipt.category_name = code
|
||||||
|
receipt.sub_category_code = 0
|
||||||
|
receipt.sub_category_name = 0
|
||||||
|
receipt.report_group_code = 0
|
||||||
|
receipt.report_group_name = 0
|
||||||
|
receipt.item_code = menu_name
|
||||||
|
receipt.item_name = menu_code
|
||||||
|
receipt.qty = sale.qty
|
||||||
|
receipt.transaction_type = (sale.status==nil) ? "Sales" : sale.status
|
||||||
|
receipt.gross_sales = sale.price
|
||||||
|
receipt.discount_code = sale.sale_item_id
|
||||||
|
receipt.discount_amount = discount_amount
|
||||||
|
receipt.sales = sale.price
|
||||||
|
receipt.tax_amount = 0
|
||||||
|
receipt.service_charges = 0
|
||||||
|
receipt.net_sales = sale.taxable_price
|
||||||
|
receipt.is_set_item = (menu_type=="SetMenuItem")? true : false
|
||||||
|
receipt.is_foc = (sale.status=="foc") ? true : false
|
||||||
|
receipt.is_staff_meal = false
|
||||||
|
receipt.is_raw_wastage = false
|
||||||
|
receipt.is_semi_wastage = false
|
||||||
|
receipt.is_wastage = false
|
||||||
|
receipt.is_spoilage = false
|
||||||
|
receipt.is_sampling = false
|
||||||
|
receipt.tax_able = sale.is_taxable
|
||||||
|
receipt.is_void = (sale.status=="void")? true : false
|
||||||
|
receipt.remarks = sale.remark
|
||||||
|
receipt.save
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
@z += 1
|
||||||
|
|
||||||
|
|
||||||
|
count += 1
|
||||||
|
@item_sequence += 1
|
||||||
|
sale_id = sale.sale_id
|
||||||
|
end
|
||||||
|
|
||||||
|
if count == sale_count
|
||||||
|
receipt = ReceiptDetail.new
|
||||||
|
receipt.client_code = shop.id
|
||||||
|
receipt.client_name = shop.id
|
||||||
|
receipt.shop_code = shop.id
|
||||||
|
receipt.shop_name = shop.id
|
||||||
|
receipt.receipt_no = @receipt_no
|
||||||
|
receipt.receipt_date = @requested_at #requet-at
|
||||||
|
receipt.transaction_date = @requested_at #before disco/after tax /after/ser_char
|
||||||
|
receipt.item_sequence = @item_sequence
|
||||||
|
receipt.category_code = ''
|
||||||
|
receipt.category_name = ''
|
||||||
|
receipt.sub_category_code = 0
|
||||||
|
receipt.sub_category_name = 0
|
||||||
|
receipt.report_group_code = 0
|
||||||
|
receipt.report_group_name = 0
|
||||||
|
receipt.item_code = ''
|
||||||
|
receipt.item_name = ''
|
||||||
|
receipt.qty = @total_qty
|
||||||
|
receipt.transaction_type = "Tender"
|
||||||
|
receipt.gross_sales = @total_gross_sales
|
||||||
|
receipt.discount_code = ''
|
||||||
|
receipt.discount_amount = 0
|
||||||
|
receipt.sales = @total_sales
|
||||||
|
receipt.tax_amount = 0
|
||||||
|
receipt.service_charges = 0
|
||||||
|
receipt.net_sales = @total_net_sales
|
||||||
|
receipt.is_set_item = false
|
||||||
|
receipt.is_foc = false
|
||||||
|
receipt.is_staff_meal = false
|
||||||
|
receipt.is_raw_wastage = false
|
||||||
|
receipt.is_semi_wastage = false
|
||||||
|
receipt.is_wastage = false
|
||||||
|
receipt.is_spoilage = false
|
||||||
|
receipt.is_sampling = false
|
||||||
|
receipt.tax_able = false
|
||||||
|
receipt.is_void = false
|
||||||
|
receipt.remarks = ""
|
||||||
|
receipt.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
5
spec/models/receipt_detail_spec.rb
Normal file
5
spec/models/receipt_detail_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe ReceiptDetail, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
5
spec/models/receipt_spec.rb
Normal file
5
spec/models/receipt_spec.rb
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Receipt, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user