protected $_formType;
- public $_honoreeProfileType;
-
/**
* Array of the payment fields to be displayed in the payment fieldset (pane) in billingBlock.tpl
* this contains all the information to describe these fields from quickform. See CRM_Core_Form_Payment getPaymentFormFieldsMetadata
public function preProcess() {
// Check permission for action.
if (!CRM_Core_Permission::checkActionPermission('CiviContribute', $this->_action)) {
+ // @todo replace with throw new CRM_Core_Exception().
CRM_Core_Error::fatal(ts('You do not have permission to access this page.'));
}
$this->assign('showCheckNumber', TRUE);
$this->_fromEmails = CRM_Core_BAO_Email::getFromEmail();
- $this->assignPaymentRelatedVariables();
if (in_array('CiviPledge', CRM_Core_Config::singleton()->enableComponents) && !$this->_formType) {
$this->preProcessPledge();
else {
$lineItem = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution', 1, TRUE, TRUE);
}
+ // wtf?
empty($lineItem) ? NULL : $this->_lineItems[] = $lineItem;
}
- $this->assign('lineItem', empty($this->_lineItems) ? FALSE : $this->_lineItems);
+ $this->assign('lineItem', empty($lineItem) ? FALSE : array($lineItem));
// Set title
if ($this->_mode && $this->_id) {
else {
$this->setPageTitle($this->_ppID ? ts('Pledge Payment') : ts('Contribution'));
}
-
- if ($this->_id) {
- CRM_Contribute_Form_SoftCredit::preprocess($this);
- }
}
/**
$defaults['fee_amount'] = CRM_Utils_Money::format($defaults['fee_amount'], NULL, '%a');
}
- if (isset($defaults['net_amount'])) {
- $defaults['net_amount'] = CRM_Contribute_BAO_Contribution::calculateNetAmount($defaults['net_amount'], CRM_Utils_Array::value('tax_amount', $defaults));
- }
-
if ($this->_contributionType) {
$defaults['financial_type_id'] = $this->_contributionType;
}
if (empty($defaults['payment_instrument_id'])) {
- $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1'));
+ $defaults['payment_instrument_id'] = $this->getDefaultPaymentInstrumentId();
}
if (!empty($defaults['is_test'])) {
$paneNames[ts('Premium Information')] = 'Premium';
}
- if ($this->_mode) {
- if (CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE) == TRUE) {
- if (!empty($this->_recurPaymentProcessors)) {
- $buildRecurBlock = TRUE;
- if ($this->_ppID) {
- // ppID denotes a pledge payment.
- foreach ($this->_paymentProcessors as $processor) {
- if (!empty($processor['is_recur']) && !empty($processor['object']) && $processor['object']->supports('recurContributionsForPledges')) {
- $buildRecurBlock = TRUE;
- break;
- }
- $buildRecurBlock = FALSE;
+ if (CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, $this->getDefaultPaymentInstrumentId()) == TRUE) {
+ if (!empty($this->_recurPaymentProcessors)) {
+ $buildRecurBlock = TRUE;
+ if ($this->_ppID) {
+ // ppID denotes a pledge payment.
+ foreach ($this->_paymentProcessors as $processor) {
+ if (!empty($processor['is_recur']) && !empty($processor['object']) && $processor['object']->supports('recurContributionsForPledges')) {
+ $buildRecurBlock = TRUE;
+ break;
}
- }
- if ($buildRecurBlock) {
- CRM_Contribute_Form_Contribution_Main::buildRecur($this);
- $this->setDefaults(array('is_recur' => 0));
- $this->assign('buildRecurBlock', TRUE);
- $recurJs = array('onChange' => "buildRecurBlock( this.value ); return false;");
+ $buildRecurBlock = FALSE;
}
}
+ if ($buildRecurBlock) {
+ CRM_Contribute_Form_Contribution_Main::buildRecur($this);
+ $this->setDefaults(array('is_recur' => 0));
+ $this->assign('buildRecurBlock', TRUE);
+ $recurJs = array('onChange' => "buildRecurBlock( this.value ); return false;");
+ }
}
}
$paymentInstrument = FALSE;
if (!$this->_mode) {
+ $checkPaymentID = array_search('Check', CRM_Contribute_PseudoConstant::paymentInstrument('name'));
$paymentInstrument = $this->add('select', 'payment_instrument_id',
ts('Payment Method'),
array('' => ts('- select -')) + CRM_Contribute_PseudoConstant::paymentInstrument(),
- TRUE, array('onChange' => "return showHideByValue('payment_instrument_id','4','checkNumber','table-row','select',false);")
+ TRUE, array('onChange' => "return showHideByValue('payment_instrument_id','{$checkPaymentID}','checkNumber','table-row','select',false);")
);
}
if ($this->_online) {
$this->assign('hideCalender', TRUE);
}
- $checkNumber = $this->add('text', 'check_number', ts('Check Number'), $attributes['check_number']);
+ $checkNumber = $this->add('text', 'check_number', ts('Check Number'), $attributes['contribution_check_number']);
$this->addDateTime('receipt_date', ts('Receipt Date'), FALSE, array('formatType' => 'activityDateTime'));
$this->addDateTime('cancel_date', ts('Cancelled / Refunded Date'), FALSE, array('formatType' => 'activityDateTime'));
if (!empty($this->_params['receive_date'])) {
$this->_params['receive_date'] = CRM_Utils_Date::processDate($this->_params['receive_date'], $this->_params['receive_date_time']);
}
+ else {
+ $this->_params['receive_date'] = $now;
+ }
$this->_params['pcp_display_in_roll'] = CRM_Utils_Array::value('pcp_display_in_roll', $params);
$this->_params['pcp_roll_nickname'] = CRM_Utils_Array::value('pcp_roll_nickname', $params);
$paymentParams['receive_date'] = $this->_params['receive_date'];
}
- $this->_params['receive_date'] = $now;
-
if (!empty($this->_params['is_email_receipt'])) {
$this->_params['receipt_date'] = $now;
}
'payment_processor_id' => $this->_paymentProcessor['id'],
'is_transactional' => FALSE,
'fee_amount' => CRM_Utils_Array::value('fee_amount', $result),
+ 'card_type_id' => CRM_Utils_Array::value('card_type_id', $paymentParams),
+ 'pan_truncation' => CRM_Utils_Array::value('pan_truncation', $paymentParams),
+ 'is_email_receipt' => FALSE,
));
// This has now been set to 1 in the DB - declare it here also
$contribution->contribution_status_id = 1;
* @throws \Exception
*/
protected function submit($submittedValues, $action, $pledgePaymentID) {
- $softIDs = array();
$pId = $contribution = $isRelatedId = FALSE;
$this->_params = $submittedValues;
$this->beginPostProcess();
+ // reassign submitted form values if the any information is formatted via beginPostProcess
+ $submittedValues = $this->_params;
if (!empty($submittedValues['price_set_id']) && $action & CRM_Core_Action::UPDATE) {
$line = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution');
) {
unset($submittedValues['tax_amount']);
}
+ // @todo - look to remove this line. I believe it relates to CRM-16460
+ // and possibly contributes to fixing the issue described there but
+ // would cause breakage for negative values in some cases.
$submittedValues['total_amount'] = CRM_Utils_Array::value('amount', $submittedValues);
}
if ($this->_id) {
}
if (!isset($submittedValues['total_amount'])) {
- $submittedValues['total_amount'] = CRM_Utils_Array::value('total_amount', $this->_values);
+ $submittedValues['total_amount'] = CRM_Utils_Array::value('total_amount', $this->_values) - CRM_Utils_Array::value('tax_amount', $this->_values);
}
$this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE);
$isEmpty = array_keys(array_flip($submittedValues['soft_credit_contact_id']));
if ($this->_id && count($isEmpty) == 1 && key($isEmpty) == NULL) {
- //Delete existing soft credit records if soft credit list is empty on update
- CRM_Contribute_BAO_ContributionSoft::del(array('contribution_id' => $this->_id, 'pcp_id' => 0));
+ civicrm_api3('ContributionSoft', 'get', array('contribution_id' => $this->_id, 'pcp_id' => NULL, 'api.ContributionSoft.delete' => 1));
}
// set the contact, when contact is selected
'cancel_reason',
'source',
'check_number',
+ 'card_type_id',
+ 'pan_truncation',
);
foreach ($fields as $f) {
$params[$f] = CRM_Utils_Array::value($f, $formValues);
// Set is_pay_later flag for back-office offline Pending status contributions CRM-8996
// else if contribution_status is changed to Completed is_pay_later flag is changed to 0, CRM-15041
- if ($params['contribution_status_id'] == CRM_Core_OptionGroup::getValue('contribution_status', 'Pending', 'name')) {
+ if ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending')) {
$params['is_pay_later'] = 1;
}
- elseif ($params['contribution_status_id'] == CRM_Core_OptionGroup::getValue('contribution_status', 'Completed', 'name')) {
+ elseif ($params['contribution_status_id'] == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) {
$params['is_pay_later'] = 0;
}
}
$taxRate = array();
$getTaxDetails = FALSE;
- if ($action & CRM_Core_Action::ADD) {
- $line = $lineItem;
- }
- elseif ($action & CRM_Core_Action::UPDATE) {
- $line = $this->_lineItems;
- }
- foreach ($line as $key => $value) {
+
+ foreach ($lineItem as $key => $value) {
foreach ($value as $v) {
if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) {
$taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + CRM_Utils_Array::value('tax_amount', $v);