Development issueshttps://lab.civicrm.org/groups/dev/-/issues2023-12-23T05:03:22Zhttps://lab.civicrm.org/dev/core/-/issues/3210Report Listing improved UX2023-12-23T05:03:22ZJonGoldReport Listing improved UXWhen you go to **Reports menu » X Reports**, where `X` is anything, you get the report listing page (`CRM_Report_Page_InstanceList`). This page hard-codes the order the reports appear in.
* First by component
* Second by the weight o...When you go to **Reports menu » X Reports**, where `X` is anything, you get the report listing page (`CRM_Report_Page_InstanceList`). This page hard-codes the order the reports appear in.
* First by component
* Second by the weight of the report template ID in the `report_template` option value list
* Third alphabetized by title.
The second sort criterium is the problematic one. I propose we sort by component, then alphabetically.
I assume the original thinking was, "Let's keep all the Contribution Summary reports together, all the Contribution Detail reports", etc. However, I think this isn't an ideal UX:
* Users don't know (or care about) the order of report templates in the option value list.
* Reports can be sorted any number of ways: By user, department, workflow - but those are unlikely to map to report templates.
* This is all especially true in an era where there's many report extensions that provide overlapping reports with core (Extended Reports, Reports Plus, Pivot Reports). I think it makes more sense not to sort by report type.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3757Users with administer_reports should be able to delete dashlets from the dash...2024-03-19T05:03:27ZandyburnsUsers with administer_reports should be able to delete dashlets from the dashboardThe current behavior I see is anyone with `administer_reports` can access the "Access" tab in a given report in CiviReport. Therefore, they can create dashlets. However, upon making a dashlet available for the dashboard, these can not be...The current behavior I see is anyone with `administer_reports` can access the "Access" tab in a given report in CiviReport. Therefore, they can create dashlets. However, upon making a dashlet available for the dashboard, these can not be removed by that same user, potentially resulting in a cluttered dashboard and user frustration.
Non-admins are missing trash can delete function:
![image](/uploads/206f154220c69227a784cc2d40e87a39/image.png)
Admin sees trash can:
![image](/uploads/21dbc1ca9cc3247a4752324df98a68b2/image.png)
Sure, interest in civireport is quite low now but this same behavior affects dashlets created from search kit.
For search kit, I would set that `administer data` or maybe `administer_reports` would be the needed permission to remove dashlets. Currently, it is not enough.https://lab.civicrm.org/dev/core/-/issues/3283Contribution Summary Report: The "general total" row does not take the curren...2022-04-22T15:53:43ZdmunioContribution Summary Report: The "general total" row does not take the currency filteredWhen the contribution summary report is used by filtering for a currency other than the site's default currency, the "grand total" row shows the sign of the default currency instead of the filtered currency.
![image](/uploads/e65afcbdde...When the contribution summary report is used by filtering for a currency other than the site's default currency, the "grand total" row shows the sign of the default currency instead of the filtered currency.
![image](/uploads/e65afcbdde35490ab7602d21161c13f0/image.png)
This issue is resolved by changing the code of the following line: https://github.com/civicrm/civicrm-core/blob/2235525e475edd2573a1ad71897cd42d2ea3cdfd/templates/CRM/Report/Form/Layout/Table.tpl#L139
By the following code:
```php
{if $currencyColumn}
{$grandStat.$field|crmMoney:$row.$currencyColumn}
{else}
{$grandStat.$field|crmMoney}
{/if}
```5.29.0https://lab.civicrm.org/dev/core/-/issues/2723Event participant role filter not working in Participant list report2023-09-08T05:03:14ZvitiusEvent participant role filter not working in Participant list reportParticipant list report with Event participant role filter could show more rows.
Reproduction steps
----------------------------------------
1. Create new participant role with id 11 (or 10, 21,...).
2. Register new participant to event...Participant list report with Event participant role filter could show more rows.
Reproduction steps
----------------------------------------
1. Create new participant role with id 11 (or 10, 21,...).
2. Register new participant to event with this new role
3. Show Participant list report on this event
4. Use Participant Role filter to show only Attendees (id of attendee role is 1)
5. In report will you see also participant with new role with id 11
Current behaviour
----------------------------------------
If you use Participant Role filter in Participant list report, that will be work like that: `role.id LIKE '%1%'` and not like `role.id = '1'`.
Expected behaviour
----------------------------------------
Report should show only exact role.
Environment information
----------------------------------------
* __CiviCRM:__ _Master/5.37.0/5.33.2https://lab.civicrm.org/dev/core/-/issues/1991Fix the counter-intuitive steps required to save a new CiviCRM Report, which ...2020-09-17T09:47:10Zjustinfreeman (Agileware)Fix the counter-intuitive steps required to save a new CiviCRM Report, which currently requires: Clicking the View the results button and then selecting Save Report from the Actions menuFix the counter-intuitive steps required to save a new CiviCRM Report, which currently requires: Clicking the View the results button and then selecting Save Report from the Actions menu.
What users actually expect to see as a button on...Fix the counter-intuitive steps required to save a new CiviCRM Report, which currently requires: Clicking the View the results button and then selecting Save Report from the Actions menu.
What users actually expect to see as a button on the CiviCRM Report page is just simple "Save report" as a button.
Having the action only shown after the results of the report are visible is the problem. This also prevents a report from being saved which does not currently show any results now, but may show results in the future - when the criteria is met.https://lab.civicrm.org/dev/core/-/issues/1855Allow different output formats for CiviReport results, like native excel form...2020-09-03T15:17:35ZDaveDAllow different output formats for CiviReport results, like native excel format, and untangle codeThis [started as a question](https://github.com/civicrm/civicrm-core/pull/17145) like "without having to patch core or adding another `if outputformat == 'x'` into some already awkward code in core, how can an extension implement a new o...This [started as a question](https://github.com/civicrm/civicrm-core/pull/17145) like "without having to patch core or adding another `if outputformat == 'x'` into some already awkward code in core, how can an extension implement a new output format for civireport results?"
My own motivation for this is a couple things:
1. I've had to look at the related code blocks more than once and it takes at least 15 minutes just to wade through and get to a point where you can start looking into what you were originally trying to look into. Then you get lost again while circling back.
1. I like the idea of being able to prevent people sending me listings of contacts in *pdf* format. No I will not import or analyze this data you've sent me in pdf format. (You can prevent this currently, it would just be easier after.)
1. The email body when sent by the mail_report job is hardcoded. There's been one or two requests to have it be more configurable. You can sort of do it with hook_alterMailParams now but it's not the most robust. I'm not fully addressing that here with any UI changes, but the proposed changes set the stage for it being easier to get there. At the very least you would now be able to write an extension that simply extends the existing handler class (e.g. csv) and overrides the small function that returns the text.
1. I'm currently doing this a different way and don't know if I would switch, but it opens up the possibility for an output handler that provides templates into which the data is inserted which then automatically is available in the existing UI and mail_report job. For most people this would mean a pdf template, but for people like me this means something like an excel template with a prebuilt pivot table and the handler would update the source rows so the pivot would automatically update.
And then beyond my own motivation some other possibilities which are theoretical:
1. A variation of the last point above would be an outputhandler where when run by mail_report it connects to another network service and sends the data there server-to-server. You could set this up via cron exactly the same way you normally use the mail_report job. The equivalent download would then still also be automatically available to users to do manually the same as any other civireport.
## So...
After doing some investigating, can summarize how the current output code works as
* type `sendmail`, which gets the output as a string and sends an email, OR
* type `not sendmail`, which starts a download. Note that "download" technically is also a string, but sent to the browser instead of used in an email.
Then further
* Some of the convoluted nature of the existing code is partly because how to get either of those is different depending on the output format (e.g. csv/pdf/etc).
* Also note that "download" for type 'print' is actually the same as other downloads it's just that you don't need to change http headers first. So that's also adding to the awkwardness a bit in the current code because the way it's written it almost seems like a different code path.
**THEREFORE --->**: My thinking is to start on this by having a common interface to get the string. I mean interface in the general sense of the word, not necessarily OO Interface but maybe. But **then it reduces the number of if/else's to just one**:
* If sendmail,
* Get string (delegated to the output handler).
* Send email (for now extract this to its own function just for readability).
* Else
* Delegate to output handler to set headers and send string to browser (aka download).
There's a little more to it, and it can borrow a bit from the existing PRs, but that's what I'm thinking in terms of first steps to untangling. I will work on a PR.
Then the next steps after that would be to allow for other output handlers, whether it be by a new hook or existing hook or other.
#### Misc notes
* save/copy/delete are handled in beginPostProcess and do nothing in endPostProcess
* there's a difference between compileContent() and the output content. compileContent() is not used for csv, but is used for pdf and 'print'.
* endPostProcess has 4 different "categories":
1. "add contacts to group", which doesn't output anything
2. _sendmail, which uses the other output handlers but requests the results as a string.
* defaults to print, but also does csv or pdf and then exits
* There is also some hardcoding of the email body, partly because it includes a computed url, but it would be nice not to hardcode this.
* Note pdf is called with TRUE for 3rd param, so that it returns the pdf as a string.
3. Download, which uses the other output handlers but requests the results as a download.
* Note that print is a download technically, it just goes to the browser window. Csv or pdf starts an attachment download.
* Here pdf is the default, but at the point in the code where that happens it has to be either print or pdf and print would have been already handled.
* Note pdf is called with FALSE for 3rd param.
* csv is done by a wrapper around the same function that is used in _sendmail
4. Tests that extend CiviReportTestCase use _resultSet/getResultSet() and have _outputMode blank, so endPostProcess (which gets called from preProcess because force=1 here) does none of the above and just stores the results in an array.5.29.0https://lab.civicrm.org/dev/core/-/issues/1729CiviReport "Source Name" filter is broken / has no impact on report results2020-04-30T22:59:59ZmarshCiviReport "Source Name" filter is broken / has no impact on report resultsOverview
----------------------------------------
Setting the "Source Name" filter on a report has no effect on the results
Reproduction steps
----------------------------------------
1. open [Activity Details report](https://dmaster.de...Overview
----------------------------------------
Setting the "Source Name" filter on a report has no effect on the results
Reproduction steps
----------------------------------------
1. open [Activity Details report](https://dmaster.demo.civicrm.org/civicrm/report/instance/3?reset=1&output=criteria).
1. go to **filters** (tab)
1. **Source Name** : Contains : [any text]
1. Preview results
Current behaviour
----------------------------------------
- notice 80 results
- **results do not change** when changing the 'source name' filter
- no errors
Expected behaviour
----------------------------------------
- report results get filtered, so different filter values give different results
Environment information
----------------------------------------
testing and workflow was on https://dmaster.demo.civicrm.org/
Comments
----------------------------------------
This looks like a regression, and could be from:
- https://github.com/civicrm/civicrm-core/pull/16672
- https://lab.civicrm.org/dev/core/issues/1627
(thanks to Pradeep Nayak for investigations)5.24.6https://lab.civicrm.org/dev/core/-/issues/1439No way to identify 'deceased' contacts when viewing or reporting on relations...2023-01-15T05:03:21Zellen_compucorpNo way to identify 'deceased' contacts when viewing or reporting on relationshipsOverview
----------------------------------------
Marking a contact record as 'is_deceased' doesn't currently appear to have any impact on the contact's relationships, which makes sense overall (for example, if a contact was marked as de...Overview
----------------------------------------
Marking a contact record as 'is_deceased' doesn't currently appear to have any impact on the contact's relationships, which makes sense overall (for example, if a contact was marked as deceased and then a scheduled job were to automatically expire all it's relationships, it would be very manual and annoying to reverse that if 'is_deceased' had been added by accident. However, it would be extremely useful (a) when viewing relationships on contact records and (b) when reporting on relationships, to know whether one of the contacts involved in the relationship is deceased.
Example use-case
----------------------------------------
On a contact record:
1. Create a contact (contact A)
1. Add a relationship to another contact (contact B)
1. Mark contact A as deceased
1. View relationships tab on contact record for contact B
Within reports:
1. Go to create new relationships report (/civicrm/report/instance/5?reset=1&output=criteria)
1. View columns/ filters tabs; no configurations available relating to 'is_deceased'
Current behaviour
----------------------------------------
On a contact record:
- No change to relationship (or relationship display) when one of the contacts is marked as deceased
Within reports:
- As described above
Proposed behaviour
----------------------------------------
On a contact record:
- Propose that - on the relationships tab of the contact record - after the name of the contact that is deceased is added in red "(deceased)" in the same way that it is added next to the main display name at the top of the contact record for a deceased contact currently.
![3DC980F2-DC13-440B-A9D3-6875552B2006](/uploads/fb62f7fa05eeaa9002a9298cff5813d5/3DC980F2-DC13-440B-A9D3-6875552B2006.png)
On reports:
- Propose that a filter is added so that 'deceased' contacts can be excluded from relationships reports
Comments
----------------------------------------https://lab.civicrm.org/dev/core/-/issues/1419Cannot sort membership reports by membership start/end/join2023-01-11T05:03:27ZCoreyBurgerCannot sort membership reports by membership start/end/joinI cannot sort my expired membership report by expiry date, the only column I have is "Date Received". Membership reports should be able to be sorted by Start Date, End Date and Join DateI cannot sort my expired membership report by expiry date, the only column I have is "Date Received". Membership reports should be able to be sorted by Start Date, End Date and Join Datehttps://lab.civicrm.org/dev/core/-/issues/1416Export to PDF with useful filename2023-11-22T05:03:22ZCoreyBurgerExport to PDF with useful filenameIf you export a report to PDF, the file name is "CiviReport.PDF". That is a major headache if you are exporting multiple reports. Ideally, the report should be exported with some kind of useful title, likely a shortening of the report titleIf you export a report to PDF, the file name is "CiviReport.PDF". That is a major headache if you are exporting multiple reports. Ideally, the report should be exported with some kind of useful title, likely a shortening of the report titlehttps://lab.civicrm.org/dev/core/-/issues/1252Contribution Summary report only shows first 50 entries2022-12-30T05:03:34ZVangelisPContribution Summary report only shows first 50 entriesHi!
I've noticed that the Contribution Summary report only shows the first 50 entries, without giving you the ability to move to the next set of records.
Bottom-page statistics also calculate those 50 displayed entries and not all ro...Hi!
I've noticed that the Contribution Summary report only shows the first 50 entries, without giving you the ability to move to the next set of records.
Bottom-page statistics also calculate those 50 displayed entries and not all rows.
Narrowing it down, I was able to make it work again by commenting 3 lines on the function `buildRows`. The offending lines:
```php
CRM_Core_DAO::disableFullGroupByMode();
CRM_Core_DAO::reenableFullGroupByMode();
$this->addToDeveloperTab($sql);
```
Source code reference [here](https://lab.civicrm.org/dev/core/blob/master/CRM/Report/Form/Contribute/Summary.php#L743-746)
Only when all these 3 lines are commented/removed, the report displays all records with a proper pager.
Anyone can shed any light why is this happening as I can't seem to be able to find out the reason?
Spotted on CiviCRM 5.16.2https://lab.civicrm.org/dev/core/-/issues/876Allow url to set IS NULL/ NOT NULL in report for operations2019-04-20T01:07:19ZyashodhaAllow url to set IS NULL/ NOT NULL in report for operationsThis depends on https://lab.civicrm.org/dev/core/issues/865
Now that we allow IS NULL/ NOT NULL for filters like campaign, we should also allow the params to be passed via url.
Before
![op_before](/uploads/7c2e6230fb126eb4baf04b5a1d42de...This depends on https://lab.civicrm.org/dev/core/issues/865
Now that we allow IS NULL/ NOT NULL for filters like campaign, we should also allow the params to be passed via url.
Before
![op_before](/uploads/7c2e6230fb126eb4baf04b5a1d42de14/op_before.png)
After
![op_after](/uploads/cc88aa0e97c5f474ea76aa0bb15679c1/op_after.png)yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/4532Add sort for country/state fields in reports2023-08-24T15:17:42ZyashodhaAdd sort for country/state fields in reportsAdd sort for country/state fields in reportsAdd sort for country/state fields in reports5.66.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/4106Add filter on pledge payment in contribution report templates2023-02-28T06:44:39ZyashodhaAdd filter on pledge payment in contribution report templates Add a filter on "contribution is a pledge payment Yes/No" in contribution report templates Add a filter on "contribution is a pledge payment Yes/No" in contribution report templatesyashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/3992Expose created date column in contact reports2022-11-16T21:33:39ZyashodhaExpose created date column in contact reportsExpose created date column in contact reports and as filter as well.Expose created date column in contact reports and as filter as well.5.57.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/3825Changing report rows per page doesn't change rows per page, but limits what i...2022-09-26T20:22:56ZspalmstromChanging report rows per page doesn't change rows per page, but limits what is displayed.Overview
----------------------------------------
Changing the Rows Per Page value at the bottom of the report gives strange results.
Reproduction steps
----------------------------------------
1. Click on **Reports** and choose say a **...Overview
----------------------------------------
Changing the Rows Per Page value at the bottom of the report gives strange results.
Reproduction steps
----------------------------------------
1. Click on **Reports** and choose say a **Contact** report.
1. Click on **View Results**.
1. You get a report with 50 rows.
1. Change the Rows Per Page to something other than 50
Current behaviour
----------------------------------------
You still get 50 rows per page. The figure for the number of pages available may be different and you might not even be able to see the remaining values.
I put 75 rows per page into Activity Details on the Drupal Sandbox and got:
![image](/uploads/1c115534c79b8b08d18e0c31633f4563/image.png)
Expected behaviour
----------------------------------------
I should have seen 72 rows on the page or at least be able to go to the next 22 rows.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __Browser:__ _MS Edge_ but probably irrelevant.
* __CiviCRM:__ _5.54.alpha1/5.52.2_ <!-- If this problem relates to an upgrade, then specify both old and new versions -->
* __PHP:__ _7.4.30_ but probably irrelevant.
* __CMS:__ _Drupal Whatever the sandbox runs_ but probably irrelevant
* __Database:__ _Whatever the sandbox runs_ but probably irrelevant.
* __Web Server:__ _Whatever the sandbox runs/IIS 10_ but probably irrelevant.
Comments
----------------------------------------
_Anything else you would like the reviewer to note._5.55.0https://lab.civicrm.org/dev/core/-/issues/3768Improvement to Case Detail report2024-03-22T05:03:27ZyashodhaImprovement to Case Detail reportExpose some of the useful columns and filters :
- expose city in case detail report
- add filter for 'Activity type of the last activity'Expose some of the useful columns and filters :
- expose city in case detail report
- add filter for 'Activity type of the last activity'yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/3647Deleting C or Final mailing for A/B test makes report on A and B segments unv...2024-02-24T05:03:28ZlarsssandergreenDeleting C or Final mailing for A/B test makes report on A and B segments unviewableIf you create and A/B test, send the A & B segments and then delete the C or Final segment from Draft and Unscheduled Mailings, you can no longer view the mailing report for the A/B test. The mailing report URL just shows a blank page wi...If you create and A/B test, send the A & B segments and then delete the C or Final segment from Draft and Unscheduled Mailings, you can no longer view the mailing report for the A/B test. The mailing report URL just shows a blank page with header and footer.
I think it is probably not that uncommon an occurrence for someone to create an A/B test and later need to make a small change to the final version before sending it. That's easy enough to do by re-using one of the mailings and excluding the A and B mailings from your recipients. However, you will probably delete the C mailing from the unscheduled list at this point and then no longer be able to view the original A/B mailing report.
I'm testing on 5.28.4. This happens with both Mosaico and traditional mailings.https://lab.civicrm.org/dev/core/-/issues/3274Filter contact sub-type by "is not one of" fails2022-04-22T15:53:25Zaydunsaidan.saunders@squiffle.ukFilter contact sub-type by "is not one of" failsWhen filtering by contact sub-type, "is not one of" excludes all those that do not have a sub-type.
Noted previously here: https://lab.civicrm.org/dev/report/issues/15#note_25491
For example, filtering by "is not one of" 'Student' shou...When filtering by contact sub-type, "is not one of" excludes all those that do not have a sub-type.
Noted previously here: https://lab.civicrm.org/dev/report/issues/15#note_25491
For example, filtering by "is not one of" 'Student' should just exclude those who do have a sub-type of Student. Currently, it also excludes all those who have a sub-type of Student, and also all those with no sub-type.5.21.0aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/3259Add the possibility to use the hook_civicrm_alterReportVar('sql') in all reports2022-04-22T15:53:00ZrubofvilAdd the possibility to use the hook_civicrm_alterReportVar('sql') in all reportsSome reports have rewrited the method "buildQuery" from class CRM_Report_Form. Not in all reports is included the line to launch the hook `hook_civicrm_alterReportVar` -> `CRM_Utils_Hook::alterReportVar('sql', $this, $this);`
Example
h...Some reports have rewrited the method "buildQuery" from class CRM_Report_Form. Not in all reports is included the line to launch the hook `hook_civicrm_alterReportVar` -> `CRM_Utils_Hook::alterReportVar('sql', $this, $this);`
Example
https://github.com/civicrm/civicrm-core/blob/abc4afe890add20796585a2a997bc3d832815abe/CRM/Report/Form/Member/ContributionDetail.php#L552