diff --git a/CRM/Contribute/Form/Task/Status.php b/CRM/Contribute/Form/Task/Status.php index b310d416dc104307f57df493e4420f5ade9ce3ae..7642a9172bb0be6bf70036bd23cb935e77a6362f 100644 --- a/CRM/Contribute/Form/Task/Status.php +++ b/CRM/Contribute/Form/Task/Status.php @@ -84,10 +84,16 @@ AND {$this->_componentClause}"; * Build the form object. */ public function buildQuickForm() { - $status = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'label'); - unset($status[2]); - unset($status[5]); - unset($status[6]); + $status = CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses( + 'contribution', $this->_contributionIds[0] + ); + $byName = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + // FIXME: if it's invalid to transition from Pending to + // In Progress or Overdue, we should move that logic to + // CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses. + foreach (['Pending', 'In Progress', 'Overdue'] as $suppress) { + unset($status[CRM_Utils_Array::key($suppress, $byName)]); + } $this->add('select', 'contribution_status_id', ts('Contribution Status'), $status, diff --git a/CRM/Core/BAO/UFGroup.php b/CRM/Core/BAO/UFGroup.php index 5c5ab2a478c927a09cba82f2e354d2ddf996ed6f..fca57c0d9c8f3a72a81474dd8ae49d2027d2d329 100644 --- a/CRM/Core/BAO/UFGroup.php +++ b/CRM/Core/BAO/UFGroup.php @@ -2123,11 +2123,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) ); } elseif ($fieldName === 'contribution_status_id') { - $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'label'); - $statusName = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - foreach (['In Progress', 'Overdue', 'Refunded'] as $suppress) { - unset($contributionStatuses[CRM_Utils_Array::key($suppress, $statusName)]); - } + $contributionStatuses = CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses(); $form->add('select', $name, $title, [