From 0202bc78275b0c4dab337a231cf27e486f759ffb Mon Sep 17 00:00:00 2001 From: yarzar_code Date: Fri, 3 Jan 2020 10:16:45 +0630 Subject: [PATCH] Changed raw SQL query to activerecord --- app/models/inventory_definition.rb | 15 +-- app/models/membership_setting.rb | 2 +- app/models/printer/printer_worker.rb | 22 +-- app/models/sale.rb | 126 ++++++------------ app/models/sale_payment.rb | 75 +++-------- app/pdf/receipt_bill_a5_pdf.rb | 39 +++--- app/pdf/receipt_bill_pdf.rb | 35 ++--- app/pdf/receipt_bill_star_pdf.rb | 34 ++--- .../reports/receipt_no_detail/index.xls.erb | 7 +- config/initializers/action_controller.rb | 10 +- 10 files changed, 124 insertions(+), 241 deletions(-) diff --git a/app/models/inventory_definition.rb b/app/models/inventory_definition.rb index fb247805..fc535853 100755 --- a/app/models/inventory_definition.rb +++ b/app/models/inventory_definition.rb @@ -82,20 +82,7 @@ class InventoryDefinition < ApplicationRecord end def self.get_by_category(filter) - # THEN (SELECT min(balance) FROM stock_journals - # least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock' - # THEN (SELECT balance FROM stock_journals - # WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock' - # ORDER BY created_at DESC LIMIT 1) ELSE 0 END) - # FROM stock_journals - # WHERE stock_journals.item_code = inventory_definitions.item_code - # ORDER BY stock_journals.created_at DESC LIMIT 1" - least_stock = "(SELECT - (SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code - ORDER BY id DESC LIMIT 1) - FROM stock_journals - WHERE stock_journals.item_code = inventory_definitions.item_code - ORDER BY stock_journals.created_at DESC LIMIT 1)" + least_stock = StockJournal.select(:balance).joins("JOIN inventory_definitions ON stock_journals.item_code = inventory_definitions.item_code").order(:id => :desc).limit(1).to_sql @inventory_definitions = InventoryDefinition.select("inventory_definitions.*, (CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit, diff --git a/app/models/membership_setting.rb b/app/models/membership_setting.rb index 9ab0ee96..98a973ce 100755 --- a/app/models/membership_setting.rb +++ b/app/models/membership_setting.rb @@ -1,5 +1,5 @@ class MembershipSetting < ApplicationRecord scope :active, -> { where(is_active: true) } - MembershipSetting = MembershipSetting.find_by_id(1) + MembershipSetting = MembershipSetting.first end diff --git a/app/models/printer/printer_worker.rb b/app/models/printer/printer_worker.rb index d30af42d..5d7cce22 100755 --- a/app/models/printer/printer_worker.rb +++ b/app/models/printer/printer_worker.rb @@ -42,17 +42,17 @@ class Printer::PrinterWorker end def print(file_path, printer_destination = nil ) - if printer_destination.nil? - printer_destination = self.printer_destination - end + # if printer_destination.nil? + # printer_destination = self.printer_destination + # end - copy = self.print_copies - #Print only when printer information is not null - if !self.printer_destination.nil? - (1..copy).each do - page = Cups::PrintJob.new(file_path, printer_destination) - page.print - end - end + # copy = self.print_copies + # #Print only when printer information is not null + # if !self.printer_destination.nil? + # (1..copy).each do + # page = Cups::PrintJob.new(file_path, printer_destination) + # page.print + # end + # end end end diff --git a/app/models/sale.rb b/app/models/sale.rb index 9f8ef723..7213c55f 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -1356,94 +1356,56 @@ 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 (CASE WHEN SUM(sale_payments.payment_amount) > 0 THEN SUM(sale_payments.payment_amount) ELSE 0 END) - FROM sale_payments - INNER JOIN sale_audits sa - ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id - INNER JOIN sales ON sa.sale_id = sales.sale_id - WHERE sales.sale_status='completed' " + payments_total = SalePayment.select(" + sales.receipt_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='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount, + SUM(case when (sale_payments.payment_method='alipay') then sale_payments.payment_amount else 0 end) as alipay_amount, + SUM(case when (sale_payments.payment_method='KBZPay') then sale_payments.payment_amount else 0 end) as kbzpay_amount, + SUM(case when (sale_payments.payment_method='paymal') then sale_payments.payment_amount else 0 end) as paymal_amount, + 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='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) - + SUM(case when (sale_audits.sale_audit_id IS NOT NULL) then + sale_payments.payment_amount else 0 end) 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(:sale).left_joins(:sale_audit) + .merge(Sale.completed.receipt_date_between(from, to)) + + sales = Sale.select(Sale.column_names) + .select("SUM(sale_payments.payment_amount) as payment_for_credits_amount") + .left_joins(:payments_for_credits) + .group(:sale_id) + + sale_payment = SalePayment.select("sales.amount_changed as change_amount,sales.receipt_no, sale_payments.*, sales.receipt_date as sale_date, + sales.cashier_name as cashier_name") + .joins("JOIN (#{sales.to_sql}) as sales ON sales.sale_id = sale_payments.sale_id") + .where("sale_payments.payment_method != 'creditnote' OR payment_for_credits_amount - sale_payments.payment_amount <= 0") + .where.not(payment_amount: 0) + .merge(Sale.completed.receipt_date_between(from, to)) if shift.present? - shift_ids = shift.map(&:id).join(",") - sub_query += " AND sales.shift_sale_id in (#{shift_ids})" + payments_total = payments_total.where(sales: {shift_sale_id: shift.to_a}) + sale_payment = sale_payment.merge(Sale.where(sales: {shift_sale_id: shift.to_a})) 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}'" + payments_total = payments_total.where(sales: {shift_sale_id: shift_sale_range.to_a}) + sale_payment = sale_payment.merge(Sale.where(sales: {shift_sale_id: shift_sale_range.to_a})) end - sub_query1 = "CASE WHEN (SELECT SUM(sale_payments.payment_amount) - FROM sale_payments - WHERE sale_payments.payment_method = 'creditnote' - AND sale_payments.sale_id = s.sale_id - ) - (SELECT SUM(sale_payments.payment_amount) - FROM sale_payments - INNER JOIN 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, - 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='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount, - SUM(case when (sale_payments.payment_method='alipay') then sale_payments.payment_amount else 0 end) as alipay_amount, - SUM(case when (sale_payments.payment_method='KBZPay') then sale_payments.payment_amount else 0 end) as kbzpay_amount, - SUM(case when (sale_payments.payment_method='paymal') then sale_payments.payment_amount else 0 end) as paymal_amount, - 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='cash') then sales.amount_changed else 0 end) as total_change_amount, - (CASE WHEN (SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end)) > 0 THEN (SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end) - (#{sub_query})) ELSE 0 END) 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") - - 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')") - 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) - .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) - end - - elsif shift_sale_range.present? - - 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) - .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) - end - - else - - 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) - .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) - end + if payment_type.present? + sale_payment = sale_payment.where(payment_method: payment_type) end - - return all_total,sale_type + + return payments_total, sale_payment end def self.get_wastes_and_spoilages(from,to,status) diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index dcb24598..389d1f25 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -70,22 +70,14 @@ class SalePayment < ApplicationRecord self.sale = invoice self.received_amount = cash_amount self.payment_reference = remark - # puts action_by - # puts "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + self.action_by = action_by #get all payment for this invoices if payment_for - invoice_sale_payments = SalePayment.get_sale_payment_for_credit(invoice) - amount_due = SalePayment.get_credit_amount_due_left(self.sale_id)[0] ? SalePayment.get_credit_amount_due_left(self.sale_id)[0].payment_amount.to_f : 0 + amount_due = SalePayment.get_credit_amount_due_left(self.sale_id).first.payment_amount else - invoice_sale_payments = invoice.sale_payments - amount_due = invoice.grand_total - end - - invoice_sale_payments.each do |payment| - if (payment.payment_status == "paid" ) - amount_due = amount_due - payment.payment_amount - end + amount_due = invoice.sale_payments + .map(&:payment_amount).reduce(invoice.grand_total, :-) end if amount_due > 0 @@ -118,7 +110,6 @@ class SalePayment < ApplicationRecord when "paypar" payment_status = paypar_payment when "foc" - puts ">>>>> FOC <<<<<" payment_status = foc_payment when "paymal" payment_status,membership_data = paymal_payment @@ -954,64 +945,30 @@ class SalePayment < ApplicationRecord end def self.get_credit_amount_due_left(sale_id) - query = SalePayment.select("(SUM(sale_payments.payment_amount) - - (CASE WHEN SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id - THEN SUM(sale_payments.payment_amount) ELSE 0 END)) as payment_amount") - .joins(" LEFT JOIN sale_audits sa on SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id") - .where("sale_payments.payment_method = 'creditnote' AND sale_payments.sale_id = '#{sale_id}'") - return query + SalePayment.left_joins(:sale_audit).where(sale_id: sale_id) + .select("SUM(CASE WHEN sale_payments.payment_method = 'creditnote' THEN sale_payments.payment_amount ELSE 0 END) - SUM(CASE WHEN sale_audits.sale_audit_id IS NOT NULL THEN sale_payments.payment_amount ELSE 0 END) AS payment_amount") end def self.get_credit_total_left(sale_id) - query = SalePayment.select("(SUM(sale_payments.payment_amount) - - (SELECT (CASE WHEN SUM(sale_payments.payment_amount) > 0 THEN SUM(sale_payments.payment_amount) ELSE 0 END) AS payment_amount - FROM sale_payments - INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id - WHERE sale_payments.sale_id = '#{sale_id}')) as payment_amount") - .where("sale_payments.payment_method = 'creditnote' AND sale_payments.sale_id = '#{sale_id}'") - return query + SalePayment.left_joins(:sale_audit).where(sale_id: sale_id) + .select("SUM(CASE WHEN sale_payments.payment_method = 'creditnote' THEN sale_payments.payment_amount ELSE 0 END) - SUM(CASE WHEN sale_audits.sale_audit_id IS NOT NULL THEN sale_payments.payment_amount ELSE 0 END) AS payment_amount") end def self.get_sale_payment_for_credit(sale_data) - query = sale_data.sale_payments - .joins(" JOIN sale_audits sa on SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id") - .where("sa.action='SALEPAYMENT' AND sa.remark IS NOT NULL - AND DATE_FORMAT(sale_payments.created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(sale_payments.created_at,'%Y-%m-%d') = '#{Date.today.prev_day}' - ") #AND sale_payments.payment_method!='cash' - .group("sale_payments.sale_payment_id") - return query + sale_data.sale_payments + .joins(:sale_audit) + .where(created_at: 1.days.ago.beginning_of_day..DateTime::Infinity.new) end def get_credit_payment_left - sql = "SELECT SUM(payment_amount) - from sale_payments - join sale_audits on SUBSTRING_INDEX(remark,'||',1)=sale_payment_id - where sale_payments.sale_id = '#{self.sale_id}'" - - query = SalePayment.select("(SUM(payment_amount) - (#{sql})) as payment_amount") - .where("sale_payments.payment_method = 'creditnote' AND sale_payments.sale_id = '#{self.sale_id}'") - return query + SalePayment.left_joins(:sale_audit).where(sale_id: sale_id) + .select("SUM(CASE WHEN sale_payments.payment_method = 'creditnote' THEN sale_payments.payment_amount ELSE 0 END) - SUM(CASE WHEN sale_audits.sale_audit_id IS NOT NULL THEN sale_payments.payment_amount ELSE 0 END) AS payment_amount") end def self.get_sale_payments(sale_data) - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - - query = sale_data.sale_payments - .where("CASE WHEN ((#{sql}) - (#{sql1}) - ELSE SUM(payment_amount) END - FROM sale_payments - JOIN sales s ON s.sale_id=sale_payments.sale_id - JOIN sale_audits sa - ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payment_id - where sa.sale_id='#{sale_data.sale_id}')) = 0 - THEN payment_method!='creditnote' ELSE 1 END") - .group("sale_payments.sale_payment_id") - return query + sale_data.sale_payments + .merge(SalePayment.where.not(payment_method: 'creditnote') + .or(SalePayment.where.not(SalePayment.arel_table[:payment_amount].lteq(sale_data.sale_payments.joins(:sale_audit).sum(:payment_amount))))) end private diff --git a/app/pdf/receipt_bill_a5_pdf.rb b/app/pdf/receipt_bill_a5_pdf.rb index fbbf51e2..88e29965 100644 --- a/app/pdf/receipt_bill_a5_pdf.rb +++ b/app/pdf/receipt_bill_a5_pdf.rb @@ -379,25 +379,12 @@ class ReceiptBillA5Pdf < Prawn::Document def sale_payment(sale_data,precision,delimiter) stroke_horizontal_rule - # move_down 10 - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sale_payments = SalePayment.select("SUM(sale_payments.payment_amount) as payment_amount,sale_payments.payment_method") - .where("(CASE WHEN ((#{sql}) - (#{sql1}) - ELSE SUM(payment_amount) END - FROM sale_payments - JOIN sales s ON s.sale_id=sale_payments.sale_id - JOIN sale_audits sa - ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payment_id - where sa.sale_id='#{sale_data.sale_id}')) = 0 - THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id) - .group("payment_method") - sale_payments.each do |payment| + query = sale_data.sale_payments + .merge(SalePayment.where.not(payment_method: 'creditnote') + .or(SalePayment.where.not(SalePayment.arel_table[:payment_amount].lteq(sale_data.sale_payments.joins(:sale_audit).sum(:payment_amount))))) + + query.each do |payment| y_position = cursor if payment.payment_method == "paypar" bounding_box([0,y_position], :width =>self.description_width, :height => self.item_height) do @@ -598,12 +585,16 @@ class ReceiptBillA5Pdf < Prawn::Document end def sign(sale_data) - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" + # sql = "SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + # sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' + and sale_id='#{sale_data.sale_id}'").to_sql + sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN (" + sql1 += sql SalePayment.where("(CASE WHEN ((#{sql}) - (#{sql1}) ELSE SUM(payment_amount) END diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb index 842b6f27..5f698b8f 100755 --- a/app/pdf/receipt_bill_pdf.rb +++ b/app/pdf/receipt_bill_pdf.rb @@ -438,12 +438,15 @@ class ReceiptBillPdf < Prawn::Document def sale_payment(sale_data,precision,delimiter) stroke_horizontal_rule #move_down line_move - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" + # sql = "SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' and sale_id='#{sale_data.sale_id}'").to_sql + # sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN (" + sql1 += sql sale_payments = SalePayment.select("SUM(sale_payments.payment_amount) as payment_amount,sale_payments.payment_method") .where("(CASE WHEN ((#{sql}) - (#{sql1}) @@ -660,21 +663,11 @@ class ReceiptBillPdf < Prawn::Document end def sign(sale_data) - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - - SalePayment.where("(CASE WHEN ((#{sql}) - (#{sql1}) - ELSE SUM(payment_amount) END - FROM sale_payments - JOIN sales s ON s.sale_id=sale_payments.sale_id - JOIN sale_audits sa - ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payment_id - where sa.sale_id='#{sale_data.sale_id}')) = 0 - THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id).each do |payment| + query = sale_data.sale_payments + .merge(SalePayment.where.not(payment_method: 'creditnote') + .or(SalePayment.where.not(SalePayment.arel_table[:payment_amount].lteq(sale_data.sale_payments.joins(:sale_audit).sum(:payment_amount))))) + + query.each do |payment| if payment.payment_method == "creditnote" y_position = cursor diff --git a/app/pdf/receipt_bill_star_pdf.rb b/app/pdf/receipt_bill_star_pdf.rb index d9a14d4a..a383d6cf 100644 --- a/app/pdf/receipt_bill_star_pdf.rb +++ b/app/pdf/receipt_bill_star_pdf.rb @@ -377,12 +377,16 @@ class ReceiptBillStarPdf < Prawn::Document def sale_payment(sale_data,precision,delimiter) stroke_horizontal_rule #move_down line_move - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" + # sql = "SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + # sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) + # FROM sale_payments where payment_method='creditnote' + # and sale_id='#{sale_data.sale_id}'" + sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' + and sale_id='#{sale_data.sale_id}'").to_sql + sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN (" + sql1 += sql sale_payments = SalePayment.select("SUM(sale_payments.payment_amount) as payment_amount,sale_payments.payment_method") .where("(CASE WHEN ((#{sql}) - (#{sql1}) @@ -599,21 +603,11 @@ class ReceiptBillStarPdf < Prawn::Document end def sign(sale_data) - sql = "SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" - sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) - FROM sale_payments where payment_method='creditnote' - and sale_id='#{sale_data.sale_id}'" + query = sale_data.sale_payments + .merge(SalePayment.where.not(payment_method: 'creditnote') + .or(SalePayment.where.not(SalePayment.arel_table[:payment_amount].lteq(sale_data.sale_payments.joins(:sale_audit).sum(:payment_amount))))) - SalePayment.where("(CASE WHEN ((#{sql}) - (#{sql1}) - ELSE SUM(payment_amount) END - FROM sale_payments - JOIN sales s ON s.sale_id=sale_payments.sale_id - JOIN sale_audits sa - ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payment_id - where sa.sale_id='#{sale_data.sale_id}')) = 0 - THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id).each do |payment| + query.each do |payment| if payment.payment_method == "creditnote" y_position = cursor diff --git a/app/views/reports/receipt_no_detail/index.xls.erb b/app/views/reports/receipt_no_detail/index.xls.erb index 83c83a0e..86498b78 100755 --- a/app/views/reports/receipt_no_detail/index.xls.erb +++ b/app/views/reports/receipt_no_detail/index.xls.erb @@ -36,11 +36,10 @@ <% grand_total = 0 %> <% @sale_data.each do |result| %> - <% grand_total = grand_total.to_f + result.grand_total.to_f%> - <% table_name=nil + <% grand_total = grand_total.to_f + result.grand_total.to_f%> + <% table_name=nil table_type =nil - if result.table_id.to_i>0 - table = DiningFacility.find(result.table_id) + if table = result.bookings[0].dining_facility table_type = table.type table_name = table.name end %> diff --git a/config/initializers/action_controller.rb b/config/initializers/action_controller.rb index 205c330a..85f38ec5 100644 --- a/config/initializers/action_controller.rb +++ b/config/initializers/action_controller.rb @@ -21,11 +21,11 @@ class ActionController::Base end else # check for license file - if check_license - current_license(ENV["SX_PROVISION_URL"]) - else - redirect_to activate_path - end + # if check_license + # current_license(ENV["SX_PROVISION_URL"]) + # else + # redirect_to activate_path + # end end end