Skip to content

Commit

Permalink
[#385] merged into 0.8.x branch
Browse files Browse the repository at this point in the history
  • Loading branch information
bjendres committed Apr 25, 2023
2 parents 09e1943 + eb12e2e commit 6034824
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 6 deletions.
19 changes: 18 additions & 1 deletion extension/CRM/Admin/Form/Setting/BankingSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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']}");
Expand Down
20 changes: 20 additions & 0 deletions extension/CRM/Banking/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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;
}
}
20 changes: 15 additions & 5 deletions extension/CRM/Banking/Page/Payments.php
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand All @@ -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 (<a href=\"%2#transaction_list_cutoff\">here</a>).",
[
1 => $transaction_display_cutoff,
2 => CRM_Utils_System::url('civicrm/admin/setting/banking', "reset=1"),
],
),
E::ts('Incomplete Transaction List'),
'alert');
}

return $btxs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@
<div class="clear"></div>
</div>

<div class="crm-section">
<div class="label">{$form.transaction_list_cutoff.label}</div>
<div class="content">{$form.transaction_list_cutoff.html}</div>
<div class="clear"></div>
</div>

<br/>
{* FOOTER *}
<div class="crm-submit-buttons">
Expand Down

0 comments on commit 6034824

Please sign in to comment.