diff --git a/README.md b/README.md
index b42782e7..d57ed858 100755
--- a/README.md
+++ b/README.md
@@ -111,6 +111,31 @@ sudo cat /etc/sudoers
### cope and parse
%superuser ALL=(ALL) NOPASSWD: ALL
+<---- Extra Fields Script ----->
+DROP TABLE IF EXISTS `display_images`;
+CREATE TABLE `display_images` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `shop_id` int(11) DEFAULT NULL,
+ `image` blob,
+ `created_by` varchar(255) DEFAULT NULL,
+ `created_at` datetime NOT NULL,
+ `updated_at` datetime NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+ALTER TABLE customers
+ADD COLUMN image_path VARCHAR(255);
+
+ALTER TABLE employees
+ADD COLUMN image_path VARCHAR(255);
+
+ALTER TABLE commissioners
+ADD COLUMN image_path VARCHAR(255);
+
+ALTER TABLE sales
+ADD COLUMN equal_persons INT(11) after rebate_status;
+<---- Extra Fields Script ----->
+
* ToDo list
1. Migration
diff --git a/app/assets/javascripts/reports/product_sale.coffee b/app/assets/javascripts/reports/product_sale.coffee
new file mode 100644
index 00000000..24f83d18
--- /dev/null
+++ b/app/assets/javascripts/reports/product_sale.coffee
@@ -0,0 +1,3 @@
+# Place all the behaviors and hooks related to the matching controller here.
+# All this logic will automatically be available in application.js.
+# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/app/assets/stylesheets/reports/product_sale.scss b/app/assets/stylesheets/reports/product_sale.scss
new file mode 100644
index 00000000..cb0b9a13
--- /dev/null
+++ b/app/assets/stylesheets/reports/product_sale.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the reports/ProductSale controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index adb577ba..da17a7eb 100755
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,60 +1,25 @@
class ApplicationController < ActionController::Base
- include LicenseVerification
+ include LoginVerification
#before_action :check_installation
protect_from_forgery with: :exception
# lookup domain for db from provision
- before_action :set_locale
-
- helper_method :current_company,:current_login_employee,:current_user,:shop_detail
+ # before_action :set_locale
+ # helper_method :current_company,:current_login_employee,:current_user
# alias_method :current_user, :current_login_employee,:current_user
#this is base api base controller to need to inherit.
#all token authentication must be done here
#response format must be set to JSON
- #change locallization
- def set_locale
- I18n.locale = params[:locale] || I18n.default_locale
- end
-
- # RESTful url for localize
- def default_url_options
- { locale: I18n.locale }
- end
-
rescue_from CanCan::AccessDenied do |exception|
flash[:warning] = exception.message
redirect_to root_path
end
- def current_user
- @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
- end
-
- # Get current Cashier
- def get_cashier
- @cashier = Employee.where("role = 'cashier' AND token_session <> ''")
- end
-
- def current_company
- begin
- return Company.first
- rescue
- return nil
- end
-
- end
-
def shop_detail
@shop = Shop.first
end
-
- def current_login_employee
- if (!session[:session_token].nil?)
- @employee = Employee.find_by_token_session(session[:session_token])
- end
- end
end
diff --git a/app/controllers/base_crm_controller.rb b/app/controllers/base_crm_controller.rb
index 5c412fcf..d7c008f6 100755
--- a/app/controllers/base_crm_controller.rb
+++ b/app/controllers/base_crm_controller.rb
@@ -1,4 +1,5 @@
-class BaseCrmController < ApplicationController
+class BaseCrmController < ActionController::Base
+ include LoginVerification
layout "CRM"
#before_action :check_installation
@@ -8,19 +9,4 @@ class BaseCrmController < ApplicationController
flash[:warning] = exception.message
redirect_to root_path
end
-
- #change locallization
- def set_locale
- I18n.locale = params[:locale] || I18n.default_locale
- end
-
- # RESTful url for localize
- def default_url_options
- { locale: I18n.locale }
- end
-
- def current_user
- @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
- end
-
end
diff --git a/app/controllers/base_inventory_controller.rb b/app/controllers/base_inventory_controller.rb
index f44747d3..fc9c0c47 100755
--- a/app/controllers/base_inventory_controller.rb
+++ b/app/controllers/base_inventory_controller.rb
@@ -1,4 +1,5 @@
-class BaseInventoryController < ApplicationController
+class BaseInventoryController < ActionController::Base
+ include LoginVerification
layout "inventory"
#before_action :check_installation
@@ -8,9 +9,4 @@ class BaseInventoryController < ApplicationController
flash[:warning] = exception.message
redirect_to root_path
end
-
- def current_user
- @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
- end
-
end
diff --git a/app/controllers/base_oqs_controller.rb b/app/controllers/base_oqs_controller.rb
index f1f2831a..19b01ea3 100755
--- a/app/controllers/base_oqs_controller.rb
+++ b/app/controllers/base_oqs_controller.rb
@@ -1,4 +1,5 @@
-class BaseOqsController < ApplicationController
+class BaseOqsController < ActionController::Base
+ include LoginVerification
layout "OQS"
#before_action :check_installation
@@ -8,19 +9,4 @@ class BaseOqsController < ApplicationController
flash[:warning] = exception.message
redirect_to root_path
end
-
- #change locallization
- def set_locale
- I18n.locale = params[:locale] || I18n.default_locale
- end
-
- # RESTful url for localize
- def default_url_options
- { locale: I18n.locale }
- end
-
- def current_user
- @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
- end
-
end
diff --git a/app/controllers/base_origami_controller.rb b/app/controllers/base_origami_controller.rb
index 6af6c1d4..4b20f9e5 100755
--- a/app/controllers/base_origami_controller.rb
+++ b/app/controllers/base_origami_controller.rb
@@ -1,10 +1,12 @@
-class BaseOrigamiController < ApplicationController
+class BaseOrigamiController < ActionController::Base
+ include LoginVerification
layout "origami"
# before_action :checkin_process
#before_action :check_installation
protect_from_forgery with: :exception
+
rescue_from CanCan::AccessDenied do |exception|
flash[:warning] = exception.message
# redirect_to origami_root_path
diff --git a/app/controllers/base_report_controller.rb b/app/controllers/base_report_controller.rb
index f7551f22..7689ed54 100755
--- a/app/controllers/base_report_controller.rb
+++ b/app/controllers/base_report_controller.rb
@@ -1,18 +1,15 @@
-class BaseReportController < ApplicationController
- layout "application"
+class BaseReportController < ActionController::Base
+ include LoginVerification
+ layout "application"
- #before_action :check_installation
- protect_from_forgery with: :exception
+ #before_action :check_installation
+ protect_from_forgery with: :exception
- rescue_from CanCan::AccessDenied do |exception|
+ rescue_from CanCan::AccessDenied do |exception|
flash[:warning] = exception.message
redirect_to root_path
end
- def current_user
- @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
- end
-
PERIOD = {
"today" => 0,
"yesterday" => 1,
@@ -82,8 +79,5 @@ class BaseReportController < ApplicationController
end
return from, to
-
-
end
-
end
diff --git a/app/controllers/base_waiter_controller.rb b/app/controllers/base_waiter_controller.rb
index 248e32a6..ca4622db 100755
--- a/app/controllers/base_waiter_controller.rb
+++ b/app/controllers/base_waiter_controller.rb
@@ -1,4 +1,5 @@
-class BaseWaiterController < ApplicationController
+class BaseWaiterController < ActionController::Base
+ include LoginVerification
layout "waiter"
#before_action :check_installation
diff --git a/app/controllers/concerns/login_verification.rb b/app/controllers/concerns/login_verification.rb
index aa9d8319..36bb2a6e 100755
--- a/app/controllers/concerns/login_verification.rb
+++ b/app/controllers/concerns/login_verification.rb
@@ -3,7 +3,7 @@ module LoginVerification
included do
before_action :authenticate_session_token
- helper_method :current_company,:current_login_employee
+ helper_method :current_company, :current_login_employee, :current_user, :get_cashier
end
#this is base api base controller to need to inherit.
@@ -15,16 +15,32 @@ module LoginVerification
rescue
return nil
end
-
end
def current_login_employee
- @employee = Employee.find_by_token_session(session[:session_token])
+ if (!session[:session_token].nil?)
+ @employee = Employee.find_by_token_session(session[:session_token])
+ else
+ render_unauthorized
+ end
+ end
+
+ def current_user
+ if (!session[:session_token].nil?)
+ @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
+ else
+ render_unauthorized
+ end
+ end
+
+ # Get current Cashiers
+ def get_cashier
+ @cashier = Employee.where("role = 'cashier' AND token_session <> ''")
end
protected
# Authenticate the user with token based authentication
- def authenticate
+ def authenticate
authenticate_session_token || render_unauthorized
end
@@ -38,9 +54,9 @@ module LoginVerification
if @user
return true
#Maybe log - login?
- else
- flash[:notice] = 'Invalid Access!'
- # return false
+ # else
+ # flash[:notice] = 'Invalid Access!'
+ # # return false
end
end
end
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index 600801a8..940f6103 100755
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -65,57 +65,59 @@ class HomeController < ApplicationController
end
def dashboard
+ @from, @to = get_date_range_from_params
+
@shop = Shop.first
today = DateTime.now.strftime('%Y-%m-%d')
@orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
@sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
- @top_products = Sale.top_products(today).sum('i.qty')
- @bottom_products = Sale.bottom_products(today).sum('i.qty')
- @hourly_sales = Sale.hourly_sales(today).sum(:grand_total)
+ @top_products = Sale.top_products(today,@from,@to).sum('i.qty')
+ @bottom_products = Sale.bottom_products(today,@from,@to).sum('i.qty')
+ @hourly_sales = Sale.hourly_sales(today,@from,@to).sum(:grand_total)
# .group_by_hour(:created_at, :time_zone => 'Asia/Rangoon',format: '%I:%p')
# .sum(:grand_total)
- @employee_sales = Sale.employee_sales(today)
+ @employee_sales = Sale.employee_sales(today,@from,@to)
.sum('(CASE WHEN sp.payment_method="cash" THEN (sp.payment_amount - sales.amount_changed) ELSE sp.payment_amount END)')
- @inventories = StockJournal.inventory_balances(today).sum(:balance)
+ @inventories = StockJournal.inventory_balances(today,@from,@to).sum(:balance)
- @total_sale = Sale.total_sale(today)
- @total_count = Sale.total_count(today)
- @total_card = Sale.total_card_sale(today)
- @total_credit = Sale.credit_payment(today)
+ @total_sale = Sale.total_sale(today,current_user,@from,@to)
+ @total_count = Sale.total_count(today,current_user,@from,@to)
+ @total_card = Sale.total_card_sale(today,current_user,@from,@to)
+ @total_credit = Sale.credit_payment(today,current_user,@from,@to)
@sale_data = Array.new
- @total_payment_methods = Sale.total_payment_methods(today)
+ @total_payment_methods = Sale.total_payment_methods(today,current_user,@from,@to)
@total_payment_methods.each do |payment|
if payment.payment_method == "mpu" || payment.payment_method == "visa" || payment.payment_method == "master" || payment.payment_method == "jcb"
- pay = Sale.payment_sale('card', today)
+ pay = Sale.payment_sale('card', today, current_user,@from,@to)
@sale_data.push({'card' => pay.payment_amount})
else
- pay = Sale.payment_sale(payment.payment_method, today)
+ pay = Sale.payment_sale(payment.payment_method, today, current_user,@from,@to)
@sale_data.push({payment.payment_method => pay.payment_amount})
end
end
- @summ_sale = Sale.summary_sale_receipt(today)
- @total_customer = Sale.total_customer(today)
- @total_dinein = Sale.total_dinein(today)
- @total_takeaway = Sale.total_takeaway(today)
- @total_other_customer = Sale.total_other_customer(today)
- @total_membership = Sale.total_membership(today)
+ @summ_sale = Sale.summary_sale_receipt(today,current_user,@from,@to)
+ @total_customer = Sale.total_customer(today,current_user,@from,@to)
+ @total_dinein = Sale.total_dinein(today,current_user,@from,@to)
+ @total_takeaway = Sale.total_takeaway(today,current_user,@from,@to)
+ @total_other_customer = Sale.total_other_customer(today,current_user,@from,@to)
+ @total_membership = Sale.total_membership(today,current_user,@from,@to)
- @total_order = Sale.total_order(today)
- @total_accounts = Sale.total_account(today)
+ @total_order = Sale.total_order(today,current_user,@from,@to)
+ @total_accounts = Sale.total_account(today,current_user,@from,@to)
@account_data = Array.new
@total_accounts.each do |account|
- acc = Sale.account_data(account.account_id, today)
+ acc = Sale.account_data(account.account_id, today,current_user,@from,@to)
if !acc.nil?
@account_data.push({account.title => acc.cnt_acc, account.title + '_amount' => acc.total_acc})
end
end
- @top_items = Sale.top_items(today)
- @total_foc_items = Sale.total_foc_items(today)
+ @top_items = Sale.top_items(today,current_user,@from,@to)
+ @total_foc_items = Sale.total_foc_items(today,current_user,@from,@to)
# get printer info
@print_settings = PrintSetting.get_precision_delimiter()
@@ -173,4 +175,19 @@ class HomeController < ApplicationController
end
end
+ def get_date_range_from_params
+ from = params[:from]
+ to = params[:to]
+
+ if from.present? && to.present?
+ f_date = DateTime.parse(from)
+ t_date = DateTime.parse(to)
+ f_time = Time.mktime(f_date.year,f_date.month,f_date.day,f_date.hour,f_date.min,f_date.sec)
+ t_time = Time.mktime(t_date.year,t_date.month,t_date.day,t_date.hour,t_date.min,t_date.sec)
+ from = f_time.beginning_of_day.utc.getlocal
+ to = t_time.end_of_day.utc.getlocal
+ end
+
+ return from, to
+ end
end
diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb
index ad430e49..53a3e879 100755
--- a/app/controllers/oqs/home_controller.rb
+++ b/app/controllers/oqs/home_controller.rb
@@ -14,19 +14,19 @@ class Oqs::HomeController < BaseOqsController
@queue_stations = OrderQueueStation.all
@queue_completed_item = completed_order(@filter)
- # if !@queue_completed_item.empty?
- # @queue_completed_item.each do |queue_item|
- # if !queue_item.set_menu_items.nil?
- # instance_item_sets = JSON.parse(JSON.parse(queue_item.set_menu_items))
- # arr_instance_item_sets = Array.new
- # instance_item_sets.each do |instance_item|
- # item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name
- # arr_instance_item_sets.push(item_instance_name)
- # end
- # queue_item.set_menu_items = arr_instance_item_sets
- # end
- # end
- # end
+ if !@queue_completed_item.empty?
+ @queue_completed_item.each do |queue_item|
+ if !queue_item.set_menu_items.nil?
+ instance_item_sets = JSON.parse(JSON.parse(queue_item.set_menu_items))
+ arr_instance_item_sets = Array.new
+ instance_item_sets.each do |instance_item|
+ item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name
+ arr_instance_item_sets.push(item_instance_name)
+ end
+ queue_item.set_menu_items = arr_instance_item_sets
+ end
+ end
+ end
if !@filter.nil?
@count = queue_items_count_query(false,@filter)
diff --git a/app/controllers/origami/home_controller.rb b/app/controllers/origami/home_controller.rb
index c33a02fa..1a73ef8c 100755
--- a/app/controllers/origami/home_controller.rb
+++ b/app/controllers/origami/home_controller.rb
@@ -90,14 +90,17 @@ class Origami::HomeController < BaseOrigamiController
# @assigned_order_items.push({item.order_items_id => assigned_order_items.assigned_order_item_id})
# end
end
- accounts = @customer.tax_profiles
- puts accounts.to_json
- puts "sssssssssss"
- puts @customer.tax_profiles
- @account_arr =[]
- accounts.each do |acc|
- account = TaxProfile.find(acc)
- @account_arr.push(account)
+ @account_arr = Array.new
+ if @customer.tax_profiles
+ accounts = @customer.tax_profiles
+ puts accounts.to_json
+ puts "sssssssssss"
+ puts @customer.tax_profiles
+ @account_arr =[]
+ accounts.each do |acc|
+ account = TaxProfile.find(acc)
+ @account_arr.push(account)
+ end
end
end
end
diff --git a/app/controllers/origami/shifts_controller.rb b/app/controllers/origami/shifts_controller.rb
index 435a98d1..29a6e76a 100755
--- a/app/controllers/origami/shifts_controller.rb
+++ b/app/controllers/origami/shifts_controller.rb
@@ -61,7 +61,21 @@ class Origami::ShiftsController < BaseOrigamiController
end
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
+
+ close_cashier_pdf = Lookup.collection_of("print_settings")
unique_code = "CloseCashierPdf"
+
+ if !close_cashier_pdf.empty?
+ close_cashier_pdf.each do |close_cashier|
+ if close_cashier[0] == 'CloseCashierCustomisePdf'
+ if close_cashier[1] == '1'
+ unique_code="CloseCashierCustomisePdf"
+ else
+ unique_code="CloseCashierPdf"
+ end
+ end
+ end
+ end
shop_details = Shop.find(1)
#get tax
shift_obj = ShiftSale.where('id =?',@shift.id)
@@ -73,12 +87,16 @@ class Origami::ShiftsController < BaseOrigamiController
@total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount')
@total_discount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'discount')
@total_member_discount = ShiftSale.get_total_member_discount(@shift)
+ @total_dinein = ShiftSale.get_total_dinein(@shift).total_dinein_amount
+ @total_takeway = ShiftSale.get_total_takeway(@shift).total_takeway_amount
+ @total_other_charges = ShiftSale.get_total_other_charges(@shift).total_other_charges_amount
+
# get printer info
print_settings = PrintSetting.find_by_unique_code(unique_code)
-
+ #byebug
printer = Printer::CashierStationPrinter.new(print_settings)
- printer.print_close_cashier(print_settings,cashier_terminal,@shift,shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount)
+ printer.print_close_cashier(print_settings,cashier_terminal,@shift,shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges)
end
end
Employee.logout(session[:session_token])
@@ -102,8 +120,7 @@ class Origami::ShiftsController < BaseOrigamiController
# Calculate price_by_accounts
@total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount')
@total_discount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'discount')
- @total_member_discount = ShiftSale.get_total_member_discount(@shift)
-
+ @total_member_discount = ShiftSale.get_total_member_discount(@shift)
end
end
diff --git a/app/controllers/reports/product_sale_controller.rb b/app/controllers/reports/product_sale_controller.rb
new file mode 100644
index 00000000..38a77115
--- /dev/null
+++ b/app/controllers/reports/product_sale_controller.rb
@@ -0,0 +1,21 @@
+class Reports::ProductSaleController < BaseReportController
+ authorize_resource :class => false
+
+ def index
+ @order_by = 'desc'
+ if !params[:order_by].nil?
+ @order_by = params[:order_by]
+ end
+
+ @sale_data = Sale.get_menu_item_query(@order_by)
+
+ # get printer info
+ @print_settings = PrintSetting.get_precision_delimiter()
+
+ respond_to do |format|
+ format.html
+ format.json
+ format.xls
+ end
+ end
+end
diff --git a/app/controllers/reports/saleitem_controller.rb b/app/controllers/reports/saleitem_controller.rb
index 58421342..b9712722 100755
--- a/app/controllers/reports/saleitem_controller.rb
+++ b/app/controllers/reports/saleitem_controller.rb
@@ -33,7 +33,7 @@ class Reports::SaleitemController < BaseReportController
@from = from
@to = to
-
+
# get printer info
@print_settings = PrintSetting.get_precision_delimiter()
diff --git a/app/controllers/reports/stock_check_controller.rb b/app/controllers/reports/stock_check_controller.rb
index 9a033956..7dee598e 100755
--- a/app/controllers/reports/stock_check_controller.rb
+++ b/app/controllers/reports/stock_check_controller.rb
@@ -17,7 +17,7 @@ class Reports::StockCheckController < BaseReportController
@from = from_date
@to = to_date
# get printer info
- @print_settings = PrintSetting.get_precision_delimiter()
+ @print_settings = PrintSetting.get_precision_delimiter()
respond_to do |format|
format.html
format.xls
diff --git a/app/helpers/reports/product_sale_helper.rb b/app/helpers/reports/product_sale_helper.rb
new file mode 100644
index 00000000..103bd624
--- /dev/null
+++ b/app/helpers/reports/product_sale_helper.rb
@@ -0,0 +1,2 @@
+module Reports::ProductSaleHelper
+end
diff --git a/app/models/printer/cashier_station_printer.rb b/app/models/printer/cashier_station_printer.rb
index e62ab4d1..d4817346 100755
--- a/app/models/printer/cashier_station_printer.rb
+++ b/app/models/printer/cashier_station_printer.rb
@@ -22,18 +22,44 @@ class Printer::CashierStationPrinter < Printer::PrinterWorker
# end
#Bill Receipt Print
- def print_close_cashier(printer_settings,cashier_terminal,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount)
+ # def print_close_cashier(printer_settings,cashier_terminal,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges)
+ # #Use CUPS service
+ # #Generate PDF
+ # #Print
+ # cashier = shift_sale.employee.name
+ # shift_name = shift_sale.shift_started_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") + "_" + shift_sale.shift_closed_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p")
+
+ # pdf = CloseCashierCustomisePdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges)
+ # filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
+ # pdf.render_file filename
+ # self.print(filename, cashier_terminal.printer_name)
+ # end
+
+ def print_close_cashier(printer_settings,cashier_terminal,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges)
+
#Use CUPS service
#Generate PDF
#Print
cashier = shift_sale.employee.name
shift_name = shift_sale.shift_started_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") + "_" + shift_sale.shift_closed_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p")
-
+ filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
pdf = CloseCashierPdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount)
- filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
+ close_cashier_pdf = Lookup.collection_of("print_settings") #print_settings with name:CloseCashierPdf
+
+ if !close_cashier_pdf.empty?
+ close_cashier_pdf.each do |close_cashier|
+ if close_cashier[0] == 'CloseCashierCustomisePdf'
+ if close_cashier[1] == '1'
+ pdf = CloseCashierCustomisePdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges)
+ else
+ pdf = CloseCashierPdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount)
+ end
+ end
+ end
+ end
pdf.render_file filename
+
self.print(filename, cashier_terminal.printer_name)
end
-
-
+ #sqa
end
diff --git a/app/models/sale.rb b/app/models/sale.rb
index ccc06510..3fa19ef9 100755
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -790,7 +790,6 @@ end
def self.get_by_shift_items(shift_sale_range, shift, from, to, status)
# date_type_selection = get_sql_function_for_report_type(report_type)
-
query = self.get_item_query()
discount_query = 0
@@ -866,6 +865,27 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status)
return query,other_charges, discount_query , total_cash_amount , total_card_amount , total_credit_amount , total_foc_amount , total_grand_total , change_amount
end
+#product sale report query
+def self.get_menu_item_query(order_by)
+ query = MenuItem.unscoped.select("acc.id as account_id,
+ acc.title as account_name,
+ mii.item_instance_code as item_code, " +
+ "(CASE WHEN si.qty > 0 THEN SUM(si.qty) ELSE 0 END) as total_item," +
+ "(CASE WHEN si.unit_price > 0 THEN si.unit_price ELSE mii.price END) as unit_price," +
+ "(CASE WHEN (si.qty * si.unit_price) > 0 THEN (si.qty * si.unit_price) ELSE 0 END) as grand_total," +
+ "mii.price as unit_price, menu_items.name as product_name,
+ mc.name as" +
+ " menu_category_name,mc.id as menu_category_id, si.remark as status_type, si.price as price ")
+ .joins(" LEFT JOIN menu_item_instances mii ON menu_items.id = mii.menu_item_id" +
+ " LEFT JOIN menu_categories mc ON mc.id = menu_items.menu_category_id" +
+ " LEFT JOIN accounts acc ON acc.id = menu_items.account_id" +
+ " LEFT JOIN sale_items si ON si.item_instance_code = mii.item_instance_code" +
+ " LEFT JOIN sales s ON s.sale_id = si.sale_id")
+ .group("mc.id, menu_items.name, si.qty, (CASE WHEN si.unit_price > 0 THEN si.unit_price ELSE mii.price END)")
+ .order("si.qty #{order_by}, menu_items.menu_category_id #{order_by}")
+end
+#product sale report query
+
def self.get_shift_sales_by_receipt_no(shift_sale_range,shift,from,to,payment_type)
## => left join -> show all sales although no orders
if payment_type.blank?
@@ -1073,95 +1093,376 @@ end
return tax
end
- def self.top_products(today)
- query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
+ def self.top_products(today,from,to)
+ if !from.nil? && !to.nil?
+ query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
+ " i.price as unit_price,mi.name as product_name")
+ .joins("JOIN sale_items i ON i.sale_id = sales.sale_id JOIN menu_items mi ON i.product_code = mi.item_code")
+ .where("(i.qty > 0 and i.price > 0) and receipt_date between '#{from}' and '#{to}'"+
+ "and payment_status='paid' and sale_status= 'completed'")
+ .group('mi.name')
+ .order("SUM(i.qty) DESC").limit(20)
+ else
+ query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
" i.price as unit_price,mi.name as product_name")
.joins("JOIN sale_items i ON i.sale_id = sales.sale_id JOIN menu_items mi ON i.product_code = mi.item_code")
.where("(i.qty > 0 and i.price > 0) and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'"+
"and payment_status='paid' and sale_status= 'completed'")
.group('mi.name')
- .order("SUM(i.qty) DESC").limit(10)
+ .order("SUM(i.qty) DESC").limit(20)
+ end
end
- def self.bottom_products(today)
- query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
+ def self.bottom_products(today,from,to)
+ if !from.nil? && !to.nil?
+ query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
+ " i.price as unit_price,mi.name as product_name")
+ .joins("JOIN sale_items i ON i.sale_id = sales.sale_id JOIN menu_items mi ON i.product_code = mi.item_code")
+ .where("(i.qty > 0 and i.price > 0) and receipt_date between '#{from}' and '#{to}'"+
+ "and payment_status='paid' and sale_status= 'completed'")
+ .group('mi.name')
+ .order("SUM(i.qty) ASC").limit(20)
+ else
+ query = Sale.select("(SUM(i.qty) * i.price) as grand_total,SUM(i.qty) as total_item," +
" i.price as unit_price,mi.name as product_name")
.joins("JOIN sale_items i ON i.sale_id = sales.sale_id JOIN menu_items mi ON i.product_code = mi.item_code")
.where("(i.qty > 0 and i.price > 0) and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'"+
"and payment_status='paid' and sale_status= 'completed'")
.group('mi.name')
- .order("SUM(i.qty) ASC").limit(10)
+ .order("SUM(i.qty) ASC").limit(20)
+ end
end
- def self.hourly_sales(today)
- query= Sale.select("grand_total")
+ def self.hourly_sales(today,from,to)
+ if !from.nil? && !to.nil?
+ query= Sale.select("grand_total")
+ .where('payment_status="paid" and sale_status = "completed" and receipt_date between ? and ?',from,to)
+ .group("date_format(CONVERT_TZ(receipt_date,'+00:00', 'SYSTEM'), '%I %p')")
+ .order('receipt_date')
+ else
+ query= Sale.select("grand_total")
.where('payment_status="paid" and sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today)
.group("date_format(CONVERT_TZ(receipt_date,'+00:00', 'SYSTEM'), '%I %p')")
.order('receipt_date')
+ end
end
- def self.employee_sales(today)
- query = Sale.joins("JOIN employees as e on e.id=sales.cashier_id")
+ def self.employee_sales(today,from,to)
+ if !from.nil? && !to.nil?
+ query = Sale.joins("JOIN employees as e on e.id=sales.cashier_id")
+ .joins("JOIN sale_payments as sp on sp.sale_id=sales.sale_id")
+ .where("sales.payment_status='paid' and sales.sale_status = 'completed' and sales.receipt_date between '#{from}' and '#{to}'")
+ .group("(CASE WHEN (sp.payment_method='mpu' or sp.payment_method='visa' or sp.payment_method='master' or sp.payment_method='jcb' or sp.payment_method='unionpay') THEN 'card' ELSE sp.payment_method END)","e.name")
+ .order("e.name")
+ else
+ query = Sale.joins("JOIN employees as e on e.id=sales.cashier_id")
.joins("JOIN sale_payments as sp on sp.sale_id=sales.sale_id")
.where("sales.payment_status='paid' and sales.sale_status = 'completed' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = '#{today}'")
.group("(CASE WHEN (sp.payment_method='mpu' or sp.payment_method='visa' or sp.payment_method='master' or sp.payment_method='jcb' or sp.payment_method='unionpay') THEN 'card' ELSE sp.payment_method END)","e.name")
.order("e.name")
+ end
end
- def self.total_sale(today)
- total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).sum("grand_total")
-
- end
-
- def self.total_count(today)
- total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).count
- end
-
- def self.total_card_sale(today)
- payment_type = " and payment_method = 'mpu' or payment_method = 'visa' or payment_method = 'master' or payment_method = 'jcb' or payment_method = 'unionpay' "
- # query = Sale.select("SUM(tax_payable_amount) AS st_amount,tax_name")
- # .where('sale_status = "completed" #{payment_type} and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today)
- # .joins("join sale_payments on sale_id = sales.sale_id")
- # .group("sales.sale_id")
-
- query = Sale.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
- .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
- .sum("sp.payment_amount")
-
- end
-
- def self.credit_payment(today)
- query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and DATE_FORMAT(s.receipt_date,"%Y-%m-%d") = ?',today)
- .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
- .sum("payment_amount")
- end
-
- def self.summary_sale_receipt(today)
- query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
- .where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today)
- .first()
- end
-
- def self.total_payment_methods(today)
- query = Sale.select("distinct sp.payment_method")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
- .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
- end
-
- def self.payment_sale(payment_method, today)
- query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
- if payment_method == 'card'
- query = query.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
- else
- query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ def self.total_sale(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ total = Sale.where('sale_status = "completed" and receipt_date between ? and ?',from,to).sum("grand_total")
+ else
+ if current_user.role == 'administrator'
+ total = Sale.where('sale_status = "completed" and receipt_date between ? and ?',from,to).sum("grand_total")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ total = Sale.where('sale_status = "completed" and sales.receipt_date between ? and ? and shift_sale_id=?',from,to,shift.id)
+ .sum("grand_total")
end
- query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ end
+ end
+ else
+ if current_user.nil?
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).sum("grand_total")
+ else
+ if current_user.role == 'administrator'
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).sum("grand_total")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and shift_sale_id=?',today,shift.id)
+ .sum("grand_total")
+ end
+ end
+ end
+ end
end
- def self.total_customer(today)
- dinein_cnt = self.total_dinein(today)
- takeaway_cnt = self.total_takeaway(today)
- membership_cnt = self.total_membership(today)
+ def self.total_count(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ total = Sale.where('sale_status = "completed" and receipt_date between ? and ?',from,to).count
+ else
+ if current_user.role == 'administrator'
+ total = Sale.where('sale_status = "completed" and receipt_date between ? and ?',from,to).count
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ total = Sale.where('sale_status = "completed" and receipt_date between ? and ? and shift_sale_id = ?',from,to,shift.id).count
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).count
+ else
+ if current_user.role == 'administrator'
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today).count
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ total = Sale.where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ? and shift_sale_id = ?',today,shift.id).count
+ end
+ end
+ end
+ end
+ end
+
+ def self.total_card_sale(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',from,to)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',from,to)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay") and shift_sale_id=?',from,to,shift.id)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay") and shift_sale_id=?',today,shift.id)
+ .joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
+ .sum("sp.payment_amount")
+ end
+ end
+ end
+ end
+ end
+
+ def self.credit_payment(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and s.receipt_date between ? and ?',from,to)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ else
+ if current_user.role == 'administrator'
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and s.receipt_date between ? and ?',from,to)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and s.receipt_date between ? and ? and s.shift_sale_id=?',from,to,shift.id)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and DATE_FORMAT(s.receipt_date,"%Y-%m-%d") = ?',today)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ else
+ if current_user.role == 'administrator'
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and DATE_FORMAT(s.receipt_date,"%Y-%m-%d") = ?',today)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = SalePayment.where('s.sale_status = "completed" and payment_method="creditnote" and DATE_FORMAT(s.receipt_date,"%Y-%m-%d") = ? and s.shift_sale_id=?',today,shift.id)
+ .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
+ .sum("payment_amount")
+ end
+ end
+ end
+ end
+ end
+
+ def self.summary_sale_receipt(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and receipt_date between ? and ?',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and receipt_date between ? and ?',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and receipt_date between ? and ? and shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ?',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select('count(sale_id) as total_receipt, (case when sum(total_amount) > 0 then sum(total_amount) else 0.0 end) as total_amount, (case when sum(grand_total) > 0 then sum(grand_total) else 0.0 end) as grand_total, (case when sum(total_discount) > 0 then sum(total_discount) else 0.0 end) as total_discount, (case when sum(total_tax) > 0 then sum(total_tax) else 0.0 end) as total_tax')
+ .where('sale_status = "completed" and DATE_FORMAT(receipt_date,"%Y-%m-%d") = ? and shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
+ end
+
+ def self.total_payment_methods(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ?',from,to)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ?',from,to)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and sales.shift_sale_id=?',from,to,shift.id)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("distinct sp.payment_method")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and sales.shift_sale_id=?',today,shift.id)
+ .joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ end
+ end
+ end
+ end
+ end
+
+ def self.payment_sale(payment_method, today, current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',from,to)
+ else
+ query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and sales.receipt_date between ? and ?",from,to)
+ end
+ query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',from,to)
+ else
+ query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and sales.receipt_date between ? and ?",from,to)
+ end
+ query.select("(CASE WHEN sp.payment_method='cash' THEN (SUM(sp.payment_amount) - SUM(sales.amount_changed)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay") and sales.shift_sale_id=?',from,to,shift.id)
+ else
+ query = query.where("sales.sale_status = 'completed' and sp.payment_method = '#{payment_method}' and sales.receipt_date 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)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
+ 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)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay")',today)
+ 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)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
+ if payment_method == 'card'
+ query = query.where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay") and sales.shift_sale_id=?',today,shift.id)
+ 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)) ELSE SUM(sp.payment_amount) END) as payment_amount").first()
+ end
+ end
+ end
+ end
+ end
+
+ def self.total_customer(today,current_user=nil,from=nil,to=nil)
+ dinein_cnt = self.total_dinein(today,current_user,from,to)
+ takeaway_cnt = self.total_takeaway(today,current_user,from,to)
+ membership_cnt = self.total_membership(today,current_user,from,to)
total_cus = 0
if !dinein_cnt.nil? || !takeaway_cnt.nil? || !membership_cnt.nil?
@@ -1171,69 +1472,448 @@ end
return total_cus
end
- def self.total_dinein(today)
- query = Sale.select("count(sales.customer_id) as total_dinein_cus")
- .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Dinein" and c.membership_id is null',today)
- .first()
+ def self.total_dinein(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Dinein" and c.membership_id is null',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Dinein" and c.membership_id is null',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Dinein" and c.membership_id is null and sales.shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Dinein" and c.membership_id is null',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Dinein" and c.membership_id is null',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_dinein_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Dinein" and c.membership_id is null and sales.shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_takeaway(today)
- query = Sale.select("count(sales.customer_id) as total_take_cus")
- .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Takeaway" and c.membership_id is null',today)
- .first()
+ def self.total_takeaway(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Takeaway" and c.membership_id is null',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Takeaway" and c.membership_id is null',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type = "Takeaway" and c.membership_id is null and sales.shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Takeaway" and c.membership_id is null',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Takeaway" and c.membership_id is null',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_take_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type = "Takeaway" and c.membership_id is null and sales.shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_membership(today)
- query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
- .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null))',today)
- .first()
+ def self.total_membership(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null))',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null))',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null)) and sales.shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null))',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null))',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(distinct sales.customer_id) as total_memb_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and ((c.customer_type = "Dinein" and c.membership_id is not null) or (c.customer_type = "Takeaway" and c.membership_id is not null)) and sales.shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_other_customer(today)
- query = Sale.select("count(sales.customer_id) as total_cus")
- .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type is null and c.membership_id is null',today)
- .first()
+ def self.total_other_customer(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type is null and c.membership_id is null',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type is null and c.membership_id is null',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and c.customer_type is null and c.membership_id is null and sales.shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type is null and c.membership_id is null',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type is null and c.membership_id is null',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(sales.customer_id) as total_cus")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and c.customer_type is null and c.membership_id is null and sales.shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_order(today)
- query = Sale.select("count(distinct a.order_id) as total_order")
- .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
- .joins("JOIN orders as b ON b.order_id = a.order_id")
- .where('b.status = "billed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
- .first()
+ def self.total_order(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and sales.receipt_date between ? and ?',from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and sales.receipt_date between ? and ?',from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and sales.receipt_date between ? and ? and sales.shift_sale_id=?',from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(distinct a.order_id) as total_order")
+ .joins("JOIN sale_orders as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN orders as b ON b.order_id = a.order_id")
+ .where('b.status = "billed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and sales.shift_sale_id=?',today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_account(today)
- query = Sale.select("distinct b.id as account_id, b.title as title")
- .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
- .joins("JOIN accounts as b ON b.id = a.account_id")
- .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ def self.total_account(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ?',from,to)
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ?',from,to)
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and sales.receipt_date between ? and ? and sales.shift_sale_id=?',from,to,shift.id)
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ?',today)
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("distinct b.id as account_id, b.title as title")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .joins("JOIN accounts as b ON b.id = a.account_id")
+ .where('sales.sale_status = "completed" and DATE_FORMAT(sales.receipt_date,"%Y-%m-%d") = ? and sales.shift_sale_id=?',today,shift.id)
+ end
+ end
+ end
+ end
end
- def self.account_data(account_id, today)
- query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
- .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
- .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
- .first()
+ def self.account_data(account_id, today, current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and sales.receipt_date between ? and ?",from,to)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and sales.receipt_date between ? and ?",from,to)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and sales.receipt_date between ? and ? and sales.shift_sale_id=?",from,to,shift.id)
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("count(*) as cnt_acc, SUM(a.price) as total_acc")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.account_id ='#{account_id}' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id)
+ .first()
+ end
+ end
+ end
+ end
end
- def self.top_items(today)
- query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
- .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
- .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
- .group("a.product_code")
- .order("SUM(a.qty) DESC")
- .first()
+ def self.top_items(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and sales.receipt_date between ? and ?",from,to)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and sales.receipt_date between ? and ?",from,to)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and sales.receipt_date between ? and ? and sales.shift_sale_id=?",from,to,shift.id)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ else
+ if current_user.role == 'administrator'
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.select("a.product_name as item_name, SUM(a.price) as item_total_price")
+ .joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("(a.qty > 0 and a.price > 0) and payment_status='paid' and sales.sale_status = 'completed' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id)
+ .group("a.product_code")
+ .order("SUM(a.qty) DESC")
+ .first()
+ end
+ end
+ end
+ end
end
- def self.total_foc_items(today)
- query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
- .where("sales.sale_status = 'completed' and a.status='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
- .sum("a.qty")
+ def self.total_foc_items(today,current_user=nil,from=nil,to=nil)
+ if !from.nil? && !to.nil?
+ if current_user.nil?
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and sales.receipt_date between ? and ?",from,to)
+ .sum("a.qty")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and sales.receipt_date between ? and ?",from,to)
+ .sum("a.qty")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and sales.receipt_date between ? and ? and sales.shift_sale_id=?",from,to,shift.id)
+ .sum("a.qty")
+ end
+ end
+ end
+ else
+ if current_user.nil?
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .sum("a.qty")
+ else
+ if current_user.role == 'administrator'
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ?",today)
+ .sum("a.qty")
+ else
+ shift = ShiftSale.current_open_shift(current_user.id)
+ if !shift.nil?
+ query = Sale.joins("JOIN sale_items as a ON a.sale_id = sales.sale_id")
+ .where("sales.sale_status = 'completed' and a.remark='foc' and a.product_name not like '%FOC%' and DATE_FORMAT(sales.receipt_date,'%Y-%m-%d') = ? and sales.shift_sale_id=?",today,shift.id)
+ .sum("a.qty")
+ end
+ end
+ end
+ end
end
#card sale trans data
diff --git a/app/models/shift_sale.rb b/app/models/shift_sale.rb
index 57816948..10b2de38 100755
--- a/app/models/shift_sale.rb
+++ b/app/models/shift_sale.rb
@@ -135,6 +135,27 @@ class ShiftSale < ApplicationRecord
end
+ def self.get_total_dinein(shift)
+ query = Sale.select("sum(sales.grand_total) as total_dinein_amount")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('shift_sale_id =? and sales.sale_status = "completed" and c.customer_type = "Dinein" and c.membership_id is null',shift.id)
+ .first()
+ end
+
+ def self.get_total_takeway(shift)
+ query = Sale.select("sum(sales.grand_total) as total_takeway_amount")
+ .joins("JOIN customers as c ON c.customer_id = sales.customer_id")
+ .where('shift_sale_id =? and sales.sale_status = "completed" and c.customer_type = "Takeaway" and c.membership_id is null',shift.id)
+ .first()
+ end
+
+ def self.get_total_other_charges(shift)
+ query = SaleItem.select("sum(sale_items.qty * sale_items.unit_price) as total_other_charges_amount")
+ .joins("JOIN sales as s ON s.sale_id = sale_items.sale_id")
+ .where('shift_sale_id =? and s.sale_status = "completed" and sale_items.product_code = "Other Charges" and sale_items.item_instance_code is null',shift.id)
+ .first()
+ end
+
def self.search(filter,from,to)
if filter.blank?
keyword = ''
diff --git a/app/models/stock_journal.rb b/app/models/stock_journal.rb
index 35bebca2..c2a12f4a 100755
--- a/app/models/stock_journal.rb
+++ b/app/models/stock_journal.rb
@@ -36,12 +36,20 @@ class StockJournal < ApplicationRecord
journal.save
end
- def self.inventory_balances(today)
- query = StockJournal.select("mii.item_instance_name as item_instance_name,balance")
+ def self.inventory_balances(today,from,to)
+ if !from.nil? && !to.nil?
+ query = StockJournal.select("mii.item_instance_name as item_instance_name,balance")
+ .joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
+ .where("stock_journals.created_at between '#{from}' and '#{to}'")
+ .group("mii.item_instance_name")
+ .order("mii.item_instance_name ASC")
+ else
+ query = StockJournal.select("mii.item_instance_name as item_instance_name,balance")
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
.where("DATE_FORMAT(stock_journals.created_at,'%Y-%m-%d') = '#{today}'")
.group("mii.item_instance_name")
.order("mii.item_instance_name ASC")
+ end
end
end
diff --git a/app/pdf/close_cashier_customise_pdf.rb b/app/pdf/close_cashier_customise_pdf.rb
new file mode 100644
index 00000000..bcc27724
--- /dev/null
+++ b/app/pdf/close_cashier_customise_pdf.rb
@@ -0,0 +1,496 @@
+class CloseCashierCustomisePdf < Prawn::Document
+ include ActionView::Helpers::NumberHelper
+ attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width,:text_width
+
+ def initialize(printer_settings, shift_sale,shop_details,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,total_dinein,total_takeway,total_other_charges)
+ self.page_width = printer_settings.page_width #PrintSetting.where("name = ?","Close Cashier").first.page_width
+ self.page_height = printer_settings.page_height
+ self.margin = 5
+ self.price_width = 60
+ self.qty_width = 20
+ self.total_width = 40
+ self.item_width = self.page_width - ((self.price_width + self.qty_width + self.total_width))
+ self.item_height = 15
+ self.item_description_width = (self.page_width-20) / 2
+ self.label_width = 100
+
+ self.text_width = (self.page_width - 80) - self.price_width / 3
+ # @item_width = self.page_width.to_i / 2
+ # @qty_width = @item_width.to_i / 3
+ # @double = @qty_width * 1.3
+ # @half_qty = @qty_width / 2
+ #setting page margin and width
+ super(:margin => [printer_settings.heading_space, self.margin, self.margin, self.margin], :page_size => [self.page_width, self.page_height])
+
+ # db font setup
+ if printer_settings.font != ""
+ font_families.update("#{printer_settings.font}" => {
+ :normal => "public/fonts/#{printer_settings.font}.ttf",
+ :italic => "public/fonts/#{printer_settings.font}.ttf",
+ :bold => "public/fonts/#{printer_settings.font}.ttf",
+ :bold_italic => "public/fonts/#{printer_settings.font}.ttf"
+ })
+
+ font "#{printer_settings.font}"
+ fallback_fonts ["Courier", "Helvetica", "Times-Roman"]
+ end
+ # font "public/fonts/Zawgyi-One.ttf"
+ # font "public/fonts/padauk.ttf"
+ self.header_font_size = 10
+ self.item_font_size = 8
+
+ #precision checked
+ if printer_settings.precision.to_i > 2
+ printer_settings.precision = 2
+ end
+ #check delimiter
+ if printer_settings.delimiter
+ delimiter = ","
+ else
+ delimiter = ""
+ end
+
+ header( shop_details)
+
+ stroke_horizontal_rule
+
+ shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,printer_settings.precision,delimiter,total_dinein,total_takeway,total_other_charges)
+ end
+
+ def header (shop_details)
+ move_down 7
+ text "#{shop_details.name}", :left_margin => -10, :size => self.header_font_size,:align => :center
+ move_down 5
+ text "#{shop_details.address}", :size => self.item_font_size,:align => :center
+ # move_down self.item_height
+ move_down 5
+ text "#{shop_details.phone_no}", :size => self.item_font_size,:align => :center
+ move_down 5
+
+ stroke_horizontal_rule
+ end
+
+ def shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,precision,delimiter,total_dinein,total_takeway,total_other_charges)
+ move_down 7
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Cashier : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ shift_sale.employee.name}" , :size => self.item_font_size,:align => :left
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Cashier Station : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ shift_sale.cashier_terminal.name}" , :size => self.item_font_size,:align => :left
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Opening Date : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ shift_sale.shift_started_at.utc.getlocal.strftime('%d-%m-%Y %I:%M %p') }" , :size => self.item_font_size,:align => :left
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Closing Date : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ shift_sale.shift_closed_at.utc.getlocal.strftime('%d-%m-%Y %I:%M %p') }" , :size => self.item_font_size,:align => :left
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Opening Float : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ number_with_precision(shift_sale.opening_balance, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :left
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
+ text "Closing Float : ", :size => self.item_font_size,:align => :left
+ end
+ bounding_box([self.label_width,y_position], :width => self.label_width, :height => self.item_height) do
+ text "#{ number_with_precision(shift_sale.closing_balance, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :left
+ # text_box "#{number_with_precision(total_price, :precision => precision.to_i, :delimiter => delimiter)}"
+ end
+
+
+ move_down 10
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.page_width - 10, :height => 20) do
+ text "Shift Sale Summary", :size => self.header_font_size, :align => :center
+ end
+ move_down 10
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Received Amount :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(shift_sale.closing_balance, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Cash In :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(shift_sale.cash_in, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Cash Out :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(shift_sale.cash_out, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+
+ #start total amount by Account Like Food / Beverage /..
+ total_discount_account = 0
+ total_discount_by_account.each do |amount|
+
+ total_discount_account = total_discount_account.to_f + amount.total_price.to_f
+ end
+ #end total amount by Account
+
+ #start total FOC amount
+ @total_foc = 0
+ other_payment.each do |other|
+ @total_foc = other.foc_amount.round(2)
+ end
+
+ #end total FOC amount
+ total_grand_total = shift_sale.grand_total + @total_foc.to_f + shift_sale.total_void.to_f - total_discount_account.to_f
+ # @total_grand_total = @shift_sale.grand_total + @overall + @total_foc + @shift_sale.total_void
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Grand Total :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(total_grand_total, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ #start total amount by Account Like Food / Beverage /..
+ total_discount_by_account.each do |amount|
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total #{amount.account_name} Discount:", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(amount.total_price, :precision => precision.to_i, :delimiter => delimiter)} ", :size => self.item_font_size, :align => :right
+ end
+ end
+ #end total amount by Account
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total FOC :", :size => self.item_font_size, :align => :right
+ end
+ if @total_foc.nil?
+ @total_foc = 0
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "(#{ number_with_precision(@total_foc, :precision => precision.to_i, :delimiter => delimiter)})", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Void :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "(#{shift_sale.total_void})", :size => self.item_font_size, :align => :right
+ end
+
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+
+ @total_foc = 0
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Cash Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(shift_sale.cash_sales, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Credit Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(shift_sale.credit_sales, :precision => precision.to_i, :delimiter => delimiter) }", :size => self.item_font_size, :align => :right
+ end
+ #start other payment details
+ if shift_sale.other_sales > 0
+ other_payment.each do |other|
+ @total_foc = other.foc_amount.round(2)
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "MPU Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(other.mpu_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "VISA Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(other.visa_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Master Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(other.master_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "JCB Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(other.jcb_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ # y_position = cursor
+ # bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ # text "Reedem Payment :", :size => self.item_font_size, :align => :right
+ # end
+ # bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ # text "#{ number_with_precision(other.paypar_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ # end
+ end
+ else
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Other Payment :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(shift_sale.other_sales, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Rounding Adjustments :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(shift_sale.total_rounding, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Gross Sale :", :style => :bold, :size => self.header_font_size - 1, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(shift_sale.grand_total, :precision => precision.to_i, :delimiter => delimiter)}", :style => :bold, :size => self.header_font_size - 1, :align => :right
+ end
+
+ # end other payment details
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+
+ # start Dinein and Takeaway
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Dinein :", :size => self.item_font_size, :align => :right
+ end
+ if total_dinein.nil?
+ total_dinein = 0
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(total_dinein, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Takeaway :", :size => self.item_font_size, :align => :right
+ end
+ if total_takeway.nil?
+ total_takeway = 0
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(total_takeway, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+
+ # stop Dinein and Takeaway
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+
+ #start service charges and commercial tax
+ sale_taxes.each do |tax|
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "#{tax.tax_name} :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(tax.st_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Taxes :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(shift_sale.total_taxes, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Net Sales :", :style => :bold, :size => self.header_font_size - 1, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(shift_sale.nett_sales, :precision => precision.to_i, :delimiter => delimiter) }", :style => :bold , :size => self.header_font_size - 1, :align => :right
+ end
+ #end for service charges and commercial tax
+#COMMENTED FOR NO NEED AND NOT CORRECT WHEN OTHER CHARGES
+ # y_position = cursor
+ # bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ # text "Total Sale :", :size => self.item_font_size, :align => :right
+ # end
+ # bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ # text "#{shift_sale.total_revenue}", :size => self.item_font_size, :align => :right
+ # end
+
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+ #start total amount by Account Like Food / Beverage /..
+ # total_discount_by_account.each do |amount|
+
+ # y_position = cursor
+ # bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ # text "Total #{amount.account_name} Discount:", :size => self.item_font_size, :align => :right
+ # end
+ # bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ # text "#{ number_with_precision(amount.total_price, :precision => precision.to_i, :delimiter => delimiter)} ", :size => self.item_font_size, :align => :right
+ # end
+ # end
+ #end total amount by Account
+
+ # y_position = cursor
+ # bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ # text "Grand Total :", :size => self.item_font_size, :align => :right
+ # end
+ # bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ # text "#{shift_sale.grand_total}", :size => self.item_font_size, :align => :right
+ # end
+
+
+ #start total amount by Account Like Food / Beverage /..
+ total_amount_by_account.each do |amount|
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total #{amount.account_name} Amount :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{number_with_precision(amount.total_price, :precision => precision.to_i, :delimiter => delimiter)} ", :size => self.item_font_size, :align => :right
+ end
+ end
+ #end total amount by Account
+
+ #start total other charges amount
+ if total_other_charges.present?
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Other Charges :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(total_other_charges, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+ end
+ #end total other charges amount
+
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+
+ #start total over all discount
+ if total_member_discount[0].member_discount.present?
+ @member_discount = total_member_discount[0].member_discount rescue 0.0
+ @overall = shift_sale.total_discounts - @member_discount
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Member Discount :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{ number_with_precision(@member_discount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+ else
+ @overall = shift_sale.total_discounts
+ end
+
+ if @overall > 0
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Overall Discount :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "-#{ number_with_precision(@overall, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
+ end
+ move_down -5
+ stroke_horizontal_rule
+ move_down 7
+ end
+ #end total over all discount
+
+
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Dine-in Count :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{shift_sale.dining_count}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Takeaway Count :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{shift_sale.takeaway_count}", :size => self.item_font_size, :align => :right
+ end
+
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "Total Receipts :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{shift_sale.total_receipt}", :size => self.item_font_size, :align => :right
+ end
+
+ move_down 5
+ stroke_horizontal_rule
+ move_down 5
+ move_down 5
+ end
+end
+
diff --git a/app/pdf/close_cashier_pdf.rb b/app/pdf/close_cashier_pdf.rb
index 35248b97..7ac7a130 100755
--- a/app/pdf/close_cashier_pdf.rb
+++ b/app/pdf/close_cashier_pdf.rb
@@ -213,7 +213,7 @@ class CloseCashierPdf < Prawn::Document
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
- text "Reedem Payment :", :size => self.item_font_size, :align => :right
+ text "Redeem Payment :", :size => self.item_font_size, :align => :right
end
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
text "#{ number_with_precision(other.paypar_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
@@ -392,7 +392,6 @@ class CloseCashierPdf < Prawn::Document
move_down 5
stroke_horizontal_rule
move_down 5
- move_down 5
+ move_down 5
end
-end
-
+end
\ No newline at end of file
diff --git a/app/views/home/dashboard.html.erb b/app/views/home/dashboard.html.erb
index 104c4c67..91cce7e3 100755
--- a/app/views/home/dashboard.html.erb
+++ b/app/views/home/dashboard.html.erb
@@ -1,6 +1,7 @@
<% if @print_settings.precision.to_i > 0
precision = @print_settings.precision
@@ -65,8 +66,28 @@
- <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
+
+
+
+
+
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
-
+ <% end %>
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' || current_user.role == 'cashier' %>
<% if !@summ_sale.nil? %>
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
+
+ <% else %>
+
+
+
+ <% end %>
<%= t :sale %>
@@ -136,19 +165,19 @@
<%= t("views.right_panel.detail.total") %> <%= t :sale %> :
- <%= number_with_precision( @summ_sale.total_amount, precision: precision.to_i ,delimiter: delimiter) %>
+ <%= number_with_precision( @summ_sale.total_amount, precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.discount") %> :
- <%= number_with_precision( @summ_sale.total_discount, precision: precision.to_i ,delimiter: delimiter) %>
+ <%= number_with_precision( @summ_sale.total_discount, precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.tax") %> :
- <%= number_with_precision( @summ_sale.total_tax , precision: precision.to_i ,delimiter: delimiter)%>
+ <%= number_with_precision( @summ_sale.total_tax , precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
<%= t("views.right_panel.detail.grand_total") %> :
- <%= number_with_precision( @summ_sale.grand_total , precision: precision.to_i ,delimiter: delimiter)%>
+ <%= number_with_precision( @summ_sale.grand_total , precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
@@ -161,7 +190,7 @@
<% @sale_data.each do |data| %>
<% pay_mth = payment.payment_method %>
- <%= data[""+pay_mth+""] %>
+ <%= number_with_precision(data[""+pay_mth+""], precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
<% end %>
@@ -174,7 +203,7 @@
<%= t("views.right_panel.detail.card_sale") %> :
- <%= total_card["card"].to_f %>
+ <%= number_with_precision(total_card["card"], precision: precision.to_i ,delimiter: delimiter) rescue number_with_precision(0, precision: precision.to_i ,delimiter: delimiter) %>
<% end %>
@@ -184,11 +213,17 @@
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
<% end %>
+ <% end %>
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
+ <% else %>
+
+ <% end %>
<%= t :customer %>
@@ -227,10 +262,16 @@
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
+ <% end %>
+ <% if current_user.role == 'administrator' || current_user.role == 'manager' %>
+ <% else %>
+
+ <% end %>
<%= t("views.right_panel.detail.order") %>
@@ -274,6 +315,41 @@
+ <% end %>
- <% end %>
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/views/layouts/_left_sidebar.html.erb b/app/views/layouts/_left_sidebar.html.erb
index 75428949..e3d08824 100755
--- a/app/views/layouts/_left_sidebar.html.erb
+++ b/app/views/layouts/_left_sidebar.html.erb
@@ -124,6 +124,9 @@
Sale Items
+
+ Product Sale
+
Receipt
diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb
index 2912d38d..33ee74b7 100755
--- a/app/views/oqs/home/index.html.erb
+++ b/app/views/oqs/home/index.html.erb
@@ -88,13 +88,13 @@
<%= qid.qty %>
]
- <% if !qid.set_menu_items.nil?
- qid.set_menu_items.each do |item_instance|%>
-
+ <% if !qid.set_menu_items.nil? %>
+ <% qid.set_menu_items.each do |item_instance|%>
+
<%= item_instance %>
-
- <% end
- end %>
+
+ <% end %>
+ <% end %>
<%= qid.options == "[]"? "" : qid.options %>
diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb
index 19223467..bd682b96 100755
--- a/app/views/origami/home/show.html.erb
+++ b/app/views/origami/home/show.html.erb
@@ -425,7 +425,10 @@
<%= t("views.btn.back") %>
<%= t("views.btn.add") %> <%= t("views.right_panel.detail.order") %>
+ <% if current_login_employee.role == "administrator" || current_login_employee.role == "manager" || current_login_employee.role == "supervisor" || current_login_employee.role == "cashier" || current_login_employee.role == "waiter" %>
<%= t("views.right_panel.detail.survey") %>
+ <% end %>
+ <% if current_login_employee.role != "waiter" %>
<% if @dining.status != "available" %>
<% if @status_order == 'order' && @status_sale != 'sale' %>
Customer
@@ -512,6 +515,7 @@
+ <% end %>
diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb
index efec7698..4cd6a846 100755
--- a/app/views/origami/rooms/show.html.erb
+++ b/app/views/origami/rooms/show.html.erb
@@ -396,7 +396,10 @@
reply Back
Add Order
+ <% if current_login_employee.role == "administrator" || current_login_employee.role == "manager" || current_login_employee.role == "supervisor" || current_login_employee.role == "cashier" || current_login_employee.role == "waiter" %>
Survey
+ <% end %>
+ <% if current_login_employee.role != "waiter" %>
<% if @room.bookings.length >= 1 %>
<% if @status_order == 'order' && @status_sale != 'sale' %>
@@ -482,6 +485,7 @@
<% end %>
<% end %>
+ <% end %>
diff --git a/app/views/reports/dailysale/index.html.erb b/app/views/reports/dailysale/index.html.erb
index 76438060..6dd1ebac 100755
--- a/app/views/reports/dailysale/index.html.erb
+++ b/app/views/reports/dailysale/index.html.erb
@@ -91,37 +91,37 @@
<%= count %>
<%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %>
- <%= number_with_precision(sale[:void_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:mpu_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:master_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:visa_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:jcb_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:paypar_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:cash_amount]-sale[:total_change_amount], precision:precision, delimiter: delimiter) rescue '-'%>
- <%= number_with_precision(sale[:credit_amount], precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:foc_amount], precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:void_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:mpu_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:master_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:visa_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:jcb_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:paypar_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:cash_amount]-sale[:total_change_amount], precision:precision.to_i, delimiter: delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:credit_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:foc_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
(<%= number_with_precision(sale[:total_discount], precision:precision,delimiter:delimiter) rescue '-'%>)
- <%= number_with_precision(sale[:grand_total].to_f + sale[:rounding_adj].to_f , precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:rounding_adj].to_f, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale[:grand_total], precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:grand_total].to_f + sale[:rounding_adj].to_f , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:rounding_adj].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale[:grand_total], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<% count = count + 1 %>
<% end %>
Total
- <%= number_with_precision(mpu , precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(master, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(mpu , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(master, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<%= number_with_precision(visa, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(jcb, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(paypar, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(cash, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(credit, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(jcb, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(paypar, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(cash, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(credit, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<%= number_with_precision(foc, precision:precision,delimiter:delimiter) rescue '-'%>
- (<%= number_with_precision(discount, precision:precision,delimiter:delimiter) rescue '-'%>)
- <%= number_with_precision(total, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(rounding_adj, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(grand_total, precision:precision,delimiter:delimiter) rescue '-'%>
+ (<%= number_with_precision(discount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>)
+ <%= number_with_precision(total, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(rounding_adj, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(grand_total, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<% total_tax = 0 %>
@@ -130,7 +130,7 @@
<% total_tax += tax.tax_amount.to_f %>
<%= tax.tax_name rescue '-'%>
- <%= number_with_precision(tax.tax_amount, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(tax.tax_amount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
@@ -138,7 +138,7 @@
<% net = total - total_tax %>
<%= t("views.right_panel.detail.net_amount") %>
- <%= number_with_precision(net, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<% end %>
diff --git a/app/views/reports/product_sale/index.html.erb b/app/views/reports/product_sale/index.html.erb
new file mode 100644
index 00000000..eb797122
--- /dev/null
+++ b/app/views/reports/product_sale/index.html.erb
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+ Order by Qty
+
+ ASC
+ DESC
+
+
+
+
+
+ <% if @print_settings.precision.to_i > 0
+ precision = @print_settings.precision
+ else
+ precision = 0
+ end
+ #check delimiter
+ if @print_settings.delimiter
+ delimiter = ","
+ else
+ delimiter = ""
+ end %>
+
+
+
+
+ <%= t("views.right_panel.header.menu_category") %>
+ <%= t("views.right_panel.detail.code") %>
+ <%= t("views.right_panel.detail.product") %>
+ <%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
+ <%= t("views.right_panel.detail.unit_price") %>
+ <%= t("views.right_panel.detail.total") %>
+
+
+
+ <% unless @sale_data.blank? %>
+ <% acc_arr = Array.new %>
+ <% cate_arr = Array.new %>
+
+ <% grand_total = 0 %>
+ <% total_qty = 0 %>
+
+ <% @sale_data.each do |sale| %>
+ <% if sale.status_type != "Discount" && sale.status_type != "foc"
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+ <% if sale.status_type == "foc" && sale.price > 0
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+
+
+
+ <% if !cate_arr.include?(sale.menu_category_id) %>
+ <%= sale.menu_category_name %>
+ <% cate_arr.push(sale.menu_category_id) %>
+ <% else %>
+
+ <% end %>
+ <%= sale.item_code rescue '-' %>
+ <%= sale.product_name rescue '-' %>
+ <%= sale.total_item rescue '-' %>
+ <%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-' %>
+
+
+
+ <% end %>
+
+
+ Total
+ <%= total_qty %>
+
+ <%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-' %>
+
+
+ <% end %>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/reports/product_sale/index.xls.erb b/app/views/reports/product_sale/index.xls.erb
new file mode 100755
index 00000000..7123588c
--- /dev/null
+++ b/app/views/reports/product_sale/index.xls.erb
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+ <%= t("views.right_panel.header.menu_category") %>
+ <%= t("views.right_panel.detail.code") %>
+ <%= t("views.right_panel.detail.product") %>
+ <%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
+ <%= t("views.right_panel.detail.unit_price") %>
+ <%= t("views.right_panel.detail.total") %>
+
+
+
+ <% unless @sale_data.blank? %>
+ <% acc_arr = Array.new %>
+ <% cate_arr = Array.new %>
+ <% grand_total = 0 %>
+ <% total_qty = 0 %>
+
+ <% @sale_data.each do |sale| %>
+ <% if sale.status_type != "Discount" && sale.status_type != "foc"
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+ <% if sale.status_type == "foc" && sale.price > 0
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+
+
+
+ <% if !cate_arr.include?(sale.menu_category_id) %>
+ <%= sale.menu_category_name %>
+ <% cate_arr.push(sale.menu_category_id) %>
+ <% else %>
+
+ <% end %>
+ <%= sale.item_code rescue '-' %>
+ <%= sale.product_name rescue '-' %>
+ <%= sale.total_item rescue '-' %>
+ <%= sale.unit_price rescue '-' %>
+ <%= sale.grand_total rescue '-' %>
+
+ <% end %>
+
+
+ Total
+ <%= total_qty %>
+
+ <%= grand_total rescue '-' %>
+
+ <% end %>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/reports/saleitem/index.html.erb b/app/views/reports/saleitem/index.html.erb
index 387a97a5..3c03dec2 100644
--- a/app/views/reports/saleitem/index.html.erb
+++ b/app/views/reports/saleitem/index.html.erb
@@ -101,7 +101,7 @@
<% @totalByAccount.each do |account, total| %>
<% if sale.account_id == account %>
- <%= number_with_precision(total, precision:precision,delimiter:delimiter) %>
+ <%= number_with_precision(total, precision:precision.to_i,delimiter:delimiter) %>
<% grand_total += total %>
<% end %>
<% end %>
@@ -120,8 +120,8 @@
<%= sale.item_code rescue '-' %>
<%= sale.product_name rescue '-' %>
<%= sale.total_item rescue '-' %>
- <%= number_with_precision(sale.unit_price , precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale.grand_total , precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
@@ -140,7 +140,7 @@
Total <%= sale.account_name %> Qty
<%= sub_qty %>
<%= t("views.right_panel.detail.sub_total") %>
- <%= number_with_precision(sub_total , precision:precision,delimiter:delimiter)%>
+ <%= number_with_precision(sub_total , precision:precision.to_i,delimiter:delimiter)%>
<% sub_total = 0.0%>
<% sub_qty = 0 %>
@@ -168,8 +168,8 @@
<%= other.item_code rescue '-' %>
<%= other.product_name rescue '-' %>
<%= other.total_item rescue '-' %>
- <%= number_with_precision(other.unit_price , precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(other.grand_total , precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(other.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(other.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
@@ -179,7 +179,7 @@
<%= t("views.right_panel.detail.sub_total") %>
- <%= number_with_precision(other_sub_total , precision:precision,delimiter:delimiter)%>
+ <%= number_with_precision(other_sub_total , precision:precision.to_i,delimiter:delimiter)%>
<%end%>
@@ -188,29 +188,35 @@
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
<%= total_qty%>
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %>
- <%= number_with_precision(grand_total , precision:precision,delimiter:delimiter)%>
+ <%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%>
<% end %>
<%= t("views.right_panel.detail.foc_item") %> <%= t("views.right_panel.detail.amount") %>
- <%= number_with_precision(total_item_foc , precision:precision,delimiter:delimiter) %>
+ <%= number_with_precision(total_item_foc , precision:precision.to_i,delimiter:delimiter) %>
<%= t("views.right_panel.detail.item_discount") %> <%= t("views.right_panel.detail.amount") %>
- <%= number_with_precision(total_item_dis , precision:precision,delimiter:delimiter) %>
+ <%= number_with_precision(total_item_dis , precision:precision.to_i,delimiter:delimiter) %>
<%= t("views.right_panel.detail.foc_sales") %>
- <%= number_with_precision(@foc_data , precision:precision,delimiter:delimiter) %>
+
+ <%= number_with_precision(@foc_data, precision:precision.to_i, delimiter:delimiter) %>
+
<%= t("views.right_panel.detail.discount") %> <%= t("views.right_panel.detail.amount") %>
- <%= number_with_precision(@discount_data , precision:precision,delimiter:delimiter) %>
+
+
+ <%= number_with_precision(@discount_data , precision: precision.to_i,delimiter: delimiter) %>
+
+
<% @sale_taxes.each do |tax| %>
@@ -226,7 +232,7 @@
Net Amount
- <%= number_with_precision(grand_total.to_f - @discount_data.to_f , precision:precision,delimiter:delimiter)%>
+ <%= number_with_precision(grand_total.to_f - @discount_data.to_f , precision:precision.to_i,delimiter:delimiter)%>
- <%= number_with_precision(result[:cash_sales].to_f, precision:precision,delimiter:delimiter) %>
- <%= number_with_precision(result[:credit_sales].to_f, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(result[:cash_sales].to_f, precision:precision.to_i,delimiter:delimiter) %>
+ <%= number_with_precision(result[:credit_sales].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(result[:other_sales].to_f, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(result[:other_sales].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(result[:foc_sales].to_f, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(result[:foc_sales].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(result[:grand_total].to_f, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(result[:grand_total].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<% grand_total = result[:grand_total].to_f %>
@@ -126,15 +126,15 @@
- <%= number_with_precision(cash, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(credit, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(cash, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(credit, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(card, precision:precision,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(foc, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(card, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(foc, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(g_total, precision:precision,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(g_total, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
diff --git a/app/views/reports/stock_check/index.html.erb b/app/views/reports/stock_check/index.html.erb
index 1305abe5..e470a294 100755
--- a/app/views/reports/stock_check/index.html.erb
+++ b/app/views/reports/stock_check/index.html.erb
@@ -28,6 +28,18 @@
+ <% if @print_settings.precision.to_i > 0
+ precision = @print_settings.precision
+ else
+ precision = 0
+ end
+ #check delimiter
+ if @print_settings.delimiter
+ delimiter = ","
+ else
+ delimiter = ""
+ end
+ %>
@@ -63,7 +75,7 @@
<% end %>
<%= result.stock_count rescue '-' %>
- <%= result.stock_balance rescue '-' %>
+ <%= number_with_precision(result.stock_balance, precision:precision.to_i,delimiter:delimiter) rescue '-' %>
<%= result.different rescue '-' %>
<%= result.remark rescue '-' %>
<%= result.created_at.strftime('%e %b %Y %I:%M %p') rescue '-' %>
@@ -76,7 +88,7 @@
<%= total_stock_count rescue '-' %>
- <%= total_stock_balance rescue '-' %>
+ <%= number_with_precision(total_stock_balance, precision:precision.to_i,delimiter:delimiter) rescue '-' %>
<%= total_different rescue '-' %>
diff --git a/config/initializers/action_controller.rb b/config/initializers/action_controller.rb
new file mode 100644
index 00000000..7cabe7f7
--- /dev/null
+++ b/config/initializers/action_controller.rb
@@ -0,0 +1,79 @@
+class ActionController::Base
+
+ before_action :lookup_domain, :set_locale
+
+ private
+
+ def lookup_domain
+ if request.subdomain.present? && request.subdomain != "www"
+ from = request.subdomain.downcase + "." + request.domain.downcase
+ @license = cache_license(ENV["SX_PROVISION_URL"], from) # request.subdomain.downcase
+ if (!@license.nil?)
+ logger.info "Location - " + @license.dbhost
+ ActiveRecord::Base.establish_connection(website_connection(@license))
+ # authenticate_session_token
+ # logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
+ else
+ # reconnect_default_db
+ logger.info 'License is nil'
+ # redirect_to root_url(:host => request.domain) + "store_error"
+ render :json => [{ status: false, message: 'Invalid Access!'}]
+ end
+ else
+ # check for license file
+ # if check_license
+ # current_license(ENV["SX_PROVISION_URL"])
+ # else
+ # redirect_to activate_path
+ # end
+ end
+ end
+
+ def current_license(url)
+ @license = License.new(url)
+ flag = @license.detail_with_local_file()
+ if (flag == 0)
+ flash[:notice] = 'Expired or No License!'
+ elsif (flag == 2)
+ flash[:notice] = 'Expiring! Please, License extend...'
+ else
+ puts "RUN SAY BYAR"
+ end
+ end
+
+ def cache_license(url, lookup)
+ @license = License.new(url, lookup)
+
+ if (@license.detail_with_local_cache(lookup) == true)
+ return @license
+ else
+ return nil
+ end
+ end
+
+ def website_connection(license)
+ default_connection.dup.update(:host => license.dbhost, :database => license.dbschema.to_s.downcase,
+ :username => license.dbusername, :password => license.dbpassword)
+
+ end
+
+ def reconnect_default_db
+ ActiveRecord::Base.establish_connection(Rails.env)
+ end
+
+ # Regular database.yml configuration hash
+ def default_connection
+ @default_config ||= ActiveRecord::Base.connection.instance_variable_get("@config").dup
+ end
+
+ #change locallization
+ def set_locale
+ I18n.locale = params[:locale] || I18n.default_locale
+ end
+
+ # RESTful url for localize
+ def default_url_options
+ { locale: I18n.locale }
+ end
+
+end
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d4dc8005..6d562366 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -71,6 +71,7 @@ en:
bottom: "Bottom"
payment: "Payment"
backend: "Backend"
+ date_time: "DateTime"
views:
btn:
diff --git a/config/locales/mm.yml b/config/locales/mm.yml
index 2d35b1bf..06756c1c 100755
--- a/config/locales/mm.yml
+++ b/config/locales/mm.yml
@@ -66,6 +66,7 @@ mm:
bottom: "အရောင်းအနဲဆုံး"
payment: "ငွေပေးချေမှု"
backend: "Backend"
+ date_time: "DateTime"
views:
btn:
diff --git a/config/puma.rb.production b/config/puma.rb.production
index 4953a9b0..e88031af 100755
--- a/config/puma.rb.production
+++ b/config/puma.rb.production
@@ -1,7 +1,6 @@
-application_path = '/home/superuser/Application/production/sxrestaurant'
+application_path = '/home/superuser/Application/sxrestaurant'
directory application_path
-environment ENV.fetch("RAILS_ENV") { "development" }
-daemonize true
+environment ENV.fetch("RAILS_ENV") { "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"
diff --git a/config/routes.rb b/config/routes.rb
index b7f88301..340dc914 100755
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -393,6 +393,7 @@ scope "(:locale)", locale: /en|mm/ do
resources :commission, :only => [:index, :show]
resources :stock_check, :only => [:index, :show]
resources :payment_method
+ resources :product_sale, :only => [:index, :show]
get "receipt_no/get_shift_by_date", to: "receipt_no#get_shift_by_date", as: "get_shift_by_date"
end
diff --git a/db/migrate/20170403155230_create_employees.rb b/db/migrate/20170403155230_create_employees.rb
index c4bf65ac..4270b265 100755
--- a/db/migrate/20170403155230_create_employees.rb
+++ b/db/migrate/20170403155230_create_employees.rb
@@ -9,6 +9,7 @@ class CreateEmployees < ActiveRecord::Migration[5.1]
t.datetime :session_expiry
t.datetime :session_last_login
t.string :created_by
+ t.string :image_path
t.timestamps
end
end
diff --git a/db/migrate/20170622050926_create_customers.rb b/db/migrate/20170622050926_create_customers.rb
index cb370bc1..b01362fe 100755
--- a/db/migrate/20170622050926_create_customers.rb
+++ b/db/migrate/20170622050926_create_customers.rb
@@ -18,6 +18,7 @@ class CreateCustomers < ActiveRecord::Migration[5.1]
t.string :membership_authentication_code
t.string :customer_type, :default => "Dinein"
t.json :tax_profiles
+ t.string :image_path
end
end
end
diff --git a/db/migrate/20170825090115_create_commissioners.rb b/db/migrate/20170825090115_create_commissioners.rb
index 1794b5c7..a89920d5 100755
--- a/db/migrate/20170825090115_create_commissioners.rb
+++ b/db/migrate/20170825090115_create_commissioners.rb
@@ -9,6 +9,7 @@ class CreateCommissioners < ActiveRecord::Migration[5.1]
t.datetime :joined_date
t.datetime :resigned_date
t.boolean :is_active, default: true
+ t.string :image_path
t.timestamps
end
end
diff --git a/db/migrate/20180213050551_add_image_path_to_employees.rb b/db/migrate/20180213050551_add_image_path_to_employees.rb
deleted file mode 100644
index bb26e888..00000000
--- a/db/migrate/20180213050551_add_image_path_to_employees.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddImagePathToEmployees < ActiveRecord::Migration[5.1]
- def change
- add_column :employees, :image_path, :string
- end
-
- def down
- remove_column :image_path
- end
-end
diff --git a/db/migrate/20180213050631_add_image_path_to_customers.rb b/db/migrate/20180213050631_add_image_path_to_customers.rb
deleted file mode 100644
index 11eecdc0..00000000
--- a/db/migrate/20180213050631_add_image_path_to_customers.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddImagePathToCustomers < ActiveRecord::Migration[5.1]
- def change
- add_column :customers, :image_path, :string
- end
-
- def down
- remove_column :image_path
- end
-end
diff --git a/db/migrate/20180213052206_add_image_path_to_commissioners.rb b/db/migrate/20180213052206_add_image_path_to_commissioners.rb
deleted file mode 100644
index f61dce61..00000000
--- a/db/migrate/20180213052206_add_image_path_to_commissioners.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class AddImagePathToCommissioners < ActiveRecord::Migration[5.1]
- def change
- add_column :commissioners, :image_path, :string
- end
-
- def down
- remove_column :image_path
- end
-end
diff --git a/spec/controllers/reports/product_sale_controller_spec.rb b/spec/controllers/reports/product_sale_controller_spec.rb
new file mode 100644
index 00000000..1f87b3bc
--- /dev/null
+++ b/spec/controllers/reports/product_sale_controller_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe Reports::ProductSaleController, type: :controller do
+
+end
diff --git a/spec/helpers/reports/product_sale_helper_spec.rb b/spec/helpers/reports/product_sale_helper_spec.rb
new file mode 100644
index 00000000..17d29e63
--- /dev/null
+++ b/spec/helpers/reports/product_sale_helper_spec.rb
@@ -0,0 +1,15 @@
+require 'rails_helper'
+
+# Specs in this file have access to a helper object that includes
+# the Reports::ProductSaleHelper. For example:
+#
+# describe Reports::ProductSaleHelper do
+# describe "string concat" do
+# it "concats two strings with spaces" do
+# expect(helper.concat_strings("this","that")).to eq("this that")
+# end
+# end
+# end
+RSpec.describe Reports::ProductSaleHelper, type: :helper do
+ pending "add some examples to (or delete) #{__FILE__}"
+end