diff --git a/app/controllers/transactions/credit_notes_controller.rb b/app/controllers/transactions/credit_notes_controller.rb index 6740c89d..7303f126 100755 --- a/app/controllers/transactions/credit_notes_controller.rb +++ b/app/controllers/transactions/credit_notes_controller.rb @@ -1,5 +1,5 @@ class Transactions::CreditNotesController < ApplicationController - + before_action :set_transactions_sale, only: [:show, :edit, :update, :destroy] before_action :check_user @@ -15,24 +15,9 @@ class Transactions::CreditNotesController < ApplicationController to = params[:to] order_source = params[:order_source] - if filter.nil? && from.nil? && to.nil? && customer.nil? && order_source.nil? - order_source_query = "(select orders.source FROM orders JOIN sale_orders so ON so.order_id=orders.order_id WHERE so.sale_id=sales.sale_id GROUP BY so.sale_id)" - - @credit_notes = Sale.select("sales.*, #{order_source_query} as source") - .joins("JOIN sale_payments sp on sp.sale_id = sales.sale_id") - .where("(CASE WHEN (sales.grand_total + sales.amount_changed)=(select SUM(sale_payments.payment_amount) - FROM sale_payments WHERE sale_payments.sale_id=sales.sale_id AND sale_payments.payment_method!='creditnote') - THEN NULL ELSE payment_method='creditnote' END)") - @credit_notes = Kaminari.paginate_array(@credit_notes).page(params[:page]).per(20) - else - sale = Sale.search_credit_sales(customer,filter,from,to,order_source) - if !sale.nil? - @credit_notes = sale - @credit_notes = Kaminari.paginate_array(@credit_notes).page(params[:page]).per(20) - else - @credit_notes = 0 - end - end + sale = Sale.search_credit_sales(customer,filter,from,to,order_source) + @credit_notes = Kaminari.paginate_array(sale).page(params[:page]).per(20) + respond_to do |format| format.html # index.html.erb format.json { render json: @credit_notes } @@ -45,5 +30,5 @@ class Transactions::CreditNotesController < ApplicationController redirect_to root_path end end - -end \ No newline at end of file + +end diff --git a/app/models/sale.rb b/app/models/sale.rb index dce922f7..ce7caf7c 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -708,43 +708,29 @@ class Sale < ApplicationRecord end def self.search_credit_sales(customer,filter,from,to,order_source="") - if filter.blank? - keyword = '' - else - keyword = "and sales.receipt_no LIKE ? OR sales.cashier_name LIKE ? OR sales.sale_status ='#{filter}'","%#{filter}%","%#{filter}%" - end - - if customer.blank? - custo = '' - else - custo = "and sales.customer_id = '#{customer}'" - end - order_source_query = "(select orders.source FROM orders JOIN sale_orders so ON so.order_id=orders.order_id WHERE so.sale_id=sales.sale_id GROUP BY so.sale_id)" - if order_source.blank? - source = "" - else - if order_source == "cashier" - source = "and #{order_source_query}='cashier' or #{order_source_query}='emenu'" - else - source = "and #{order_source_query}='#{order_source}'" - end - end + sale = Sale.select(Sale.column_names) + .select(SalePayment.column_names) + .select(:source).includes(:customer) + .joins(:sale_payments, :orders) + .where(sale_payments: {payment_method: 'creditnote'}) + .group(:sale_payment_id) if from.present? && to.present? - sale = Sale.select("sales.*,#{order_source_query} as source").joins("JOIN sale_payments sp on sp.sale_id = sales.sale_id") - .joins(" JOIN bookings ON bookings.sale_id=sales.sale_id") - .joins(" JOIN booking_orders ON booking_orders.booking_id=bookings.booking_id") - .joins(" JOIN orders ON orders.order_id=booking_orders.order_id") - .where("DATE_FORMAT(receipt_date,'%d-%m-%Y') >= ?" + " AND DATE_FORMAT(receipt_date,'%d-%m-%Y') <= ? and (CASE WHEN (sales.grand_total + sales.amount_changed)=(select SUM(sale_payments.payment_amount) - FROM sale_payments WHERE sale_payments.sale_id=sales.sale_id AND sale_payments.payment_method!='creditnote') THEN NULL ELSE payment_method='creditnote' END) #{keyword} #{custo} #{source}", from,to) - else - sale = Sale.select("sales.*,#{order_source_query} as source").joins(" JOIN sale_payments sp on sp.sale_id = sales.sale_id") - .joins(" JOIN bookings ON bookings.sale_id=sales.sale_id") - .joins(" JOIN booking_orders ON booking_orders.booking_id=bookings.booking_id") - .joins(" JOIN orders ON orders.order_id=booking_orders.order_id") - .where("(CASE WHEN (sales.grand_total + sales.amount_changed)=(select SUM(sale_payments.payment_amount) - FROM sale_payments WHERE sale_payments.sale_id=sales.sale_id AND sale_payments.payment_method!='creditnote') THEN NULL ELSE payment_method='creditnote' END) #{keyword} #{custo} #{source}") + sale = sale.receipt_date_between(from, to) end + + if filter.present? + sale = sale.where("sales.receipt_no LIKE ? OR sales.cashier_name LIKE ? OR sales.sale_status = ?", "%#{filter}%", "%#{filter}%", filter) + end + + if customer.present? + sale = sale.where(customer_id: customer) + end + + if order_source.present? + sale = sale.where(orders: {source: order_source}) + end + return sale end def self.get_rounding_adjustment(num) diff --git a/app/views/transactions/credit_notes/index.html.erb b/app/views/transactions/credit_notes/index.html.erb index 754cffb9..f533a1f7 100755 --- a/app/views/transactions/credit_notes/index.html.erb +++ b/app/views/transactions/credit_notes/index.html.erb @@ -37,7 +37,7 @@
- +
@@ -66,7 +66,7 @@
-
+ <% end %>