$fieldTypes = NULL
) {
CRM_Core_Payment_Form::mapParams($form->_bltID, $form->_params, $paymentParams, TRUE);
+ $isTest = ($form->_mode == 'test') ? 1 : 0;
+ $lineItems = $form->_lineItem;
+
+ //do overrides that should have been done in the calling function -
+ // @todo the calling function should pass the correct
+ // variable for $contributionTypeId as it's impossible to debug what is happening in each flow here
+ // but we need to ensure it is doing so before we remove this cruft
- $contributionType = new CRM_Financial_DAO_FinancialType();
if (isset($paymentParams['financial_type'])) {
- $contributionType->id = $paymentParams['financial_type'];
+ $contributionTypeId = $paymentParams['financial_type'];
}
elseif (!empty($form->_values['pledge_id'])) {
- $contributionType->id = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge',
+ $contributionTypeId = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge',
$form->_values['pledge_id'],
'financial_type_id'
);
}
- else {
- $contributionType->id = $contributionTypeId;
- }
+
+ $contributionType = new CRM_Financial_DAO_FinancialType();
+ $contributionType->id = $contributionTypeId;
if (!$contributionType->find(TRUE)) {
+ //@todo - surely this check was part of the 4.3 upgrade & can go now?
CRM_Core_Error::fatal('Could not find a system table');
}
// add some financial type details to the params list
// if folks need to use it
- $paymentParams['contributionType_name'] = $form->_params['contributionType_name'] = $contributionType->name;
+ //CRM-15297 - contributionType is obsolete - pass financial type as well so people can deprecate it
+ $paymentParams['financialType_name'] = $paymentParams['contributionType_name'] = $form->_params['contributionType_name'] = $contributionType->name;
//CRM-11456
- $paymentParams['contributionType_accounting_code'] = $form->_params['contributionType_accounting_code'] = CRM_Financial_BAO_FinancialAccount::getAccountingCode($contributionType->id);
+ $paymentParams['financialType_accounting_code'] = $paymentParams['contributionType_accounting_code'] = $form->_params['contributionType_accounting_code'] = CRM_Financial_BAO_FinancialAccount::getAccountingCode($contributionTypeId);
$paymentParams['contributionPageID'] = $form->_params['contributionPageID'] = $form->_values['id'];
NULL,
$contactID,
$contributionType,
- TRUE, TRUE, TRUE
+ TRUE, TRUE,
+ $isTest,
+ $lineItems
);
if ($contribution) {
$form->_params['contributionID'] = $contribution->id;
}
- $form->_params['contributionTypeID'] = $contributionType->id;
+ $form->_params['contributionTypeID'] = $contributionTypeId;
$form->_params['item_name'] = $form->_params['description'];
$form->_params['receive_date'] = $now;
else {
if (!$form->_params['is_pay_later']) {
if (is_object($payment)) {
- // call postprocess hook before leaving
+ // call postProcess hook before leaving
$form->postProcessHook();
// this does not return
$result = &$payment->doTransferCheckout($form->_params, 'contribute');
NULL,
$contactID,
$contributionType,
- TRUE, TRUE, TRUE
+ TRUE, TRUE,
+ $isTest,
+ $lineItems
);
// restore cached values (part of fix for CRM-14354)
}
$paymentParams['contributionID'] = $contribution->id;
- $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
+ //CRM-15297 deprecate contributionTypeID
+ $paymentParams['financialTypeID'] = $paymentParams['contributionTypeID'] = $contribution->financial_type_id;
$paymentParams['contributionPageID'] = $contribution->contribution_page_id;
if ($form->_values['is_recur'] && $contribution->contribution_recur_id) {
if (is_a($result, 'CRM_Core_Error')) {
//make sure to cleanup db for recurring case.
+ //@todo this clean up has always been controversial as many orgs prefer to see failed transactions.
+ // most recent discussion has been that they should be retained and this could be altered
if (!empty($paymentParams['contributionID'])) {
CRM_Contribute_BAO_Contribution::deleteContribution($paymentParams['contributionID']);
}
// result has all the stuff we need
// lets archive it to a financial transaction
+ //@todo - this is done in 2 places - can't we just do it once straight after retrieving contribution type -
+ // when would this be a bad thing?
if ($contributionType->is_deductible) {
$form->assign('is_deductible', TRUE);
$form->set('is_deductible', TRUE);
$contribution = CRM_Contribute_Form_Contribution_Confirm::processContribution($form,
$form->_params, $result,
$contactID, $contributionType,
- TRUE, $pending, TRUE
+ $pending, TRUE,
+ $isTest,
+ $lineItems
);
}
$form->postProcessPremium($premiumParams, $contribution);
-
+ if (is_array($result) && !empty($result['trxn_id'])) {
+ $contribution->trxn_id = $result['trxn_id'];
+ }
$membershipResult[1] = $contribution;
}
*/
public static function calculateTaxAmount($amount, $taxRate) {
$taxAmount = array();
- $taxAmount['tax_amount'] = ($taxRate/100) * $amount;
+ $taxAmount['tax_amount'] = ($taxRate/100) * CRM_Utils_Rule::cleanMoney($amount);
return $taxAmount;
}