From 5e494d5cb995dd6935b0450741fd006cab9f0853 Mon Sep 17 00:00:00 2001 From: Pratik Joshi Date: Wed, 19 Mar 2014 16:55:21 +0530 Subject: [PATCH] CRM-13973-qa : online pay later scenario partial payment --- CRM/Contribute/BAO/Contribution.php | 16 +++++++++------- CRM/Event/Form/Participant.php | 4 ++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 038ec140b1..d68c21207c 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -143,14 +143,16 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { if (empty($ids['contribution']) && empty($params['contribution_status_id'])) { $params['contribution_status_id'] = CRM_Core_OptionGroup::getValue('contribution_status', 'Completed', 'name'); } - + $setPrevContribution = TRUE; // CRM-13964 partial payment - if (empty($contributionID)) { - if (!empty($params['partial_payment_total']) && !empty($params['partial_amount_pay'])) { - $partialAmtTotal = $params['partial_payment_total']; - $partialAmtPay = $params['partial_amount_pay']; - $params['total_amount'] = $partialAmtTotal; + if (!empty($params['partial_payment_total']) && !empty($params['partial_amount_pay'])) { + $partialAmtTotal = $params['partial_payment_total']; + $partialAmtPay = $params['partial_amount_pay']; + $params['total_amount'] = $partialAmtTotal; + if ($partialAmtPay < $partialAmtTotal) { $params['contribution_status_id'] = CRM_Core_OptionGroup::getValue('contribution_status', 'Partially paid', 'name'); + $params['is_pay_later'] = 0; + $setPrevContribution = FALSE; } } @@ -170,7 +172,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { $contribution->currency = $config->defaultCurrency; } - if ($contributionID) { + if ($contributionID && $setPrevContribution) { $params['prevContribution'] = self::getValues(array('id' => $contributionID), CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray); } diff --git a/CRM/Event/Form/Participant.php b/CRM/Event/Form/Participant.php index 6fc9e598bf..3d0cf276c6 100644 --- a/CRM/Event/Form/Participant.php +++ b/CRM/Event/Form/Participant.php @@ -1411,6 +1411,10 @@ SELECT civicrm_custom_group.name as name, } if ($params['status_id'] == array_search('Partially paid', $participantStatus)) { + if (!$amountOwed && $this->_action & CRM_Core_Action::UPDATE) { + $amountOwed = $params['fee_amount']; + } + // CRM-13964 partial_payment_total if ($amountOwed > $params['total_amount']) { // the owed amount -- 2.25.1