diff --git a/app/models/sale.rb b/app/models/sale.rb index ffcb955f..9a64c58b 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -725,6 +725,13 @@ class Sale < ApplicationRecord def self.daily_sales_list(from,to) + sub_query = "SELECT SUM(sale_payments.payment_amount) + FROM SXRestaurants_development.sale_payments + INNER JOIN SXRestaurants_development.sale_audits sa + ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id + INNER JOIN SXRestaurants_development.sales ON sa.sale_id = sales.sale_id + WHERE sales.sale_status='completed' AND sales.receipt_date between '#{from}' and '#{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, @@ -737,7 +744,7 @@ def self.daily_sales_list(from,to) SUM(case when (sale_payments.payment_method='dinga') then sale_payments.payment_amount else 0 end) as dinga_amount, SUM(case when (sale_payments.payment_method='JunctionPay') then sale_payments.payment_amount else 0 end) as junctionpay_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='creditnote') then sale_payments.payment_amount else 0 end) - (#{sub_query})) as credit_amount, SUM(case when (sale_payments.payment_method='giftvoucher') then sale_payments.payment_amount else 0 end) as giftvoucher_amount, SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount") .joins(" left join sale_payments on sale_payments.sale_id = sales.sale_id") @@ -1129,12 +1136,20 @@ def self.get_by_shift_sale_credit_payment(shift_sale_range,shift,from,to,filter) filter_check = "" if filter == 'paid' - filter_check = " AND ss.credit_sales = 0" + filter_check = " AND (SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) ELSE 0 END) + FROM `sale_payments` + INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id + WHERE sale_audits.sale_id = s.sale_id) > 0" elsif filter == 'unpaid' - filter_check = " AND ss.credit_sales > 0" + filter_check = " AND (SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) ELSE 0 END) + FROM `sale_payments` + INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id + WHERE sale_audits.sale_id = s.sale_id) = 0" end - query = SalePayment.select("s.receipt_no, sale_payments.*,s.receipt_date as sale_date, + query = SalePayment.select("s.receipt_no, sale_payments.*, + SUM(sale_payments.payment_amount) as payment_amount, + s.receipt_date as sale_date, s.cashier_name as cashier_name, (#{sub_query}) as credit_payment_receipt_date, (#{sub_query1}) as credit_payment, @@ -1150,7 +1165,7 @@ def self.get_by_shift_sale_credit_payment(shift_sale_range,shift,from,to,filter) 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") + query = query.group("s.sale_id") end def self.get_void_sale(shift,from,to) @@ -1212,10 +1227,38 @@ def self.get_separate_tax(shift_sale_range=nil,shift,from,to,payment_type) end def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type) + sub_query = "SELECT SUM(sale_payments.payment_amount) + FROM SXRestaurants_development.sale_payments + INNER JOIN SXRestaurants_development.sale_audits sa + ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id + INNER JOIN SXRestaurants_development.sales ON sa.sale_id = sales.sale_id + WHERE sales.sale_status='completed' " + if shift.present? + shift_ids = shift.map(&:id).join(",") + sub_query += " AND sales.shift_sale_id in (#{shift_ids})" + elsif shift_sale_range.present? + shift_ids = shift_sale_range.map(&:id).join(",") + sub_query += " AND sales.shift_sale_id in (#{shift_ids})" + else + sub_query += " AND sales.receipt_date between #{from} and #{to}" + end + + sub_query1 = "CASE WHEN (SELECT SUM(sale_payments.payment_amount) + FROM SXRestaurants_development.sale_payments + WHERE sale_payments.payment_method = 'creditnote' + AND sale_payments.sale_id = s.sale_id + ) - (SELECT SUM(sale_payments.payment_amount) + 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_payments.sale_id = s.sale_id) = 0 + THEN sale_payments.sale_id = s.sale_id + AND sale_payments.payment_method!='creditnote' ELSE 1 END" + sale_payment = SalePayment.select("s.amount_changed as change_amount,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") + .where("(#{sub_query1}) ") .order('s.receipt_no DESC') payments_total = SalePayment.select("CAST((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')) AS DATE) as sale_date, @@ -1231,7 +1274,7 @@ def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type SUM(case when (sale_payments.payment_method='JunctionPay') then sale_payments.payment_amount else 0 end) as junctionpay_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='cash') then sales.amount_changed else 0 end) as total_change_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='creditnote') then sale_payments.payment_amount else 0 end) - (#{sub_query})) as credit_amount, SUM(case when (sale_payments.payment_method='giftvoucher') then sale_payments.payment_amount else 0 end) as giftvoucher_amount, SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount") .joins("join sales on sales.sale_id = sale_payments.sale_id") @@ -1241,10 +1284,10 @@ def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type 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')") if payment_type.blank? - sale_type = sale_payment.where("s.sale_status = 'completed' and payment_amount != 0 and s.shift_sale_id in (?)",shift.to_a) + sale_type = sale_payment.where(" s.sale_status = 'completed' and payment_amount != 0 and s.shift_sale_id in (?)",shift.to_a) .order("payment_method") else - sale_type = sale_payment.where("payment_method= '#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift.to_a) + sale_type = sale_payment.where(" payment_method= '#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift.to_a) end elsif shift_sale_range.present? @@ -1252,10 +1295,10 @@ def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type all_total = payments_total.where("sales.shift_sale_id in (?) and sale_status= 'completed' and sale_payments.payment_amount != 0", shift_sale_range.to_a) # .group("DATE_FORMAT((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')),'%Y-%m-%d')") if payment_type.blank? - sale_type = sale_payment.where("s.sale_status = 'completed' and payment_amount != 0 and s.shift_sale_id in (?)",shift_sale_range.to_a) + sale_type = sale_payment.where(" s.sale_status = 'completed' and payment_amount != 0 and s.shift_sale_id in (?)",shift_sale_range.to_a) .order("payment_method") else - sale_type = sale_payment.where("payment_method='#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift_sale_range.to_a) + sale_type = sale_payment.where(" payment_method='#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.shift_sale_id in (?)",shift_sale_range.to_a) end else @@ -1263,10 +1306,10 @@ def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type all_total = payments_total.where("sales.receipt_date between ? and ? and sales.sale_status= 'completed' and sale_payments.payment_amount != 0", from,to) # .group("DATE_FORMAT((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')),'%Y-%m-%d')") if payment_type.blank? - sale_type = sale_payment.where("s.sale_status = 'completed' and payment_amount != 0 and s.receipt_date between ? and ? ",from,to) + sale_type = sale_payment.where(" s.sale_status = 'completed' and payment_amount != 0 and s.receipt_date between ? and ? ",from,to) .order("payment_method") else - sale_type = sale_payment.where("payment_method='#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.receipt_date between ? and ? ",from,to) + sale_type = sale_payment.where(" payment_method='#{payment_type}' and payment_amount != 0 and s.sale_status = 'completed' and s.receipt_date between ? and ? ",from,to) end end diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index a0915c98..812f85e9 100755 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -980,10 +980,13 @@ if(parseInt(jQuery.inArray("Credit", type)) == -1){ if (parseInt(jQuery.inArray("MPU", type)) != -1 || parseInt(jQuery.inArray("VISA", type)) != -1 || parseInt(jQuery.inArray("JCB", type)) != -1 || parseInt(jQuery.inArray("Master", type)) != -1 || parseInt(jQuery.inArray("UNIONPAY", type)) != -1 || parseInt(jQuery.inArray("Redeem", type)) != -1 || parseInt(jQuery.inArray("PAYMAL",type))!= -1) { + if(!location.pathname.includes("credit_payment")){ calculate_member_discount(sale_id,"Card",tax_type); - + } }else{ - calculate_member_discount(sale_id,"Cash",tax_type); + if(!location.pathname.includes("credit_payment")){ + calculate_member_discount(sale_id,"Cash",tax_type); + } } } var ajax_url = "/origami/sale/" + sale_id + "/first_bill"; diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index bfdee9b5..6dd177d1 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -803,7 +803,7 @@ var pdf_view = '<%=@pdf_view%>'; var card = $('#card').text(); var tax_type = localStorage.getItem("tax_type") ? localStorage.getItem("tax_type") : 'all'; - if (credit <= 0) { + if (credit <= 0 && (!location.pathname.includes("credit_payment"))) { calculate_member_discount(sale_id,tax_type); } diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb index 48cf4864..f27ba647 100755 --- a/app/views/origami/rooms/show.html.erb +++ b/app/views/origami/rooms/show.html.erb @@ -967,10 +967,13 @@ $(".choose_payment").on('click', function () { // type = $('.payment_method').val(); if(parseInt(jQuery.inArray("Credit", type)) == -1){ if (parseInt(jQuery.inArray("MPU", type)) != -1 || parseInt(jQuery.inArray("VISA", type)) != -1 || parseInt(jQuery.inArray("JCB", type)) != -1 || parseInt(jQuery.inArray("Master", type)) != -1 || parseInt(jQuery.inArray("UNIONPAY", type)) != -1 || parseInt(jQuery.inArray("Redeem", type)) != -1 || parseInt(jQuery.inArray("PAYMAL", type)) != -1) { - calculate_member_discount(sale_id,"Card",tax_type); - + if(!location.pathname.includes("credit_payment")){ + calculate_member_discount(sale_id,"Card",tax_type); + } }else{ - calculate_member_discount(sale_id,"Cash",tax_type); + if(!location.pathname.includes("credit_payment")){ + calculate_member_discount(sale_id,"Cash",tax_type); + } } } var ajax_url = "/origami/sale/" + sale_id + "/first_bill";