CRM-21201: Tax recalculated when pay later contribution is completed using Pay Now
authordeb.monish <monish.deb@jmaconsulting.biz>
Mon, 25 Sep 2017 08:01:18 +0000 (13:31 +0530)
committerdeb.monish <monish.deb@jmaconsulting.biz>
Mon, 25 Sep 2017 08:01:18 +0000 (13:31 +0530)
CRM/Contribute/Form/Contribution/Main.php
templates/CRM/Contribute/Form/Contribution/Main.tpl

index 45f66391695f30d0f41e74a38ea6068069854455..9cf20054ec8533990f59517a47b51a3fad50f0db 100644 (file)
@@ -65,33 +65,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     $this->_paymentProcessors = $this->get('paymentProcessors');
     $this->preProcessPaymentOptions();
 
-    if (!empty($this->_ccid)) {
-      $payment = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_ccid, 'contribution');
-      //bounce if the contribution is not pending.
-      if (empty($payment['balance'])) {
-        CRM_Core_Error::statusBounce(ts("Returning since contribution has already been handled."));
-      }
-      if (!empty($payment['total'])) {
-        $this->_pendingAmount = $payment['total'];
-        $this->assign('pendingAmount', $this->_pendingAmount);
-      }
-      $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($this->_ccid);
-      foreach (array_keys($lineItems) as $id) {
-        $lineItems[$id]['id'] = $id;
-      }
-      $itemId = key($lineItems);
-      if ($itemId && !empty($lineItems[$itemId]['price_field_id'])) {
-        $this->_priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $lineItems[$itemId]['price_field_id'], 'price_set_id');
-      }
-
-      if (!empty($lineItems[$itemId]['price_field_id'])) {
-        $this->_lineItem[$this->_priceSetId] = $lineItems;
-      }
-      $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config');
-      $this->assign('lineItem', $this->_lineItem);
-      $this->assign('is_quick_config', $isQuickConfig);
-      $this->assign('priceSetID', $this->_priceSetId);
-    }
+    $this->assignFormVariablesByContributionID();
 
     // Make the contributionPageID available to the template
     $this->assign('contributionPageID', $this->_id);
@@ -1319,6 +1293,47 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
     CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/transact', "_qf_ThankYou_display=1&qfKey=$qfKey", TRUE, NULL, FALSE));
   }
 
+  /**
+   * Set form variables if contribution ID is found
+   */
+  public function assignFormVariablesByContributionID() {
+    if (empty($this->_ccid)) {
+      return;
+    }
+
+    $payment = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_ccid, 'contribution');
+    //bounce if the contribution is not pending.
+    if (empty($payment['balance'])) {
+      CRM_Core_Error::statusBounce(ts("Returning since contribution has already been handled."));
+    }
+    if (!empty($payment['total'])) {
+      $this->_pendingAmount = $payment['total'];
+      $this->assign('pendingAmount', $this->_pendingAmount);
+    }
+
+    if ($taxAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $this->_ccid, 'tax_amount')) {
+      $this->set('tax_amount', $taxAmount);
+      $this->assign('taxAmount', $taxAmount);
+    }
+
+    $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($this->_ccid);
+    foreach (array_keys($lineItems) as $id) {
+      $lineItems[$id]['id'] = $id;
+    }
+    $itemId = key($lineItems);
+    if ($itemId && !empty($lineItems[$itemId]['price_field_id'])) {
+      $this->_priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $lineItems[$itemId]['price_field_id'], 'price_set_id');
+    }
+
+    if (!empty($lineItems[$itemId]['price_field_id'])) {
+      $this->_lineItem[$this->_priceSetId] = $lineItems;
+    }
+    $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config');
+    $this->assign('lineItem', $this->_lineItem);
+    $this->assign('is_quick_config', $isQuickConfig);
+    $this->assign('priceSetID', $this->_priceSetId);
+  }
+
   /**
    * Function for unit tests on the postProcess function.
    *
index ee07fb5f410f0fc04c6081103a2238e8f5504738..4aa2d31e5b8f8312d91c5c17087e37c8023a998a 100644 (file)
@@ -98,7 +98,7 @@
     {else}
       <div class="display-block">
         <td class="label">{$form.total_amount.label}</td>
-        <td><span>{$form.total_amount.html|crmMoney}</span></td>
+        <td><span>{$form.total_amount.html|crmMoney}&nbsp;&nbsp;{if $taxAmount}(includes {$taxTerm} of {$taxAmount|crmMoney}){/if}</span></td>
       </div>
     {/if}
   {else}