* @throws CRM_Core_Exception
*/
public static function create(&$params, $ids = []) {
+ $isLifeTime = FALSE;
+ if (!empty($params['membership_type_id'])) {
+ $memTypeDetails = CRM_Member_BAO_MembershipType::getMembershipType($params['membership_type_id']);
+ $isLifeTime = $memTypeDetails['duration_unit'] === 'lifetime' ? TRUE : FALSE;
+ }
// always calculate status if is_override/skipStatusCal is not true.
// giving respect to is_override during import. CRM-4012
// @todo enable this once core is using the api.
// CRM_Core_Error::deprecatedWarning('Relying on the BAO to clean up dates is deprecated. Call membership create via the api');
}
- if (!empty($params['id']) && empty($params[$dateField])) {
+ if (!empty($params['id']) && empty($params[$dateField]) && !($isLifeTime && $dateField == 'end_date')) {
$fieldsToLoad[] = $dateField;
}
}
$this->assertEquals(50, $payment['paid']);
// balance remaining
$this->assertEquals(-25, $payment['balance']);
+
+ //Update to lifetime membership.
+ $params['membership_type_id'] = [$this->ids['contact']['organization'], $this->ids['membership_type']['lifetime']];
+ $form->testSubmit($params);
+ $membership = $this->callAPISuccessGetSingle('Membership', ['contact_id' => $this->_individualId]);
+ $this->assertEquals($this->ids['membership_type']['lifetime'], $membership['membership_type_id']);
+ $this->assertTrue(empty($membership['end_date']), 'Lifetime Membership on the individual has an End date.');
}
/**