'In Progress' => ['Cancelled', 'Completed', 'Failed'],
'Refunded' => ['Cancelled', 'Completed'],
'Partially paid' => ['Completed'],
+ 'Pending refund' => ['Completed', 'Refunded'],
];
if (!in_array($contributionStatuses[$fields['contribution_status_id']],
elseif ($paymentType == 'refund') {
$trxnsData['total_amount'] = -$trxnsData['total_amount'];
$trxnsData['participant_id'] = $participantId;
+ $trxnsData['contribution_id'] = $contributionId;
return civicrm_api3('Payment', 'create', $trxnsData)['id'];
}
}
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.');
}