From fc629796f5e7a318b72514b4e4fdd4e6f65b7c25 Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@kcristiano.com> Date: Sat, 6 Jul 2019 16:05:19 -0400 Subject: [PATCH] Fix refund payment not recording from additional payment form #14739 Backport of 5.16 PR Signed-off-by: Kevin Cristiano <kcristiano@kcristiano.com> --- civicrm/CRM/Contribute/BAO/Contribution.php | 2 ++ civicrm/CRM/Contribute/Form/AdditionalPayment.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index 6a81bc6185..5ca5894dca 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -3893,6 +3893,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']], @@ -4015,6 +4016,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']; } } diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php index 1c580d37fd..f34854f597 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php +++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php @@ -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.'); } -- GitLab