net amount sometimes incorrect for events involving partial payments.
authorjitendrapurohit <jitendra.purohit@webaccessglobal.com>
Wed, 8 Apr 2015 06:37:11 +0000 (12:07 +0530)
committerjitendrapurohit <jitendra.purohit@webaccessglobal.com>
Wed, 8 Apr 2015 12:52:47 +0000 (18:22 +0530)
CRM/Contribute/BAO/Contribution.php
CRM/Event/BAO/Participant.php

index 7e1568ebfb371a43ffb697b05cf1b3464b9d04a7..2c4a8002746eafe618702312942db57e6f35c0d0 100644 (file)
@@ -2779,7 +2779,7 @@ WHERE  contribution_id = %1 ";
         'trxn_date' => date('YmdHis'),
         'total_amount' => $totalAmount,
         'fee_amount' => CRM_Utils_Array::value('fee_amount', $params),
-        'net_amount' => CRM_Utils_Array::value('net_amount', $params),
+        'net_amount' => CRM_Utils_Array::value('net_amount', $params, $params['total_amount']),
         'currency' => $params['contribution']->currency,
         'trxn_id' => $params['contribution']->trxn_id,
         'status_id' => $statusId,
@@ -3297,7 +3297,7 @@ WHERE  contribution_id = %1 ";
 
       // update statuses
       // criteria for updates contribution total_amount == financial_trxns of partial_payments
-      $sql = "SELECT SUM(ft.total_amount) as sum_of_payments
+      $sql = "SELECT SUM(ft.total_amount) as sum_of_payments, SUM(ft.net_amount) as net_amount_total
 FROM civicrm_financial_trxn ft
 LEFT JOIN civicrm_entity_financial_trxn eft
   ON (ft.id = eft.financial_trxn_id)
@@ -3306,7 +3306,9 @@ WHERE eft.entity_table = 'civicrm_contribution'
   AND ft.to_financial_account_id != {$toFinancialAccount}
   AND ft.status_id = {$statusId}
 ";
-      $sumOfPayments = CRM_Core_DAO::singleValueQuery($sql);
+      $query = CRM_Core_DAO::executeQuery($sql);
+      $query->fetch();
+      $sumOfPayments = $query->sum_of_payments;
 
       // update statuses
       if ($contributionDAO->total_amount == $sumOfPayments) {
@@ -3315,8 +3317,9 @@ WHERE eft.entity_table = 'civicrm_contribution'
         $contributionDAO->contribution_status_id = $statusId;
         $contributionDAO->cancel_date = 'null';
         $contributionDAO->cancel_reason = NULL;
-        $netAmount = !empty($trxnsData['net_amount']) ? $trxnsData['net_amount'] : $trxnsData['total_amount'];
-        $contributionDAO->net_amount = $contributionDAO->net_amount + $netAmount;
+        $netAmount = !empty($trxnsData['net_amount']) ? NULL : $trxnsData['total_amount'];
+        $contributionDAO->net_amount = $query->net_amount_total + $netAmount;
+        $contributionDAO->fee_amount = $contributionDAO->total_amount - $contributionDAO->net_amount;
         $contributionDAO->save();
 
         //Change status of financial record too
index a01cb5dbd9c2c783805ff85021f7863473fc1a48..fc96c6960669deef2a681748b91a8ac99266cefc 100644 (file)
@@ -2093,7 +2093,8 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI
       if (!$skip) {
         $updatedContributionDAO->contribution_status_id = $contributionStatusVal;
       }
-      $updatedContributionDAO->total_amount = $updatedAmount;
+      $updatedContributionDAO->total_amount = $updatedContributionDAO->net_amount = $updatedAmount;
+      $updatedContributionDAO->fee_amount = 0;
       $updatedContributionDAO->tax_amount = $taxAmount;
       $updatedContributionDAO->save();
       // adjusted amount financial_trxn creation