From 8140300b85c7bfdce8a777778164c4f044c9766f Mon Sep 17 00:00:00 2001 From: eileen Date: Sat, 2 Nov 2019 15:09:23 +1300 Subject: [PATCH] Bring recordRefundPayment back into the main function. It's adding confusion and it turns out it's broken so let's fix properly --- CRM/Financial/BAO/Payment.php | 48 +++++++++-------------------------- 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/CRM/Financial/BAO/Payment.php b/CRM/Financial/BAO/Payment.php index a58a2c39c2..6303c90328 100644 --- a/CRM/Financial/BAO/Payment.php +++ b/CRM/Financial/BAO/Payment.php @@ -120,7 +120,17 @@ class CRM_Financial_BAO_Payment { } } elseif ($params['total_amount'] < 0) { - $trxn = self::recordRefundPayment($params['contribution_id'], $params, FALSE); + list($contributionDAO, $params) = self::getContributionAndParamsInFormatForRecordFinancialTransaction($params['contribution_id']); + $trxnData = $params; + $params['payment_instrument_id'] = CRM_Utils_Array::value('payment_instrument_id', $trxnData, CRM_Utils_Array::value('payment_instrument_id', $params)); + + $arAccountId = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($contributionDAO->financial_type_id, 'Accounts Receivable Account is'); + + $trxnData['total_amount'] = $trxnData['net_amount'] = $trxnData['total_amount']; + $trxnData['from_financial_account_id'] = $arAccountId; + $trxnData['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded'); + // record the entry + $financialTrxn = CRM_Contribute_BAO_Contribution::recordFinancialAccounts($params, $trxnData); if (!empty($params['cancelled_payment_id'])) { // Do a direct reversal of any entity_financial_trxn records being cancelled. $entityFinancialTrxns = civicrm_api3('EntityFinancialTrxn', 'get', [ @@ -133,7 +143,7 @@ class CRM_Financial_BAO_Payment { 'entity_table' => 'civicrm_financial_item', 'entity_id' => $entityFinancialTrxn['entity_id'], 'amount' => -$entityFinancialTrxn['amount'], - 'financial_trxn_id' => $trxn->id, + 'financial_trxn_id' => $financialTrxn->id, ]); } } @@ -372,40 +382,6 @@ class CRM_Financial_BAO_Payment { return $filteredParams; } - /** - * @param $contributionId - * @param $trxnData - * @param $updateStatus - * - deprecate this param - * - * @return CRM_Financial_DAO_FinancialTrxn - * @throws \CiviCRM_API3_Exception - */ - protected static function recordRefundPayment($contributionId, $trxnData, $updateStatus) { - list($contributionDAO, $params) = self::getContributionAndParamsInFormatForRecordFinancialTransaction($contributionId); - - $params['payment_instrument_id'] = CRM_Utils_Array::value('payment_instrument_id', $trxnData, CRM_Utils_Array::value('payment_instrument_id', $params)); - - $paidStatus = CRM_Core_PseudoConstant::getKey('CRM_Financial_DAO_FinancialItem', 'status_id', 'Paid'); - $arAccountId = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($contributionDAO->financial_type_id, 'Accounts Receivable Account is'); - $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); - - $trxnData['total_amount'] = $trxnData['net_amount'] = $trxnData['total_amount']; - $trxnData['from_financial_account_id'] = $arAccountId; - $trxnData['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded'); - // record the entry - $financialTrxn = CRM_Contribute_BAO_Contribution::recordFinancialAccounts($params, $trxnData); - - // note : not using the self::add method, - // the reason because it performs 'status change' related code execution for financial records - // which in 'Pending Refund' => 'Completed' is not useful, instead specific financial record updates - // are coded below i.e. just updating financial_item status to 'Paid' - if ($updateStatus) { - CRM_Core_DAO::setFieldValue('CRM_Contribute_BAO_Contribution', $contributionId, 'contribution_status_id', $completedStatusId); - } - return $financialTrxn; - } - /** * The recordFinancialTransactions function has capricious requirements for input parameters - load them. * -- 2.25.1