From e84031782a28c87c6a48e839b72145c74ff51caa Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Fri, 15 Jul 2016 19:38:02 +0530 Subject: [PATCH] --CRM-16189, fixed code to add entries in civicrm_entity_financial_trxn table when status is changed from partially paid to completed for partially paid contribution associated with Participant --- CRM/Contribute/BAO/Contribution.php | 11 ++++++++--- CRM/Contribute/Form/AdditionalPayment.php | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index a04b72a3bc..a1e2601b82 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -4816,9 +4816,10 @@ LIMIT 1;"; * * @param array $lineItems * @param array $contributions + * @param array $previousContributionId * */ - public static function addPayments($lineItems, $contributions) { + public static function addPayments($lineItems, $contributions, $previousContributionId = NULL) { // get financial trxn which is a payment $ftSql = "SELECT ft.id, ft.total_amount FROM civicrm_financial_trxn ft @@ -4828,9 +4829,13 @@ LIMIT 1;"; FROM civicrm_financial_item fi INNER JOIN civicrm_line_item li ON li.id = fi.entity_id WHERE li.contribution_id = %1"; - + $contributionStatus = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', array( + 'labelColumn' => 'name', + )); foreach ($contributions as $k => $contribution) { - if ($contribution->contribution_status_id != CRM_Core_OptionGroup::getValue('contribution_status', 'Partially paid', 'name')) { + if (!($contributionStatus[$contribution->contribution_status_id] == 'Partially paid' + || CRM_Utils_Array::value($previousContributionId, $contributionStatus) == 'Partially paid') + ) { continue; } $ftDao = CRM_Core_DAO::executeQuery($ftSql, array(1 => array($contribution->id, 'Integer'))); diff --git a/CRM/Contribute/Form/AdditionalPayment.php b/CRM/Contribute/Form/AdditionalPayment.php index 2aef27eac5..bbfcc709c5 100644 --- a/CRM/Contribute/Form/AdditionalPayment.php +++ b/CRM/Contribute/Form/AdditionalPayment.php @@ -383,13 +383,18 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract } else { $defaults = array(); + $contribution = civicrm_api3('Contribution', 'getsingle', array( + 'return' => array("contribution_status_id"), + 'id' => $this->_contributionId, + )); + $contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution); $result = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $submittedValues, $this->_paymentType, $participantId); // Fetch the contribution & do proportional line item assignment $params = array('id' => $this->_contributionId); $contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params); $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($this->_contributionId); if (!empty($lineItems)) { - CRM_Contribute_BAO_Contribution::addPayments($lineItems, array($contribution)); + CRM_Contribute_BAO_Contribution::addPayments($lineItems, array($contribution), $contributionStatusId); } // email sending -- 2.25.1