From f9e6db845999a57f29d8cfd742fe240f29778248 Mon Sep 17 00:00:00 2001 From: Kartik Kathuria Date: Tue, 10 Mar 2020 02:01:32 +0530 Subject: [PATCH] Deceased's Contact Membership's Status updated to Deceased via Inline Signed-off-by: Kartik Kathuria Signed-off-by: Kartik Kathuria Signed-off-by: Kartik Kathuria Signed-off-by: Kartik Kathuria --- CRM/Contact/BAO/Contact.php | 8 ++++++++ tests/phpunit/api/v3/MembershipStatusTest.php | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/CRM/Contact/BAO/Contact.php b/CRM/Contact/BAO/Contact.php index 4698884396..039fd71515 100644 --- a/CRM/Contact/BAO/Contact.php +++ b/CRM/Contact/BAO/Contact.php @@ -426,6 +426,14 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact { self::unsetProtectedFields($contacts); } + // Edit Membership Status + $deceasedParams = [ + 'contact_id' => CRM_Utils_Array::value('contact_id', $params), + 'is_deceased' => CRM_Utils_Array::value('is_deceased', $params, FALSE), + 'deceased_date' => CRM_Utils_Array::value('deceased_date', $params, NULL), + ]; + CRM_Member_BAO_Membership::updateMembershipStatus($deceasedParams, $params['contact_type']); + return $contact; } diff --git a/tests/phpunit/api/v3/MembershipStatusTest.php b/tests/phpunit/api/v3/MembershipStatusTest.php index 58a62a5003..97b1687bcf 100644 --- a/tests/phpunit/api/v3/MembershipStatusTest.php +++ b/tests/phpunit/api/v3/MembershipStatusTest.php @@ -136,6 +136,25 @@ class api_v3_MembershipStatusTest extends CiviUnitTestCase { $result = $this->callAPISuccess('membership_status', 'delete', $params); } + /** + * Test that after checking the person as 'Deceased', the Membership is also 'Deceased' both through inline and normal edit. + */ + public function testDeceasedMembershipInline() { + $contactID = $this->individualCreate(); + $params = [ + 'contact_id' => $contactID, + 'membership_type_id' => $this->_membershipTypeID, + 'join_date' => '2006-01-21', + 'start_date' => '2006-01-21', + 'end_date' => '2006-12-21', + 'status_id' => $this->_membershipStatusID, + ]; + $this->callApiSuccess('membership', 'create', $params); + $this->callApiSuccess('contact', 'create', ['id' => $contactID, 'is_deceased' => 1]); + $membership = $this->callApiSuccessGetSingle('membership', ['contact_id' => $contactID]); + $this->assertEquals(CRM_Core_PseudoConstant::getKey('CRM_Member_BAO_Membership', 'status_id', 'Deceased'), $membership['status_id']); + } + /** * Test that trying to delete membership status while membership still exists creates error. */ -- 2.25.1