comment possible breakage from CRM-16460
authoreileen <emcnaughton@wikimedia.org>
Sun, 30 Apr 2017 01:20:16 +0000 (13:20 +1200)
committereileen <emcnaughton@wikimedia.org>
Sun, 30 Apr 2017 01:20:16 +0000 (13:20 +1200)
I only saw this breakage in a test, but speculate that config-dependent it would affect people.
Have added comments to help anyone who actually does hit it

CRM/Contribute/Form/Contribution.php
CRM/Price/BAO/PriceSet.php
tests/phpunit/CRM/Contribute/Form/ContributionTest.php

index 41f59a503123749d3cc4f7a8b99f4478b9061321..6ae27ada43ed2271c48ebd733e483544b2f42e8f 100644 (file)
@@ -1478,6 +1478,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       ) {
         unset($submittedValues['tax_amount']);
       }
+      // @todo - look to remove this line. I believe it relates to CRM-16460
+      // and possibly contributes to fixing the issue described there but
+      // would cause breakage for negative values in some cases.
       $submittedValues['total_amount'] = CRM_Utils_Array::value('amount', $submittedValues);
     }
     if ($this->_id) {
index d59c50faca69b13b8e44f9db62a8f5bec22886f8..3b1dfb35d8bbfc921e540708ad33b4c626f04c7d 100644 (file)
@@ -838,6 +838,8 @@ WHERE  id = %1";
         $params['amount_level'] = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $amount_level) . $displayParticipantCount . CRM_Core_DAO::VALUE_SEPARATOR;
       }
     }
+    // @todo this was a fix for CRM-16460 but is too deep in the system for formatting
+    // and probably causes negative amounts to save as $0 depending on server config.
     $params['amount'] = CRM_Utils_Money::format($totalPrice, NULL, NULL, TRUE);
     $params['tax_amount'] = $totalTax;
     if ($component) {
index d6ed676e706fb8820cf32d8a9ee4e150e911afc8..8706bb12182988fa96a95cb510cd87f5ef5fdbd1 100644 (file)
@@ -696,7 +696,11 @@ Price Field - Price Field 1        1   $ 100.00      $ 100.00
   }
 
   /**
-   * Test that if a negative contribution is entered it does not get reset to $0
+   * Test that if a negative contribution is entered it does not get reset to $0.
+   *
+   * Note that this fails locally for me & I believe there may be an issue for some sites
+   * with negative numbers. Grep for CRM-16460 to find the places I think that might
+   * be affected if you hit this.
    */
   public function testEnterNegativeContribution() {
     $form = new CRM_Contribute_Form_Contribution();