From 14b1ab0cefd20b7d7c0da938b25cf2e87e22c50f Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Thu, 11 Aug 2016 07:48:47 +0530 Subject: [PATCH] CRM-16189, (AA-44) added function to create entries for Account Receivable ---------------------------------------- * CRM-16189: Improve support for Accrual Method bookkeeping https://issues.civicrm.org/jira/browse/CRM-16189 --- CRM/Contribute/BAO/Contribution.php | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 7adb98858d..8950429a71 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -226,6 +226,9 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { //add Account details $params['contribution'] = $contribution; + if (empty($contributionID)) { + self::recordAlwaysAccountsReceivable($params); + } self::recordFinancialAccounts($params); if (self::isUpdateToRecurringContribution($params)) { @@ -5296,4 +5299,37 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co return $flag; } + /** + * Create Accounts Receivable financial trxn entry for Completed Contribution. + * + * @param array $params + * + */ + public static function recordAlwaysAccountsReceivable(&$params) { + if (!self::checkContributeSettings('always_post_to_accounts_receivable')) { + return NULL; + } + + $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + $contributionStatus = empty($params['contribution_status_id']) ? NULL : $contributionStatuses[$params['contribution_status_id']]; + // Return if contribution status is not completed. + if ($contributionStatus != 'Completed') { + return NULL; + } + + $params['contribution_status_id'] = $params['contribution']->contribution_status_id = array_search('Pending', $contributionStatuses); + $params['is_pay_later'] = $params['contribution']->is_pay_later = TRUE; + + self::recordFinancialAccounts($params); + + $params['prevContribution'] = self::getOriginalContribution($params['contribution']->id); + $params['prevContribution']->contribution_status_id = array_search('Pending', $contributionStatuses); + $params['prevContribution']->is_pay_later = TRUE; + + $params['contribution_status_id'] = $params['contribution']->contribution_status_id = array_search('Completed', $contributionStatuses); + unset($params['is_pay_later']); + $params['contribution']->is_pay_later = NULL; + $params['id'] = $params['contribution']->id; + } + } -- 2.25.1