'contact_id' => $membership->contact_id,
'is_test' => $membership->is_test,
'membership_type_id' => $membership->membership_type_id,
+ 'membership_activity_status' => 'Completed',
);
$currentMembership = CRM_Member_BAO_Membership::getContactMembership($membershipParams['contact_id'],
);
// 1. Update Schedule Membership Signup/Renwal activity to completed on successful payment of pending membership
// 2. OR Create renewal activity scheduled if its membership renewal will be paid later
- if (!empty($activityParams['id']) || $activityType == 'Membership Renewal') {
+ if (!empty($params['membership_activity_status']) && (!empty($activityParams['id']) || $activityType == 'Membership Renewal')) {
CRM_Activity_BAO_Activity::addActivity($membership, $activityType, $targetContactID, $activityParams);
break;
}
$currentMembership['today_date'] = $today;
if ($status['id'] !== $currentMembership['status_id']) {
+ $oldStatus = $currentMembership['status_id'];
$memberDAO = new CRM_Member_DAO_Membership();
$memberDAO->id = $currentMembership['id'];
$memberDAO->find(TRUE);
else {
$logParams['modified_id'] = $currentMembership['contact_id'];
}
+
+ //Create activity for status change.
+ $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get');
+ CRM_Activity_BAO_Activity::addActivity($memberDAO,
+ 'Change Membership Status',
+ NULL,
+ array(
+ 'subject' => "Status changed from {$allStatus[$oldStatus]} to {$allStatus[$status['id']]}",
+ 'source_contact_id' => $logParams['modified_id'],
+ 'priority_id' => 'Normal',
+ )
+ );
+
CRM_Member_BAO_MembershipLog::add($logParams, CRM_Core_DAO::$_nullArray);
}
}
if (!empty($currentMembership['id'])) {
$ids['membership'] = $currentMembership['id'];
}
+ $memParams['membership_activity_status'] = ($pending || $isPayLater) ? 'Scheduled' : 'Completed';
}
//CRM-4555
if ($pending) {
);
$result = $this->callAPISuccess('membership', 'create', $params);
+
+ //Update Status and check activities created.
+ $updateStatus = array(
+ 'id' => $result['id'],
+ 'status_id' => 6,
+ );
+ $this->callAPISuccess('Membership', 'create', $updateStatus);
+ $activities = CRM_Activity_BAO_Activity::getContactActivity($this->_contactID);
+ $this->assertEquals(2, count($activities));
+ $activityNames = array_flip(CRM_Utils_Array::collect('activity_name', $activities));
+ $this->assertArrayHasKey('Membership Signup', $activityNames);
+ $this->assertArrayHasKey('Change Membership Status', $activityNames);
+
$this->callAPISuccess('Membership', 'Delete', array(
'id' => $result['id'],
));