diff --git a/app/assets/javascripts/kaui/multi_functions_bar_utils.js b/app/assets/javascripts/kaui/multi_functions_bar_utils.js index 8e59d4941..409ca80fe 100644 --- a/app/assets/javascripts/kaui/multi_functions_bar_utils.js +++ b/app/assets/javascripts/kaui/multi_functions_bar_utils.js @@ -374,7 +374,7 @@ $(document).ready(function() { container.hide(); populateSavedSearchesDropdown(); - $('#advanceSearchModal').modal('hide'); + $('#applyAdvanceSearch').trigger('click'); }); $(document).on('hidden.bs.modal', '#advanceSearchModal', function () { diff --git a/app/controllers/kaui/admin_tenants_controller.rb b/app/controllers/kaui/admin_tenants_controller.rb index 3cba9d54e..757637dde 100644 --- a/app/controllers/kaui/admin_tenants_controller.rb +++ b/app/controllers/kaui/admin_tenants_controller.rb @@ -288,13 +288,19 @@ def new_overdue_config options = tenant_options_for_client options[:api_key] = @tenant.api_key options[:api_secret] = @tenant.api_secret + @overdue_config_exists = false begin @overdue = Kaui::Overdue.get_overdue_json(options) @overdue_corrupted = false + @overdue_config_exists = @overdue.overdue_states.present? && !@overdue.has_states + rescue KillBillClient::API::NotFound + @overdue = KillBillClient::Model::Overdue.new.tap { |o| o.overdue_states = [] } + @overdue_corrupted = false rescue StandardError => e Rails.logger.warn("Failed to load overdue configuration for tenant #{@tenant.id}: #{e.class}: #{e.message}") @overdue = KillBillClient::Model::Overdue.new.tap { |o| o.overdue_states = [] } @overdue_corrupted = true + @overdue_config_exists = true flash.now[:warning] = 'The existing overdue configuration is corrupted and cannot be loaded. Use the XML upload below to replace it with a valid configuration.' end end @@ -342,6 +348,24 @@ def upload_overdue_config redirect_to admin_tenant_path(current_tenant.id, active_tab: 'OverdueShow'), notice: I18n.t('flashes.notices.overdue_uploaded_successfully') end + def delete_overdue_config + current_tenant = safely_find_tenant_by_id(params[:id]) + + options = tenant_options_for_client + options[:api_key] = current_tenant.api_key + options[:api_secret] = current_tenant.api_secret + + begin + Kaui::AdminTenant.delete_tenant_user_key_value('OVERDUE_CONFIG', options[:username], nil, comment, options) + rescue StandardError => e + flash[:error] = "Failed to delete overdue config: #{as_string(e)}" + redirect_to admin_tenant_new_overdue_config_path(id: current_tenant.id) and return + end + + flash[:overdue_deleted] = true + redirect_to admin_tenant_path(current_tenant.id, active_tab: 'OverdueShow'), notice: I18n.t('flashes.notices.overdue_deleted_successfully') + end + def upload_invoice_template current_tenant = safely_find_tenant_by_id(params[:id]) diff --git a/app/controllers/kaui/engine_controller.rb b/app/controllers/kaui/engine_controller.rb index 618ca4ddb..01e2fccee 100644 --- a/app/controllers/kaui/engine_controller.rb +++ b/app/controllers/kaui/engine_controller.rb @@ -38,7 +38,8 @@ def check_for_redirect_to_tenant_screen end def populate_account_details - @account ||= params[:account_id].present? ? Kaui::Account.find_by_id(params[:account_id], false, false, options_for_klient) : Kaui::Account.new + account_id = scalar_account_id_param + @account ||= account_id.present? ? Kaui::Account.find_by_id(account_id, false, false, options_for_klient) : Kaui::Account.new end def retrieve_tenants_for_current_user diff --git a/app/controllers/kaui/engine_controller_util.rb b/app/controllers/kaui/engine_controller_util.rb index 478b76f73..c88419b99 100644 --- a/app/controllers/kaui/engine_controller_util.rb +++ b/app/controllers/kaui/engine_controller_util.rb @@ -37,8 +37,8 @@ def remapping_addvanced_search_fields(search_string, advanced_search_name_change end def paginate(searcher, data_extractor, formatter, table_default_columns = []) - search_key = (params[:search] || {})[:value].presence - advance_search_query = params[:advance_search_query].presence + search_key = normalize_search_key((params[:search] || {})[:value]).presence + advance_search_query = normalize_search_key(params[:advance_search_query]).presence search_key = advance_search_query if advance_search_query search_key = handle_balance_search(search_key) if search_key.present? @@ -84,6 +84,30 @@ def paginate(searcher, data_extractor, formatter, table_default_columns = []) end end + def advanced_search_query?(search_key) + search_key.to_s.include?('_q') + end + + def scalar_account_id_param + path_account_id = request.path_parameters[:account_id].presence + return path_account_id if path_account_id.present? + + account_id = params[:account_id] + account_id if account_id.is_a?(String) || account_id.is_a?(Numeric) + end + + def normalize_search_key(search_key) + return if search_key.blank? + + if search_key.respond_to?(:to_unsafe_h) + search_key.to_unsafe_h.to_query + elsif search_key.is_a?(Hash) + search_key.to_query + else + search_key + end + end + def promise(&) # Evaluation starts immediately ::Concurrent::Promises.future do diff --git a/app/controllers/kaui/invoices_controller.rb b/app/controllers/kaui/invoices_controller.rb index 314957082..d9d004d37 100644 --- a/app/controllers/kaui/invoices_controller.rb +++ b/app/controllers/kaui/invoices_controller.rb @@ -4,7 +4,7 @@ module Kaui class InvoicesController < Kaui::EngineController def index - @search_query = params[:account_id] + @search_query = scalar_account_id_param @advance_search_query = params[:q] || request.query_string @ordering = params[:ordering] || 'desc' @offset = params[:offset] || 0 @@ -15,7 +15,7 @@ def index end def download - account_id = params[:account_id] + account_id = scalar_account_id_param start_date = params[:startDate] end_date = params[:endDate] all_fields_checked = params[:allFieldsChecked] == 'true' @@ -60,7 +60,7 @@ def pagination searcher = lambda do |search_key, offset, limit| account = begin - Kaui::Account.find_by_id_or_key(search_key, false, false, cached_options_for_klient) + Kaui::Account.find_by_id_or_key(search_key, false, false, cached_options_for_klient) unless advanced_search_query?(search_key) rescue StandardError nil end diff --git a/app/controllers/kaui/payments_controller.rb b/app/controllers/kaui/payments_controller.rb index ba96abd34..f39227653 100644 --- a/app/controllers/kaui/payments_controller.rb +++ b/app/controllers/kaui/payments_controller.rb @@ -5,7 +5,7 @@ module Kaui class PaymentsController < Kaui::EngineController def index - @search_query = params[:q] || params[:account_id] + @search_query = params[:q] || scalar_account_id_param @advance_search_query = params[:q] || request.query_string @ordering = params[:ordering] || (@search_query.blank? ? 'desc' : 'asc') @offset = params[:offset] || 0 @@ -16,7 +16,7 @@ def index end def download - account_id = params[:account_id] + account_id = scalar_account_id_param start_date = params[:startDate] end_date = params[:endDate] all_fields_checked = params[:allFieldsChecked] == 'true' @@ -104,7 +104,7 @@ def pagination payments = Kaui::Payment.list_or_search(payment_state, offset, limit, options_for_klient) else account = begin - Kaui::Account.find_by_id_or_key(search_key, false, false, options_for_klient) + Kaui::Account.find_by_id_or_key(search_key, false, false, options_for_klient) unless advanced_search_query?(search_key) rescue StandardError nil end diff --git a/app/views/kaui/admin_tenants/new_overdue_config.html.erb b/app/views/kaui/admin_tenants/new_overdue_config.html.erb index 124d084d6..389b1d2f8 100644 --- a/app/views/kaui/admin_tenants/new_overdue_config.html.erb +++ b/app/views/kaui/admin_tenants/new_overdue_config.html.erb @@ -10,6 +10,19 @@ Overdue Configuration + <% if @overdue_config_exists && can?(:config_upload, Kaui::AdminTenant) %> + <% overdue_delete_confirmation = t('admin_tenants.delete_overdue_config_confirmation') %> +