From 922becfb4ba86da3109fb774cc5b27ed10029240 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Tue, 11 Apr 2017 23:14:02 +1200 Subject: [PATCH] Towards CRM-20392 (IIDA-108) extract submit function Towards CRM-20392 enotice fixes --- CRM/Contribute/Form/AdditionalPayment.php | 80 +++++++++++++---------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/CRM/Contribute/Form/AdditionalPayment.php b/CRM/Contribute/Form/AdditionalPayment.php index de696b5805..7476bf7b88 100644 --- a/CRM/Contribute/Form/AdditionalPayment.php +++ b/CRM/Contribute/Form/AdditionalPayment.php @@ -303,22 +303,39 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract if ($self->_paymentType == 'refund' && $fields['total_amount'] != abs($self->_refund)) { $errors['total_amount'] = ts('Refund amount must equal refund due amount.'); } - $netAmt = $fields['total_amount'] - $fields['fee_amount']; + $netAmt = $fields['total_amount'] - CRM_Utils_Array::value('fee_amount', $fields, 0); if (!empty($fields['net_amount']) && $netAmt != $fields['net_amount']) { $errors['net_amount'] = ts('Net amount should be equal to the difference between payment amount and fee amount.'); } return $errors; } + /** + * Process the form submission. + */ public function postProcess() { - $participantId = NULL; + $submittedValues = $this->controller->exportValues($this->_name); + $this->submit($submittedValues); $childTab = 'contribute'; if ($this->_component == 'event') { - $participantId = $this->_id; $childTab = 'participant'; } - $submittedValues = $this->controller->exportValues($this->_name); - $submittedValues['confirm_email_text'] = CRM_Utils_Array::value('receipt_text', $submittedValues); + $session = CRM_Core_Session::singleton(); + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', + "reset=1&cid={$this->_contactId}&selectedChild={$childTab}" + )); + } + + /** + * Process Payments. + * @param array $submittedValues + * + */ + public function submit($submittedValues) { + $participantId = NULL; + if ($this->_component == 'event') { + $participantId = $this->_id; + } $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', array('labelColumn' => 'name') @@ -340,40 +357,33 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract $this->processCreditCard($submittedValues); $submittedValues = $this->_params; } - else { - $defaults = array(); - $contribution = civicrm_api3('Contribution', 'getsingle', array( - 'return' => array("contribution_status_id"), - 'id' => $this->_contributionId, - )); - $contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution); - $result = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $submittedValues, $this->_paymentType, $participantId); - // Fetch the contribution & do proportional line item assignment - $params = array('id' => $this->_contributionId); - $contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params); - CRM_Contribute_BAO_Contribution::addPayments(array($contribution), $contributionStatusId); - - // email sending - if (!empty($result) && !empty($submittedValues['is_email_receipt'])) { - $submittedValues['contact_id'] = $this->_contactId; - $submittedValues['contribution_id'] = $this->_contributionId; - - // to get 'from email id' for send receipt - $this->fromEmailId = $submittedValues['from_email_address']; - $sendReceipt = $this->emailReceipt($submittedValues); - } - $statusMsg = ts('The payment record has been processed.'); - if (!empty($submittedValues['is_email_receipt']) && $sendReceipt) { + $defaults = array(); + $contribution = civicrm_api3('Contribution', 'getsingle', array( + 'return' => array("contribution_status_id"), + 'id' => $this->_contributionId, + )); + $contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution); + $result = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $submittedValues, $this->_paymentType, $participantId); + // Fetch the contribution & do proportional line item assignment + $params = array('id' => $this->_contributionId); + $contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params); + CRM_Contribute_BAO_Contribution::addPayments(array($contribution), $contributionStatusId); + + $statusMsg = ts('The payment record has been processed.'); + // send email + if (!empty($result) && !empty($submittedValues['is_email_receipt'])) { + $submittedValues['contact_id'] = $this->_contactId; + $submittedValues['contribution_id'] = $this->_contributionId; + // to get 'from email id' for send receipt + $this->fromEmailId = $submittedValues['from_email_address']; + $sendReceipt = $this->emailReceipt($submittedValues); + if ($sendReceipt) { $statusMsg .= ' ' . ts('A receipt has been emailed to the contributor.'); } - CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success'); - - $session = CRM_Core_Session::singleton(); - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', - "reset=1&cid={$this->_contactId}&selectedChild={$childTab}" - )); } + + CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success'); } /** -- 2.25.1