Towards CRM-20392 (IIDA-108) extract submit function
authorPradeep Nayak <pradpnayak@gmail.com>
Tue, 11 Apr 2017 11:14:02 +0000 (23:14 +1200)
committerdeb.monish <monish.deb@jmaconsulting.biz>
Wed, 12 Apr 2017 08:57:17 +0000 (14:27 +0530)
Towards CRM-20392 enotice fixes

CRM/Contribute/Form/AdditionalPayment.php

index de696b5805c34abbd9438f3836075965b24a3aaf..7476bf7b886f9a6450315c712acb211796be684c 100644 (file)
@@ -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');
   }
 
   /**