From: eileen Date: Sat, 5 Sep 2020 03:07:31 +0000 (+1200) Subject: Fix Invoice class to not call validateData X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=e6f479ea3f0ca3425c3c6b1e99cfabac34d4f15a;hp=30bd3f91efc7f6990f956efcef35e10e38e8380c;p=civicrm-core.git Fix Invoice class to not call validateData This avoids calling the BaseIPN validateData class from Invoice.php and calls the narrower loadRelatedObjects to avoid having to change the code around it --- diff --git a/CRM/Contribute/Form/Task/Invoice.php b/CRM/Contribute/Form/Task/Invoice.php index b2087a6474..8701a47c5c 100644 --- a/CRM/Contribute/Form/Task/Invoice.php +++ b/CRM/Contribute/Form/Task/Invoice.php @@ -210,7 +210,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $pendingStatusId = CRM_Utils_Array::key('Pending', $contributionStatusID); foreach ($invoiceElements['details'] as $contribID => $detail) { - $input = $ids = $objects = []; + $input = $ids = []; if (in_array($detail['contact'], $invoiceElements['excludeContactIds'])) { continue; } @@ -225,11 +225,10 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $ids['participant'] = $detail['participant'] ?? NULL; $ids['event'] = $detail['event'] ?? NULL; - if (!$invoiceElements['baseIPN']->validateData($input, $ids, $objects, FALSE)) { - CRM_Core_Error::statusBounce('Supplied data was not able to be validated'); - } - - $contribution = &$objects['contribution']; + $contribution = new CRM_Contribute_BAO_Contribution(); + $contribution->id = $contribID; + $contribution->fetch(); + $contribution->loadRelatedObjects($input, $ids, TRUE); $input['amount'] = $contribution->total_amount; $input['invoice_id'] = $contribution->invoice_id; @@ -237,8 +236,6 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $input['contribution_status_id'] = $contribution->contribution_status_id; $input['organization_name'] = $contribution->_relatedObjects['contact']->organization_name; - $objects['contribution']->receive_date = CRM_Utils_Date::isoToMysql($objects['contribution']->receive_date); - // Fetch the billing address. getValues should prioritize the billing // address, otherwise will return the primary address. $billingAddress = []; diff --git a/tests/phpunit/CRM/Contribute/Form/Task/InvoiceTest.php b/tests/phpunit/CRM/Contribute/Form/Task/InvoiceTest.php index 01172c6133..e652922e80 100644 --- a/tests/phpunit/CRM/Contribute/Form/Task/InvoiceTest.php +++ b/tests/phpunit/CRM/Contribute/Form/Task/InvoiceTest.php @@ -69,6 +69,7 @@ class CRM_Contribute_Form_Task_InvoiceTest extends CiviUnitTestCase { $this->assertNotContains('Due Date', $invoiceHTML[$result['id']]); $this->assertNotContains('PAYMENT ADVICE', $invoiceHTML[$result['id']]); + $this->assertContains('Mr. Anthony Anderson II', $invoiceHTML[$result['id']]); $this->assertContains('Due Date', $invoiceHTML[$contribution['id']]); $this->assertContains('PAYMENT ADVICE', $invoiceHTML[$contribution['id']]);