From c903e9d777df74ac271da6d90a41333024b0bbe1 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 15 Sep 2023 12:50:15 +0300 Subject: [PATCH] fixed by total sort column --- app/controllers/admin/invoices_controller.rb | 9 ++++++-- app/models/invoice.rb | 23 +++++++++++--------- config/initializers/pagy.rb | 2 ++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/controllers/admin/invoices_controller.rb b/app/controllers/admin/invoices_controller.rb index d7899be10..2818a554a 100644 --- a/app/controllers/admin/invoices_controller.rb +++ b/app/controllers/admin/invoices_controller.rb @@ -1,4 +1,4 @@ -# rubocop:disable Metrics/ClassLength +# rubocop:disable Metrics # require 'invoice_already_paid' module Admin @@ -19,7 +19,12 @@ def index .includes(:paid_with_payment_order) .search(params) - @pagy, @invoices = pagy(invoices, items: params[:per_page] ||= 15) + if invoices.is_a?(Array) + @pagy, @invoices = pagy_array(invoices, items: params[:per_page] ||= 15) + else + @pagy, @invoices = pagy(invoices, items: params[:per_page] ||= 15) + end + end # GET /admin/invoices/aa450f1a-45e2-4f22-b2c3-f5f46b5f906b/download diff --git a/app/models/invoice.rb b/app/models/invoice.rb index f41fb387f..a734c186f 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -30,6 +30,8 @@ class Invoice < ApplicationRecord delegate :enable_deposit?, to: :enable_deposit? delegate :deposit, to: :deposit + attr_accessor :vat_rate + scope :with_search_scope, (lambda do |origin| if origin.present? if numeric?(origin) @@ -61,15 +63,6 @@ class Invoice < ApplicationRecord Time.zone.today + number_of_days, statuses[:issued]) } - def self.with_totals - select("invoices.*, - (CASE WHEN auctions.enable_deposit - THEN ROUND((invoices.cents / 100.0 * (1 + COALESCE(invoices.vat_rate, 0.0)) - auctions.requirement_deposit_in_cents / 100.0), 2) - ELSE ROUND((invoices.cents / 100.0 * (1 + COALESCE(invoices.vat_rate, 0.0))), 2) - END) AS total_value") - .joins(result: :auction) - end - def self.search(params = {}) sort_column = params[:sort].presence_in(%w[paid_through paid_amount @@ -92,7 +85,17 @@ def self.search(params = {}) when 'billing_profile_name' query.left_outer_joins(:billing_profile).order("billing_profiles.name #{sort_direction}") when 'total' - query.with_totals.order("total_value #{sort_direction} NULLS LAST") + invoices_array = query.to_a + if sort_direction == 'asc' + invoices_array.sort_by(&:total) + else + invoices_array.sort_by(&:total).reverse + end + + # ids_order = sorted_invoices.map(&:id) + # ids_order_string = ids_order.join(',') + + # query.where(id: ids_order).order(Arel.sql("position(id::text in '#{ids_order_string}')")) else query.order("#{sort_column} #{sort_direction} NULLS LAST") end diff --git a/config/initializers/pagy.rb b/config/initializers/pagy.rb index 61d115eba..dc2790f7e 100644 --- a/config/initializers/pagy.rb +++ b/config/initializers/pagy.rb @@ -1,4 +1,6 @@ require 'pagy/extras/overflow' +require "pagy/extras/array" + Pagy::I18n.load({ locale: 'en', filepath: "#{Rails.root}/config/locales/pagy.en.yml" }, { locale: 'et',