From 74edda99f8e53d361bdfbd21b3a28c949f515871 Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 31 Jul 2017 16:57:44 +1200 Subject: [PATCH] CRM-20913 use pledge option group for pledge payments --- CRM/Pledge/BAO/PledgePayment.php | 24 ++++++++++++------------ tests/phpunit/api/v3/PledgeTest.php | 9 ++------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/CRM/Pledge/BAO/PledgePayment.php b/CRM/Pledge/BAO/PledgePayment.php index fd44137756..67832194ab 100644 --- a/CRM/Pledge/BAO/PledgePayment.php +++ b/CRM/Pledge/BAO/PledgePayment.php @@ -98,7 +98,8 @@ WHERE pledge_id = %1 */ public static function create($params) { $transaction = new CRM_Core_Transaction(); - $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + $overdueStatusID = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_PledgePayment', 'status_id', 'Overdue'); + $pendingStatusId = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_PledgePayment', 'status_id', 'Pending'); //calculate the scheduled date for every installment $now = date('Ymd') . '000000'; @@ -106,19 +107,19 @@ WHERE pledge_id = %1 $prevScheduledDate[1] = CRM_Utils_Date::processDate($params['scheduled_date']); if (CRM_Utils_Date::overdue($prevScheduledDate[1], $now)) { - $statues[1] = array_search('Overdue', $contributionStatus); + $statues[1] = $overdueStatusID; } else { - $statues[1] = array_search('Pending', $contributionStatus); + $statues[1] = $pendingStatusId; } for ($i = 1; $i < $params['installments']; $i++) { $prevScheduledDate[$i + 1] = self::calculateNextScheduledDate($params, $i); if (CRM_Utils_Date::overdue($prevScheduledDate[$i + 1], $now)) { - $statues[$i + 1] = array_search('Overdue', $contributionStatus); + $statues[$i + 1] = $overdueStatusID; } else { - $statues[$i + 1] = array_search('Pending', $contributionStatus); + $statues[$i + 1] = $pendingStatusId; } } @@ -604,15 +605,13 @@ WHERE civicrm_pledge.id = %2 * $statusId calculated status id of pledge */ public static function calculatePledgeStatus($pledgeId) { - $paymentStatusTypes = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - $pledgeStatusTypes = CRM_Core_OptionGroup::values('pledge_status', - FALSE, FALSE, FALSE, NULL, 'name', TRUE - ); + $paymentStatusTypes = CRM_Pledge_BAO_PledgePayment::buildOptions('status_id'); + $pledgeStatusTypes = CRM_Pledge_BAO_Pledge::buildOptions('status_id'); //return if the pledge is cancelled. - $currentPledgeStatus = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge', $pledgeId, 'status_id', 'id', TRUE); - if ($currentPledgeStatus == array_search('Cancelled', $pledgeStatusTypes)) { - return $currentPledgeStatus; + $currentPledgeStatusId = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge', $pledgeId, 'status_id', 'id', TRUE); + if ($currentPledgeStatusId == array_search('Cancelled', $pledgeStatusTypes)) { + return $currentPledgeStatusId; } // retrieve all pledge payments for this particular pledge @@ -901,6 +900,7 @@ WHERE civicrm_pledge_payment.contribution_id = {$paymentContributionId} public static function buildOptions($fieldName, $context = NULL, $props = array()) { $result = parent::buildOptions($fieldName, $context, $props); if ($fieldName == 'status_id') { + $result = CRM_Pledge_BAO_Pledge::buildOptions($fieldName, $context, $props); $result = array_diff($result, array('Failed', 'In Progress')); } return $result; diff --git a/tests/phpunit/api/v3/PledgeTest.php b/tests/phpunit/api/v3/PledgeTest.php index 7a1e1c4380..7adc590ab9 100644 --- a/tests/phpunit/api/v3/PledgeTest.php +++ b/tests/phpunit/api/v3/PledgeTest.php @@ -199,13 +199,8 @@ class api_v3_PledgeTest extends CiviUnitTestCase { 'start_date' => 'first saturday of march last year', ); $this->_pledge = $this->callAPISuccess('pledge', 'create', array_merge($this->_params, $overdueParams)); - $pledgeStatuses = CRM_Core_OptionGroup::values('pledge_status', - FALSE, FALSE, FALSE, NULL, 'name' - ); - $params = array( - 'pledge_status_id' => array_search('Overdue', $pledgeStatuses), - ); - $result = $this->callAPISuccess('pledge', 'get', $params); + + $result = $this->callAPISuccess('pledge', 'get', array('status_id' => 'Overdue')); $emptyResult = $this->callAPISuccess('pledge', 'get', array( 'pledge_status_id' => '1', )); -- 2.25.1