'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,
// 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)
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) {
$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
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