diff --git a/.gitignore b/.gitignore index df5bf8ff..80f629c7 100755 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ capybara-*.html /public/uploads/* /public/swf/* /public/receipts/ +/public/orders_* /public/*.mp3 /coverage/ /spec/tmp/* diff --git a/Dockerfile b/Dockerfile index 02daa8b6..a3e46f4d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,8 @@ FROM ruby:2.4.1 RUN apt-get update -qq && apt-get install -y build-essential libmysqlclient-dev libcups2-dev libpq-dev nodejs RUN mkdir /sxrestaurant RUN mkdir -p /sxrestaurant/tmp/puma -ENV RAILS_ENV production +ENV RAILS_ENV staging +ENV RACK_ENV staging WORKDIR /sxrestaurant COPY Gemfile /sxrestaurant/Gemfile COPY Gemfile.lock /sxrestaurant/Gemfile.lock @@ -10,4 +11,5 @@ RUN bundle install --without development test RUN echo "Asia/Rangoon" > /etc/timezone RUN dpkg-reconfigure -f noninteractive tzdata COPY . /sxrestaurant -RUN bundle exec rails assets:precompile +RUN bundle exec rake assets:precompile +CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"] \ No newline at end of file diff --git a/README.md b/README.md index bdaec79e..363d0be3 100755 --- a/README.md +++ b/README.md @@ -254,6 +254,9 @@ For Customer Settings On/Off For TaxProfiles On/Off 1) settings/lookups => {type:changable_tax, name:change, value: {1 or 0}} +For Add Kitchen Role + 1) settings/lookups => {type:employee_roles, name:Kitchen, value:kitchen} + * ToDo list 1. Migration diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 07fb94f1..378ae434 100755 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -354,12 +354,16 @@ $(document).on('turbolinks:load', function() { var assigned_item_id = $('.selected-item').children('.card-block').children('.assigned-order-item').text(); var options = $('.selected-item').children('.card-block').find('.item-options').text(); var params = { 'options':options }; - $.ajax({ - type: 'POST', + type: 'GET', url: '/oqs/print/print/'+assigned_item_id, data: params, - success: function(data){ } + success: function(result){ + // For Server Print - from jade + if ($("#server_mode").val() == "cloud") { + code2lab.printFile(result.filepath.substr(6), result.printer_url); + } + } }); }); @@ -374,7 +378,12 @@ $(document).on('turbolinks:load', function() { type: 'GET', url: '/oqs/print/print_order_summary/'+assigned_item_id, data: params, - success: function(data){ } + success: function(result){ + // For Server Print - from jade + if ($("#server_mode").val() == "cloud") { + code2lab.printFile(result.filepath.substr(6), result.printer_url); + } + } }); }); }); diff --git a/app/controllers/inventory/inventory_controller.rb b/app/controllers/inventory/inventory_controller.rb index d512a2dc..368ad122 100755 --- a/app/controllers/inventory/inventory_controller.rb +++ b/app/controllers/inventory/inventory_controller.rb @@ -1,8 +1,36 @@ class Inventory::InventoryController < BaseInventoryController - load_and_authorize_resource - def index - @products = InventoryDefinition.all.active.order('created_at desc') - end + load_and_authorize_resource + def index + least_stock = "SELECT (CASE WHEN SIGN(MIN(stock_journals.balance)) > 0 + THEN MIN(stock_journals.balance) WHEN stock_journals.remark NOT LIKE '%out of stock%' + THEN (SELECT balance FROM stock_journals + WHERE item_code = inventory_definitions.item_code + AND remark NOT LIKE '%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" + + @inventory_definitions = InventoryDefinition.select("inventory_definitions.*, + (CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit, + (CASE WHEN sj.debit IS NULL THEN 0 ELSE sj.debit END) as debit, + (#{least_stock}) as balance") + .joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id") + .group("inventory_definitions.item_code") + .order("(CASE WHEN sj.balance > 0 THEN MIN(sj.balance) ELSE NULL END )") + + end + + def show + inventory_definition_id = params[:inventory_definition_id] + inventory = InventoryDefinition.find(inventory_definition_id) + + @stock_journals = StockJournal.where(item_code: inventory.item_code) + respond_to do |format| + format.html + format.xls + end + end #Shop Name in Navbor helper_method :shop_detail diff --git a/app/controllers/inventory/inventory_definitions_controller.rb b/app/controllers/inventory/inventory_definitions_controller.rb index accb90b4..1b0e072e 100755 --- a/app/controllers/inventory/inventory_definitions_controller.rb +++ b/app/controllers/inventory/inventory_definitions_controller.rb @@ -24,7 +24,14 @@ class Inventory::InventoryDefinitionsController < BaseInventoryController # POST /inventory_definitions # POST /inventory_definitions.json def create - @inventory_definition = InventoryDefinition.new(inventory_definition_params) + inventory = InventoryDefinition.find_by_item_code(inventory_definition_params[:item_code]) + if inventory.nil? + @inventory_definition = InventoryDefinition.new(inventory_definition_params) + else + @inventory_definition = InventoryDefinition.find(inventory.id) + @inventory_definition.min_order_level = inventory_definition_params[:min_order_level] + @inventory_definition.max_stock_level = inventory.max_stock_level.to_i + inventory_definition_params[:max_stock_level].to_i + end @inventory_definition.created_by = current_user.id respond_to do |format| if @inventory_definition.save diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index fc65f2da..6a59025e 100755 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -2,7 +2,7 @@ class Oqs::PrintController < ApplicationController authorize_resource :class => false # Print Order Item def print - if ENV["SERVER_MODE"] != "cloud" #no print in cloud server + # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf printer = PrintSetting.all unique_code="OrderItemPdf" @@ -41,19 +41,30 @@ class Oqs::PrintController < ApplicationController # print when complete click print_settings = PrintSetting.find_by_unique_code(unique_code) order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_item(print_settings,oqs, assigned_item.order_id, order_item.order_items_id, print_status, "", options ) + filename, receipt_no, cashier_printer = order_queue_printer.print_order_item(print_settings,oqs, assigned_item.order_id, order_item.order_items_id, print_status, "", options ) # update print status for completed same order items assigned_items.each do |ai| ai.print_status=true ai.save - end - end + end + + # filename, receipt_no, cashier_printer = printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_detail, "Frt",current_balance,nil,other_amount) + if ENV["SERVER_MODE"] == "cloud" + result = { + :filepath => filename, + :printer_model => print_settings.brand_name, + :printer_url => print_settings.api_settings + } + # Mobile Print + render :json => result.to_json + end + # end end # Print Order Details with booking id def print_order_summary - if ENV["SERVER_MODE"] != "cloud" #no print in cloud server + # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf printer = PrintSetting.all unique_code="OrderSummaryPdf" @@ -98,14 +109,25 @@ class Oqs::PrintController < ApplicationController # print when complete click print_settings = PrintSetting.find_by_unique_code(unique_code) order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_booking_summary(print_settings,oqs, booking_id, print_status) + filename, receipt_no, cashier_printer = order_queue_printer.print_booking_summary(print_settings,oqs, booking_id, print_status) # update print status for completed same order items assigned_items.each do |ai| ai.print_status = true ai.save end - end + + # filename, receipt_no, cashier_printer = printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_detail, "Frt",current_balance,nil,other_amount) + if ENV["SERVER_MODE"] == "cloud" + result = { + :filepath => filename, + :printer_model => print_settings.brand_name, + :printer_url => print_settings.api_settings + } + # Mobile Print + render :json => result.to_json + end + # end end end \ No newline at end of file diff --git a/app/controllers/origami/sales_controller.rb b/app/controllers/origami/sales_controller.rb index b9cc40ec..2662bb16 100755 --- a/app/controllers/origami/sales_controller.rb +++ b/app/controllers/origami/sales_controller.rb @@ -26,15 +26,16 @@ class Origami::SalesController < BaseOrigamiController dining = params[:dining_id] sale_id = params[:sale_id] tax_type = params[:tax_type] + sale_data = [] table = DiningFacility.find(dining) existing_booking = Booking.find_by_sale_id(sale_id) table.bookings.each do |booking| # if !booking.checkout_at.nil? # existing_booking.update_attributes(checkout_at: checkout_at) # end - if booking.sale_id.nil? - order_array = [] - booking.booking_orders.each do |booking_order| + if booking.sale_id.nil? + order_array = [] + booking.booking_orders.each do |booking_order| booking.booking_status = 'moved' order = Order.find(booking_order.order_id) @@ -49,6 +50,7 @@ class Origami::SalesController < BaseOrigamiController if !orer_item.set_menu_items.nil? saleobj.add_sub_item(orer_item.set_menu_items) end + sale_data.push(orer_item) end # Re-compute for add @@ -58,7 +60,7 @@ class Origami::SalesController < BaseOrigamiController booking.save order_array.push(order.order_id) - + end receipt_no = Sale.find(sale_id).receipt_no @@ -75,6 +77,10 @@ class Origami::SalesController < BaseOrigamiController end end end + if !sale_data.empty? + # InventoryJob.perform_now(self.id) + InventoryDefinition.calculate_product_count(nil,sale_data) + end end end diff --git a/app/models/inventory_definition.rb b/app/models/inventory_definition.rb index 4634ff73..0a73976e 100755 --- a/app/models/inventory_definition.rb +++ b/app/models/inventory_definition.rb @@ -2,11 +2,20 @@ class InventoryDefinition < ApplicationRecord scope :active, -> {where(:is_active => true)} - def self.calculate_product_count(saleObj) - saleObj.sale_items.each do |item| - found, inventory_definition = find_product_in_inventory(item) - if found - check_balance(item,inventory_definition) + def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil) + if !saleObj.nil? + saleObj.sale_items.each do |item| + found, inventory_definition = find_product_in_inventory(item) + if found + check_balance(item,inventory_definition) + end + end + else + saleobj_after_req_bill.each do |item| + found, inventory_definition = find_product_in_inventory(item) + if found + check_balance(item,inventory_definition) + end end end end @@ -16,7 +25,12 @@ class InventoryDefinition < ApplicationRecord if product.nil? return false, nil else - return true, product + stock_check_item = StockCheckItem.find_by_item_code(item.item_instance_code) + if stock_check_item.nil? + return false, nil + else + return true, product + end end end @@ -31,11 +45,19 @@ class InventoryDefinition < ApplicationRecord def self.modify_balance(item, stock, inventory_definition) #saleitemObj if stock.balance.to_i >= item.qty - puts ">> stock is greater than orde qty" + puts ">> stock is greater than order qty" StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition) else puts " << stock is less than order qty" - StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition) + item_data = item + if stock.balance.to_i > 0 + item_data.qty = item.qty.to_i - stock.balance.to_i + StockJournal.add_to_journal(item_data, stock.balance, "out of stock", inventory_definition) + item.qty = stock.balance.to_i + StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition) + else + StockJournal.add_to_journal(item_data, stock.balance, "out of stock", inventory_definition) + end end end end diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index e9cbfd26..2f0b947d 100755 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -234,7 +234,7 @@ class OrderQueueStation < ApplicationRecord order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="") assigned =AssignedOrderItem.where("order_id = '#{ order.order_id }'").pluck(:assigned_order_item_id) - AssignedOrderItem.where({ order_id: '#{assigned}'}).update_all(print_status: true) + AssignedOrderItem.where('assigned_order_item_id IN (?)', assigned).update_all(print_status: true) # assigned_items =AssignedOrderItem.where("order_id = '#{ order.order_id }'") # assigned_items.each do |ai| @@ -283,6 +283,6 @@ class OrderQueueStation < ApplicationRecord # ai.save # end assigned =AssignedOrderItem.where("order_id = '#{ order.order_id }'").pluck(:assigned_order_item_id) - AssignedOrderItem.where({ order_id: '#{assigned}'}).update_all(print_status: true) + AssignedOrderItem.where('assigned_order_item_id IN (?)', assigned).update_all(print_status: true) end end diff --git a/app/models/printer/order_queue_printer.rb b/app/models/printer/order_queue_printer.rb index 267772f2..b50d83f9 100755 --- a/app/models/printer/order_queue_printer.rb +++ b/app/models/printer/order_queue_printer.rb @@ -1,9 +1,6 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker def print_order_item(print_settings,oqs, order_id, order_item_id, print_status, before_updated_qty="", options="") - #Use CUPS service - #Generate PDF - #Print # Must be one print if print_settings.print_copies == 0 print_settings.print_copies = 1 @@ -12,7 +9,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker order_item = print_query('order_item', order_item_id) #OrderItem.find_by_item_code(item_code) - filename = "tmp/order_item_#{order_id}_#{order_item_id}" + ".pdf" + # filename = "tmp/order_item_#{order_id}_#{order_item_id}" + ".pdf" pdf = OrderItemPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty) print_setting = PrintSetting.all @@ -39,6 +36,12 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # end + shop = Shop.first + directory_name = 'public/orders_'+shop.shop_code + Dir.mkdir(directory_name) unless File.exists?(directory_name) + + filename = directory_name + "/order_item_#{order_id}_#{order_item_id}" + ".pdf" + pdf.render_file filename if oqs.print_copy @@ -56,7 +59,9 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker if ENV["SERVER_MODE"] != "cloud" self.print(filename, oqs.printer_name) end - end + end + + return filename, order_id, oqs.printer_name end # Query for per order @@ -72,12 +77,19 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker print_setting = PrintSetting.all.order("id ASC") order=print_query('order_summary', order_id) + + shop = Shop.first + directory_name = 'public/orders_'+shop.shop_code + Dir.mkdir(directory_name) unless File.exists?(directory_name) + # For Print Per Item if oqs.cut_per_item order_items.each do|odi| - odi_item=print_query('order_item', odi.order_items_id) - filename = "tmp/order_item_#{order_id}" + ".pdf" + odi_item=print_query('order_item', odi.order_items_id) + + filename = directory_name + "/order_item_#{order_id}" + ".pdf" + # filename = "tmp/order_item_#{order_id}" + ".pdf" # For Item Options options = odi.options == "[]"? "" : odi.options @@ -122,7 +134,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # For Print Order Summary else - filename = "tmp/order_summary_#{order_id}" + ".pdf" + filename = directory_name + "/order_summary_#{order_id}" + ".pdf" + # filename = "tmp/order_summary_#{order_id}" + ".pdf" pdf = OrderSummaryPdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty) if !print_setting.empty? print_setting.each do |print_settings| @@ -160,6 +173,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end end end + return filename, order_id, oqs.printer_name end # Print for orders in booking @@ -173,10 +187,16 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker print_setting = PrintSetting.all.order("id ASC") order=print_query('booking_summary', booking_id) + + shop = Shop.first + directory_name = 'public/orders_'+shop.shop_code + Dir.mkdir(directory_name) unless File.exists?(directory_name) + # For Print Per Item if oqs.cut_per_item order.each do|odi| - filename = "tmp/order_item_#{booking_id}" + ".pdf" + # filename = "tmp/order_item_#{booking_id}" + ".pdf" + filename = directory_name + "/order_item_#{booking_id}" + ".pdf" # For Item Options options = odi.options == "[]"? "" : odi.options @@ -222,7 +242,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end # For Print Order Summary else - filename = "tmp/booking_summary_#{booking_id}" + ".pdf" + # filename = "tmp/booking_summary_#{booking_id}" + ".pdf" + filename = directory_name + "/booking_summary_#{booking_id}" + ".pdf" pdf = OrderSummaryPdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty) if !print_setting.empty? @@ -261,6 +282,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker end end end + return filename, booking_id, oqs.printer_name end # Query for OQS with status diff --git a/app/models/sale.rb b/app/models/sale.rb index 848245a7..ea8c3263 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -2125,7 +2125,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date, '+00:00', '+06:30'),'%Y-%m-%d') between ? and ? and and DATE_FORMAT(CONVERT_TZ(sales.receipt_date, '+00:00', '+06:30'),'%H:%i') between ? and ?",from,to,from_time,to_time) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() else query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id") if payment_method == 'card' @@ -2133,7 +2133,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date, '+00:00', '+06:30'),'%Y-%m-%d') between ? and ?",from,to) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() end else if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' || current_user.role == 'supervisor' @@ -2144,7 +2144,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' 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) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() else query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id") if payment_method == 'card' @@ -2152,7 +2152,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(CONVERT_TZ(sales.receipt_date, '+00:00', '+06:30'),'%Y-%m-%d') between ? and ?",from,to) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() end else shift = ShiftSale.current_open_shift(current_user.id) @@ -2164,7 +2164,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' 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) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() else query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id") if payment_method == 'card' @@ -2172,7 +2172,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' 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) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() end end end @@ -2185,7 +2185,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() else if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'account' || current_user.role == 'supervisor' query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id") @@ -2194,7 +2194,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() else shift = ShiftSale.current_open_shift(current_user.id) if !shift.nil? @@ -2204,7 +2204,7 @@ end else query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id) end - query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() + query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) + (#{outstanding_query})) WHEN sp.payment_method='creditnote' THEN SUM(sp.payment_amount) - (#{sub_query}) ELSE SUM(sp.payment_amount) END) as payment_amount").first() end end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 8b6bb646..97ee07a7 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -98,7 +98,7 @@ class SalePayment < ApplicationRecord booking = Booking.find_by_sale_id(sale_id) booking.booking_orders.each do |sodr| assigned =AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").pluck(:assigned_order_item_id) - AssignedOrderItem.where({ order_id: '#{assigned}'}).update_all(print_status: true) + AssignedOrderItem.where('assigned_order_item_id IN (?)', assigned).update_all(delivery_status: true) # AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi| # aoi.delivery_status = 1 # aoi.save diff --git a/app/models/stock_check_item.rb b/app/models/stock_check_item.rb index 8653837c..9db680d2 100755 --- a/app/models/stock_check_item.rb +++ b/app/models/stock_check_item.rb @@ -36,10 +36,10 @@ class StockCheckItem < ApplicationRecord def self.get_transaction(from, to, item_code) transaction = all if !from.nil? && !to.nil? - transaction = transaction.where('created_at between ? and ?', from, to) + transaction = transaction.where('created_at between ? and ?', from, to).order("item_code asc, different desc") end if item_code.present? - transaction = transaction.where(item_code: item_code) + transaction = transaction.where(item_code: item_code).order("item_code asc, different desc") end transaction end diff --git a/app/models/stock_journal.rb b/app/models/stock_journal.rb index fa4bd285..9a30d3b0 100755 --- a/app/models/stock_journal.rb +++ b/app/models/stock_journal.rb @@ -4,10 +4,11 @@ class StockJournal < ApplicationRecord STOCK_CHECK_TRANS = "stock_check" def self.add_to_journal(item, balance, stock_message, inventory_definition) # item => saleObj | balance => Stock journal + journal = StockJournal.new + journal.credit = balance balance = calculate_balance(balance, item.qty) - - journal = StockJournal.new + journal.item_code = item.item_instance_code journal.inventory_definition_id = inventory_definition.id journal.debit = item.qty diff --git a/app/views/inventory/inventory/_inventory_list.html.erb b/app/views/inventory/inventory/_inventory_list.html.erb index ff6ccd5d..921c382a 100755 --- a/app/views/inventory/inventory/_inventory_list.html.erb +++ b/app/views/inventory/inventory/_inventory_list.html.erb @@ -5,12 +5,14 @@
- 1) <%= t("views.btn.new") + " " + (t :inventory) %> - <%= t("views.right_panel.detail.create_btn_txt") %> <%= t("views.right_panel.detail.inventory") %>
+ 1) <%= (t :track) +" "+ t("views.btn.new") + " " + (t :inventory) %> - <%= t("views.right_panel.detail.create_btn_txt") %> <%= t("views.right_panel.detail.inventory") %>
- 2) <%= t("views.btn.new") + " " + t("views.right_panel.detail.stock_taking") %> - <%= t("views.right_panel.detail.create_btn_txt") %> <%= t("views.right_panel.detail.stock_taking_txt") %>
+ 2) <%= t("views.right_panel.detail.stock_taking") %> - <%= t("views.right_panel.detail.create_btn_txt") %> <%= t("views.right_panel.detail.stock_taking_txt") %>
+
1) <%= t("views.right_panel.button.home") %> - <%= t("views.right_panel.detail.home_txt") %>
@@ -51,12 +51,12 @@
window.location.href = '<%= inventory_stock_checks_path %>';
});
- $('#stock_check_report').on('click', function () {
- window.location.href = '<%= reports_stock_check_index_path %>';
- });
+ // $('#stock_check_report').on('click', function () {
+ // window.location.href = '<%= reports_stock_check_index_path %>';
+ // });
$('#new_inventory_product').on('click',function(){
window.location.href = '/inventory/inventory_definitions/new';
-})
+ });
diff --git a/app/views/inventory/inventory/show.html.erb b/app/views/inventory/inventory/show.html.erb
new file mode 100644
index 00000000..0176928b
--- /dev/null
+++ b/app/views/inventory/inventory/show.html.erb
@@ -0,0 +1,70 @@
+
| <%= t("views.right_panel.detail.date") %> | +<%= t("views.right_panel.detail.type") %> | +<%= t("views.right_panel.detail.item") %> <%= t("views.right_panel.detail.name") %> | +<%= t :credit %> | +<%= t :debit %> | +<%= t("views.right_panel.detail.balance") %> | +<%= t("views.right_panel.detail.remark") %> | +|
|---|---|---|---|---|---|---|---|
| <%= result.created_at.strftime('%e %b %Y %I:%M %p') rescue '-' %> | +<%= result.trans_type rescue '-' %> | ++ <% menu_item = MenuItemInstance.find_by_item_instance_code(result.item_code)%> + <% if menu_item.nil? %> + <%= Product.find_by_item_code(result.item_code).name rescue "-" %> + <% else %> + <%= menu_item.menu_item.name rescue "-" %> + - <%= menu_item.item_instance_name rescue "-" %> + <% end %> + | +<%= result.credit rescue '-' %> | +<%= result.debit rescue '-' %> | +<%= result.balance rescue '-' %> | +<%= result.remark rescue '-' %> | +|
| There is no record... | +|||||||