From 767d3e2e0a5d9e330fcd0dd71ed8d2e9f48fabcc Mon Sep 17 00:00:00 2001 From: Monish Deb Date: Tue, 29 Nov 2016 18:03:47 +0530 Subject: [PATCH] CRM-19678: Create membership signup activity instead of Membership Renewal on Pay later --- CRM/Member/BAO/Membership.php | 4 ++++ tests/phpunit/api/v3/ContributionTest.php | 21 ++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index 746d738d42..419effbd5c 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -1880,6 +1880,10 @@ INNER JOIN civicrm_contact contact ON ( contact.id = membership.contact_id AND if ($contributionRecurID) { $memParams['contribution_recur_id'] = $contributionRecurID; } + //CRM-19678 : Pay later chosen on current membership then create 'Membership Signup' Activity to track + if ($isPayLater) { + $activityType = 'Membership Signup'; + } $membership = self::create($memParams, $ids, FALSE, $activityType); return array($membership, $renewalMode, $dates); } diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index ecbc73c4f2..1c5dcac1d3 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -2812,11 +2812,26 @@ class api_v3_ContributionTest extends CiviUnitTestCase { catch (Civi\Payment\Exception\PaymentProcessorException $e) { $error = TRUE; } + // Case 1: Assert that Membership Renewal Activity is created on Pending (Pay later) to Completed Contribution via backoffice $activity = $this->callAPISuccess('Activity', 'get', array( 'activity_type_id' => 'Membership Renewal', 'source_record_id' => $this->_ids['contribution'], )); $this->assertEquals(1, $activity['count']); + + // Case 2: Assert that Membership Signup Activity is created on Pending (Pay later) Contribution on current membership + $this->setUpPendingContribution($this->_ids['price_field_value'][0], array('trxn_id' => 'xoa12', 'invoice_id' => '12mv')); + $activity = $this->callAPISuccess('Activity', 'get', array( + 'activity_type_id' => 'Membership Signup', + 'source_record_id' => $this->_ids['contribution'], + )); + $this->assertEquals(1, $activity['count']); + // Case 3: Assert that no Membership Renewal Activity is created on Pending (Pay later) Contribution on current membership + $activity = $this->callAPISuccess('Activity', 'get', array( + 'activity_type_id' => 'Membership Renewal', + 'source_record_id' => $this->_ids['contribution'], + )); + $this->assertEquals(0, $activity['count']); } /** @@ -2841,7 +2856,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase { * * @param int $priceFieldValueID */ - public function setUpPendingContribution($priceFieldValueID) { + public function setUpPendingContribution($priceFieldValueID, $contriParams = array()) { $contactID = $this->individualCreate(); $membership = $this->callAPISuccess('membership', 'create', array( 'contact_id' => $contactID, @@ -2850,7 +2865,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase { 'end_date' => 'yesterday', 'join_date' => 'yesterday - 1 year', )); - $contribution = $this->callAPISuccess('contribution', 'create', array( + $contribution = $this->callAPISuccess('contribution', 'create', array_merge(array( 'domain_id' => 1, 'contact_id' => $contactID, 'receive_date' => date('Ymd'), @@ -2864,7 +2879,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase { 'contribution_status_id' => 2, 'contribution_page_id' => $this->_ids['contribution_page'], 'api.membership_payment.create' => array('membership_id' => $membership['id']), - )); + ), $contriParams)); $this->callAPISuccess('line_item', 'create', array( 'entity_id' => $contribution['id'], -- 2.25.1