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/order.rb b/app/models/order.rb index f53eb7e8..ca2a5812 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/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/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 5739c6fc..815335f2 100644 --- a/app/views/crm/customers/index.html.erb +++ b/app/views/crm/customers/index.html.erb @@ -64,7 +64,7 @@ <%end %> - +