$transaction = new CRM_Core_Transaction();
$paymentParams = array();
- $paymentParams['status_id'] = CRM_Utils_Array::value('status_id', $params);
if (!empty($params['installment_amount'])) {
$params['amount'] = $params['installment_amount'] * $params['installments'];
}
- // get All Payments status types.
- $paymentStatusTypes = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
-
- // update the pledge status only if it does NOT come from form
- if (!isset($params['pledge_status_id'])) {
+ if (!isset($params['pledge_status_id']) && !isset($params['status_id'])) {
if (isset($params['contribution_id'])) {
if ($params['installments'] > 1) {
- $params['status_id'] = array_search('In Progress', $paymentStatusTypes);
+ $params['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'In Progress');
}
}
else {
$params['status_id'] = CRM_Pledge_BAO_PledgePayment::calculatePledgeStatus($params['id']);
}
else {
- $params['status_id'] = array_search('Pending', $paymentStatusTypes);
+ $params['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Pending');
}
}
}
+ $paymentParams['status_id'] = CRM_Utils_Array::value('status_id', $params);
$pledge = self::add($params);
if (is_a($pledge, 'CRM_Core_Error')) {
public static function getTotalAmountAndCount($status = NULL, $startDate = NULL, $endDate = NULL) {
$where = array();
$select = $from = $queryDate = NULL;
- // get all status
- $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
- $statusId = array_search($status, $allStatus);
+ $statusId = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', $status);
switch ($status) {
case 'Completed':
- $statusId = array_search('Cancelled', $allStatus);
- $where[] = 'status_id != ' . $statusId;
+ $where[] = 'status_id != ' . CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Cancelled');
break;
case 'Cancelled':
- $where[] = 'status_id = ' . $statusId;
- break;
-
case 'In Progress':
- $where[] = 'status_id = ' . $statusId;
- break;
-
case 'Pending':
- $where[] = 'status_id = ' . $statusId;
- break;
-
case 'Overdue':
$where[] = 'status_id = ' . $statusId;
break;
);
$where = array();
- $statusId = array_search($status, $allStatus);
switch ($status) {
case 'Completed':
$select = 'sum( total_amount ) as received_pledge , count( cd.id ) as received_count';
}
return civicrm_api3('pledge_payment', 'getcount', array(
- 'pledge_id' => $pledgeID,
- 'status_id' => array('IN' => self::getTransactionalStatus()),
- ));
+ 'pledge_id' => $pledgeID,
+ 'contribution_id' => array('NOT NULL' => TRUE),
+ ));
}
/**
return array_flip(array_intersect($paymentStatus, array('Overdue', 'Pending')));
}
- /**
- * Get array of non transactional statuses.
- * @return array
- * non transactional status ids
- */
- protected static function getTransactionalStatus() {
- $paymentStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
- return array_diff(array_flip($paymentStatus), self::getNonTransactionalStatus());
- }
/**
* Create array for recur record for pledge.
public static function getPledgeStartDate($date, $pledgeBlock) {
$startDate = (array) json_decode($pledgeBlock['pledge_start_date']);
list($field, $value) = each($startDate);
- if (!CRM_Utils_Array::value('is_pledge_start_date_visible', $pledgeBlock)) {
- return date('Ymd', strtotime($value));
- }
- if (!CRM_Utils_Array::value('is_pledge_start_date_editable', $pledgeBlock)) {
+ if (!empty($date) && !CRM_Utils_Array::value('is_pledge_start_date_editable', $pledgeBlock)) {
return $date;
}
+ if (empty($date)) {
+ $date = $value;
+ }
switch ($field) {
case 'contribution_date':
- $date = date('Ymd');
+ if (empty($date)) {
+ $date = date('Ymd');
+ }
break;
case 'calendar_date':
return $date;
}
+ /**
+ * Override buildOptions to hack out some statuses.
+ *
+ * @todo instead of using & hacking the shared optionGroup contribution_status use a separate one.
+ *
+ * @param string $fieldName
+ * @param string $context
+ * @param array $props
+ *
+ * @return array|bool
+ */
+ public static function buildOptions($fieldName, $context = NULL, $props = array()) {
+ $result = parent::buildOptions($fieldName, $context, $props);
+ if ($fieldName == 'status_id') {
+ $result = array_diff($result, array('Failed'));
+ }
+ return $result;
+ }
+
}