CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-01-07T05:03:29Zhttps://lab.civicrm.org/dev/core/-/issues/1140Adventures with accruals accounting in CiviCRM2023-01-07T05:03:29ZJamie Novick - CompucoAdventures with accruals accounting in CiviCRMHey all,
We have a few clients who are interested in the accruals accounting in CiviCRM and I've done some smoke testing with it, but there appear to be some major cases that are not covered / working correctly. I've listed them below t...Hey all,
We have a few clients who are interested in the accruals accounting in CiviCRM and I've done some smoke testing with it, but there appear to be some major cases that are not covered / working correctly. I've listed them below to start a discussion about what should be done about them. I've focussed on Membership for the time being, but I assume we should also look into events functionality at some stage:
*Membership*
**1. The system appears to allocate over n-1 months rather then the n months of membership:**
If I create a membership with a start date say 1/1/2019 for 1 year at a value of $120 and record a payment immediately (completed contribution), I would expect my accruals to be mapped through each month from 1/1/2019 to 1/12/2019 - i.e. split across the 12 months as $10 released each month. Instead the accruals are split over n-1 for some reason. Not sure if this is intended? This also causes some rounding issues.
**2. Refunds**
If I then subsequently refund the membership payment, no adjustment is made to the accruals. They should be reversed out.
**3. Changes to the membership dates after creation of membership.**
If I create a membership with a start date say 1/1/2019 for 1 year at a value of $120 and record a payment immediately (completed contribution), but then change the membership dates. For example to the next year, 1/1/2020 - 31/12/2020, I would expect that the original accruals should be reversed and new dates based on the updated dates of membership are created. No changes are made.
**Pending contributions / invoicing**
If I create a membership with a start date say 1/1/2019 for 1 year at a value of $120 and do not record a payment immediately (pending contribution):
Issue 1:
The accruals are not actually created when the original invoice is created.
Issue 2:
The accruals are not actually created when the original invoice is marked as paid.
**Pending contributions / invoicing and cancel of invoice before payment**
I could not therefore test the scenario where:
If I create a membership with a start date say 1/1/2019 for 1 year at a value of $120 and do not record a payment immediately (pending contribution): but then cancel the contribution after a few months, as for example the member did not pay.
In that case we would need the entries to be reversed out.
**Over/Underpayments**
For completeness I would also want to look into how over and underpayments should be treated but not had time for this.
I must admit that I'm not suggesting we fix this (and certainly we don't have the resource too), but perhaps this functionality should be marked at least as experimental or removed from core as I think it is far from robust.
@JoeMurray FYI.
Best
Jamie
nb. Our plan will be to create a report which gives a correct "as at" view of what the accruals position should be at any point in time, that clients can use to post the accruals amounts manually in their systems.https://lab.civicrm.org/dev/core/-/issues/1137Feature Request: Ability to enable SSL for database connection.2020-08-11T09:02:23ZtodddFeature Request: Ability to enable SSL for database connection.As far as I can tell, there is no way within civicrm core to enable SSL connections to a remote database. This would be a major concern for anyone running CiviCRM with separate web and database servers. I've 'solved' this issue for mys...As far as I can tell, there is no way within civicrm core to enable SSL connections to a remote database. This would be a major concern for anyone running CiviCRM with separate web and database servers. I've 'solved' this issue for myself by making the changes to civicrm/civicrm/packages/DB/common.php and civicrm/civicrm/packages/DB/mysqli.php detailed [here](https://civicrm.stackexchange.com/questions/31422/ssl-encypted-database-connection-for-civicrm), but it's rather sloppy and may need to be re-done after an update. Would be very useful to be able to set a flag within civicrm.settings.php (or even the initial install page) to enable SSL.5.29.0https://lab.civicrm.org/dev/core/-/issues/1135Participants having multiple roles affects maximum event registration count2019-08-05T19:47:12ZDon WijesooriyaParticipants having multiple roles affects maximum event registration countIf you add multiple participant roles for a participant entry, it affects the event full count.
### Steps to reproduce
1. On dmaster, create a new event
2. Enable online registration and set "Max Number of Participants" to 1
3. Go to l...If you add multiple participant roles for a participant entry, it affects the event full count.
### Steps to reproduce
1. On dmaster, create a new event
2. Enable online registration and set "Max Number of Participants" to 1
3. Go to live event registration page. You should be able to register
4. Now add a new registration to a different contact from backend.
5. Once again go to live event registration page. Now it should show the event full message.
6. Go back to the other contact's events. Edit the event participant entry and add another role such as "Host".
7. Now go to the event registration page and you will be able to register for the maxed out event
### Issue
After inspecting `CRM_Event_BAO_Participant::eventFull()` the following line assumes there will only be one value in the field
````php
$where[] = " participant.role_id IN ( '" . implode("', '", $escapedRoles) . "' ) ";
````
Therefore when you have multiple values it won't work properly.
### Solution
I used regular expression code that's used in `CRM_Event_BAO_Query::whereClauseSingle()` under `case 'participant_role_id'`. This is a simple workaround I could think of. Haven't tested in all other scenarios.
````php
$regexp = "([[:cntrl:]]|^)" . implode('([[:cntrl:]]|$)|([[:cntrl:]]|^)', $escapedRoles) . "([[:cntrl:]]|$)";
$where[] = " participant.role_id REGEXP '{$regexp}'";
````5.17.0https://lab.civicrm.org/dev/core/-/issues/1134Visibilty field is not exposed on the option value listing2022-11-25T05:03:18ZyashodhaVisibilty field is not exposed on the option value listingVisibilty field is not exposed on the option value listing is the value is present.Visibilty field is not exposed on the option value listing is the value is present.yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/1132fieldOptions hook fatal error2021-10-23T14:54:23ZDon WijesooriyafieldOptions hook fatal errorUsing fieldOptions hook in an extension crashes or generates a fatal error.
I've come across 2 issues:
1. Using a method defined in a class created in the extension generates fatal error
2. Using API crashes the website
## Steps to re...Using fieldOptions hook in an extension crashes or generates a fatal error.
I've come across 2 issues:
1. Using a method defined in a class created in the extension generates fatal error
2. Using API crashes the website
## Steps to reproduce:
1. Create a new module
2. Create a class with a static method inside CRM/extension-short-name/
3. Call that method inside fieldOptions hook. For eg: CRM_extension-short-name_Class::method()
4. Refresh civicrm home page
5. Server error log will have an error similar to the following
>>>
Class 'CRM_Myextension_MyClass' not found in /var/www/drupal/sites/default/files/civicrm/ext/uk.co.millertech.myextension/myextension.php on line 159, referer: http://chamil.drupal.local/civicrm/dashboard?reset=1
>>>
6. Next inside the fieldOptions hook, use the API to obtain any random data. For eg:
````php
$result = civicrm_api3('OptionValue', 'get', [
'sequential' => 1,
'option_group_id' => "contribution_status",
]);
````
7. Refresh civicrm home page
CiviCRM 5.15.1
Drupal 7
## Issue
For the first issue, it seems extension files are not loaded before invoking fieldOptions hook. Calling `_extension-short-name_civix_civicrm_config();` seems to fix that issue.
````php
function myextension_civicrm_fieldOptions($entity, $field, &$options, $params)
{
_myextension_civix_civicrm_config();
CRM_Myextension_MyClass::myMethod();
}
````
Could not find a workaround for the second issue5.37.0https://lab.civicrm.org/dev/core/-/issues/1130Can't show contact subtype in search views2019-09-10T17:57:52ZJonGoldCan't show contact subtype in search viewsIf you add "Contact Subtype" to a Search View, it's ignored. That's because `templates/CRM/Contact/Form/Selector.tpl` explicitly says not to display it, because it's always added to the search result.
That happens in `CRM_Contact_Selec...If you add "Contact Subtype" to a Search View, it's ignored. That's because `templates/CRM/Contact/Form/Selector.tpl` explicitly says not to display it, because it's always added to the search result.
That happens in `CRM_Contact_Selector`. However, nowhere in the class (or the entire codebase) is this element referenced after it's assigned. That's not true for any of the other fields added to the search result.
In fact, the only reference to it is in `templates/CRM/Contact/Form/Selector.tpl`, where we're excluding it from the list of fields to display.
My conclusion is that there's no reason for it to be added to the row at all. Then we can remove it from the blacklist of fields in the template, and it can be used in search views.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/1126Unable to edit the membership end date for members that have a recurring payment2020-01-06T15:23:00ZwmortadaUnable to edit the membership end date for members that have a recurring paymentI am working on a website that has the option for members to pay for membership by direct debit (via GoCardless). This is working fine but occasionally we have an issue where a member pays by direct debit and also by card (via SagePay). ...I am working on a website that has the option for members to pay for membership by direct debit (via GoCardless). This is working fine but occasionally we have an issue where a member pays by direct debit and also by card (via SagePay). We refund the card payment to the member and update the related contribution in CiviCRM. This part is fine but the membership end date is incorrect and we are unable to edit it.
The membership is annual so if a member signs up by both direct debit and card the two payments will add two years to the end date (e.g. it will end in 2021 rather than 2020). So, after we refund the card payment we want to also edit the end date to change it to 2020. Unfortunately, we are unable to do this.
Normally, you can edit the end date, as shown below:
![membership](/uploads/902dfb876973356d59a4e1c0bb60c05a/membership.png)
It appears that if the membership is set as auto-renew and linked to a recurring payment then CiviCRM doesn't allow users to edit the end date. I presume this is a deliberate 'feature' but in our case it is preventing us from correcting the end date.
![memerbship-auto-renew](/uploads/69b89fd0aeeb5c65474241df97772a9d/memerbship-auto-renew.png)
The site is running CiviCRM 5.7.6 on WordPress.
I have posted a [question ](https://civicrm.stackexchange.com/questions/31215/how-can-you-edit-the-end-date-for-an-auto-renew-membership)on StackExchange about this issue to see if there was a workaround but I think it is a bug.https://lab.civicrm.org/dev/core/-/issues/1101Feature request - Add a Public Group Title and Public Group Description field...2020-09-17T09:48:49Zjustinfreeman (Agileware)Feature request - Add a Public Group Title and Public Group Description fields to CiviCRM Group and display these fields on the public pages for subscribe, unsubscribe etc.Feature request - Add a Public Group Title and Public Group Description fields to CiviCRM Group and display these fields on the public pages for subscribe, unsubscribe etc.
Currently, Group Title and Group Description have dual uses:
1....Feature request - Add a Public Group Title and Public Group Description fields to CiviCRM Group and display these fields on the public pages for subscribe, unsubscribe etc.
Currently, Group Title and Group Description have dual uses:
1. Displayed in the CiviCRM back-end and used for internal reference only, AND
2. Displayed publicly on the Internet on public pages
The problem is that the internal title and description for a group is often not appropriate as a public title and description, often revealing targetting / collation information as to how the group is populated which can be potentially embarrassing or harmful to the organisation if revealed publicly.
This proposal is similar to the feature which has been added to Profiles to have an Profile Title (internal display only) and Public Profile Title (displayed on public pages).
Agileware Ref: CIVICRM-1269https://lab.civicrm.org/dev/core/-/issues/1100Proposal to add a new hook_civicrm_alterExternUrl2020-05-30T01:02:26ZAndrei Mondocandreimondoc@gmail.comProposal to add a new hook_civicrm_alterExternUrlThere's been talks about deprecating all `extern` scripts in favour of CMS REST endpoints or use [CiviCRM's routing](https://lab.civicrm.org/dev/cloud-native/issues/16), and along the way helping other issues like CMS bootstrapping, base...There's been talks about deprecating all `extern` scripts in favour of CMS REST endpoints or use [CiviCRM's routing](https://lab.civicrm.org/dev/cloud-native/issues/16), and along the way helping other issues like CMS bootstrapping, base paths, and session management.
[Drupal 8](https://www.drupal.org/docs/8/api/restful-web-services-api) and [WordPress](https://developer.wordpress.org/rest-api/) offer the possibility of extending their REST endpoints, and it seems Joomla does so too although unofficially? ([REST API for Joomla!](https://extensions.joomla.org/extension/rest-api/) and [cAPI Core REST API for Joomla!](https://extensions.joomla.org/extension/capi-core-rest-api/))
This seems to me like a sensible way forward, hence my proposal to add a `hook_civicrm_alterExternUrl` something along the lines of:
``` php
// Create an event object.
$event = GenericHookEvent::create(array(
'type' => 'cxn', // replacing with ipn|extern|soap|pxIPN|etc.
'civiURL' => &$civiUrl,
'url' => rtrim($civiUrl, '/') . '/extern/cxn.php',
);
/**
* Allow filtering of extern URL.
*
* @since ...
*
* @param string $hook_name The dispatched hook name.
* @param object $hook_event The dispatched hook event object.
*/
Civi::service('dispatcher')->dispatch('hook_alterExternUrl', $event);
return $event->url;
```
I have completed the [REST endpoints integration for WordPress](https://github.com/civicrm/civicrm-wordpress/pull/160) and I remember someone (in Mattermost) mentioning they were/are doing the same for Drupal 8. In order to start testing and integrating those endpoints this hook would a good transition.
Any feedback is appreciated, thanks.5.23.0https://lab.civicrm.org/dev/core/-/issues/1098Slow performance on activity search2020-08-28T04:32:05ZeileenSlow performance on activity searchI did some digging into this long term problem & have some code - basically the issue is actually when the 'acl' is applied it joins onto the option value table for activity type with a bad join.
However, it raises a couple of questions...I did some digging into this long term problem & have some code - basically the issue is actually when the 'acl' is applied it joins onto the option value table for activity type with a bad join.
However, it raises a couple of questions as to the right way to fix
I've added code comments into the PR at https://github.com/civicrm/civicrm-core/pull/15016 pointing to where I think we need to gohttps://lab.civicrm.org/dev/core/-/issues/1097Count on Groups tab changes when tab is loaded2019-07-04T15:12:28Zkirk-jacksonCount on Groups tab changes when tab is loadedIf a contact has been explicitly added to any Smart Groups, then the number on their Groups tab changes when the tab is loaded.
### Steps to reproduce
* Explicitly add a contact to a Smart Group by going to their Groups tab, clicking ...If a contact has been explicitly added to any Smart Groups, then the number on their Groups tab changes when the tab is loaded.
### Steps to reproduce
* Explicitly add a contact to a Smart Group by going to their Groups tab, clicking the "**+** Add to a group" dropdown, selecting a Smart Group and clicking the Add button.
* Refresh the page in the browser. Note the count on the Groups tab.
* Click the contact's Groups tab. Note the count on the Groups tab.
### Expected results
The count on the Groups tab should be as accurate as reasonably possible, and should not change when the Groups tab is loaded.
### Actual results
Before the Groups tab is loaded, the count does not include Smart Groups that the contact has been explicitly added to. After the Groups tab is loaded, the count changes to include Smart Groups that the contact has been explicitly added to.
### Cause
The count is calculated using the **CRM_Contact_BAO_GroupContact::getContactGroup** function, which is called by **CRM_Contact_BAO_Contact::getCountComponent** when the contact page is loaded, and by **CRM_Contact_Page_View_GroupContact::browse** when the Groups tab is loaded. The discrepancy arises because the two calls to that function pass different arguments: The first call omits the **$includeSmartGroups** argument, which defaults to **FALSE**, whereas the second call passes **TRUE** to the **$includeSmartGroups** argument.
### Proposal
I propose changing the call to **CRM_Contact_BAO_GroupContact::getContactGroup** in **CRM_Contact_BAO_Contact::getContactGroup** so that it passes **TRUE** to the **$includeSmartGroups** argument. This one-line change would ensure that the count on the Groups tab always includes Smart Groups to which the contact has been explicitly added.
Note that I'm only proposing counting groups to which the contact has been *explicitly* added; not all Smart Groups whose search criteria include the contact. Thus the change that I'm proposing avoids the [documented](https://issues.civicrm.org/jira/browse/CRM-11068) [problems](https://issues.civicrm.org/jira/browse/CRM-12466) with counting all Smart Groups. There is no significant performance hit.
I will submit a PR.https://lab.civicrm.org/dev/core/-/issues/982Cleanup & api-ise the dedupe code2022-11-07T05:03:57ZeileenCleanup & api-ise the dedupe codeI've been looking at the dedupe code a lot. The problem is it was written to support a particular form & there is no layering. I think the right steps to clean it up involve adding some apis. I have been experimenting with a new angular ...I've been looking at the dedupe code a lot. The problem is it was written to support a particular form & there is no layering. I think the right steps to clean it up involve adding some apis. I have been experimenting with a new angular interface but we need to expose the logic via the api for it to be usable. Currently I'm looking at adding find apis - looking at creating a new api entity 'Dedupe' (I could use 'Rule' and add actions - on the fence there)
& looking at an action Dedupe.getmatcheshttps://lab.civicrm.org/dev/core/-/issues/3527Logging improvements2024-02-07T05:03:28ZmfbLogging improvementsI ran into some issues re: CiviCRM logging:
1. Currently, in many cases, CiviCRM does not indicate a severity level when logging a message. Thus many events are logged at info level.
1. When passing log messages thru to Drupal's watchdo...I ran into some issues re: CiviCRM logging:
1. Currently, in many cases, CiviCRM does not indicate a severity level when logging a message. Thus many events are logged at info level.
1. When passing log messages thru to Drupal's watchdog() logger, debug level is typically used, even for a fatal error. There is no attempt made to map the level appropriately.
1. Some of the CRM_Core_Error methods - e.g. CRM_Core_Error::debug_var() - don't have an argument for severity level - but we could/should add one.
1. When providing a severity level to "old school" CRM_Core_Error calls, we also have the option of "upgrading" these to instead be Civi::log() calls.
I would be curious to hear anyone's thoughts, but it seems fairly straightforward to make some big improvements here.https://lab.civicrm.org/dev/core/-/issues/883Quick search should use FTS by default2023-01-26T05:03:54ZtottenQuick search should use FTS by defaultModern search systems have trained users to interactively tweak their search-text. For example, if I'm searching for a person named "Joeseph Smith", I might go through a series of searches (depending on the particular data-set, number of...Modern search systems have trained users to interactively tweak their search-text. For example, if I'm searching for a person named "Joeseph Smith", I might go through a series of searches (depending on the particular data-set, number of matches, and quality of the search):
1. "Joe"
2. "Joe Smi"
3. "Joe Smith"
4. "Joseph"
5. "Joseph Smith"
6. "Smith"
7. "Smith J"
8. "Smith, J"
Unfortunately, the default quick-search in Civi doesn't handle this well. Anecdotally, I feel like half of my searches (regardless of how much I tweak the search-text) don't produce the expected result -- even if I hit enter and drill-down to view a longer list of results.
A big part of this originates with a mix of compatibility/complexity concerns. CiviCRM stores contacts with MySQL InnoDB, and (during much of Civi's development) InnoDB's best filter option was `LIKE`... so that's what it uses. But `LIKE` is not very effective for matching names. Of course, MySQL has evolved -- first, MyISAM gained support for "full text search" (FTS); then, in v5.6, InnoDB also gained support for FTS. Civi has some options to use InnoDB FTS, but they're not enabled by default, and (IIRC) they're not integrated with the quick-search. There are third-party search systems (like Solr and ElasticSearch), but they're significant additional deployment/installation matter. Consequently, there is no *general* resolution to this problem (although some sites may have customizations in this space).
### Opinions
InnoDB doesn't have the best performance reputation - e.g. [(1)](https://hackernoon.com/dont-waste-your-time-with-mysql-full-text-search-61f644a54dfa) [(2)](https://www.percona.com/blog/2013/07/31/innodb-full-text-search-in-mysql-5-6-part-3/) - but it *is* the simplest option from an architectural POV. It can search the existing data-stores, and it's supported on any deployment with MySQL v5.6+. To make this architecture compatible with all deployments, all we really need is a slight bump in the system-requirements. Future-You will thank Current-You to please keep the architecture simple.
But the performance is a real consideration. So I'd vote to take an empirical decision-making approach:
1. Do credible benchmarking of some realistic searches using InnoDB FTS. That basically means -- setup a dev site, load a bazillion contacts, add some FTS indices, spy on the "Advanced Search" to grab some example SQL queries, and then manually tweak+execute to see if FTS-enabled variants perform alright. This can answer some key questions without requiring a lot of design discussion.
2. If InnoDB FTS performance is acceptable, then this is great. There's no need for a major new data-layer. We should simply re-engineer the default "Quick Search" to use InnoDB FTS (*with some LExIM provisos*), and we should bump the MySQL requirements (strictly v5.6+ or v5.7+).
3. If InnoDB FTS does not perform well, then solving the search-usability issue will require something else -- e.g. mapping into some other system (e.g. MyISAM FTS, Solr, Elastisearch). This is a more complicated path. I don't want to rule it out, but I'd vote to only look at it if the simpler/KISS architecture doesn't cut it.https://lab.civicrm.org/dev/core/-/issues/867Expose line item name on search2023-04-30T05:03:21ZmaduraExpose line item name on search## Problem
On Advanced Search and Find Contributions there is currently no field to search for the line items. If an admin wants to be able to search for the contacts or contributions based on line items information there is no other se...## Problem
On Advanced Search and Find Contributions there is currently no field to search for the line items. If an admin wants to be able to search for the contacts or contributions based on line items information there is no other search parameters available.
## Proposed Solution
Introduce the "line item name" field in search.
Technical Steps:
- Add a new field to contribution search form and in postprocess, handle it and add suitable where clauses using existing fields as reference.
- Add a new textfield for line item search in CRM_Contribute_BAO_Query::buildSearchForm()
- In CRM_Contribute_BAO_Query::whereClauseSingle add logic for including condition for line item name.https://lab.civicrm.org/dev/core/-/issues/3638Provide a fullPage property for message templates2024-02-22T05:03:26ZmfbProvide a fullPage property for message templatesIn various parts of the UI, CiviCRM allows users to send a message template either on its own, or wrapped in a header and footer.
e.g. you can send a message template to a contact.
Or, you can create a mailing based on a message templa...In various parts of the UI, CiviCRM allows users to send a message template either on its own, or wrapped in a header and footer.
e.g. you can send a message template to a contact.
Or, you can create a mailing based on a message template, with additional header and footer.
CKEditor needs different settings at civicrm/admin/ckeditor?preset=civimail re: allowed HTML tags to support these two scenarios. With fullPage = true, the HTML is forcibly wrapped with html/head/body tags, and so a message template that includes its header and footer can be composed. With fullPage = false, html/head/body are silently stripped, so this is useful for message templates that should be used with a header and footer.
However, there is only one CKEditor setting for both of these scenarios.
I would propose a new database column where we can indicate if a message template is "fullPage" - i.e. includes header and footer, or not fullPage, i.e. designed to be used with header and footer.
This would allow us to toggle the fullPage setting appropriately. It would also allow us to prevent a user from sending a message template that needs a header and footer without one, or wrapping a message template that includes its header and footer with an additional header and footer.https://lab.civicrm.org/dev/core/-/issues/862Feature request: can't lookup Civi ID based on Drupal username via API2022-10-25T05:03:40ZsudomanFeature request: can't lookup Civi ID based on Drupal username via APIWhen visiting `https://exmple.com/civicrm/api#explorer`, select "User" from the `Entity` dropdown menu. Then change `Fields to return` to "ContactID", and under that, change "ContactID" to "username", then enter your user name. Copy the ...When visiting `https://exmple.com/civicrm/api#explorer`, select "User" from the `Entity` dropdown menu. Then change `Fields to return` to "ContactID", and under that, change "ContactID" to "username", then enter your user name. Copy the example Drush command into a terminal as root under the document root for your server. This error is returned:
````
Mandatory key(s) missing from params array: contact_id [error]
````
If you try again, but this time choose "CMS User ID" as the parameter, and enter your CMS User ID, then run the command, then the query works:
````
...
[contact_id] => 123929
...
````
The desired behavior is that querying by username would work, and for the parameter list to perhaps not show an asterisk next to the "Contact ID" option, as if it is required for all queries using that Entity. (It's currently possible to use the "CMS Contact ID" instead.)
Being able to search by username would help remote applications to log people in via a single-sign-on system that returns the user name to that remote application, then to access their Civi accounts via the API. There are ways to work around this issue, but I thought I should mention this scenario in case the behavior of this part of the API is inteded to cover this use case.
Thanks! : )https://lab.civicrm.org/dev/core/-/issues/3270getAddressColumns doesn't fully support prefix2022-04-22T15:53:18ZJonGoldgetAddressColumns doesn't fully support prefixThere's one place where the table name is hard coded that should be `$tableAlias`. I wrote a fix + UT.
I also realized that the way odd/even street numbers are handled causes the address table to always get joined regardless of whether...There's one place where the table name is hard coded that should be `$tableAlias`. I wrote a fix + UT.
I also realized that the way odd/even street numbers are handled causes the address table to always get joined regardless of whether it's necessary, but that's out of scope for now.5.14.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/858Weekly contribution summary displays incorrect results2023-01-02T05:03:54ZJKingsnorthWeekly contribution summary displays incorrect resultsThe weekly contribution summary does not group results correctly, resulting in inaccurate reporting.
Steps to recreate on dmaster:
- Use the Contribution Summary report, and change the 'Grouping' to Date Received - Week
- Add a contribu...The weekly contribution summary does not group results correctly, resulting in inaccurate reporting.
Steps to recreate on dmaster:
- Use the Contribution Summary report, and change the 'Grouping' to Date Received - Week
- Add a contribution for the date Sunday 7 April 2019
- Add a contribution for the date Monday 8 April 2019
Result - expected 2 rows, since two 'weeks' are covered, instead just one row is displayed:
![image](/uploads/f34a73f1142d4a2bd36150383db32477/image.png)
![image](/uploads/8a9ed219ce1fd55d7bc82c2afbf4c007/image.png)https://lab.civicrm.org/dev/core/-/issues/854Add html classes/ids to rows for Custom Fields in form/page for Contribution,...2022-10-22T05:03:47ZAllenShawAdd html classes/ids to rows for Custom Fields in form/page for Contribution, Participant, etc.Core fields in page and form for Participants and other entities have unique classes and/or ids for each field row. Likewise, custom fields on Contact entity have the same. Not so for custom fields on participants, contributions, etc.. I...Core fields in page and form for Participants and other entities have unique classes and/or ids for each field row. Likewise, custom fields on Contact entity have the same. Not so for custom fields on participants, contributions, etc.. I'd like to add these to facilitate styling.