From de33391da6847847ab2dcad253d05c99a2f0eece Mon Sep 17 00:00:00 2001 From: Jitendra Purohit Date: Tue, 26 Dec 2017 15:02:54 +0530 Subject: [PATCH] CRM-21598 - Case Activity issues with custom Completed Status Type --- CRM/Case/BAO/Case.php | 5 ++++- Civi/CCase/SequenceListener.php | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 4a9aa6e03b..254e31ae36 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1041,7 +1041,10 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c // define statuses which are handled like Completed status (others are assumed to be handled like Scheduled status) $compStatusValues = array(); - $compStatusNames = array('Completed', 'Left Message', 'Cancelled', 'Unreachable', 'Not Required'); + $compStatusNames = array_merge( + array('Completed', 'Left Message', 'Cancelled', 'Unreachable', 'Not Required'), + CRM_Activity_BAO_Activity::getStatusesByType(CRM_Activity_BAO_Activity::COMPLETED) + ); foreach ($compStatusNames as $name) { $compStatusValues[] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', $name); } diff --git a/Civi/CCase/SequenceListener.php b/Civi/CCase/SequenceListener.php index 1bceea8c8f..2ccdf90d4b 100644 --- a/Civi/CCase/SequenceListener.php +++ b/Civi/CCase/SequenceListener.php @@ -48,7 +48,7 @@ class SequenceListener implements CaseChangeListener { } $actTypes = array_flip(\CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name')); - $actStatuses = array_flip(\CRM_Core_PseudoConstant::activityStatus('name')); + $actStatuses = array_flip(\CRM_Activity_BAO_Activity::getStatusesByType(\CRM_Activity_BAO_Activity::COMPLETED)); $actIndex = $analyzer->getActivityIndex(array('activity_type_id', 'status_id')); @@ -59,7 +59,7 @@ class SequenceListener implements CaseChangeListener { $this->createActivity($analyzer, $actTypeXML); return; } - elseif (empty($actIndex[$actTypeId][$actStatuses['Completed']])) { + elseif (!in_array(key($actIndex[$actTypeId]), $actStatuses)) { // Haven't gotten past this step yet! return; } @@ -68,7 +68,7 @@ class SequenceListener implements CaseChangeListener { //CRM-17452 - Close the case only if all the activities are complete $activities = $analyzer->getActivities(); foreach ($activities as $activity) { - if ($activity['status_id'] != $actStatuses['Completed']) { + if (!in_array($activity['status_id'], $actStatuses)) { return; } } -- 2.25.1