Deceased's Contact Membership's Status updated to Deceased via Inline
authorKartik Kathuria <kathuriakartik0@gmail.com>
Mon, 9 Mar 2020 20:31:32 +0000 (02:01 +0530)
committerKartik Kathuria <kathuriakartik0@gmail.com>
Fri, 13 Mar 2020 20:03:26 +0000 (01:33 +0530)
Signed-off-by: Kartik Kathuria <kathuriakartik0@gmail.com>
Signed-off-by: Kartik Kathuria <kathuriakartik0@gmail.com>
Signed-off-by: Kartik Kathuria <kathuriakartik0@gmail.com>
Signed-off-by: Kartik Kathuria <kathuriakartik0@gmail.com>
CRM/Contact/BAO/Contact.php
tests/phpunit/api/v3/MembershipStatusTest.php

index 4698884396019cf127f3a637b7559bf1e4404ab5..039fd71515295f8d99146a30f2056553612680f3 100644 (file)
@@ -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;
   }
 
index 58a62a500367aa3229bdbe4e7af3bdcb9f4ffe49..97b1687bcf883452bf87aa9d6670a90a8edf9d62 100644 (file)
@@ -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.
    */