'type' => CRM_Utils_Type::T_STRING,
'description' => 'Transaction ID specific to the refund taking place',
);
+ $params['card_type_id'] = array(
+ 'title' => 'Card Type ID',
+ 'description' => 'Providing Credit Card Type ID',
+ 'type' => CRM_Utils_Type::T_INT,
+ 'pseudoconstant' => array(
+ 'optionGroupName' => 'accept_creditcard',
+ ),
+ );
}
/**
function civicrm_api3_contribution_get($params) {
$mode = CRM_Contact_BAO_Query::MODE_CONTRIBUTE;
+ $additionalOptions = _civicrm_api3_contribution_get_support_nonunique_returns($params);
$returnProperties = CRM_Contribute_BAO_Query::defaultReturnProperties($mode);
- $contributions = _civicrm_api3_get_using_query_object('Contribution', $params, array(), NULL, $mode, $returnProperties);
+ $contributions = _civicrm_api3_get_using_query_object('Contribution', $params, $additionalOptions, NULL, $mode, $returnProperties);
foreach ($contributions as $id => $contribution) {
$softContribution = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($id, TRUE);
$contributions[$id] = array_merge($contribution, $softContribution);
// format soft credit for backward compatibility
_civicrm_api3_format_soft_credit($contributions[$id]);
+ _civicrm_api3_contribution_add_supported_fields($contributions[$id]);
+
}
return civicrm_api3_create_success($contributions, $params, 'Contribution', 'get');
}
+/**
+ * Fix the return values to reflect cases where the schema has been changed.
+ *
+ * At the query object level using uniquenames dismbiguates between tables.
+ *
+ * However, adding uniquename can change inputs accepted by the api, so we need
+ * to ensure we are asking for the unique name return fields.
+ *
+ * @param array $params
+ *
+ * @return array
+ * @throws \API_Exception
+ */
+function _civicrm_api3_contribution_get_support_nonunique_returns($params) {
+ $additionalOptions = array();
+ $options = _civicrm_api3_get_options_from_params($params, TRUE);
+ foreach (array('check_number', 'address_id') as $changedVariable) {
+ if (isset($options['return']) && !empty($options['return'][$changedVariable])) {
+ $additionalOptions['return']['contribution_' . $changedVariable] = 1;
+ }
+ }
+ return $additionalOptions;
+}
+
+/**
+ * Support for supported output variables.
+ *
+ * @param $contribution
+ */
+function _civicrm_api3_contribution_add_supported_fields(&$contribution) {
+ // These are output fields that are supported in our test contract.
+ // Arguably we should also do the same with 'campaign_id' &
+ // 'source' - which are also fields being rendered with unique names.
+ // That seems more consistent with other api where we output the actual field names.
+ $outputAliases = array(
+ 'contribution_check_number' => 'check_number',
+ 'contribution_address_id' => 'address_id',
+ 'payment_instrument_id' => 'instrument_id',
+ );
+ foreach ($outputAliases as $returnName => $copyTo) {
+ if (array_key_exists($returnName, $contribution)) {
+ $contribution[$copyTo] = $contribution[$returnName];
+ }
+ }
+
+}
+
/**
* Get number of contacts matching the supplied criteria.
*
'payment_processor_id',
);
$input = array_intersect_key($params, array_flip($allowedParams));
+ $input['is_email_receipt'] = TRUE;
CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id'], $values);
}
* @throws \Exception
*/
function civicrm_api3_contribution_completetransaction(&$params) {
-
$input = $ids = array();
if (isset($params['payment_processor_id'])) {
$input['payment_processor_id'] = $params['payment_processor_id'];
$params['trxn_date'] = array(
'title' => 'Transaction Date',
'description' => 'Date this transaction occurred',
- 'type' => CRM_Utils_Type::T_DATE,
+ 'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
+ );
+ $params['card_type_id'] = array(
+ 'title' => 'Card Type ID',
+ 'description' => 'Providing Credit Card Type ID',
+ 'type' => CRM_Utils_Type::T_INT,
+ 'pseudoconstant' => array(
+ 'optionGroupName' => 'accept_creditcard',
+ ),
);
}
$input = $ids = array();
civicrm_api3_verify_one_mandatory($params, NULL, array('contribution_recur_id', 'original_contribution_id'));
if (empty($params['original_contribution_id'])) {
+ // CRM-19873 call with test mode.
$params['original_contribution_id'] = civicrm_api3('contribution', 'getvalue', array(
'return' => 'id',
+ 'contribution_status_id' => array('IN' => array('Completed')),
'contribution_recur_id' => $params['contribution_recur_id'],
+ 'contribution_test' => CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionRecur', $params['contribution_recur_id'], 'is_test'),
'options' => array('limit' => 1, 'sort' => 'id DESC'),
));
}
$input['receipt_from_name'] = CRM_Utils_Array::value('receipt_from_name', $params, $domainFromName);
$input['receipt_from_email'] = CRM_Utils_Array::value('receipt_from_email', $params, $domainFromEmail);
}
+ $input['card_type_id'] = CRM_Utils_Array::value('card_type_id', $params);
+ $input['pan_truncation'] = CRM_Utils_Array::value('pan_truncation', $params);
$transaction = new CRM_Core_Transaction();
return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction, !empty
($contribution->contribution_recur_id), $contribution,
$params['receive_date'] = array(
'title' => 'Contribution Receive Date',
'name' => 'receive_date',
- 'type' => CRM_Utils_Type::T_DATE,
+ 'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
'api.default' => 'now',
);
$params['trxn_id'] = array(