deprecated money-formatting of non-numeric
authordemeritcowboy <demeritcowboy@hotmail.com>
Tue, 7 Dec 2021 00:57:48 +0000 (19:57 -0500)
committerdemeritcowboy <demeritcowboy@hotmail.com>
Tue, 7 Dec 2021 00:57:48 +0000 (19:57 -0500)
CRM/Report/Form/Contribute/Repeat.php
tests/phpunit/api/v3/ReportTemplateTest.php

index 3ec045ca10f6dca6d648c2eb72d8920b8798e8ee..3f3bc2d6d9ff940309277fb4b0f0cbd8b13f8452 100644 (file)
@@ -175,7 +175,7 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form {
             'name' => 'total_amount',
             'alias' => 'contribution1',
             'title' => ts('Range One Stat'),
-            'type' => CRM_Utils_Type::T_MONEY,
+            'type' => CRM_Utils_Type::T_STRING,
             'default' => TRUE,
             'required' => TRUE,
             'clause' => 'contribution_civireport1.total_amount_count as contribution1_total_amount_count, contribution_civireport1.total_amount_sum as contribution1_total_amount_sum',
@@ -184,7 +184,7 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form {
             'name' => 'total_amount',
             'alias' => 'contribution2',
             'title' => ts('Range Two Stat'),
-            'type' => CRM_Utils_Type::T_MONEY,
+            'type' => CRM_Utils_Type::T_STRING,
             'default' => TRUE,
             'required' => TRUE,
             'clause' => 'contribution_civireport2.total_amount_count as contribution2_total_amount_count, contribution_civireport2.total_amount_sum as contribution2_total_amount_sum',
index e246c4e1454b49e4d1236df4d9e1de3ee7260923..6722019768773c2c40f2112532243556df3d74aa 100644 (file)
@@ -1650,6 +1650,46 @@ class api_v3_ReportTemplateTest extends CiviUnitTestCase {
     $this->callAPISuccess('Contact', 'delete', ['id' => $contact]);
   }
 
+  /**
+   * Basic test of the repeat contributions report.
+   */
+  public function testRepeatContributions() {
+    // our sorting options are limited in this report - default is last name so let's ensure order
+    $contact1 = $this->individualCreate(['last_name' => 'aaaaa']);
+    $contact2 = $this->individualCreate(['last_name' => 'zzzzz']);
+    $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => (date('Y') - 1) . '-07-01', 'financial_type_id' => 1, 'total_amount' => '10']);
+    $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => (date('Y') - 1) . '-08-01', 'financial_type_id' => 1, 'total_amount' => '20']);
+    $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => date('Y') . '-01-01', 'financial_type_id' => 1, 'total_amount' => '40']);
+    $this->contributionCreate(['contact_id' => $contact2, 'receive_date' => (date('Y') - 1) . '-09-01', 'financial_type_id' => 1, 'total_amount' => '80']);
+    $rows = $this->callAPISuccess('report_template', 'getrows', [
+      'report_id' => 'contribute/repeat',
+      'receive_date1' => 'previous.year',
+      'receive_date2' => 'this.year',
+      'fields' => [
+        'sort_name' => 1,
+      ],
+    ]);
+
+    $this->assertCount(2, $rows['values']);
+
+    // Should have for both this year and last, and last year was multiple.
+    $this->assertEquals($contact1, $rows['values'][0]['contact_civireport_id'], "doesn't seem to be the right contact 1");
+    $this->assertSame('30.00', $rows['values'][0]['contribution1_total_amount_sum']);
+    $this->assertSame('2', $rows['values'][0]['contribution1_total_amount_count']);
+    $this->assertSame('40.00', $rows['values'][0]['contribution2_total_amount_sum']);
+    $this->assertSame('1', $rows['values'][0]['contribution2_total_amount_count']);
+
+    // Should only have for last year.
+    $this->assertEquals($contact2, $rows['values'][1]['contact_civireport_id'], "doesn't seem to be the right contact 2");
+    $this->assertSame('80.00', $rows['values'][1]['contribution1_total_amount_sum']);
+    $this->assertSame('1', $rows['values'][1]['contribution1_total_amount_count']);
+    $this->assertNull($rows['values'][1]['contribution2_total_amount_sum']);
+    $this->assertNull($rows['values'][1]['contribution2_total_amount_count']);
+
+    $this->callAPISuccess('Contact', 'delete', ['id' => $contact1]);
+    $this->callAPISuccess('Contact', 'delete', ['id' => $contact2]);
+  }
+
   /**
    * Convoluted test of the convoluted logging detail report.
    *