CRM-16627 add invoice id to contribution search
authorEileen McNaughton <eileen@fuzion.co.nz>
Mon, 22 Jun 2015 23:49:57 +0000 (11:49 +1200)
committerEileen McNaughton <eileen@fuzion.co.nz>
Mon, 22 Jun 2015 23:49:57 +0000 (11:49 +1200)
CRM/Contribute/BAO/Query.php
CRM/Contribute/Form/Search.php
templates/CRM/Contribute/Form/Search/Common.tpl
tests/phpunit/api/v3/ContributionTest.php

index 9bee323ed93557395e576810bc4b5d9f26996e27..c17a63211cd454e329064bf00830b7fa3dffd47a 100644 (file)
@@ -329,6 +329,7 @@ class CRM_Contribute_BAO_Query {
       case 'contribution_status':
         $name .= '_id';
       case 'financial_type_id':
+      case 'invoice_id':
       case 'payment_instrument_id':
       case 'contribution_payment_instrument_id':
       case 'contribution_page_id':
@@ -916,7 +917,7 @@ class CRM_Contribute_BAO_Query {
 
     // Add field for transaction ID search
     $form->addElement('text', 'contribution_trxn_id', ts("Transaction ID"));
-
+    $form->addElement('text', 'invoice_id', ts("Invoice ID"));
     $form->addElement('text', 'contribution_check_number', ts('Check Number'));
 
     // Add field for pcp display in roll search
index c087449267f01a75a875e25b4134c066079d31ff..81da92e3a4a2b4f67f8c1bf1fdf49ff5c8ea0461 100644 (file)
@@ -275,6 +275,7 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search {
         'contribution_status_id',
         'contribution_source',
         'contribution_trxn_id',
+        'invoice_id',
       );
       foreach ($specialParams as $element) {
         $value = CRM_Utils_Array::value($element, $this->_formValues);
index 9e55106e759da74c6855e4b47c27b472f6f28df2..a6b56a796c1025cab1dc30fbf7ece2f578b7d54a 100644 (file)
   <td>
     {$form.contribution_or_softcredits.label} <br />
     {$form.contribution_or_softcredits.html}
-  </td>
-  <td>
     <div class="float-left" id="contribution_soft_credit_type_wrapper">
       {$form.contribution_soft_credit_type_id.label} <br />
       {$form.contribution_soft_credit_type_id.html|crmAddClass:twenty}
     </div>
   </td>
+  <td>
+    {$form.invoice_id.label} <br />
+    {$form.invoice_id.html}
+  </td>
 </tr>
 <tr>
   <td>
index 3d75bae1f4e1dae230848345e8821cbd3641a615..5c5fc60f39c5de0360a061b1ade78aab055d35ce 100644 (file)
@@ -504,6 +504,25 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->assertEquals(1, $contribution['count']);
   }
 
+  /**
+   * CRM-16227 introduces invoice_id as a parameter.
+   */
+  public function testGetContributionByInvoice() {
+    $this->callAPISuccess('Contribution', 'create', array_merge($this->_params, array('invoice_id' => 'curly')));
+    $this->callAPISuccess('Contribution', 'create', array_merge($this->_params), array('invoice_id' => 'churlish'));
+    $this->callAPISuccessGetCount('Contribution', array(), 2);
+    $this->callAPISuccessGetSingle('Contribution', array('invoice_id' => 'curly'));
+    // The following don't work. They are the format we are trying to introduce but although the form uses this format
+    // CRM_Contact_BAO_Query::convertFormValues puts them into the other format & the where only supports that.
+    // ideally the where clause would support this format (as it does on contact_BAO_Query) and those lines would
+    // come out of convertFormValues
+    // $this->callAPISuccessGetSingle('Contribution', array('invoice_id' => array('LIKE' => '%ish%')));
+    // $this->callAPISuccessGetSingle('Contribution', array('invoice_id' => array('NOT IN' => array('curly'))));
+    // $this->callAPISuccessGetCount('Contribution', array('invoice_id' => array('LIKE' => '%ly%')), 2);
+    // $this->callAPISuccessGetCount('Contribution', array('invoice_id' => array('IN' => array('curly', 'churlish'))),
+    // 2);
+  }
+
   /**
    * Create test with unique field name on source.
    */