Pull from master

This commit is contained in:
San Wai Lwin
2018-05-22 13:26:23 +06:30
parent 574f320dfd
commit f1733d9f06
71 changed files with 1151 additions and 726 deletions

View File

@@ -200,6 +200,12 @@ Add Feature for Order and Reservation
** '0' means can not use order reservation and '1' means can use order reservation **
=> settings/lookups => { type:order_reservation, name: OrderReservation, value:'{0 or 1}' }
For Price 0 in receipt bill
2) settings/lookups => { type:show_price, name:Shoe Price, value:1 }
For Price 0 in receipt bill
2) settings/lookups => { type:order_by, name:Order By, value:name }
* ToDo list
1. Migration

View File

@@ -119,7 +119,6 @@ $(function() {
// $(".menu_sub_category").on("click", function(){
$('.sub_category_list').addClass("hidden");
var menu_id = $(this).attr("data-id");
console.log(menu_id);
var url = "get_menu_category/"+menu_id;
show_menu_item_list(url,menu_id);
});
@@ -1092,7 +1091,12 @@ $(function() {
if (type == true) {
var table_type = $('#table_id').find("option:selected").data('type');
var table_id = $('#table_id').val();
if(window.location.href.includes("modify_order")){
var link_url = window.location.href.split("/");
window.location.href = "/origami/quick_service/pending_order/"+link_url[link_url.length - 1];
}else{
window.location.href = "/origami/dashboard";
}
}else{
var table_type = $('#table_type').text();
var table_id = $('#table_id').text();

View File

@@ -6,6 +6,10 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from)
{
table = data.table
time = data.time
@@ -69,5 +73,6 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', {
}
//end Notificaiotn message
}
}
});

View File

@@ -6,11 +6,14 @@ App.checkin = App.cable.subscriptions.create('CheckInBookingChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
if($('.table_'+data.table.id).hasClass('green')){
$('.table_'+data.table.id).removeClass('green');
$('.table_'+data.table.id).addClass('blue');
}
$('.new_text_'+data.table.id).removeClass('hide');
}
}
});

View File

@@ -4,6 +4,8 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
var order = data.data;
var shop_code = data.shop_code;
if(order.length > 0){
@@ -17,7 +19,6 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', {
order_lists += ', ' + value.order_reservation_id;
}
});
// alert(order_lists);
if (typeof checkNewOrderAlert !== 'undefined' && $.isFunction(checkNewOrderAlert)) {
checkNewOrderAlert(shop_code, order_lists);
@@ -37,5 +38,6 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', {
// }).modal({show: true, keyboard: false, backdrop: false});
}
}
}
});

View File

@@ -4,6 +4,9 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from)
{
var order = data.data;
var shop_code = data.shop_code;
if(order.length > 0){
@@ -37,5 +40,6 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe
// }).modal({show: true, keyboard: false, backdrop: false});
}
}
}
});

View File

@@ -4,6 +4,9 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from)
{
var order = data.data;
var shop_code = data.shop_code;
if(order.length > 0){
@@ -37,5 +40,6 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend
// }).modal({show: true, keyboard: false, backdrop: false});
}
}
}
});

View File

@@ -6,6 +6,9 @@ App.order = App.cable.subscriptions.create('CheckinChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from)
{
$.each(data.table,function(key,value){
if($('.table_'+value.table_id).hasClass('blue')){
$('.table_'+value.table_id).removeClass('blue');
@@ -22,5 +25,6 @@ App.order = App.cable.subscriptions.create('CheckinChannel', {
$('.new_text_'+value.table_id).removeClass('hide');
});
}
}
});

View File

@@ -4,6 +4,11 @@ App.order = App.cable.subscriptions.create('OrderChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
console.log(hostname)
console.log(data.from)
if(data.from == "" || hostname == data.from)
{
if (data.type == 'order') {
$('.table_'+data.table.id).removeClass('green');
$('.table_'+data.table.id).addClass('blue');
@@ -15,5 +20,6 @@ App.order = App.cable.subscriptions.create('OrderChannel', {
$('.new_text_'+data.table.id).removeClass('hide')
}
}
}
});

View File

@@ -6,6 +6,8 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
var oqs_id = $('.oqs_active').attr('data-id');
items = data.order;
for(var field in items) {
@@ -83,6 +85,7 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann
return parseInt(next.substring(4, 16)) - parseInt(first.substring(4, 16));
});
$("#oqs_container").html(SortListDivs);
}
},
});

View File

@@ -4,6 +4,8 @@ App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel'
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
var shop_code = data.shop_code;
var order = data.data;
if(order.length > 0){
@@ -49,5 +51,6 @@ App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel'
customTableClick();
}
}
});

View File

@@ -6,6 +6,8 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
var data_obj = data.data;
var status = data.status;
var count = 0
@@ -34,5 +36,6 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayChannel', {
$('#s_grand_total').append(data_obj.grand_total);
}
}
}
});

View File

@@ -6,6 +6,8 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', {
disconnected: function() {},
received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from){
var items = data.data;
var tax = data.tax_profiles;
var status= data.status
@@ -161,6 +163,6 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', {
$('#s_grand_total').empty();
$('#s_grand_total').append(fixed_grand_total);
}
}
});

View File

@@ -47,9 +47,12 @@ class Api::BillController < Api::ApiController
Promotion.promo_activate(@sale)
#BillBroadcastJob.perform_later(table)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "bill_channel",table: table
#end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "bill_channel",table: table, from: from
else
@status = false
@error_message = "No Current Open Shift"

View File

@@ -6,9 +6,12 @@ class Api::CallWaitersController < ActionController::API
@time = params[:time]
@table = DiningFacility.find(@table_id)
# CallWaiterJob.perform_later(@table,@time)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time
#end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time,from: from
# get printer info
@shop = Shop.first
unique_code = "CallWaiterPdf"

View File

@@ -6,7 +6,16 @@ class Api::CheckInProcessController < Api::ApiController
booking = dining_facility.get_current_checkout_booking
if !booking.nil?
DiningFacility.check_in_booking(params[:dining_id])
# DiningFacility.check_in_booking(params[:dining_id])
table = DiningFacility.find(params[:dining_id])
#Send to background job for processing
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
check_in_time = booking.checkin_at.utc.getlocal.strftime("%Y-%m-%d %H:%M")
check_out_time = booking.checkout_at.utc.getlocal.strftime("%Y-%m-%d %H:%M")

View File

@@ -73,7 +73,12 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController
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
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "order_reservation_channel",data: order_reservation,shop_code: shop_code,from:from
else
result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" }
end

0
app/controllers/crm/customers_controller.rb Executable file → Normal file
View File

View File

@@ -181,6 +181,12 @@ puts params[:id]
@status, @booking = @order.generate
if @status && @booking
if params[:order_source] != "quick_service"
process_order_queue(@order.order_id,@order.table_id,@order.source)
end
end
# Order.send_customer_view(@booking)
if current_user.role != "waiter" && params[:create_type] == "create_pay"
@@ -188,8 +194,12 @@ puts params[:id]
@status, @sale = Sale.request_bill(@order,current_user,current_login_employee)
# for second display
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale"
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale",from:from
#end
result = {:status=> @status, :data => @sale }
render :json => result.to_json
@@ -241,6 +251,81 @@ puts params[:id]
end
end
def process_order_queue(order_id,table_id,order_source)
print_status = nil
cup_status = nil
#Send to background job for processing
order = Order.find(order_id)
sidekiq = Lookup.find_by_lookup_type("sidekiq")
if ENV["SERVER_MODE"] != 'cloud'
cup_status = `#{"sudo service cups status"}`
print_status = check_cup_status(cup_status)
end
if print_status
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(order_id, table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, table_id, order_source)
end
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
end
else
if ENV["SERVER_MODE"] != 'cloud'
cup_start = `#{"sudo service cups start"}`
cup_status = `#{"sudo service cups status"}`
print_status = check_cup_status(cup_status)
end
if print_status
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(order_id, table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, table_id, order_source)
end
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
end
else
if ENV["SERVER_MODE"] != 'cloud'
from = ""
msg = ' Print Error ! Please contact to service'
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error',from:from
end
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(order_id, table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, table_id, order_source)
end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from
end
end
end
end
def check_cup_status(status)
if status.include? "Active: active (running)" || "Active: active (exited)" #"Cup Server is already running"
return true
end
return false
end
private
# def set_dining

0
app/controllers/origami/customers_controller.rb Executable file → Normal file
View File

View File

@@ -88,10 +88,17 @@ class Origami::ProductCommissionsController < BaseOrigamiController
commissioner_id = params[:commissioner_id]
@sale_item = SaleItem.find(sale_item_id)
@menu_item = MenuItem.find_by_item_code(@sale_item.product_code)
@commission = Commission.where('product_code = ? AND is_active = ?', @menu_item.id, true).take
# @commission = Commission.where('product_code = ? AND is_active = ?', @menu_item.item_code, true).take
Commission.all.each do |com|
if com.product_code.include? @menu_item.item_code && com.active == true
@commission = Commission.find(com.id)
break
end
end
@commissioner = Commissioner.where('id = ? AND is_active = ?', commissioner_id, true).take
@product_commission = ProductCommission.where('sale_item_id = ?', @sale_item.id).take
if !@commission.nil? && @commissioner.commission_id == @commission.commission_id
if !@product_commission.nil?
if @product_commission.commissioner_id == @commissioner.id
@product_commission.destroy
@@ -102,7 +109,7 @@ class Origami::ProductCommissionsController < BaseOrigamiController
end
else
@product_commission = ProductCommission.new
@product_commission.product_code = @menu_item.id
@product_commission.product_code = @menu_item.item_code
@product_commission.product_type = 'menu_item' # use for dummy data ToDo::need to change product type
unless @commission.nil?
@product_commission.commission_id = @commission.id
@@ -125,6 +132,7 @@ class Origami::ProductCommissionsController < BaseOrigamiController
render json: {status: false, deselect: deselect}
end
end
end
private
# Use callbacks to share common setup or constraints between actions.

View File

@@ -13,8 +13,12 @@ class Origami::SecondDisplayController < BaseOrigamiController
else
tax_profiles = nil
end
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status]
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status],from:from
# end
end
#Shop Name in Navbor

View File

@@ -337,9 +337,13 @@ class Origami::SplitBillController < BaseOrigamiController
end
Promotion.promo_activate(sale)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "bill_channel",table: table
#end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "bill_channel",table: table,from:from
render :json => { status: status }
else
render :json => { status: false, error_message: 'No Current Open Shift!'}

View File

@@ -157,15 +157,25 @@ class DiningFacility < ApplicationRecord
#Send to background job for processing
# CheckInBookingJob.perform_later(table)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "check_in_booking_channel",table: table
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
#end
end
def self.checkin_time
table = DiningFacility.get_checkin_booking
if table.length > 0
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "checkin_channel",table: table
ActionCable.server.broadcast "checkin_channel",table: table,from:from
end
end
end

View File

@@ -9,7 +9,7 @@ class MenuCategory < ApplicationRecord
validates_presence_of :code, :name, :menu, :order_by
validates_uniqueness_of :code
default_scope { order('name asc') }
default_scope { order('order_by asc') }
scope :active, -> {where("is_available = 1")}
def self.destroyCategory(menu_category)

View File

@@ -16,7 +16,7 @@ class MenuItem < ApplicationRecord
validates_presence_of :item_code, :name, :type, :min_qty,:account_id
validates_uniqueness_of :item_code
default_scope { order('name asc') }
default_scope { order('item_code asc') }
scope :simple_menu_item, -> { where(type: 'SimpleMenuItem') }
scope :set_menu_item, -> { where(type: 'SetMenuItem') }

View File

@@ -71,9 +71,9 @@ class Order < ApplicationRecord
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
#Send order to queue one it done!
if self.source != "quick_service"
process_order_queue
end
# if self.source != "quick_service"
# process_order_queue
# end
#send order to broadcast job
send_order_broadcast(booking)
@@ -108,9 +108,9 @@ class Order < ApplicationRecord
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
#Send order to queue one it done!
if self.source != "quick_service"
process_order_queue
end
# if self.source != "quick_service"
# process_order_queue
# end
#send order to broadcast job
send_order_broadcast(booking)
@@ -283,68 +283,6 @@ class Order < ApplicationRecord
# Counter number of quantityf
end
#Process order items and send to order queue
def process_order_queue
print_status = nil
cup_status = nil
#Send to background job for processing
order = Order.find(self.id)
sidekiq = Lookup.find_by_lookup_type("sidekiq")
if ENV["SERVER_MODE"] != 'cloud'
cup_status = `#{"sudo service cups status"}`
print_status = check_cup_status(cup_status)
end
if print_status
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, self.table_id, self.source)
end
# assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
end
else
if ENV["SERVER_MODE"] != 'cloud'
cup_start = `#{"sudo service cups start"}`
cup_status = `#{"sudo service cups status"}`
print_status = check_cup_status(cup_status)
end
if print_status
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, self.table_id, self.source)
end
# assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
end
else
if ENV["SERVER_MODE"] != 'cloud'
msg = ' Print Error ! Please contact to service'
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
end
if !sidekiq.nil?
OrderQueueProcessorJob.perform_later(self.id, self.table_id)
else
if order
oqs = OrderQueueStation.new
oqs.process_order(order, self.table_id, self.source)
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
#Process order items and send to order queue
def self.pay_process_order_queue(id,table_id)
@@ -378,9 +316,13 @@ class Order < ApplicationRecord
type = 'order'
#Send to background job for processing
# OrderBroadcastJob.perform_later(table,type)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "order_channel",table: table,type:type
#end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "order_channel",table: table,type:type,from:from
end
end
@@ -534,10 +476,77 @@ class Order < ApplicationRecord
end
end
end
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status
#end
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status,from:from
end
#Process order items and send to order queue
# def process_order_queue
# print_status = nil
# cup_status = nil
# #Send to background job for processing
# order = Order.find(self.id)
# sidekiq = Lookup.find_by_lookup_type("sidekiq")
# if ENV["SERVER_MODE"] != 'cloud'
# cup_status = `#{"sudo service cups status"}`
# print_status = check_cup_status(cup_status)
# end
# if print_status
# if !sidekiq.nil?
# OrderQueueProcessorJob.perform_later(self.id, self.table_id)
# else
# if order
# oqs = OrderQueueStation.new
# oqs.process_order(order, self.table_id, self.source)
# end
# # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
# # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
# end
# else
# if ENV["SERVER_MODE"] != 'cloud'
# cup_start = `#{"sudo service cups start"}`
# cup_status = `#{"sudo service cups status"}`
# print_status = check_cup_status(cup_status)
# end
# if print_status
# if !sidekiq.nil?
# OrderQueueProcessorJob.perform_later(self.id, self.table_id)
# else
# if order
# oqs = OrderQueueStation.new
# oqs.process_order(order, self.table_id, self.source)
# end
# # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id)
# # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
# end
# else
# if ENV["SERVER_MODE"] != 'cloud'
# msg = ' Print Error ! Please contact to service'
# ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
# end
# if !sidekiq.nil?
# OrderQueueProcessorJob.perform_later(self.id, self.table_id)
# else
# if order
# oqs = OrderQueueStation.new
# oqs.process_order(order, self.table_id, self.source)
# 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
private

View File

@@ -116,7 +116,19 @@ class OrderQueueStation < ApplicationRecord
order = Order.find(order_id)
order_items = order.order_items
Order.pay_process_order_queue(order_id,table_id)
# Order.pay_process_order_queue(order_id,table_id)
# if order
# oqs = OrderQueueStation.new
# oqs.process_order(order, table_id)
# end
assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from
if table_id.to_i > 0
# get dining
dining = DiningFacility.find(table_id)

View File

@@ -318,8 +318,14 @@ class OrderReservation < ApplicationRecord
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
from = request.subdomain + "." + request.domain
ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code,from:from
else
from = ""
end
# if ENV["SERVER_MODE"] == 'cloud'
# ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code
# end
end
end
@@ -333,8 +339,14 @@ class OrderReservation < ApplicationRecord
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
from = request.subdomain + "." + request.domain
ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code,from:from
else
from = ""
end
# if ENV["SERVER_MODE"] == 'cloud'
# ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code
# end
end
end
@@ -348,8 +360,14 @@ class OrderReservation < ApplicationRecord
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
from = request.subdomain + "." + request.domain
ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code,from:from
else
from = ""
end
# if ENV["SERVER_MODE"] == 'cloud'
# ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code
# end
end
end

View File

@@ -136,7 +136,9 @@ class Promotion < ApplicationRecord
else
item = OrderItem.find_by_item_code(promo_product)
end
update_existing_item(foc_qty, item, sale_id, "promotion", item.price)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion", item.price,source)
puts "Charged - " + charge_qty.to_s
puts "FOC - " + foc_qty.to_s
@@ -150,10 +152,12 @@ class Promotion < ApplicationRecord
promotion_qty = foc_qty
end
item = OrderItem.find_by_item_instance_code(promo_product)
update_existing_item(promotion_qty, item, sale_id, "promotion", item.price)
source = Order.find(item.order_id).source
update_existing_item(promotion_qty, item, sale_id, "promotion", item.price,source)
end
def self.update_existing_item(qty, item, sale_id, type, item_price)
def self.update_existing_item(qty, item, sale_id, type, item_price,source)
sale_item = SaleItem.new
sale_item.product_code = item.item_code
@@ -171,7 +175,7 @@ class Promotion < ApplicationRecord
sale_item.sale_id = sale_id
sale_item.save
sale = Sale.find(sale_id)
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount)
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount,nil,source)
end
@@ -181,40 +185,44 @@ class Promotion < ApplicationRecord
if same
foc_qty = orderitem[1].to_i / foc_min_qty
item = OrderItem.find_by_item_instance_code(orderitem[0])
update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source)
else
foc_qty = find_second_item_qty(sale_id, promo_product.item_code)
item = OrderItem.find_by_item_instance_code(promo_product.item_code)
update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source)
end
end
def self.give_promotion_nett_price(same, promo_product, foc_min_qty, orderitem, sale_id)
puts " same: " + same.to_s + " promo_product: " + promo_product.item_code.to_s + " foc_min_qty: " + foc_min_qty.to_s + " orderitem: " + orderitem.to_s
if same
foc_qty = orderitem[1].to_i / foc_min_qty
item = OrderItem.find_by_item_instance_code(orderitem[0]) # need to specify with menu item instance
price = item.price.to_i - promo_product.net_price.to_i
update_existing_item(foc_qty, item, sale_id, "promotion nett price", price)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion nett price", price,source)
else
foc_qty = find_second_item_qty(sale_id, promo_product.item_code)
item = OrderItem.find_by_item_instance_code(promo_product.item_code)
price = item.price - promo_product.net_price
update_existing_item(foc_qty, item, sale_id, "promotion nett price", price)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion nett price", price,source)
end
end
def self.give_promotion_discount(same, promo_product, foc_min_qty, orderitem, sale_id)
puts " same: " + same.to_s + " promo_product: " + promo_product.item_code.to_s + " foc_min_qty: " + foc_min_qty.to_s + " orderitem: " + orderitem.to_s
if same
foc_qty = orderitem[1].to_i / foc_min_qty
item = OrderItem.find_by_item_instance_code(orderitem[0])
# total = orderitem[1].to_i * item.price
total = item.price
price = calculate_discount(total, promo_product.percentage)
update_existing_item(foc_qty, item, sale_id, "promotion discount", price)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion discount", price,source)
else
foc_qty = find_second_item_qty(sale_id, promo_product.item_code)
# give total qty is 1
@@ -224,7 +232,8 @@ class Promotion < ApplicationRecord
# total = item.price * foc_qty
total = item.price
price = calculate_discount(total, promo_product.percentage)
update_existing_item(foc_qty, item, sale_id, "promotion discount", price)
source = Order.find(item.order_id).source
update_existing_item(foc_qty, item, sale_id, "promotion discount", price,source)
end
end

View File

@@ -425,6 +425,7 @@ class Sale < ApplicationRecord
tax_profiles = TaxProfile.all.order("order_by asc")
customer = Customer.find(sale.customer_id)
# #Creat new tax records
if sale.payment_status != 'foc'
tax_profiles.each do |tax|
# customer.tax_profiles.each do |cus_tax|
@@ -475,7 +476,6 @@ 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
@@ -2542,32 +2542,32 @@ end
if current_user.nil?
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
if !from_time.nil? && !to_time.nil?
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ?",from,to,from_time,to_time)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ?",from,to,from_time,to_time)
.count()
else
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ?",from,to)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ?",from,to)
.count()
end
else
if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account'
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
if !from_time.nil? && !to_time.nil?
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ?",from,to,from_time,to_time)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ?",from,to,from_time,to_time)
.count()
else
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ?",from,to)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ?",from,to)
.count()
end
else
shift = ShiftSale.current_open_shift(current_user.id)
if !shift.nil?
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
if !from_time.nil? && !to_time.nil?
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ? and sales.shift_sale_id=?",from,to,from_time,to_time,shift.id)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%H:%i') between ? and ? and sales.shift_sale_id=?",from,to,from_time,to_time,shift.id)
.count()
else
query = query.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and sales.shift_sale_id=?",from,to,shift.id)
.sum("a.qty")
query = query.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') between ? and ? and sales.shift_sale_id=?",from,to,shift.id)
.count()
end
end
end
@@ -2575,19 +2575,19 @@ end
else
if current_user.nil?
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
.sum("a.qty")
.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
.count()
else
if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account'
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
.sum("a.qty")
.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
.count()
else
shift = ShiftSale.current_open_shift(current_user.id)
if !shift.nil?
query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
.where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id)
.sum("a.qty")
.where("sales.sale_status = 'completed' and a.status='foc' and a.product_name like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id)
.count()
end
end
end
@@ -2697,7 +2697,7 @@ end
end
def self.all_receipts
query = Sale.select("sale_payments.created_at as receipt_close_time,
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,

View File

@@ -609,7 +609,12 @@ class SalePayment < ApplicationRecord
#Send to background job for processing
# OrderBroadcastJob.perform_later(table,type)
#if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "order_channel",table: table,type:type
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "order_channel",table: table,type:type,from:from
#end
end
end

View File

@@ -186,6 +186,51 @@ class ReceiptBillA5Pdf < Prawn::Document
end
def add_line_item_row(sale_items,precision,delimiter)
y_position = cursor
move_down line_move
sub_total = 0.0
total_qty = 0.0
sale_items.each do |item|
# check for item not to show
show_price = Lookup.find_by_lookup_type("show_price").value
sub_total += item.price #(item.qty*item.unit_price) - comment for room charges
if item.status != 'Discount' && item.qty > 0
total_qty += item.qty
end
qty = item.qty
total_price = item.price #item.qty*item.unit_price - comment for room charges
price = item.unit_price
product_name = item.product_name
if !show_price.nil? && show_price.value.to_i>0
item_row(item,precision,delimiter,product_name,price,qty ,total_price)
else
if item.price != 0
item_row(item,precision,delimiter,product_name,price,qty ,total_price)
end
end
end
stroke_horizontal_rule
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do
text "Sub Total", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_width + self.price_width + 11,y_position], :width =>self.qty_width, :height => self.item_height) do
text "#{number_with_precision(total_qty, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :center
end
bounding_box([self.item_width + self.price_width + 8,y_position], :width =>self.total_width, :height => self.item_height) do
text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :right
end
end
def item_row(item,precision,delimiter,product_name,price,qty ,total_price)
if precision.to_i > 0
item_name_width = (self.item_width+self.price_width)
item_qty_front_width = (self.item_width+self.price_width) + 5
@@ -199,22 +244,6 @@ class ReceiptBillA5Pdf < Prawn::Document
item_total_front_width = item_name_width + 5
item_total_end_width = self.total_width + 4
end
y_position = cursor
move_down line_move
sub_total = 0.0
total_qty = 0.0
sale_items.each do |item|
# check for item not to show
if item.price != 0
sub_total += item.price #(item.qty*item.unit_price) - comment for room charges
if item.status != 'Discount' && item.qty > 0
total_qty += item.qty
end
qty = item.qty
total_price = item.price #item.qty*item.unit_price - comment for room charges
price = item.unit_price
product_name = item.product_name
y_position = cursor
@@ -238,18 +267,6 @@ class ReceiptBillA5Pdf < Prawn::Document
move_down line_move
}
end
end
stroke_horizontal_rule
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do
text "Sub Total", :size => self.item_font_size,:align => :left
end
text_box "#{number_with_precision(total_qty, :precision => precision.to_i)}", :at =>[item_qty_front_width,y_position], :width => item_qty_end_width, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix
text_box "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :at =>[item_total_front_width,y_position], :width =>item_total_end_width, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix
end
def all_total(sale_data,precision,delimiter)
move_down line_move

View File

@@ -180,6 +180,50 @@ class ReceiptBillPdf < Prawn::Document
end
def add_line_item_row(sale_items,precision,delimiter)
y_position = cursor
move_down line_move
sub_total = 0.0
total_qty = 0.0
sale_items.each do |item|
# check for item not to show
show_price = Lookup.find_by_lookup_type("show_price")
sub_total += item.price #(item.qty*item.unit_price) - comment for room charges
if item.status != 'Discount' && item.qty > 0
total_qty += item.qty
end
qty = item.qty
total_price = item.price #item.qty*item.unit_price - comment for room charges
price = item.unit_price
product_name = item.product_name
if !show_price.nil? && show_price.value.to_i>0
item_row(item,precision,delimiter,product_name,price,qty ,total_price)
else
if item.price != 0
item_row(item,precision,delimiter,product_name,price,qty ,total_price)
end
end
end
stroke_horizontal_rule
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do
text "Sub Total", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_width + self.price_width + 11,y_position], :width =>self.qty_width, :height => self.item_height) do
text "#{number_with_precision(total_qty, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :center
end
bounding_box([self.item_width + self.price_width + 8,y_position], :width =>self.total_width, :height => self.item_height) do
text "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size,:align => :right
end
end
def item_row(item,precision,delimiter,product_name,price,qty ,total_price)
if precision.to_i > 0
item_name_width = (self.item_width+self.price_width)
item_qty_front_width = (self.item_width+self.price_width) + 5
@@ -193,22 +237,6 @@ class ReceiptBillPdf < Prawn::Document
item_total_front_width = item_name_width + 5
item_total_end_width = self.total_width + 4
end
y_position = cursor
move_down line_move
sub_total = 0.0
total_qty = 0.0
sale_items.each do |item|
# check for item not to show
if item.price != 0
sub_total += item.price #(item.qty*item.unit_price) - comment for room charges
if item.status != 'Discount' && item.qty > 0
total_qty += item.qty
end
qty = item.qty
total_price = item.price #item.qty*item.unit_price - comment for room charges
price = item.unit_price
product_name = item.product_name
y_position = cursor
pad_top(15) {
@@ -231,18 +259,6 @@ class ReceiptBillPdf < Prawn::Document
move_down line_move
}
end
end
stroke_horizontal_rule
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_width + self.price_width, :height => self.item_height) do
text "Sub Total", :size => self.item_font_size,:align => :left
end
text_box "#{number_with_precision(total_qty, :precision => precision.to_i)}", :at =>[item_qty_front_width,y_position], :width => item_qty_end_width, :size => self.item_font_size, :align => :center, :overflow => :shrink_to_fix
text_box "#{number_with_precision(sub_total, :precision => precision.to_i, :delimiter => delimiter)}", :at =>[item_total_front_width,y_position], :width =>item_total_end_width, :size => self.item_font_size, :align => :right, :overflow => :shrink_to_fix
end

0
app/views/crm/customers/_card_read_form.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/_crm_customer.json.jbuilder Executable file → Normal file
View File

0
app/views/crm/customers/_form.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/_new_form.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/edit.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/edit.json.jbuilder Executable file → Normal file
View File

0
app/views/crm/customers/index.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/index.json.jbuilder Executable file → Normal file
View File

0
app/views/crm/customers/new.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/show.html.erb Executable file → Normal file
View File

0
app/views/crm/customers/show.json.jbuilder Executable file → Normal file
View File

View File

@@ -104,11 +104,13 @@ $(document).ready(function(){
$('#qty-update').on('click', function(){
var qty_weight = $("input[name='qty_weight']").val();
if(parseInt(qty_weight) > parseInt(original_value)){
if(parseInt(qty_weight) >= parseInt(original_value)){
swal("Alert!", "Not allowed over quantity", "warning");
return;
}
var remarks = $("textarea[name='remarks']").val();
var order_items_id = $(this).attr('data-id');
var params = { 'order_items_id': order_items_id, 'qty_weight': qty_weight, 'remarks': remarks }

0
app/views/origami/customers/index.html.erb Executable file → Normal file
View File

View File

@@ -5,7 +5,13 @@ json.valid_time_from menu.valid_time_from.strftime("%H:%M")
json.valid_time_to menu.valid_time_to.strftime("%H:%M")
if (menu.menu_categories)
json.categories menu.menu_categories do |category|
order_by = Lookup.find_by_lookup_type("order_by")
if !order_by.nil? && order_by.value == "name"
categories = MenuCategory.unscoped.where("menu_id ='#{menu.id}'").order("name asc")
else
categories = menu.menu_categories
end
json.categories categories do |category|
menu_category = MenuCategory.find_by_menu_category_id(category.id)
if !menu_category.nil?
@@ -25,10 +31,14 @@ if (menu.menu_categories)
json.parent_id category.menu_category_id
json.is_available category.is_available
if !order_by.nil? && order_by.value == "name"
menu_items = MenuItem.unscoped.where("menu_category_id = ?",category.id).order("name asc")
else
menu_items = category.menu_items
end
if category.menu_items
json.items category.menu_items do |item|
json.items menu_items do |item|
if item.is_available
json.partial! 'origami/addorders/menu_item', item: item
end

View File

@@ -113,6 +113,12 @@
</div>
</div>
</div>
<div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div>
<div class="m-r-20" align="right">
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div>
</div>
</div>
<!-- customer light box -->
@@ -256,6 +262,7 @@
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
@@ -429,7 +436,7 @@
});
}
$("#sxModal .btn_cancel").on('click',function(){
$(".btn_cancel").on('click',function(){
$("#sxModal").hide();
});
</script>

View File

@@ -108,6 +108,13 @@
<button type="button" class="btn bg-default m-t-10 btn-lg btn-block" onclick="window.location.href = '/origami/sale/<%= @sale_id %>/<%= @cashier_type %>/payment/others_payment';"> <i class="material-icons m-t--5">reply</i>Back </button>
</div>
</div>
<div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div>
<div class="m-r-20" align="right">
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div>
</div>
</div>
<!-- customer light box -->

View File

@@ -601,10 +601,11 @@ var customer_name = "<%= @customer.name %>";
$("#back").on('click', function() {
localStorage.removeItem('cash');
customer_display_view(null,"reload");
var sale_id = $('#sale_id').text();
if (cashier_type=="cashier") {
window.location.href = '/origami/table/'+ dining_id;
}else{
window.location.href = '/origami/quick_service';
window.location.href = '/origami/quick_service/pending_order/'+sale_id;
}
});

View File

@@ -170,7 +170,7 @@
<div class="col-lg-2 col-md-2 col-sm-2">
<button type="button" class="btn btn-default btn-block" id='back'><i class="material-icons">reply</i>Back</button>
<% if current_user.role != "waiter" || @status != "sale"%>
<button type="button" id="addorder" class="btn bg-blue btn-block">Add Order</button>
<button type="button" id="addorder" class="btn bg-blue btn-block">Update Order</button>
<%end%>
<!-- <% if @status != "order"%>
<button type="button" id="survey" class="btn btn-block bg-blue waves-effect"><%= t("views.right_panel.detail.survey") %></button>
@@ -215,10 +215,11 @@ $(document).ready(function(){
$('#addorder').on('click', function () {
var table_id = "<%=@table_id%>";
var booking_id = "<%=@bookings.booking_id%>";
var sale_id = $("#sale_id").val();
if (table_id) {
window.location.href = '/origami/quick_service/modify_order/' + table_id+"/"+$('#sale_id').val();
window.location.href = '/origami/quick_service/modify_order/' + table_id+"/"+sale_id;
}else{
window.location.href = '/origami/quick_service/modify_order/'+ booking_id+"/" +$('#sale_id').val();
window.location.href = '/origami/quick_service/modify_order/'+ booking_id+"/" +sale_id;
}
});

View File

@@ -213,7 +213,6 @@
<!-- Column Three -->
<div class="col-lg-1 col-md-1 col-sm-1">
<button type="button" class="btn btn-default btn-block" id='back'><i class="material-icons">reply</i>Back</button>
<% if @sale.sale_status != 'void' && @sale.sale_status != 'waste' && @sale.sale_status != 'spoile' %>
<% if current_login_employee.role == "cashier" %>
<a class="btn btn-block bg-blue waves-effect access_modal" data-toggle="modal" data-type="void"> Void</a>
@@ -224,6 +223,30 @@
<button type="button" id="re-print" class="btn bg-blue btn-block">Re.Print</button>
</div>
</div>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="voidModalLabel">Please Enter Reason for Void</h4>
</div>
<div class="modal-body">
<input type="textarea" name="remark" class="form-control col-md-12 remark" id="remark">
</div>
<div class="modal-footer ">
<div class="row p-r-20">
<div class="col-md-5">
<button type="button" class="btn btn-link bg-red waves-effect " id="void" active="true">VOID</button>
</div>
<div class="col-md-5">
<button type="button" class="btn btn-link bg-blue waves-effect" data-dismiss="modal">CLOSE</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="AccessCodeModal" tabindex="-1" role="dialog">
@@ -344,7 +367,6 @@ $(document).on('click', '.access_modal', function(event){
if (isConfirm) {
var sale_id = $('#sale_id').val();
var ajax_url = "/origami/sale/" + sale_id +'/'+'cashier'+ '/void';
// var ajax_url = "/origami/sale/" + sale_id + '/void';
$.ajax({
type: 'POST',
url: ajax_url,

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="container margin-top-20">
<div class="card row">
<div class="table-responsive">
@@ -50,3 +57,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="margin-top-20">
<div class="card ">
<% unless @sale_data.blank? %>
@@ -38,3 +44,5 @@
<% end %>
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12 col-lg-12 col-sm-12 ">
@@ -148,3 +154,5 @@
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -130,3 +136,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="margin-top-20">
<div class="card">
<table class="table table-bordered">
@@ -109,3 +116,5 @@
</table>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -82,3 +89,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -104,3 +110,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -224,3 +231,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
@@ -106,3 +113,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="container margin-top-20">
<div class="card row">
<div class="table-responsive">
@@ -50,3 +57,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -1,4 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -64,3 +70,5 @@
<% end %>
</div>
</div>
</body>
</html>

View File

@@ -1,3 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
</head>
<body>
<div class="row">
<div class="col-md-12">
<div class="margin-top-20">
@@ -81,3 +88,5 @@
</div>
</div>
</div>
</body>
</html>

View File

@@ -24,7 +24,7 @@ test:
# instead read values from the environment.
production:
secret_key_base: c4bc81065013f9a3506d385bcbd49586c42e586488144b0de90c7da36867de9fa880f46b5c4f86f0ce9b7c783bb5a73bdb0e5605a47716567294390e726d3e22
sx_provision_url: connect.pos-myanmar.com/api #192.168.1.147:3002/api
sx_provision_url: connect.smartsales.asia/api #192.168.1.147:3002/api
server_mode: application
cipher_type: AES-256-CBC
sx_key: Wh@t1$C2L

View File

@@ -2,13 +2,11 @@ class CreateDisplayImages < ActiveRecord::Migration[5.1]
def change
create_table :display_images do |t|
t.integer :shop_id
t.string :name
t.binary :image
t.string :created_by
t.timestamps
end
end
def down
drop_table :display_images
end
end

View File

@@ -3,10 +3,10 @@ namespace :consolidate do
task :receipt => :environment do
# Receipt.delete_all
sales = Sale.all_receipts
puts sales.to_json
shop = Shop.find(1)
sales.each do |sale|
puts sale.to_json
if sale.shift_sale_id.present?
shift = ShiftSale.find(sale.shift_sale_id)
receipt = Receipt.new
receipt.client_code = shop.client_code
@@ -50,6 +50,7 @@ puts sales.to_json
receipt.save
end
end
end
desc "Receipt Detail"
task :receipt_detail => :environment do
@@ -68,10 +69,10 @@ puts sales.to_json
@item_sequence = 1
sale_count = sales.to_a.count
sales.each do |sale|
if sale.qty > 0
if sale.item_instance_code !=nil
byebug
menu_category = MenuCategory.find(MenuItem.find_by_item_code(sale.product_code).menu_category_id)
name = menu_category.name
code = menu_category.code
@@ -90,7 +91,9 @@ puts sales.to_json
@receipt_no = sale.receipt_no
@requested_at = sale.requested_at
if @receipt_no == '20171130-10464'
byebug
end
if sale_id == sale.sale_id || count == 0 || @z ==0
@total_qty += sale.qty
@total_gross_sales += sale.price
@@ -109,14 +112,14 @@ puts sales.to_json
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.category_code = sale.product_code
receipt.category_name = sale.product_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.item_code = (sale.product_code.to_s=="NULL") ? "0" : sale.product_code
receipt.item_name = sale.product_name
receipt.qty = @total_qty
receipt.transaction_type = "Tender"
receipt.gross_sales = @total_gross_sales
@@ -158,14 +161,14 @@ puts sales.to_json
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.category_code = sale.product_code
receipt.category_name = sale.product_name
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.item_code = (menu_code.to_s=="NULL") ? "0" : sale.product_code
receipt.item_name = menu_name
receipt.qty = sale.qty
receipt.transaction_type = (sale.status==nil) ? "Sales" : sale.status
receipt.gross_sales = sale.price
@@ -208,14 +211,14 @@ puts sales.to_json
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.category_code = sale.product_code
receipt.category_name = sale.product_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.item_code = (menu_code.to_s=="NULL") ? "0" : sale.product_code
receipt.item_name = menu_name
receipt.qty = @total_qty
receipt.transaction_type = "Tender"
receipt.gross_sales = @total_gross_sales

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe DisplayImage, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end