From b326919b2b6b43ed391a40797e938bdb15db881d Mon Sep 17 00:00:00 2001 From: Dave Greenberg Date: Wed, 8 Jan 2014 12:16:56 -0800 Subject: [PATCH] CRM-14034 - Fix soft credit form rule to handle editing contributions using a price set AND with linked soft credit(s). ---------------------------------------- * CRM-14034: Editing a contribution from a PCP gets an error saying "soft credit amount cannot be more than the total amount." http://issues.civicrm.org/jira/browse/CRM-14034 --- CRM/Contribute/Form/Contribution.php | 2 +- CRM/Contribute/Form/SoftCredit.php | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CRM/Contribute/Form/Contribution.php b/CRM/Contribute/Form/Contribution.php index 180fd19f2f..6dd36b9930 100644 --- a/CRM/Contribute/Form/Contribution.php +++ b/CRM/Contribute/Form/Contribution.php @@ -920,7 +920,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } - $softErrors = CRM_Contribute_Form_SoftCredit::formRule($fields); + $softErrors = CRM_Contribute_Form_SoftCredit::formRule($fields, $errors, $self); if (CRM_Utils_Array::value('total_amount', $fields) && (CRM_Utils_Array::value('net_amount', $fields) || CRM_Utils_Array::value('fee_amount', $fields))) { $sum = CRM_Utils_Rule::cleanMoney($fields['net_amount']) + CRM_Utils_Rule::cleanMoney($fields['fee_amount']); diff --git a/CRM/Contribute/Form/SoftCredit.php b/CRM/Contribute/Form/SoftCredit.php index bb1686d410..63b282a43d 100644 --- a/CRM/Contribute/Form/SoftCredit.php +++ b/CRM/Contribute/Form/SoftCredit.php @@ -95,6 +95,9 @@ class CRM_Contribute_Form_SoftCredit { if (CRM_Utils_Array::value('pcp_made_through_id', $form->_values)) { $form->assign('pcpLinked', 1); } + + $form->addFormRule(array('CRM_Contribute_Form_SoftCredit', 'formRule'), $form); + } /** @@ -130,7 +133,7 @@ class CRM_Contribute_Form_SoftCredit { * @access public * @static */ - static function formRule($fields) { + static function formRule($fields, $errors, $self) { $errors = array(); // if honor roll fields are populated but no PCP is selected @@ -150,7 +153,7 @@ class CRM_Contribute_Form_SoftCredit { if ($repeat[$fields['soft_credit_contact_select_id'][$key]] > 1) { $errors["soft_credit_contact_select_id[$key]"] = ts('You cannot enter multiple soft credits for the same contact.'); } - if ($fields['soft_credit_amount'][$key] + if ($self->_action == CRM_Core_Action::ADD && $fields['soft_credit_amount'][$key] && (CRM_Utils_Rule::cleanMoney($fields['soft_credit_amount'][$key]) > CRM_Utils_Rule::cleanMoney($fields['total_amount']))) { $errors["soft_credit_amount[$key]"] = ts('Soft credit amount cannot be more than the total amount.'); } -- 2.25.1