From e6f479ea3f0ca3425c3c6b1e99cfabac34d4f15a Mon Sep 17 00:00:00 2001 From: eileen Date: Sat, 5 Sep 2020 15:07:31 +1200 Subject: [PATCH] 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 --- CRM/Contribute/Form/Task/Invoice.php | 13 +++++-------- .../CRM/Contribute/Form/Task/InvoiceTest.php | 1 + 2 files changed, 6 insertions(+), 8 deletions(-) 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']]); -- 2.25.1