Merge branch 'r-1902001-01-dev' of gitlab.com:code2lab/SXRestaurant into r-1902001-01-dev

This commit is contained in:
Myat Zin Wai Maw
2019-09-11 18:18:13 +06:30
9 changed files with 91 additions and 64 deletions

View File

@@ -46,6 +46,5 @@ class Reports::StockCheckController < BaseReportController
format.json { render json: out }
end
end
end
end

View File

@@ -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")

View File

@@ -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?

View File

@@ -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)

View File

@@ -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")

View File

@@ -29,4 +29,4 @@ if @status == true
else
json.status false
json.error_message @error_message
end
end

View File

@@ -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);

View File

@@ -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>

View File

@@ -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