From 06349e23cc001009f5413c60b97b6c9a30e9d28d Mon Sep 17 00:00:00 2001 From: NyanLinHtut Date: Thu, 29 Aug 2019 18:33:13 +0630 Subject: [PATCH 1/2] - --- app/models/order.rb | 36 +++++++++++------------ app/views/api/shifts/create.json.jbuilder | 2 +- app/views/crm/customers/index.html.erb | 29 +++++++++--------- config/initializers/action_controller.rb | 10 +++---- config/puma.rb | 20 ++++++------- 5 files changed, 49 insertions(+), 48 deletions(-) diff --git a/app/models/order.rb b/app/models/order.rb index 26451207..00ecd4ca 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -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? diff --git a/app/views/api/shifts/create.json.jbuilder b/app/views/api/shifts/create.json.jbuilder index c5b02c92..fd15892a 100644 --- a/app/views/api/shifts/create.json.jbuilder +++ b/app/views/api/shifts/create.json.jbuilder @@ -29,4 +29,4 @@ if @status == true else json.status false json.error_message @error_message -end \ No newline at end of file +end diff --git a/app/views/crm/customers/index.html.erb b/app/views/crm/customers/index.html.erb index 55295c9e..d379b12b 100644 --- a/app/views/crm/customers/index.html.erb +++ b/app/views/crm/customers/index.html.erb @@ -62,7 +62,7 @@ <%end %> - +
<%= paginate @crm_customers %> @@ -76,8 +76,8 @@ - + + --> @@ -122,8 +122,9 @@ <% end %> <%= crm_customer.card_no rescue '-' %> + <%= crm_customer.paypar_account_no rescue '-' %> - <% if crm_customer.membership_id.nil? && !crm_customer.membership_type.nil? && !crm_customer.membership_type =="" && !crm_customer.paypar_account_no =="" && !crm_customer.paypar_account_no.nil? %> + <% 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" %> <% end %> <% if @customer_update_phone_email_membertype %> @@ -138,7 +139,7 @@ <% end %> - +
<% if @create_flag %> @@ -178,10 +179,10 @@ // QR Code Reader $("#qr_code").on('click', function(e){ - var code = ""; + var code = ""; setTimeout(function(){ code=getQRCode(); - setQRCode(code); + setQRCode(code); },100); }); @@ -199,12 +200,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; } @@ -256,10 +257,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'}); }); @@ -272,7 +273,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); diff --git a/config/initializers/action_controller.rb b/config/initializers/action_controller.rb index 205c330a..85f38ec5 100644 --- a/config/initializers/action_controller.rb +++ b/config/initializers/action_controller.rb @@ -21,11 +21,11 @@ class ActionController::Base end else # check for license file - if check_license - current_license(ENV["SX_PROVISION_URL"]) - else - redirect_to activate_path - end + # if check_license + # current_license(ENV["SX_PROVISION_URL"]) + # else + # redirect_to activate_path + # end end end diff --git a/config/puma.rb b/config/puma.rb index fd89392f..6a545bed 100755 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,10 +1,10 @@ -application_path="#{File.expand_path("../..", __FILE__)}" -directory application_path -#environment ENV.fetch("RAILS_ENV") { "production" } -environment "production" -pidfile "#{application_path}/tmp/puma/pid" -state_path "#{application_path}/tmp/puma/state" -stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" -port ENV.fetch("PORT") { 62158 } -workers 2 -preload_app! +# application_path="#{File.expand_path("../..", __FILE__)}" +# directory application_path +# #environment ENV.fetch("RAILS_ENV") { "production" } +# environment "production" +# pidfile "#{application_path}/tmp/puma/pid" +# state_path "#{application_path}/tmp/puma/state" +# stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log" +# port ENV.fetch("PORT") { 62158 } +# workers 2 +# preload_app! From 90d0a4ebb1e5168912e538cca66d0ea80fd2a184 Mon Sep 17 00:00:00 2001 From: NyanLinHtut Date: Wed, 11 Sep 2019 13:26:01 +0630 Subject: [PATCH 2/2] fixed inventory --- .../reports/stock_check_controller.rb | 3 +- app/models/inventory_definition.rb | 38 +++++++++++++------ app/models/stock_check_item.rb | 23 +++++++---- app/models/stock_journal.rb | 12 ++++-- .../inventory/_inventory_list.html.erb | 12 +++--- 5 files changed, 57 insertions(+), 31 deletions(-) diff --git a/app/controllers/reports/stock_check_controller.rb b/app/controllers/reports/stock_check_controller.rb index c2f2cf0d..71fc389e 100755 --- a/app/controllers/reports/stock_check_controller.rb +++ b/app/controllers/reports/stock_check_controller.rb @@ -46,6 +46,5 @@ class Reports::StockCheckController < BaseReportController format.json { render json: out } end end - -end +end diff --git a/app/models/inventory_definition.rb b/app/models/inventory_definition.rb index 189d8dc7..dc2e1052 100755 --- a/app/models/inventory_definition.rb +++ b/app/models/inventory_definition.rb @@ -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") diff --git a/app/models/stock_check_item.rb b/app/models/stock_check_item.rb index 67e8b3aa..f596740a 100755 --- a/app/models/stock_check_item.rb +++ b/app/models/stock_check_item.rb @@ -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) diff --git a/app/models/stock_journal.rb b/app/models/stock_journal.rb index 9a30d3b0..fc969199 100755 --- a/app/models/stock_journal.rb +++ b/app/models/stock_journal.rb @@ -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") diff --git a/app/views/inventory/inventory/_inventory_list.html.erb b/app/views/inventory/inventory/_inventory_list.html.erb index 0f4813f2..682188cd 100755 --- a/app/views/inventory/inventory/_inventory_list.html.erb +++ b/app/views/inventory/inventory/_inventory_list.html.erb @@ -10,16 +10,16 @@ - <% cate_arr = Array.new %> + <% cate_arr = Array.new %> <% - count = 0 - @inventory_definitions.each do |item| + count = 0 + @inventory_definitions.each do |item| count += 1 - %> + %> - <% if !cate_arr.include?(item.menu_category_id) %> + <% if !cate_arr.include?(item.menu_category_id) %> <%= item.menu_category_name %> <% cate_arr.push(item.menu_category_id) %> <% else %> @@ -72,4 +72,4 @@ window.location.href = '/inventory/'+ID+'/show'; }); - \ No newline at end of file +