diff --git a/app/controllers/reports/dailysale_controller.rb b/app/controllers/reports/dailysale_controller.rb index 71159e3b..4cc1bb81 100755 --- a/app/controllers/reports/dailysale_controller.rb +++ b/app/controllers/reports/dailysale_controller.rb @@ -4,7 +4,7 @@ class Reports::DailysaleController < BaseReportController def index from, to = get_date_range_from_params @sale_data = Sale.daily_sales_list(from,to) - @tax = SaleTax.get_tax(from,to) + @tax_profiles = TaxProfile.group(:name).order(:order_by).pluck(:name) @from = from @to = to @payment_methods = PaymentMethodSetting.where("is_active='1'").pluck("payment_method") diff --git a/app/models/sale.rb b/app/models/sale.rb index 30a8fcc5..d0b9c90a 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -754,6 +754,8 @@ class Sale < ApplicationRecord def self.daily_sales_list(from,to) payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method) + tax_profiles = TaxProfile.group(:name).order(:order_by).pluck(:name) + sales = select(Sale.column_names) .select("#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as `#{method == 'paypar' ? 'redeem' : method}`"}.push('').join(', ')} SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount, @@ -764,6 +766,15 @@ class Sale < ApplicationRecord .where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to) .group("sale_id").to_sql + sale_taxes = Sale.select('sales.sale_id, sale_taxes.tax_name') + .joins(:sale_taxes) + .where('(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ', 'completed', 'void', from, to) + .group('sale_id') + + if tax_profiles.present? + sale_taxes = sale_taxes.select(tax_profiles.map { |name| "SUM(case when (sale_taxes.tax_name = '#{name}') then sale_taxes.tax_payable_amount else 0 end) as `#{name.parameterize}`"}.join(', ')) + end + daily_total = connection.select_all("SELECT IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as grand_total, IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as total_sale, @@ -772,8 +783,9 @@ class Sale < ApplicationRecord IFNULL(SUM(case when (sale_status='completed') then amount_changed else 0 end),0) as total_change_amount, IFNULL(SUM(case when (sale_status='void') then grand_total else 0 end),0) as void_amount, IFNULL(SUM(case when (sale_status='completed') then rounding_adjustment else 0 end),0) as rounding_adj, - IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21 as tax, - (IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) - (IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21) as net_sale, + #{tax_profiles.map { |name| "SUM(`#{name.parameterize}`) as `#{name.parameterize}`"}.push('').join(', ') if tax_profiles.present?} + IFNULL(SUM(case when (sale_status='completed') then total_tax else 0 end),0) as tax, + (IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) - (IFNULL(SUM(case when (sale_status='completed') then total_tax else 0 end),0)) as net_sale, (IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) + (IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0)) as gross_sale, CAST((CONVERT_TZ(receipt_date,'+00:00','+06:30')) AS DATE) as sale_date, #{payment_methods.map { |method| pm = method == 'paypar' ? 'redeem' : method; "SUM(`#{pm}`) as `#{pm}`"}.push('').join(', ')} @@ -783,6 +795,7 @@ class Sale < ApplicationRecord FROM ( #{sales} ) as s + JOIN (#{sale_taxes.to_sql}) AS st ON s.sale_id = st.sale_id GROUP BY DATE(CONVERT_TZ(receipt_date,'+00:00','+06:30'))").to_hash.map(&:symbolize_keys) return daily_total end diff --git a/app/views/reports/dailysale/index.html.erb b/app/views/reports/dailysale/index.html.erb index 12e6d236..0b31e2ed 100755 --- a/app/views/reports/dailysale/index.html.erb +++ b/app/views/reports/dailysale/index.html.erb @@ -24,7 +24,7 @@ - + <% @count = 1 %> <% @payment_methods.each_slice(10) do |slice| %> @@ -72,13 +72,11 @@ - - + + + + - <% if @tax.blank? %> - - - <% end %> @@ -86,22 +84,21 @@ <% @payment_methods.each do |method| %> <% end %> - - + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> + <% end %> + - <% if @tax.blank? %> - - - <% end %> - <% unless @sale_data.blank? %> @@ -148,12 +145,16 @@ + + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> + <% end %> + + - <% if @tax.blank? %> - - - <% end %> <% count = count + 1 %> @@ -172,33 +173,37 @@ - - - <% if @tax.blank? %> - - + + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> <% end %> + + + <% total_tax = 0 %> <% net = 0 %> - <% unless @tax.blank? %> - <% @tax.each do |tax| - total_tax += tax.tax_amount.to_f %> - - - - + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + + + <% end %> <% net = grand_total %> <% net = net - rounding_adj%> <% net = net - total_tax %> - + <% else %> diff --git a/app/views/reports/dailysale/index.xls.erb b/app/views/reports/dailysale/index.xls.erb index 98cfe853..9c1bee4f 100755 --- a/app/views/reports/dailysale/index.xls.erb +++ b/app/views/reports/dailysale/index.xls.erb @@ -22,6 +22,7 @@ + @@ -38,13 +39,14 @@ + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> + <% end %> + - <% if @tax.blank? %> - - - <% end %> - <% unless @sale_data.blank? %> @@ -90,12 +92,16 @@ + + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> + <% end %> + + - <% if @tax.blank? %> - - - <% end %> <% count = count + 1 %> @@ -114,12 +120,15 @@ + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + <% end %> + <% end %> + + - <% if @tax.blank? %> - - - <% end %> @@ -127,20 +136,21 @@ <% total_tax = 0 %> <% net = 0 %> - <% unless @tax.blank? %> - <% @tax.each do |tax| - total_tax += tax.tax_amount.to_f %> - - - - + <% if @tax_profiles.present? %> + <% @tax_profiles.each do |name| %> + + + + <% end %> <% net = grand_total %> <% net = net - rounding_adj%> <% net = net - total_tax %> - + <% else %>
<%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%> <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%>
IncomeOutgoinglive_helpOutgoingTaxlive_helplive_help live_helplive_helplive_help
<%= t("views.right_panel.detail.sr") %><%= t("views.right_panel.detail.#{method}") %><%= t("views.right_panel.detail.cash_sales") %> <%= t("views.right_panel.detail.credit_sales") %> <%= t("views.right_panel.detail.void_amount") %> <%= t("views.right_panel.detail.foc_sales") %>(<%= t("views.right_panel.detail.discount") %>) <%= t("views.right_panel.detail.rnd_adj_sh") %><%= t name %><%= t("views.right_panel.detail.net_sales") %> <%= t("views.right_panel.detail.gross_sales") %> <%= t("views.right_panel.detail.total_sales") %><%= t("views.right_panel.detail.tax") %><%= t("views.right_panel.detail.net_sales") %>
(<%= number_format(sale[:total_discount], precision:precision,delimiter:delimiter) rescue '-'%>) <%= number_format(sale[:rounding_adj], precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[name.parameterize.to_sym], precision:precision.to_i,delimiter:delimiter) rescue '-' %><%= number_format(sale[:net_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(sale[:gross_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(sale[:total_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[:tax], precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[:net_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
(<%= number_format(discount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>) <%= number_format(rounding_adj, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(gross_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(total_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(tax, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[name.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(gross_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(total_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
 
<%= tax.tax_name rescue '-'%><%= number_format(tax.tax_amount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<%= t name rescue '-'%> + <%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[name.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue '-'%> +
<%= t("views.right_panel.detail.net_amount") %><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-' %>
Income OutgoingTax
<%= t("views.right_panel.detail.sr") %>(<%= t("views.right_panel.detail.discount") %>) <%= t("views.right_panel.detail.rnd_adj_sh") %><%= t name %><%= t("views.right_panel.detail.net_sales") %> <%= t("views.right_panel.detail.gross_sales") %> <%= t("views.right_panel.detail.total_sales") %><%= t("views.right_panel.detail.tax") %><%= t("views.right_panel.detail.net_sales") %>
(<%= number_format(sale[:total_discount], precision:precision,delimiter:delimiter) rescue '-'%>) <%= number_format(sale[:rounding_adj].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[name.parameterize.to_sym], precision:precision.to_i,delimiter:delimiter) rescue '-' %><%= number_format(sale[:net_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(sale[:gross_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(sale[:total_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[:tax], precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(sale[:net_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%>
(<%= number_format(discount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>) <%= number_format(rounding_adj, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[name.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(gross_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%> <%= number_format(total_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(tax, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<%= tax.tax_name rescue '-'%><%= number_format(tax.tax_amount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>
<%= t name rescue '-'%> + <%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[name.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue '-'%> +
<%= t("views.right_panel.detail.net_amount") %><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%>