From eb12e2e43245be11a8d5c36a2685dfbefd1c6f2d Mon Sep 17 00:00:00 2001 From: "B. Endres" Date: Wed, 29 Mar 2023 11:34:13 +0200 Subject: [PATCH] [#385] implemented configurable cut-off --- .../Admin/Form/Setting/BankingSettings.php | 19 +++++++++++++++++- extension/CRM/Banking/Config.php | 20 +++++++++++++++++++ extension/CRM/Banking/Page/Payments.php | 20 ++++++++++++++----- .../Admin/Form/Setting/BankingSettings.tpl | 6 ++++++ 4 files changed, 59 insertions(+), 6 deletions(-) diff --git a/extension/CRM/Admin/Form/Setting/BankingSettings.php b/extension/CRM/Admin/Form/Setting/BankingSettings.php index 56efa76c..8c0102d9 100644 --- a/extension/CRM/Admin/Form/Setting/BankingSettings.php +++ b/extension/CRM/Admin/Form/Setting/BankingSettings.php @@ -120,6 +120,17 @@ function buildQuickForm() { E::ts('Lenient bank account dedupe'), ''); + // validate bank account references? + $this->addElement( + 'text', + CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF, + E::ts('Transaction limit in view') + ); + $this->addRule( + CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF, + E::ts('This needs to be a number larger than 0'), + 'positiveInteger' + ); $this->addButtons(array( array( @@ -153,6 +164,8 @@ function setDefaultValues() { } $defaults['reference_validation'] = CRM_Core_BAO_Setting::getItem('CiviBanking', 'reference_validation'); $defaults['lenient_dedupe'] = CRM_Core_BAO_Setting::getItem('CiviBanking', 'lenient_dedupe'); + $defaults[CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF] + = CRM_Banking_Config::transactionViewCutOff(); return $defaults; } @@ -187,10 +200,14 @@ function postProcess() { // process reference normalisation / validation CRM_Core_BAO_Setting::setItem(!empty($values['reference_store_disabled']),'CiviBanking', 'reference_store_disabled'); CRM_Core_BAO_Setting::setItem(!empty($values['reference_normalisation']), 'CiviBanking', 'reference_normalisation'); - CRM_Core_BAO_Setting::setItem($values['reference_matching_probability'], 'CiviBanking', 'reference_matching_probability'); + CRM_Core_BAO_Setting::setItem($values['reference_matching_probability'], 'CiviBanking', 'reference_matching_probability'); CRM_Core_BAO_Setting::setItem(!empty($values['reference_validation']), 'CiviBanking', 'reference_validation'); CRM_Core_BAO_Setting::setItem(!empty($values['lenient_dedupe']), 'CiviBanking', 'lenient_dedupe'); + // display settings + Civi::settings()->set(CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF, + $values[CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF]); + // log results $logger = CRM_Banking_Helpers_Logger::getLogger(); $logger->logDebug("Log level changed to '{$values['banking_log_level']}', file is: {$values['banking_log_file']}"); diff --git a/extension/CRM/Banking/Config.php b/extension/CRM/Banking/Config.php index 45a588af..5e7b73c7 100644 --- a/extension/CRM/Banking/Config.php +++ b/extension/CRM/Banking/Config.php @@ -19,8 +19,15 @@ */ class CRM_Banking_Config { + /** + * Setting for the transaction list cutoff + */ + const SETTING_TRANSACTION_LIST_CUTOFF = 'transaction_list_cutoff'; + /** * Should the bank account dedupe be done in a lenient way? + * + * @return boolean */ public static function lenientDedupe() { $value = CRM_Core_BAO_Setting::getItem('CiviBanking', 'lenient_dedupe'); @@ -30,4 +37,17 @@ public static function lenientDedupe() { return TRUE; } } + + /** + * The maximum amount of transaction to be shown on the screen + * + * @return integer + */ + public static function transactionViewCutOff() { + $cutoff = (int) Civi::settings()->get(CRM_Banking_Config::SETTING_TRANSACTION_LIST_CUTOFF); + if (empty($cutoff)) { + $cutoff = 2000; + } + return $cutoff; + } } \ No newline at end of file diff --git a/extension/CRM/Banking/Page/Payments.php b/extension/CRM/Banking/Page/Payments.php index 3f6388ab..4539c1e3 100755 --- a/extension/CRM/Banking/Page/Payments.php +++ b/extension/CRM/Banking/Page/Payments.php @@ -482,10 +482,12 @@ function load_btx($payment_states) { // TODO: later add: $page_nr=0, $page_size } function _findBTX($status_id, $batch_id) { - $btxs = array(); + $transaction_display_cutoff = CRM_Banking_Config::transactionViewCutOff(); + + $btxs = []; $btx_search = new CRM_Banking_BAO_BankTransaction(); - $btx_search->limit(1999); - if (!empty($status_id)) $btx_search->status_id = (int) $status_id; + $btx_search->limit($transaction_display_cutoff); + if (!empty($status_id)) $btx_search->status_id = (int) $status_id; if (!empty($batch_id)) $btx_search->tx_batch_id = (int) $batch_id; $btx_search->find(); while ($btx_search->fetch()) { @@ -504,8 +506,16 @@ function _findBTX($status_id, $batch_id) { ); } - if (count($btxs) >= 1999) { - CRM_Core_Session::setStatus(sprintf(ts('Internal limit of 2000 transactions hit. Please use smaller statements.')), ts('List incomplete'), 'alert'); + if (count($btxs) >= $transaction_display_cutoff) { + CRM_Core_Session::setStatus( + E::ts("Internal limit (%1) of transactions to show was exceeded. Please use smaller statements, or adjust the cut-off value in the settings (here).", + [ + 1 => $transaction_display_cutoff, + 2 => CRM_Utils_System::url('civicrm/admin/setting/banking', "reset=1"), + ], + ), + E::ts('Incomplete Transaction List'), + 'alert'); } return $btxs; diff --git a/extension/templates/CRM/Admin/Form/Setting/BankingSettings.tpl b/extension/templates/CRM/Admin/Form/Setting/BankingSettings.tpl index dbd2b9eb..62be098b 100644 --- a/extension/templates/CRM/Admin/Form/Setting/BankingSettings.tpl +++ b/extension/templates/CRM/Admin/Form/Setting/BankingSettings.tpl @@ -80,6 +80,12 @@
+
+
{$form.transaction_list_cutoff.label}
+
{$form.transaction_list_cutoff.html}
+
+
+
{* FOOTER *}