From b5900bc0c68ae7e221b787ca3dbc08d80622235f Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Mon, 31 Oct 2022 12:00:39 +1300 Subject: [PATCH] Cleanup notices on contribution.userDashboard, switch to apiv4 Escape option-possible values Adjust test for change in order --- CRM/Contribute/BAO/Contribution.php | 2 + CRM/Contribute/BAO/ContributionRecur.php | 2 + CRM/Contribute/Page/UserDashboard.php | 155 ++++++++++-------- .../CRM/Contribute/Page/UserDashboard.tpl | 93 +++++------ .../Contact/Page/View/UserDashBoardTest.php | 77 ++++++++- .../CRM/Contribute/BAO/ContributionTest.php | 88 ---------- 6 files changed, 207 insertions(+), 210 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index ebc8c447f3..941f594678 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1458,8 +1458,10 @@ GROUP BY p.id * @todo - this is a confusing function called from one place. It has a test. It would be * nice to deprecate it. * + * @deprecated */ public static function getHonorContacts($honorId) { + CRM_Core_Error::deprecatedFunctionWarning('apiv4'); $params = []; $honorDAO = new CRM_Contribute_DAO_ContributionSoft(); $honorDAO->contact_id = $honorId; diff --git a/CRM/Contribute/BAO/ContributionRecur.php b/CRM/Contribute/BAO/ContributionRecur.php index 36f1c5b368..732ce892f5 100644 --- a/CRM/Contribute/BAO/ContributionRecur.php +++ b/CRM/Contribute/BAO/ContributionRecur.php @@ -230,6 +230,8 @@ class CRM_Contribute_BAO_ContributionRecur extends CRM_Contribute_DAO_Contributi * @param array $ids * (reference ) an array of recurring contribution ids. * + * @deprecated use the api. + * * @return array * an array of recurring ids count */ diff --git a/CRM/Contribute/Page/UserDashboard.php b/CRM/Contribute/Page/UserDashboard.php index 0a4c9f0fe1..96b94a18d7 100644 --- a/CRM/Contribute/Page/UserDashboard.php +++ b/CRM/Contribute/Page/UserDashboard.php @@ -9,6 +9,9 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Contribution; +use Civi\Api4\ContributionRecur; + /** * * @package CRM @@ -18,112 +21,84 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo /** * called when action is browse. + * + * @throws \CRM_Core_Exception */ - public function listContribution() { - $rows = civicrm_api3('Contribution', 'get', [ - 'options' => [ - 'limit' => 12, - 'sort' => 'receive_date DESC', - ], - 'sequential' => 1, - 'contact_id' => $this->_contactId, - 'return' => [ - 'total_amount', - 'contribution_recur_id', - 'financial_type', - 'receive_date', - 'receipt_date', - 'contribution_status', - 'currency', - 'amount_level', - 'contact_id,', - 'contribution_source', - ], - ])['values']; - - // We want oldest first, just among the most recent contributions - $rows = array_reverse($rows); + public function listContribution(): void { + $contributions = $this->getContributions(); - foreach ($rows as $index => &$row) { + foreach ($contributions as &$row) { // This is required for tpl logic. We should move away from hard-code this to adding an array of actions to the row // which the tpl can iterate through - this should allow us to cope with competing attempts to add new buttons // and allow extensions to assign new ones through the pageRun hook - $row['balance_amount'] = CRM_Contribute_BAO_Contribution::getContributionBalance($row['contribution_id']); - $contributionStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $row['contribution_status_id']); - - if (in_array($contributionStatus, ['Pending', 'Partially paid'])) { + // We could check for balance_amount > 0 here? It feels more correct but this seems to be working. + if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE)) { $row['buttons']['pay'] = [ 'class' => 'button', 'label' => ts('Pay Now'), 'url' => CRM_Utils_System::url('civicrm/contribute/transact', [ 'reset' => 1, 'id' => Civi::settings()->get('default_invoice_page'), - 'ccid' => $row['contribution_id'], + 'ccid' => $row['id'], 'cs' => $this->getUserChecksum(), 'cid' => $row['contact_id'], ]), ]; } } + unset($row); - $this->assign('contribute_rows', $rows); + $this->assign('contribute_rows', $contributions); $this->assign('contributionSummary', ['total_amount' => civicrm_api3('Contribution', 'getcount', ['contact_id' => $this->_contactId])]); //add honor block - $params = CRM_Contribute_BAO_Contribution::getHonorContacts($this->_contactId); - - if (!empty($params)) { - // assign vars to templates - $this->assign('honorRows', $params); - $this->assign('honor', TRUE); - } + $softCreditContributions = $this->getContributions(TRUE); + $this->assign('soft_credit_contributions', $softCreditContributions); - $recur = new CRM_Contribute_DAO_ContributionRecur(); - $recur->contact_id = $this->_contactId; - $recur->is_test = 0; - $recur->find(); - - $recurStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'label'); + $recurringContributions = (array) ContributionRecur::get(FALSE) + ->addWhere('contact_id', '=', $this->_contactId) + ->addWhere('is_test', '=', 0) + ->setSelect([ + '*', + 'contribution_status_id:label', + ])->execute(); $recurRow = []; $recurIDs = []; - while ($recur->fetch()) { - if (empty($recur->payment_processor_id)) { + foreach ($recurringContributions as $recur) { + if (empty($recur['payment_processor_id'])) { // it's not clear why we continue here as any without a processor id would likely // be imported from another system & still seem valid. continue; } - require_once 'api/v3/utils.php'; - //@todo calling api functions directly is not supported - _civicrm_api3_object_to_array($recur, $values); - - $values['recur_status'] = $recurStatus[$values['contribution_status_id']]; - $recurRow[$values['id']] = $values; + // Cast to something Smarty-friendly. + $recur['recur_status'] = $recur['contribution_status_id:label']; + $recurRow[$recur['id']] = $recur; - $action = array_sum(array_keys(CRM_Contribute_Page_Tab::dashboardRecurLinks((int) $recur->id, (int) $recur->contact_id))); + $action = array_sum(array_keys(CRM_Contribute_Page_Tab::dashboardRecurLinks((int) $recur['id'], (int) $recur['contact_id']))); - $details = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($recur->id, 'recur'); + $details = CRM_Contribute_BAO_ContributionRecur::getSubscriptionDetails($recur['id'], 'recur'); $hideUpdate = $details->membership_id & $details->auto_renew; if ($hideUpdate) { $action -= CRM_Core_Action::UPDATE; } - $recurRow[$values['id']]['action'] = CRM_Core_Action::formLink(CRM_Contribute_Page_Tab::dashboardRecurLinks((int) $recur->id, (int) $this->_contactId), + $recurRow[$recur['id']]['action'] = CRM_Core_Action::formLink(CRM_Contribute_Page_Tab::dashboardRecurLinks((int) $recur['id'], (int) $this->_contactId), $action, [ 'cid' => $this->_contactId, - 'crid' => $values['id'], + 'crid' => $recur['id'], 'cxt' => 'contribution', ], ts('more'), FALSE, 'contribution.dashboard.recurring', 'Contribution', - $values['id'] + $recur['id'] ); - $recurIDs[] = $values['id']; + $recurIDs[] = $recur['id']; } if (is_array($recurIDs) && !empty($recurIDs)) { $getCount = CRM_Contribute_BAO_ContributionRecur::getCount($recurIDs); @@ -136,12 +111,7 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo } $this->assign('recurRows', $recurRow); - if (!empty($recurRow)) { - $this->assign('recur', TRUE); - } - else { - $this->assign('recur', FALSE); - } + } /** @@ -163,6 +133,8 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo /** * the main function that is called when the page * loads, it decides the which action has to be taken for the page. + * + * @throws \CRM_Core_Exception */ public function run() { $this->assign('isIncludeInvoiceLinks', $this->isIncludeInvoiceLinks()); @@ -170,4 +142,59 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo $this->listContribution(); } + /** + * Get the contact's contributions. + * + * @param bool $isSoftCredit + * Return contributions for which the contact is the soft credit contact instead. + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getContributions(bool $isSoftCredit = FALSE): array { + $apiQuery = Contribution::get(FALSE) + ->addOrderBy('receive_date', 'DESC') + ->setLimit(12) + ->setSelect([ + 'total_amount', + 'contribution_recur_id', + 'receive_date', + 'receipt_date', + 'cancel_date', + 'amount_level', + 'contact_id', + 'contact_id.display_name', + 'contribution_status_id:name', + 'contribution_status_id:label', + 'financial_type_id:label', + 'currency', + 'amount_level', + 'contact_id,', + 'source', + 'balance_amount', + 'id', + ]); + + if ($isSoftCredit) { + $apiQuery->addJoin('ContributionSoft AS contribution_soft', 'INNER'); + $apiQuery->addWhere('contribution_soft.contact_id', '=', $this->_contactId); + $apiQuery->addSelect('contribution_soft.soft_credit_type_id:label'); + } + else { + $apiQuery->addWhere('contact_id', '=', $this->_contactId); + } + $contributions = (array) $apiQuery->execute(); + foreach ($contributions as $index => $contribution) { + // QuickForm can't cope with the colons & dots ... cast to a legacy or simplified key. + $contributions[$index]['financial_type'] = $contribution['financial_type_id:label']; + $contributions[$index]['contribution_status'] = $contribution['contribution_status_id:label']; + $contributions[$index]['contribution_status_name'] = $contribution['contribution_status_id:name']; + $contributions[$index]['display_name'] = $contribution['contact_id.display_name']; + $contributions[$index]['soft_credit_type'] = $contribution['contribution_soft.soft_credit_type_id:label'] ?? NULL; + // Add in the api-v3 style naming just in case any extensions are still looking for it. + $contributions[$index]['contribution_id'] = $contribution['id']; + } + return $contributions; + } + } diff --git a/templates/CRM/Contribute/Page/UserDashboard.tpl b/templates/CRM/Contribute/Page/UserDashboard.tpl index e662f12044..ec1c9e6559 100644 --- a/templates/CRM/Contribute/Page/UserDashboard.tpl +++ b/templates/CRM/Contribute/Page/UserDashboard.tpl @@ -27,23 +27,23 @@ {foreach from=$contribute_rows item=row} - - {$row.total_amount|crmMoney:$row.currency} {if !empty($row.amount_level) && !is_array($row.amount_level)} - {$row.amount_level} {/if} + {$row.total_amount|crmMoney:$row.currency} {if !empty($row.amount_level) && !is_array($row.amount_level)} - {$row.amount_level|escape|smarty:nodefaults} {/if} {if !empty($row.contribution_recur_id)}
{ts}(Recurring Contribution){/ts} {/if} - {$row.financial_type} + {$row.financial_type|escape|smarty:nodefaults} {$row.receive_date|truncate:10:''|crmDate} {$row.receipt_date|truncate:10:''|crmDate} {$row.balance_amount|crmMoney:$row.currency} - {$row.contribution_status} + {$row.contribution_status|escape|smarty:nodefaults} {if $isIncludeInvoiceLinks} {* @todo Instead of this tpl handling assign actions as an array attached the row, iterate through - will better accomodate extension overrides and competition for scarce real estate on this page*} - {assign var='id' value=$row.contribution_id} + {assign var='id' value=$row.id} {assign var='contact_id' value=$row.contact_id} {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id"} {if call_user_func(array('CRM_Core_Permission','check'), 'view my invoices') OR call_user_func(array('CRM_Core_Permission','check'), 'access CiviContribute')} @@ -80,42 +80,38 @@ {/if} - - {if !empty($honor)} - {if $honorRows} - {strip} -
- {ts}Contributions made in your honor{/ts}: -
- - - - - - - - - + {if !empty($soft_credit_contributions)} + {strip} +
+ {ts}Contributions made in your honor{/ts}: +
+
{ts}Contributor{/ts}{ts}Amount{/ts}{ts}Type{/ts}{ts}Financial Type{/ts}{ts}Received date{/ts}{ts}Receipt Sent{/ts}{ts}Status{/ts}
+ + + + + + + + + + {foreach from=$soft_credit_contributions item=row} + + + + + + + + - {foreach from=$honorRows item=row} - - - - - - - - - - {/foreach} -
{ts}Contributor{/ts}{ts}Amount{/ts}{ts}Type{/ts}{ts}Financial Type{/ts}{ts}Received date{/ts}{ts}Receipt Sent{/ts}{ts}Status{/ts}
{$row.display_name|escape|smarty:nodefaults}{$row.total_amount|crmMoney:$row.currency}{$row.soft_credit_type|escape|smarty:nodefaults}{$row.financial_type|escape|smarty:nodefaults}{$row.receive_date|truncate:10:''|crmDate}{$row.receipt_date|truncate:10:''|crmDate}{$row.contribution_status|escape|smarty:nodefaults}
{$row.display_name}{$row.amount}{$row.honor_type}{$row.type}{$row.receive_date|truncate:10:''|crmDate}{$row.receipt_date|truncate:10:''|crmDate}{$row.contribution_status}
- {/strip} - {/if} + {/foreach} + + {/strip} {/if} - {if !empty($recur)} - {if $recurRows} + {if !empty($recurRows)} {strip}
@@ -126,24 +122,23 @@ - {foreach from=$recurRows item=row key=id} + {foreach from=$recurRows item=row} - - - - - + + + + {/foreach}
{ts}Created{/ts}
- every {$recurRows.$id.frequency_interval} {$recurRows.$id.frequency_unit} - for {$recurRows.$id.installments} installments + + every {$row.frequency_interval} {$row.frequency_unit} for {$row.installments} installments {$recurRows.$id.recur_status}{if $recurRows.$id.completed}{$recurRows.$id.completed} - /{$recurRows.$id.installments} - {else}0/{$recurRows.$id.installments} {/if}{$recurRows.$id.create_date|crmDate}{$recurRows.$id.action|replace:'xx':$recurRows.id}{$row.recur_status|escape|smarty:nodefaults}{if $row.completed}{$row.completed} + /{$row.installments} + {else}0/{$row.installments} {/if}{$row.create_date|crmDate}{$row.action|replace:'xx':$row.id}
{/strip} {/if} - {/if} + {crmRegion name="crm-contribute-userdashboard-post"} {/crmRegion} diff --git a/tests/phpunit/CRM/Contact/Page/View/UserDashBoardTest.php b/tests/phpunit/CRM/Contact/Page/View/UserDashBoardTest.php index 26836b6983..26234b5b3b 100644 --- a/tests/phpunit/CRM/Contact/Page/View/UserDashBoardTest.php +++ b/tests/phpunit/CRM/Contact/Page/View/UserDashBoardTest.php @@ -9,6 +9,9 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\ContributionRecur; +use Civi\Api4\ContributionSoft; + /** * Test class for CRM_Contact_Page_View_UserDashBoard * @@ -58,7 +61,7 @@ class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase { /** * Test the content of the dashboard. */ - public function testDashboardContentEmptyContact() { + public function testDashboardContentEmptyContact(): void { $this->runUserDashboard(); $expectedStrings = [ 'You are not currently subscribed to any Groups', @@ -115,17 +118,17 @@ class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase { $expectedStrings = [ 'Your Contribution(s)', '', - 'CompletedassertPageContains($expectedStrings); - $this->assertSmartyVariableArrayIncludes('contribute_rows', 1, [ + $this->assertSmartyVariableArrayIncludes('contribute_rows', 2, [ 'contact_id' => $this->contactID, 'contribution_id' => '1', 'total_amount' => '100.00', 'financial_type' => 'Donation', - 'contribution_source' => 'SSF', + 'source' => 'SSF', 'receive_date' => '2018-11-21 00:00:00', 'contribution_status' => 'Completed', 'currency' => 'USD', @@ -140,7 +143,14 @@ class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase { * @throws \CRM_Core_Exception */ public function testDashboardContentContributions(): void { - $this->contributionCreate(['contact_id' => $this->contactID]); + $contributionRecurID = ContributionRecur::create()->setValues([ + 'amount' => 66, + 'contact_id' => $this->contactID, + 'frequency_unit' => 'month', + 'frequency_interval' => 2, + 'payment_processor_id' => $this->dummyProcessorCreate()->getID(), + ])->execute()->first()['id']; + $this->contributionCreate(['contact_id' => $this->contactID, 'contribution_recur_id' => $contributionRecurID]); $this->contributions[] = civicrm_api3('Contribution', 'get', [ 'contact_id' => $this->contactID, 'options' => ['limit' => 12, 'sort' => 'receive_date DESC'], @@ -150,12 +160,59 @@ class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase { $expectedStrings = [ 'Your Contribution(s)', '
Total AmountFinancial TypeReceived dateReceipt SentBalanceStatusCompletedDownload Invoice
Download Invoice
', - '', + '', '', + '(Recurring Contribution)', + '', ]; $this->assertPageContains($expectedStrings); } + /** + * Create honor-contact method. + * + * @throws \CRM_Core_Exception + */ + public function testUserDashboardHonorContact(): void { + $honoreeContactID = $this->individualCreate([ + 'first_name' => 'John', + 'last_name' => 'Smith', + 'email' => 'john.smith@example.com', + ]); + // Create contribution on behalf of. + $contactID = $this->individualCreate(['first_name' => 'John', 'last_name' => 'Doe']); + + $contribution = $this->callAPISuccess('Contribution', 'create', [ + 'contact_id' => $contactID, + 'currency' => 'USD', + 'financial_type_id' => 4, + 'contribution_status_id' => 1, + 'receive_date' => 'now', + 'total_amount' => 66, + 'sequential' => 1, + ])['values'][0]; + $id = $contribution['id']; + ContributionSoft::create()->setValues([ + 'contact_id' => $honoreeContactID, + 'contribution_id' => $contribution['id'], + 'currency' => $contribution['currency'], + 'amount' => $contribution['total_amount'], + 'soft_credit_type_id' => 1, + ])->execute(); + + $this->runUserDashboard($honoreeContactID); + $this->assertPageContains([ + 'Mr. John Doe II
Total AmountFinancial TypeReceived dateReceipt SentBalanceStatus$100.00 Donation$100.00
(Recurring Contribution)
DonationCompleted
every 2 month for installmentsIn Progress$66.00In Honor ofEvent Fee', + ]); + // Get annual contribution information. + $annual = CRM_Contribute_BAO_Contribution::annual($contactID); + + $currencySymbol = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_Currency', CRM_Core_Config::singleton()->defaultCurrency, 'symbol', 'name'); + $this->assertDBCompareValue('CRM_Contribute_DAO_Contribution', $id, 'total_amount', + 'id', ltrim($annual[2], $currencySymbol), 'Check DB for total amount of the contribution' + ); + } + /** * Test the presence of a "Pay Now" button on partial payments * @@ -190,12 +247,14 @@ class CRM_Contact_Page_View_UserDashBoardTest extends CiviUnitTestCase { /** * Run the user dashboard. + * + * @param int|null $contactID */ - protected function runUserDashboard(): void { - $_REQUEST = ['reset' => 1, 'id' => $this->contactID]; + protected function runUserDashboard(?int $contactID = NULL): void { + $_REQUEST = ['reset' => 1, 'id' => $contactID ?? $this->contactID]; $dashboard = new CRM_Contact_Page_View_UserDashBoard(); $dashboard->_contactId = $this->contactID; - $dashboard->assign('formTpl', NULL); + $dashboard->assign('formTpl'); $dashboard->assign('action', CRM_Core_Action::VIEW); $dashboard->run(); $_REQUEST = []; diff --git a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php index e460c1acee..15cd1eb133 100644 --- a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php +++ b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php @@ -218,94 +218,6 @@ class CRM_Contribute_BAO_ContributionTest extends CiviUnitTestCase { $this->callAPISuccessGetCount('LineItem', [], 0); } - /** - * Create honor-contact method. - */ - public function testCreateAndGetHonorContact() { - $firstName = 'John_' . substr(sha1(rand()), 0, 7); - $lastName = 'Smith_' . substr(sha1(rand()), 0, 7); - $email = "{$firstName}.{$lastName}@example.com"; - - //Get profile id of name honoree_individual used to create profileContact - $honoreeProfileId = NULL; - $ufGroupDAO = new CRM_Core_DAO_UFGroup(); - $ufGroupDAO->name = 'honoree_individual'; - if ($ufGroupDAO->find(TRUE)) { - $honoreeProfileId = $ufGroupDAO->id; - } - - $params = [ - 'prefix_id' => 3, - 'first_name' => $firstName, - 'last_name' => $lastName, - 'email-1' => $email, - ]; - $softParam = ['soft_credit_type_id' => 1]; - - $null = []; - $honoreeContactId = CRM_Contact_BAO_Contact::createProfileContact($params, $null, - NULL, NULL, $honoreeProfileId - ); - - $this->assertDBCompareValue('CRM_Contact_DAO_Contact', $honoreeContactId, 'first_name', 'id', $firstName, - 'Database check for created honor contact record.' - ); - //create contribution on behalf of honary. - - $contactId = $this->individualCreate(['first_name' => 'John', 'last_name' => 'Doe']); - - $param = [ - 'contact_id' => $contactId, - 'currency' => 'USD', - 'financial_type_id' => 4, - 'contribution_status_id' => 1, - 'receive_date' => date('Ymd'), - 'total_amount' => 66, - 'sequential' => 1, - ]; - - $contribution = $this->callAPISuccess('Contribution', 'create', $param)['values'][0]; - $id = $contribution['id']; - $softParam['contact_id'] = $honoreeContactId; - $softParam['contribution_id'] = $id; - $softParam['currency'] = $contribution['currency']; - $softParam['amount'] = $contribution['total_amount']; - - //Create Soft Contribution for honoree contact - CRM_Contribute_BAO_ContributionSoft::add($softParam); - - $this->assertDBCompareValue('CRM_Contribute_DAO_ContributionSoft', $id, 'contact_id', - 'contribution_id', $honoreeContactId, 'Check DB for honor contact of the contribution' - ); - //get honorary information - $getHonorContact = CRM_Contribute_BAO_Contribution::getHonorContacts($honoreeContactId); - $this->assertEquals([ - $id => [ - 'honor_type' => 'In Honor of', - 'honorId' => $contactId, - 'display_name' => 'Mr. John Doe II', - 'type' => 'Event Fee', - 'type_id' => '4', - 'amount' => '$ 66.00', - 'source' => NULL, - 'receive_date' => date('Y-m-d 00:00:00'), - 'contribution_status' => 'Completed', - ], - ], $getHonorContact); - - $this->assertDBCompareValue('CRM_Contact_DAO_Contact', $honoreeContactId, 'first_name', 'id', $firstName, - 'Database check for created honor contact record.' - ); - - //get annual contribution information - $annual = CRM_Contribute_BAO_Contribution::annual($contactId); - - $currencySymbol = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_Currency', CRM_Core_Config::singleton()->defaultCurrency, 'symbol', 'name'); - $this->assertDBCompareValue('CRM_Contribute_DAO_Contribution', $id, 'total_amount', - 'id', ltrim($annual[2], $currencySymbol), 'Check DB for total amount of the contribution' - ); - } - /** * Test that financial type data is not added to the annual query if acls not enabled. */ -- 2.25.1