CRM-18018 fix lybunt report regression
authoreileen <emcnaughton@wikimedia.org>
Thu, 11 Feb 2016 03:07:10 +0000 (16:07 +1300)
committereileen <emcnaughton@wikimedia.org>
Thu, 11 Feb 2016 03:19:04 +0000 (16:19 +1300)
CRM/Report/Form/Contribute/Lybunt.php
tests/phpunit/api/v3/ReportTemplateTest.php

index ccb859aec50fb2f0010fb94512b131e9c6cec87c..e8aa28965017a1fa42fee9a7a8f1fabc77155eb5 100644 (file)
@@ -213,6 +213,7 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form {
             'title' => ts('Last Year Total'),
             'default' => TRUE,
             'type' => CRM_Utils_Type::T_MONEY,
+            'required' => TRUE,
           ),
           'civicrm_life_time_total' => array(
             'title' => ts('Lifetime Total'),
@@ -714,26 +715,6 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form {
     $this->sqlArray = array();
   }
 
-  /**
-   * Are we ordering by the latest year total.
-   *
-   * If we are we need to drop the rollup to do the ordering.
-   *
-   * Without bigger changes we can't get the lifetime total and order by
-   * the latest year total in the same query.
-   *
-   * @return bool
-   */
-  public function isOrderByLastYearTotal() {
-    $this->storeOrderByArray();
-    foreach ($this->_orderByArray as $orderBy) {
-      if (stristr($orderBy, 'contribution_civireport.total_amount')) {
-        return TRUE;
-      }
-    }
-    return FALSE;
-  }
-
   /**
    * @param $rows
    */
index e7f09ffe48c84fdc296370d5fa2c07885531b22b..a61745558422995e60d0f1e054f55057e6a9ff19 100644 (file)
@@ -247,4 +247,30 @@ class api_v3_ReportTemplateTest extends CiviUnitTestCase {
     $this->assertEquals(2, $rows['count'], "Report failed - the sql used to generate the results was " . print_r($rows['metadata']['sql'], TRUE));
   }
 
+  /**
+   * Test Lybunt report to check basic inclusion of a contact who gave in the year before the chosen year.
+   */
+  public function testLybuntReportWithFYDataOrderByLastYearAmount() {
+    $inInd = $this->individualCreate();
+    $outInd = $this->individualCreate();
+    $this->contributionCreate(array('contact_id' => $inInd, 'receive_date' => '2014-10-01'));
+    $this->contributionCreate(array('contact_id' => $outInd, 'receive_date' => '2015-03-01', 'trxn_id' => NULL, 'invoice_id' => NULL));
+    $this->callAPISuccess('Setting', 'create', array('fiscalYearStart' => array('M' => 7, 'd' => 1)));
+    $rows = $this->callAPISuccess('report_template', 'getrows', array(
+      'report_id' => 'contribute/lybunt',
+      'yid_value' => 2015,
+      'yid_op' => 'fiscal',
+      'options' => array('metadata' => array('sql')),
+      'fields' => array('first_name'),
+      'order_bys' => array(
+        array(
+          'column' => 'last_year_total_amount',
+          'order' => 'ASC',
+        ),
+      ),
+    ));
+
+    $this->assertEquals(2, $rows['count'], "Report failed - the sql used to generate the results was " . print_r($rows['metadata']['sql'], TRUE));
+  }
+
 }