Fix refund payment not recording from additional payment form
authoreileen <emcnaughton@wikimedia.org>
Thu, 4 Jul 2019 08:41:56 +0000 (20:41 +1200)
committereileen <emcnaughton@wikimedia.org>
Thu, 4 Jul 2019 10:18:14 +0000 (22:18 +1200)
CRM/Contribute/BAO/Contribution.php
CRM/Contribute/Form/AdditionalPayment.php

index a45652a17ae2d6a2da3edc595080eed969ded736..82a3e3d6828f0ef0a151c47c7951450fb9361fb6 100644 (file)
@@ -3891,6 +3891,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
       'In Progress' => ['Cancelled', 'Completed', 'Failed'],
       'Refunded' => ['Cancelled', 'Completed'],
       'Partially paid' => ['Completed'],
+      'Pending refund' => ['Completed', 'Refunded'],
     ];
 
     if (!in_array($contributionStatuses[$fields['contribution_status_id']],
@@ -4013,6 +4014,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
     elseif ($paymentType == 'refund') {
       $trxnsData['total_amount'] = -$trxnsData['total_amount'];
       $trxnsData['participant_id'] = $participantId;
+      $trxnsData['contribution_id'] = $contributionId;
       return civicrm_api3('Payment', 'create', $trxnsData)['id'];
     }
   }
index 1c580d37fd7fe0fe80deb889454cf32b474cead9..f34854f597859a9c326c1dc911fb96ce9d88b2da 100644 (file)
@@ -294,7 +294,7 @@ 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'] - CRM_Utils_Array::value('fee_amount', $fields, 0);
+    $netAmt = (float) $fields['total_amount'] - (float) 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.');
     }