From 71acd4bf3c89fe94027f34c8800c2b35cce93f8e Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Mon, 15 May 2017 19:30:04 +0530 Subject: [PATCH 1/2] CRM-20562: Wrong Activities created during participant registration via completetransaction --- CRM/Activity/BAO/Activity.php | 3 ++- CRM/Contribute/BAO/Contribution.php | 4 ---- tests/phpunit/api/v3/ContributionTest.php | 14 +++++++++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CRM/Activity/BAO/Activity.php b/CRM/Activity/BAO/Activity.php index 9784aff36342..84a46cfef613 100644 --- a/CRM/Activity/BAO/Activity.php +++ b/CRM/Activity/BAO/Activity.php @@ -2107,6 +2107,7 @@ public static function addActivity( $id = CRM_Core_Session::getLoggedInContactID(); if ($id) { $activityParams['source_contact_id'] = $id; + $activityParams['target_contact_id'][] = $activity->contact_id; } // CRM-14945 @@ -2115,7 +2116,7 @@ public static function addActivity( } //CRM-4027 if ($targetContactID) { - $activityParams['target_contact_id'] = $targetContactID; + $activityParams['target_contact_id'][] = $targetContactID; } // @todo - use api - remove lots of wrangling above. Remove deprecated fatal & let form layer // deal with any exceptions. diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 4629db2ed2bd..eb551a801432 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -4705,10 +4705,6 @@ public static function completeOrder(&$input, &$ids, $objects, $transaction, $re $contribution->contact_id = $ids['related_contact']; } CRM_Activity_BAO_Activity::addActivity($contribution, NULL, $targetContactID); - // event - } - else { - CRM_Activity_BAO_Activity::addActivity($participant); } // CRM-9132 legacy behaviour was that receipts were sent out in all instances. Still sending diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index b2b838f138bf..9308bca95598 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -2704,7 +2704,7 @@ public function testCompleteTransactionUpdatePledgePayment() { public function testCompleteTransactionWithParticipantRecord() { $mut = new CiviMailUtils($this, TRUE); $mut->clearMessages(); - $this->createLoggedInUser(); + $this->_individualId = $this->createLoggedInUser(); $contributionID = $this->createPendingParticipantContribution(); $this->callAPISuccess('contribution', 'completetransaction', array( 'id' => $contributionID, @@ -2715,6 +2715,14 @@ public function testCompleteTransactionWithParticipantRecord() { 'return' => 'participant_status_id', )); $this->assertEquals(1, $participantStatus); + + //Assert only three activities are created. + $activities = CRM_Activity_BAO_Activity::getContactActivity($this->_individualId); + $this->assertEquals(3, count($activities)); + $activityNames = array_count_values(CRM_Utils_Array::collect('activity_name', $activities)); + $this->assertEquals(2, $activityNames['Event Registration']); + $this->assertEquals(1, $activityNames['Contribution']); + $mut->checkMailLog(array( 'Annual CiviCRM meet', 'Event', @@ -3061,9 +3069,9 @@ public function createPendingPledgeContribution() { */ public function createPendingParticipantContribution() { $event = $this->eventCreate(array('is_email_confirm' => 1, 'confirm_from_email' => 'test@civicrm.org')); - $participantID = $this->participantCreate(array('event_id' => $event['id'], 'status_id' => 6)); + $participantID = $this->participantCreate(array('event_id' => $event['id'], 'status_id' => 6, 'contact_id' => $this->_individualId)); $this->_ids['participant'] = $participantID; - $params = array_merge($this->_params, array('contribution_status_id' => 2, 'financial_type_id' => 'Event Fee')); + $params = array_merge($this->_params, array('contact_id' => $this->_individualId, 'contribution_status_id' => 2, 'financial_type_id' => 'Event Fee')); $contribution = $this->callAPISuccess('contribution', 'create', $params); $this->callAPISuccess('participant_payment', 'create', array( 'contribution_id' => $contribution['id'], From b56b628c1b4b906905a96401e7aeba78112dcb48 Mon Sep 17 00:00:00 2001 From: Monish Deb Date: Fri, 19 May 2017 13:05:51 +0530 Subject: [PATCH 2/2] add comments --- tests/phpunit/api/v3/ContributionTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index 9308bca95598..d2f330e6efb8 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -2720,7 +2720,9 @@ public function testCompleteTransactionWithParticipantRecord() { $activities = CRM_Activity_BAO_Activity::getContactActivity($this->_individualId); $this->assertEquals(3, count($activities)); $activityNames = array_count_values(CRM_Utils_Array::collect('activity_name', $activities)); + // record two activities before and after completing payment for Event registration $this->assertEquals(2, $activityNames['Event Registration']); + // update the original 'Contribution' activity created after completing payment $this->assertEquals(1, $activityNames['Contribution']); $mut->checkMailLog(array(