+ /**
+ * Get the financial account for the item associated with the new transaction.
+ *
+ * @param array $params
+ * @param CRM_Financial_BAO_FinancialItem $prevFinancialItem
+ *
+ * @return int
+ */
+ public static function getFinancialAccountForStatusChangeTrxn($params, $prevFinancialItem) {
+
+ if (!empty($params['financial_account_id'])) {
+ return $params['financial_account_id'];
+ }
+ $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus($params['contribution_status_id'], 'name');
+ $preferredAccountsRelationships = array(
+ 'Refunded' => 'Credit/Contra Revenue Account is',
+ 'Chargeback' => 'Chargeback Account is',
+ );
+ if (in_array($contributionStatus, array_keys($preferredAccountsRelationships))) {
+ $financialTypeID = !empty($params['financial_type_id']) ? $params['financial_type_id'] : $params['prevContribution']->financial_type_id;
+ return CRM_Financial_BAO_FinancialAccount::getFinancialAccountForFinancialTypeByRelationship(
+ $financialTypeID,
+ $preferredAccountsRelationships[$contributionStatus]
+ );
+ }
+ return $prevFinancialItem->financial_account_id;
+ }
+