Merge branch 'r-1902001-01-dev' of gitlab.com:code2lab/SXRestaurant into r-1902001-01-dev
This commit is contained in:
@@ -46,6 +46,5 @@ class Reports::StockCheckController < BaseReportController
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -35,7 +35,7 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.check_balance(item,inventory_definition) # item => saleItemOBj
|
||||
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
unless stock.nil?
|
||||
modify_balance(item, stock, inventory_definition)
|
||||
else
|
||||
@@ -44,9 +44,12 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.modify_balance(item, stock, inventory_definition) #saleitemObj
|
||||
check_item = StockCheckItem.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
if stock.balance.to_i >= item.qty
|
||||
puts ">> stock is greater than order qty"
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
else
|
||||
puts " << stock is less than order qty"
|
||||
data = item
|
||||
@@ -56,8 +59,12 @@ class InventoryDefinition < ApplicationRecord
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
data.qty = extra_qty
|
||||
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
else
|
||||
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -72,17 +79,24 @@ class InventoryDefinition < ApplicationRecord
|
||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||
.where("mc.id=#{cat_id}")
|
||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||
.order("mi.menu_category_id desc")
|
||||
.order("mi.menu_category_id desc")
|
||||
end
|
||||
|
||||
def self.get_by_category(filter)
|
||||
least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
||||
THEN (SELECT min(balance) FROM stock_journals
|
||||
WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
||||
ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
||||
FROM stock_journals
|
||||
WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
ORDER BY stock_journals.created_at DESC LIMIT 1"
|
||||
# THEN (SELECT min(balance) FROM stock_journals
|
||||
# least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
||||
# THEN (SELECT balance FROM stock_journals
|
||||
# WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
||||
# ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
||||
# FROM stock_journals
|
||||
# WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
# ORDER BY stock_journals.created_at DESC LIMIT 1"
|
||||
least_stock = "(SELECT
|
||||
(SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code
|
||||
ORDER BY created_at DESC LIMIT 1)
|
||||
FROM stock_journals
|
||||
WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
ORDER BY stock_journals.created_at DESC LIMIT 1)"
|
||||
|
||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
||||
@@ -92,13 +106,13 @@ class InventoryDefinition < ApplicationRecord
|
||||
mii.item_instance_name as instance_name," +
|
||||
"mc.name as menu_category_name,mc.id as menu_category_id "
|
||||
)
|
||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
||||
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
|
||||
" JOIN menu_items mi ON mi.id = mii.menu_item_id" +
|
||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
|
||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
||||
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?","%#{filter}%","%#{filter}%","%#{filter}%",
|
||||
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
|
||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||
|
||||
@@ -41,14 +41,14 @@ class Order < ApplicationRecord
|
||||
:booking_status => "assign" })
|
||||
end
|
||||
#end extra time
|
||||
|
||||
|
||||
if self.table_id.to_i > 0
|
||||
table = DiningFacility.find(self.table_id)
|
||||
table.update_attributes(status:"occupied")
|
||||
# table.status = "occupied"
|
||||
# table.save
|
||||
end
|
||||
|
||||
|
||||
else
|
||||
booking = Booking.find(self.booking_id)
|
||||
#add extra time
|
||||
@@ -56,7 +56,7 @@ class Order < ApplicationRecord
|
||||
if !booking.checkout_at.nil?
|
||||
new_time = booking.checkout_at + self.extra_time.to_i
|
||||
booking.update_attributes(checkout_at: new_time)
|
||||
end
|
||||
end
|
||||
end
|
||||
#end extra time
|
||||
end
|
||||
@@ -74,7 +74,7 @@ class Order < ApplicationRecord
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
# process_order_queue
|
||||
# end
|
||||
# end
|
||||
|
||||
#send order to broadcast job
|
||||
# send_order_broadcast(booking)
|
||||
@@ -138,7 +138,7 @@ class Order < ApplicationRecord
|
||||
ordered_list.each do |item|
|
||||
|
||||
menu_item = MenuItem.search_by_item_code(item[:item_instance_code])
|
||||
|
||||
|
||||
# For Product while item code not in menu item
|
||||
if menu_item.nil?
|
||||
menu_item = Product.search_by_product_code(item[:item_instance_code])
|
||||
@@ -148,7 +148,7 @@ class Order < ApplicationRecord
|
||||
# Rails.logger.debug menu_item
|
||||
set_order_items = Array.new
|
||||
##If menu Item set item - must add child items to order as well, where price is only take from menu_item
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (item.include? 'sub_items') || (item.include? :sub_items)
|
||||
item[:sub_items].each do |si|
|
||||
# Retrive instance's Price
|
||||
@@ -286,7 +286,7 @@ class Order < ApplicationRecord
|
||||
# Counter number of quantityf
|
||||
end
|
||||
|
||||
|
||||
|
||||
#Process order items and send to order queue
|
||||
def self.pay_process_order_queue(id,table_id)
|
||||
# if ENV["SERVER_MODE"] != 'cloud'
|
||||
@@ -294,7 +294,7 @@ class Order < ApplicationRecord
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(id, table_id)
|
||||
else
|
||||
order = Order.find(id)
|
||||
order = Order.find(id)
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id)
|
||||
@@ -314,11 +314,11 @@ class Order < ApplicationRecord
|
||||
# OrderBroadcastJob.perform_later(table,type)
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "order_channel",table: table,type:type,from:from
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -434,7 +434,7 @@ class Order < ApplicationRecord
|
||||
if from.present? && to.present?
|
||||
order = Order.where("DATE_FORMAT(date,'%d-%m-%Y') >= ?" + " AND DATE_FORMAT(date,'%d-%m-%Y') <= ?", from,to)
|
||||
query = order.where(keyword)
|
||||
else
|
||||
else
|
||||
where("order_id LIKE ? OR status LIKE ? OR order_type LIKE ? OR source='#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%")
|
||||
end
|
||||
end
|
||||
@@ -442,12 +442,12 @@ class Order < ApplicationRecord
|
||||
def self.send_customer_view(booking)
|
||||
@status = ""
|
||||
@data_array = Array.new
|
||||
if(!booking.sale_id.nil?)
|
||||
if(!booking.sale_id.nil?)
|
||||
sale = Sale.find(booking.sale_id)
|
||||
if sale.sale_status != "completed" && sale.sale_status != 'void'
|
||||
@data_array.push(sale)
|
||||
@status = "sale"
|
||||
@data_obj = sale
|
||||
@data_obj = sale
|
||||
end
|
||||
else
|
||||
|
||||
@@ -474,7 +474,7 @@ class Order < ApplicationRecord
|
||||
end
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status,from:from
|
||||
@@ -484,11 +484,11 @@ class Order < ApplicationRecord
|
||||
def self.process_order_queue(order_id,table_id,source)
|
||||
print_status = nil
|
||||
cup_status = nil
|
||||
|
||||
|
||||
#Send to background job for processing
|
||||
order = Order.find(order_id)
|
||||
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)
|
||||
@@ -526,7 +526,7 @@ class Order < ApplicationRecord
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
|
||||
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'
|
||||
end
|
||||
if !sidekiq.nil?
|
||||
|
||||
@@ -2,7 +2,13 @@ class StockCheckItem < ApplicationRecord
|
||||
belongs_to :stock_check
|
||||
|
||||
def create(stock_id, item)
|
||||
journal_id, balance = StockCheckItem.find_journal(item['sku'])
|
||||
check_item = StockCheckItem.find_by_item_code(item['sku'])
|
||||
if check_item.nil?
|
||||
balance = 0
|
||||
else
|
||||
balance = StockCheckItem.last.different
|
||||
end
|
||||
journal_id = StockCheckItem.find_journal(item['sku'])
|
||||
remark, different = StockCheckItem.stock_different(item['qty'], balance )
|
||||
self.stock_check_id = stock_id
|
||||
self.item_code = item['sku']
|
||||
@@ -24,13 +30,14 @@ class StockCheckItem < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.stock_different(stock_check_qty, journal_balance)
|
||||
if stock_check_qty.to_i == journal_balance.to_i
|
||||
return 'match', stock_check_qty
|
||||
elsif stock_check_qty.to_i > journal_balance.to_i
|
||||
return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
||||
elsif stock_check_qty.to_i < journal_balance.to_i
|
||||
return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
||||
end
|
||||
# if stock_check_qty.to_i == journal_balance.to_i
|
||||
# return 'match', stock_check_qty
|
||||
# elsif stock_check_qty.to_i > journal_balance.to_i
|
||||
# return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
||||
# elsif stock_check_qty.to_i < journal_balance.to_i
|
||||
# return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
||||
# end
|
||||
return 'add new stock', stock_check_qty.to_i + journal_balance.to_i
|
||||
end
|
||||
|
||||
def self.get_transaction(from, to, item_code)
|
||||
|
||||
@@ -8,7 +8,7 @@ class StockJournal < ApplicationRecord
|
||||
journal.credit = balance
|
||||
|
||||
balance = calculate_balance(balance, item.qty)
|
||||
|
||||
|
||||
journal.item_code = item.item_instance_code
|
||||
journal.inventory_definition_id = inventory_definition.id
|
||||
journal.debit = item.qty
|
||||
@@ -24,13 +24,19 @@ class StockJournal < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.from_stock_check(item)
|
||||
stock_journal = StockJournal.where('item_code=?', item.item_code).order("id DESC").first
|
||||
if stock_journal.nil?
|
||||
old_blance = 0
|
||||
else
|
||||
old_blance = stock_journal.balance
|
||||
end
|
||||
definition_id = InventoryDefinition.find_by_item_code(item.item_code)
|
||||
journal = StockJournal.new
|
||||
journal.item_code = item.item_code
|
||||
journal.inventory_definition_id = definition_id.id
|
||||
journal.debit = 0
|
||||
journal.credit = item.stock_count
|
||||
journal.balance = item.stock_count
|
||||
journal.balance = item.stock_count + old_blance.to_i
|
||||
journal.remark = StockJournal::STOCK_CHECK_TRANS
|
||||
journal.trans_ref = item.id
|
||||
journal.trans_type = StockJournal::STOCK_CHECK_TRANS
|
||||
@@ -43,7 +49,7 @@ class StockJournal < ApplicationRecord
|
||||
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
|
||||
if !from_time.nil? && !to_time.nil?
|
||||
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}'")
|
||||
else
|
||||
else
|
||||
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}' and DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%H:%M') between '#{from_time}' and '#{to_time}'")
|
||||
end
|
||||
query = query.group("mii.item_instance_name")
|
||||
|
||||
@@ -29,4 +29,4 @@ if @status == true
|
||||
else
|
||||
json.status false
|
||||
json.error_message @error_message
|
||||
end
|
||||
end
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<%end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
|
||||
<%= paginate @crm_customers %>
|
||||
@@ -78,8 +78,8 @@
|
||||
<button id="member_acc_no" class="btn btn-success btn-md"><span class="fa fa-credit-card"></span> Member Card</button>
|
||||
<button id="qr_code" class="btn btn-danger btn-md">
|
||||
<span class="fa fa-credit-card"></span> QR CODE
|
||||
</button>
|
||||
|
||||
</button>
|
||||
|
||||
</td>
|
||||
</tr>-->
|
||||
<tr>
|
||||
@@ -124,6 +124,7 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= crm_customer.card_no rescue '-' %></td>
|
||||
<td><%= crm_customer.paypar_account_no rescue '-' %></td>
|
||||
<td>
|
||||
<% if crm_customer.membership_id.nil? && !crm_customer.membership_type.nil? && !crm_customer.membership_type.blank? && !crm_customer.paypar_account_no.blank? && !crm_customer.paypar_account_no.nil? %>
|
||||
<%= link_to t("views.btn.sync"), crm_customer_sync_path(crm_customer), :class => "btn btn-md bg-green waves-effect" %>
|
||||
@@ -140,7 +141,7 @@
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<% if @create_flag %>
|
||||
@@ -182,10 +183,10 @@
|
||||
|
||||
// QR Code Reader
|
||||
$("#qr_code").on('click', function(e){
|
||||
var code = "";
|
||||
var code = "";
|
||||
setTimeout(function(){
|
||||
code=getQRCode();
|
||||
setQRCode(code);
|
||||
setQRCode(code);
|
||||
},100);
|
||||
});
|
||||
|
||||
@@ -203,12 +204,12 @@
|
||||
/*new customer UI func:*/
|
||||
//Initialize tooltips
|
||||
$('.nav-tabs > li a[title]').tooltip();
|
||||
|
||||
|
||||
//Wizard
|
||||
$('a[data-toggle="tab"]').on('show.bs.tab', function (e) {
|
||||
|
||||
var $target = $(e.target);
|
||||
|
||||
|
||||
if ($target.parent().hasClass('disabled')) {
|
||||
return false;
|
||||
}
|
||||
@@ -260,10 +261,10 @@
|
||||
url: url,
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
// Selected for Taxes
|
||||
var taxes = JSON.stringify(data.tax_profiles);
|
||||
var parse_taxes = JSON.parse(taxes);
|
||||
success: function(data) {
|
||||
// Selected for Taxes
|
||||
var taxes = JSON.stringify(data.tax_profiles);
|
||||
var parse_taxes = JSON.parse(taxes);
|
||||
$.each(parse_taxes, function(i, value){
|
||||
$("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'});
|
||||
});
|
||||
@@ -276,7 +277,7 @@
|
||||
$('#customer_salutation').val(data.salutation);
|
||||
$('#customer_nrc_no').val(data.nrc_no);
|
||||
$('#customer_card_no').val(data.card_no);
|
||||
$('#customer_type').val(data.customer_type);
|
||||
$('#customer_type').val(data.customer_type);
|
||||
$('#paypar_account_no').val(data.paypar_account_no);
|
||||
$('#customer_address').val(data.address);
|
||||
$('#customer_date_of_birth').val(data.date_of_birth);
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
<!-- <th><%= t("views.right_panel.detail.created_by") %></th>
|
||||
<th><%= t("views.right_panel.detail.created_time") %></th> -->
|
||||
</tr>
|
||||
<% cate_arr = Array.new %>
|
||||
<% cate_arr = Array.new %>
|
||||
<%
|
||||
count = 0
|
||||
@inventory_definitions.each do |item|
|
||||
count = 0
|
||||
@inventory_definitions.each do |item|
|
||||
count += 1
|
||||
%>
|
||||
%>
|
||||
|
||||
<tr>
|
||||
|
||||
<% if !cate_arr.include?(item.menu_category_id) %>
|
||||
<% if !cate_arr.include?(item.menu_category_id) %>
|
||||
<td><%= item.menu_category_name %></td>
|
||||
<% cate_arr.push(item.menu_category_id) %>
|
||||
<% else %>
|
||||
@@ -72,4 +72,4 @@
|
||||
window.location.href = '/inventory/'+ID+'/show';
|
||||
});
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -8,4 +8,4 @@ stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/
|
||||
port ENV.fetch("PORT") { 62158 }
|
||||
workers 2
|
||||
preload_app!
|
||||
threads 1,1
|
||||
threads 1,1
|
||||
|
||||
Reference in New Issue
Block a user