diff --git a/app/controllers/reports/payment_method_controller.rb b/app/controllers/reports/payment_method_controller.rb new file mode 100644 index 00000000..5c440e17 --- /dev/null +++ b/app/controllers/reports/payment_method_controller.rb @@ -0,0 +1,64 @@ +class Reports::PaymentMethodController < BaseReportController +# authorize_resource :class => false + def index + + @payments = [["Cash Payment","cash"], ["Credit Payment","creditnote"], + ["FOC Payment","foc"], ["MPU Payment","mpu"], ["Visa Payment","visa"], + ["Master Payment","master"], ["JCB Payment","jcb"], ["Redeem Payment","paypar"]] + + from, to = get_date_range_from_params + + @shift_sale_range = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) + + @shift = '' + if params[:shift_name].to_i != 0 + shift_sale = ShiftSale.find(params[:shift_name]) + if to.blank? + @shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at) + else + @shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at) + end + end + payment_type = params[:payment_type] + @sale_data,@pyament_method = Sale.get_payment_method_by_shift(@shift_sale_range,@shift,from,to,payment_type) + + @from = from + @to = to + + if @shift.present? + @shift.each do |sh| + @shift_from = sh.shift_started_at.nil? ? '-' : sh.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p") + @shift_to = sh.shift_closed_at.nil? ? '-' : sh.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p") + @shift_data = sh + end + end + + respond_to do |format| + format.html + format.xls + end + end + + def show + from, to = get_date_range_from_params + + @sale_data = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) + + date_arr = Array.new + @sale_data.each do |sale| + local_opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc.getlocal.strftime("%e %b %I:%M%p") + local_closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc.getlocal.strftime("%e %b %I:%M%p") + opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc + closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc + shift_id = sale.id.nil? ? '-' : sale.id + str = {:shift_id => shift_id, :local_opening_date => local_opening_date, :local_closing_date => local_closing_date, :opening_date => opening_date, :closing_date => closing_date} + date_arr.push(str) + end + + out = {:status => 'ok', :message => date_arr} + + respond_to do |format| + format.json { render json: out } + end + end +end \ No newline at end of file diff --git a/app/models/sale.rb b/app/models/sale.rb index dd888fee..c6d30e10 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -507,7 +507,7 @@ class Sale < ApplicationRecord end - def self.daily_sales_list(from,to) +def self.daily_sales_list(from,to) payments_total = Sale.select("CAST((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')) AS DATE) as sale_date, SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount, SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount, @@ -564,7 +564,7 @@ class Sale < ApplicationRecord end return daily_total - end +end def self.get_by_range_by_saleitems(from,to,status,report_type) query = Sale.select(" @@ -792,6 +792,43 @@ def self.get_separate_tax(shift_sale_range=nil,shift,from,to,payment_type) end end +def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type) + sale_payment = SalePayment.select("s.receipt_no, sale_payments.*,s.receipt_date as sale_date, + s.cashier_name as cashier_name") + .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id") + + payments_total = Sale.select("CAST((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')) AS DATE) as sale_date, + SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount, + SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount, + SUM(case when (sale_payments.payment_method='visa') then sale_payments.payment_amount else 0 end) as visa_amount, + SUM(case when (sale_payments.payment_method='jcb') then sale_payments.payment_amount else 0 end) as jcb_amount, + SUM(case when (sale_payments.payment_method='paypar') then sale_payments.payment_amount else 0 end) as paypar_amount, + SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount, + SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end) as credit_amount, + SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount") + .joins("join (select * from sale_payments group by sale_payments.sale_id, sale_payments.payment_method) sale_payments on sale_payments.sale_id = sales.sale_id") + + + if shift.present? + + all_total = payments_total.where("sales.shift_sale_id in (?) and sale_status= 'completed' and sale_payments.payment_amount != 0", shift.to_a) + # .group("DATE_FORMAT((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')),'%Y-%m-%d')") + + sale_type = sale_payment.where("payment_method= '#{payment_type}' and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift.to_a) + elsif shift_sale_range.present? + + all_total = paymessnts_total.where("sales.shift_sale_id in (?) and sale_status= 'completed' and sale_payments.payment_amount != 0", shift_sale_range.to_a) + + sale_type = sale_payment.where("payment_method='#{payment_type}' and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift_sale_range.to_a) + else + + all_total = payments_total.where("sales.receipt_date and sale_status= 'completed' and sale_payments.payment_amount != 0", from,to) + + sale_type = sale_payment.where("payment_method='#{payment_type}' and s.sale_status = 'completed' and s.receipt_date between ? and ? ",from,to) + end + return all_total,sale_type +end + # def self.get_separate_tax(from,to,payment_method=nil) # query = SaleTax.select("SUM(tax_payable_amount) AS st_amount,tax_name") diff --git a/app/views/reports/payment_method/_shift_sale_report_filter.html.erb b/app/views/reports/payment_method/_shift_sale_report_filter.html.erb new file mode 100755 index 00000000..d791852f --- /dev/null +++ b/app/views/reports/payment_method/_shift_sale_report_filter.html.erb @@ -0,0 +1,128 @@ +
+ <%= form_tag report_path, :method => :get, :id=>"frm_report", :class => "form" do %> + <% if period_type != false %> +
+
+ + +
+ <% if defined? payments %> +
+ + <%= select_tag "payment_type", options_for_select(@payments, :selected => params[:payment_type]), :class => "form-control" %> +
+ <% end %> +
+ + + +
+
+ + +
+
+ + +
+
+
+ +
+
+ <% end %> + + <% end %> +
+ + diff --git a/app/views/reports/payment_method/index.html.erb b/app/views/reports/payment_method/index.html.erb new file mode 100755 index 00000000..17aceaff --- /dev/null +++ b/app/views/reports/payment_method/index.html.erb @@ -0,0 +1,186 @@ + +
+
+ + + <%= render :partial=>'shift_sale_report_filter', + :locals=>{ :period_type => true, :shift_name => true,:payments => true, :report_path =>reports_payment_method_index_path} %> +
+ + +
+
+ + + + + + <% if @shift_from %> + + <% if @shift_data.employee %> + <% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %> + <% end %> + + + <% end %> + + + + + + + + + + + + <% unless @sale_data.empty? %> + + <% @sale_data.each do |sale| %> + + + + + + + + + + + <% end %> + + + <% end %> +
<%= 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.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )
<%= t("views.right_panel.detail.mpu_sales") %><%= t("views.right_panel.detail.master_sales") %><%= t("views.right_panel.detail.visa_sales") %><%= t("views.right_panel.detail.jcb_sales") %><%= t("views.right_panel.detail.redeem_sales") %><%= t("views.right_panel.detail.cash_sales") %><%= t("views.right_panel.detail.credit_sales") %><%= t("views.right_panel.detail.foc_sales") %>
<%= number_with_delimiter(sprintf("%.2f",sale[:mpu_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:master_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:visa_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:jcb_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:paypar_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:cash_amount]-sale[:total_change_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:credit_amount]), :delimiter => ',') rescue '-'%><%= number_with_delimiter(sprintf("%.2f",sale[:foc_amount]), :delimiter => ',') rescue '-'%>
+ + + + + + + + + + + + + <% @pyament_method.each do |payment| %> + + <% if @shift_from.nil? && @shift_to.nil? %> + + <% else %> + + <% end %> + + + + + + + <% end %> + +
<%= t("views.right_panel.detail.shift_name") %> <%= t("views.right_panel.detail.receipt_no") %> <%= t :cashier %> <%= t("views.right_panel.detail.name") %> <%= t :customer %> <%= t("views.right_panel.detail.name") %> <%= t("views.right_panel.detail.amount") %> <%= t("views.right_panel.detail.grand_total") %>
<%= payment.sale_date.utc.getlocal.strftime("%e %b %I:%M%p") rescue '-'%><%= @shift_from rescue '-'%> - <%= @shift_to rescue '-'%><%= payment.receipt_no rescue '-' %><%= payment.cashier_name rescue '-' %><%= payment.sale.customer.name rescue '-' %><%= payment.payment_amount rescue '-' %><%= payment.sale.grand_total rescue '-' %>
+
+
+
+
+ + \ No newline at end of file diff --git a/app/views/reports/payment_method/index.xls.erb b/app/views/reports/payment_method/index.xls.erb new file mode 100755 index 00000000..cddb34f9 --- /dev/null +++ b/app/views/reports/payment_method/index.xls.erb @@ -0,0 +1,98 @@ +
+
+ + + + + + <% if @shift_from %> + + <% if @shift_data.employee %> + <% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %> + <% end %> + + + <% end %> + + + + + + + <% @sale_taxes.each do |tax| %> + + + <% end %> + + + + + + + + <% grand_total = 0 %> + <% old_grand_total = 0 %> + <% total_tax = 0 %> + <% guest_count = 0 %> + <% total_sum = 0 %> + <% discount_amt = 0 %> + <% other_amt = 0 %> + <% total_nett = 0 %> + <% rounding_adj = 0%> <% gov_tax = 0 %> <% service_charge = 0 %> + <%if @sale_data %> + <% @sale_data.each do |result| %> + + <% grand_total = grand_total.to_f + result.grand_total.to_f %> + <% old_grand_total = old_grand_total.to_f + result.old_grand_total.to_f %> + <% total_tax += result.total_tax.to_f %> + <% total_sum += result.total_amount.to_f %> + <% discount_amt += result.total_discount.to_f %> + <% rounding_adj += result.rounding_adjustment.to_f %> + + + + + + + + <% result.sale_taxes.each do |tax| %> + + <%end%> + + + + + + + <% end %> + + + + + <% @sale_taxes.each do |tax| %> + + <% end %> + + + + + + + + + <% @sale_taxes.each do |tax| %> + + <% end %> + + + + + <%end%> + +
From Date : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - To Date : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%>
Shift Name = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )
Recipt NoCashier NameTotal AmountDiscount Amount <%= tax.tax_name %>Grand TotalRounding Adj.Grand Total +
+ Rounding Adj. +
<%= result.receipt_no rescue '-' %> <%= result.cashier_name rescue '-' %><%= result.total_amount rescue '-' %><%= result.total_discount rescue '-' %><%= tax.tax_payable_amount rescue '-' %><%= result.old_grand_total %><%= result.rounding_adjustment.to_f rescue '-' %><%= result.grand_total_after_rounding() rescue '-'%>
 <%= total_sum rescue '-'%><%= discount_amt rescue '-'%><%= tax.st_amount.round(2) %><%= old_grand_total.to_f.round(2) rescue '-'%><%= rounding_adj rescue '-'%><%= old_grand_total.to_f.round + rounding_adj %>
 Total AmountDiscount Amount<%= tax.tax_name %>Grand TotalRounding Adj.Grand Total +
+ Rounding Adj. +
+
+
\ No newline at end of file diff --git a/app/views/transactions/sales/show.html.erb b/app/views/transactions/sales/show.html.erb index ce7a466a..aa7f545a 100755 --- a/app/views/transactions/sales/show.html.erb +++ b/app/views/transactions/sales/show.html.erb @@ -238,7 +238,7 @@ <%= audit.action%> <%= audit.action_at.strftime("%m-%d-%Y %H:%M %p")%> - <%= audit.approved_by.to_datetime.strftime("%m-%d-%Y %H:%M %p")%> + <%= audit.approved_by%> <%= audit.remark%> diff --git a/config/routes.rb b/config/routes.rb index 1fbaba2f..b7ab10bf 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -341,6 +341,7 @@ scope "(:locale)", locale: /en|mm/ do resources :void_sale, :only => [:index, :show] resources :commission, :only => [:index, :show] resources :stock_check, :only => [:index, :show] + resources :payment_method get "receipt_no/get_shift_by_date", to: "receipt_no#get_shift_by_date", as: "get_shift_by_date" end