diff --git a/app/controllers/reports/credit_payment_controller.rb b/app/controllers/reports/credit_payment_controller.rb index f46b008f..d7567769 100755 --- a/app/controllers/reports/credit_payment_controller.rb +++ b/app/controllers/reports/credit_payment_controller.rb @@ -1,7 +1,7 @@ class Reports::CreditPaymentController < BaseReportController authorize_resource :class => false def index - + @filter_for_credit = [['All',''],['Paid','paid'],['Unpaid','unpaid']] from, to = get_date_range_from_params @shift_sale_range = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED) @@ -17,10 +17,12 @@ authorize_resource :class => false end end - @sale_data = Sale.get_by_shift_sale_credit_payment(@shift_sale_range,@shift,from,to) + @filter = params[:filter_check] + @sale_data = Sale.get_by_shift_sale_credit_payment(@shift_sale_range,@shift,from,to,@filter) @from = from @to = to + # get printer info @print_settings = PrintSetting.get_precision_delimiter() if @shift.present? diff --git a/app/models/sale.rb b/app/models/sale.rb index 25b11e11..c90a5857 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -1099,18 +1099,56 @@ def self.get_shift_sales_by_receipt_no_detail(shift_sale_range,shift,from,to,pay return query end -def self.get_by_shift_sale_credit_payment(shift_sale_range,shift,from,to) - query = 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") +def self.get_by_shift_sale_credit_payment(shift_sale_range,shift,from,to,filter) + puts "filter" + puts filter + sub_query = "SELECT (CASE WHEN SUM(payment_amount) > 0 + THEN DATE_FORMAT(CONVERT_TZ(sale_payments.created_at,'+00:00','+06:30'),'%d %b %y %h:%i%p') ELSE '-' END) + FROM SXRestaurants_development.`sale_payments` + INNER JOIN SXRestaurants_development.sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id + WHERE sale_audits.sale_id = s.sale_id" - if shift.present? - query = query.where("payment_method= 'creditnote' and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift.to_a) - elsif shift_sale_range.present? - query = query.where("payment_method='creditnote' and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift_sale_range.to_a) - else - query = query.where("payment_method='creditnote' and s.sale_status = 'completed' and s.receipt_date between ? and ? ",from,to) - end + sub_query1 = "SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) ELSE 0 END) + FROM SXRestaurants_development.`sale_payments` + INNER JOIN SXRestaurants_development.sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id + WHERE sale_audits.sale_id = s.sale_id" + + sub_query2 = "SELECT (CASE WHEN shift_closed_at IS NOT NULL AND credit_payment > 0 + THEN CONCAT(DATE_FORMAT(CONVERT_TZ(shift_started_at,'+00:00','+06:30'),'%d %b %y %h:%i%p'),' - ',DATE_FORMAT(CONVERT_TZ(shift_closed_at,'+00:00','+06:30'),'%d %b %y %h:%i%p')) + ELSE '-' END) + FROM SXRestaurants_development.shift_sales + WHERE shift_sales.id = s.shift_sale_id" + + sub_query3 = "SELECT (CASE WHEN shift_closed_at IS NOT NULL AND credit_payment > 0 + THEN employees.name ELSE '-' END) + FROM SXRestaurants_development.shift_sales + INNER JOIN SXRestaurants_development.employees ON employees.id=shift_sales.employee_id + WHERE shift_sales.id = s.shift_sale_id" + + filter_check = "" + if filter == 'paid' + filter_check = " AND ss.credit_sales = 0" + elsif filter == 'unpaid' + filter_check = " AND ss.credit_sales > 0" + end + + query = SalePayment.select("s.receipt_no, sale_payments.*,s.receipt_date as sale_date, + s.cashier_name as cashier_name, + (#{sub_query}) as credit_payment_receipt_date, + (#{sub_query1}) as credit_payment, + (#{sub_query3}) as credit_payment_cashier_name, + (#{sub_query2}) as credit_payment_shift_name") + .joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id") + .joins("INNER JOIN shift_sales ss ON ss.id = s.shift_sale_id") + + if shift.present? + query = query.where("sale_payments.payment_method= 'creditnote' and s.sale_status = 'completed' #{filter_check} and s.shift_sale_id in (?)",shift.to_a) + elsif shift_sale_range.present? + query = query.where("sale_payments.payment_method='creditnote' and s.sale_status = 'completed' #{filter_check} and s.shift_sale_id in (?)",shift_sale_range.to_a) + else + query = query.where("sale_payments.payment_method='creditnote' and s.sale_status = 'completed' #{filter_check} and s.receipt_date between ? and ? ",from,to) + end + query = query.group("sale_payments.sale_payment_id") end def self.get_void_sale(shift,from,to) diff --git a/app/views/reports/credit_payment/_shift_sale_report_filter.html.erb b/app/views/reports/credit_payment/_shift_sale_report_filter.html.erb index bcf12b6b..8c0c83bd 100755 --- a/app/views/reports/credit_payment/_shift_sale_report_filter.html.erb +++ b/app/views/reports/credit_payment/_shift_sale_report_filter.html.erb @@ -18,7 +18,12 @@ - + <% if defined? filter_for_credit %> +