CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-05-30T22:23:24Zhttps://lab.civicrm.org/dev/core/-/issues/4257Allow editing of payment method on contribution edit form when no payments ar...2023-05-30T22:23:24ZlarsssandergreenAllow editing of payment method on contribution edit form when no payments are associatedCurrently, the contribution edit form does not allow editing of the payment method for a pending contribution. This may be useful for users, for example if someone fills out a contribution page with pay later and so their contribution pa...Currently, the contribution edit form does not allow editing of the payment method for a pending contribution. This may be useful for users, for example if someone fills out a contribution page with pay later and so their contribution payment method is set to check, but they will actually pay with an etransfer and we want to note this. It is also potentially confusing because the user can mark the payment as completed and record the payment two ways, by clicking Record Payment or by changing the status to completed, but only the first of these allows the user to change the payment method.
I think we can safely allow editing of the payment method when there are no payments associated with a contribution.https://lab.civicrm.org/dev/core/-/issues/4176Allow to search on participant id2023-03-24T17:21:16ZyashodhaAllow to search on participant idOverview
---------
Allow to search on participant id.
The participant search doesn't have an option to quickly search on ID, this should fix that.
This is already available for contribution and membership search.Overview
---------
Allow to search on participant id.
The participant search doesn't have an option to quickly search on ID, this should fix that.
This is already available for contribution and membership search.5.61.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/4133Search Kit: date field - more transformation options2023-02-20T06:26:43ZherbdoolSearch Kit: date field - more transformation optionsThis is a follow-up to https://lab.civicrm.org/dev/core/-/issues/3700, which despite it's title only dealt with aggregating by partial dates. This one is to expand the date options in the Field Transformations for date fields in SearchKi...This is a follow-up to https://lab.civicrm.org/dev/core/-/issues/3700, which despite it's title only dealt with aggregating by partial dates. This one is to expand the date options in the Field Transformations for date fields in SearchKit.
[As mentioned here](https://lab.civicrm.org/dev/core/-/issues/3700#note_80020), it would something similar to:
![Captura_de_pantalla_de_2022-08-04_18-54-00](https://lab.civicrm.org/dev/core/uploads/aca17ace20d78328c85a71a17fcfbabd/Captura_de_pantalla_de_2022-08-04_18-54-00.png)
---
Note that transforming the dates *is* possible by enabling "Rewrite Text" for a field in a display. Then doing something like:
```
{"[join_date]"|date_format:"%m/%d/%Y"}
```
Or whatever the token is for the date field.
It would be handy to have a section in the [User Guide](https://docs.civicrm.org/user/en/latest/searching/searchkit) on some of these tricks for SearchKit. Would save time from asking in the chat.https://lab.civicrm.org/dev/core/-/issues/3990force deduplication for event registrations: misleading help text → change su...2022-11-17T07:23:57ZAndreasandreas.howiller@civiservice.deforce deduplication for event registrations: misleading help text → change suggested workaround or add feature to CiviEvent?Sometimes you want to intentionally force duplicates for anonymous registrations for certain events. Some users even want this as their default in CiviEvent.
In the profile configuration there is the following hint how you should do th...Sometimes you want to intentionally force duplicates for anonymous registrations for certain events. Some users even want this as their default in CiviEvent.
In the profile configuration there is the following hint how you should do this:
> If you are using the profile as a contact signup and editing form - this option controls what happens if the data matches an existing contact record. Using this option user can update the matching record or create a duplicate record or otherwise he will get a 'duplicate record' warning, and their input will not be saved. Contact matching is based on your configured 'Strict' rule for identifying duplicate contacts. (Weiterlesen...)
>
> This setting is ignored if the profile is embedded in an online contribution, membership signup or event registration form. In this case a contact match always results in the transaction being linked to the matching contact.
>
> In all cases, the check for an existing matching contact uses the default "Individual Strict Duplicate Matching Rule" (match on email address). If you are concerned with existing contact data being over-written by anonymous visitors, you can modify this rule to make matches less likely (or even impossible). For example, if you NEVER want anonymous input to match (i.e. always create a new contact record) - edit that rule and set the 'weight threshold' higher than 10. You will then need to run Find Duplicates periodically using a different rule, and merge any duplicate records with their associated memberships, contributions, etc.
However, this kind of "suggested workaround" no longer works because you can no longer specify an unreachable threshold in the deduplication rules. In any case, the help text would have to be adapted.
However, the question arises how to deal with the actual requirement and I see at least two possibilities:
**Option A: Replacing the workaround**
Recommend in the help text to create an unachievable deduplication rule by using in the rule a field that is never used in the user's event registrations and advice them to set this rule for registrations when needed.
**Option B: add a feature in CiviEvent**
Add a "no deduplication" feature (like there is an option to deactivate deduplication in profiles) and add this option to the duplicate rule dropdown in the event configuration.
Any (other) ideas?https://lab.civicrm.org/dev/core/-/issues/3980SearchKit displays: be able to add description so end user knows the context2022-11-21T19:39:52ZherbdoolSearchKit displays: be able to add description so end user knows the contextCurrently on SearchKit displays we can set the name which ends up being used for the title and the URL. I've tried to add additional information there for end users so they understand the context of the results. E.g. "Only shows results ...Currently on SearchKit displays we can set the name which ends up being used for the title and the URL. I've tried to add additional information there for end users so they understand the context of the results. E.g. "Only shows results for the current campaign". But that's awkward to stuff that all into the title. And also means one has to be careful that on the first save *not* to add those notes to the name so as to prevent an ungainly URL.
(The other option is to embed the SK into an afform, but that's a lot of extra work for just a bit of description.)
So a separate description field would be ideal.https://lab.civicrm.org/dev/core/-/issues/3972SearchKit: allow custom fields to be used in the JOIN conditions (like they'r...2023-03-29T15:54:36ZherbdoolSearchKit: allow custom fields to be used in the JOIN conditions (like they're available in where)As far as I can tell, the custom fields on the entity that is joined are not available for the JOIN conditions. But they are visible in the WHERE.
Here's a scenario: there's a custom field on a contact. Create a new SearchKit with prima...As far as I can tell, the custom fields on the entity that is joined are not available for the JOIN conditions. But they are visible in the WHERE.
Here's a scenario: there's a custom field on a contact. Create a new SearchKit with primary being Address. Then JOIN the Contact. Add a condition for the join and search the contact's custom field. It's not available. Then check for that same custom field in the WHERE - it should be available.
This is useful when using GROUP BY and cannot use the WHERE. And where it would be inconvenient/impossible to add the field as a column and use HAVING. For example, if the added field has a transformation to COUNT then HAVING won't help.https://lab.civicrm.org/dev/core/-/issues/3871Write-off feature for pledges2022-10-11T13:07:54ZyashodhaWrite-off feature for pledges**Functional specifications:**
On a pledge, in _Edit Scheduled Payment_, we can delete a pledge payment. The total pledge amount is reduced by the amount of the scheduled payment and the balance due is recalculated.
But in this scenar...**Functional specifications:**
On a pledge, in _Edit Scheduled Payment_, we can delete a pledge payment. The total pledge amount is reduced by the amount of the scheduled payment and the balance due is recalculated.
But in this scenario, the pledge status is left as is.
We can also cancel a pledge. All scheduled payments are canceled but the pledge status is set to canceled and the pledge balance and the total pledge amount are not recalculated. So I propose a new feature for the write-off.
- Add the menu option “Write Off” before Cancel.
- All scheduled payments are canceled like for a pledge cancellation.
- Pledge status is changed to Completed.
- Total pledge amount is reduced by the existing pledge balance amount.
- Pledge balance is set to $0.
- An activity of type “Pledge write-off” is created and recorded on the contact.
- Activity Subject=total pledge amount
- Activity Date and time = date and time of the action
- Activity Status=Completed
- Actions available on the activity should be View and File on case only like for the activity type Contribution.
- The option _Write-Off_ is available only for a pledge that has at least one pledge payment. If no pledge payment has been recorded with a pledge, write-off doesn’t make any sense, so we should have only the options to delete or cancel a pledge.
- if pledge status =Pending or Overdue > Show only Cancel and Delete
- if pledge status = In progress > show only Write-Off and Delete
- if pledge status = Completed or Canceled > show only Deleteyashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/3839Add system check for updated clean URL settings2022-09-27T19:51:34ZelilisseckAdd system check for updated clean URL settingsOverview
----------------------------------------
Based on my experience and this conversation: https://chat.civicrm.org/civicrm/pl/56au14c7dpb5ddebj69kbfjdir
Clean URLs should be required at this point. It's not as much of a problem in...Overview
----------------------------------------
Based on my experience and this conversation: https://chat.civicrm.org/civicrm/pl/56au14c7dpb5ddebj69kbfjdir
Clean URLs should be required at this point. It's not as much of a problem in Drupal, but in Wordpress if a site has been upgraded from the old Clean URL settings in civicrm.settings.php and ?civiwp style URLs and civicrm.settings.php has not been updated manually, strange things will being to occur. This largely manifests itself as yellow "Cannot find valid value for ID" error screens that confuse users when registering for an Event or making a Contribution on user-facing forms. This message comes from a tricky session issue and setting clean URLs up has always been the fix.
Current behaviour
----------------------------------------
Clean URL settings are often not updated by unsuspecting admins as older sites are upgraded to versions of CiviCRM where they should be required.
Proposed behaviour
----------------------------------------
System check warning appears for Wordpress users if civicrm.settings.php does not include up-to-date clean URL settings.
Comments
----------------------------------------
This check could be extended to other CMS' now or in the future, which is the motivation behind using its own check class rather than modifying the existing "Cms" for Wordpress checks. I haven't seen this issue with other CMS' so far.
Any thoughts welcome! PR will be provided and linked.https://lab.civicrm.org/dev/core/-/issues/3831PHP 8.2 Deprecated ${} string interpolation2022-10-31T03:45:54ZBradley TaylorPHP 8.2 Deprecated ${} string interpolationIn PHP 8.2 (planned to be released this November) ${} string interpolation has been deprecated:
https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
```
echo "Hello ${name}"; // Deprecated
echo "Hello {$name}"; // Suppo...In PHP 8.2 (planned to be released this November) ${} string interpolation has been deprecated:
https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
```
echo "Hello ${name}"; // Deprecated
echo "Hello {$name}"; // Supported
```
There are not loads of places where the deprecated version is used, but there are a few. We should swap the position of the dollar to the non-deprecated version.
(I also realise CiviCRM does not fully support PHP 8.1 yet, but it doesn't hurt to start to get ahead).5.54.0Bradley TaylorBradley Taylorhttps://lab.civicrm.org/dev/core/-/issues/3823Scheduled Reminders' effective start/end date incorrectly described.2022-09-02T15:31:27ZRichScheduled Reminders' effective start/end date incorrectly described.e.g.
![image](/uploads/fc3823cd4ec6e288615934a084db52e1/image.png)
You might think from this screenshot that this reminder won't fire unless the membership end date is at least 26 Aug 2022.
But surprise!, you'd be wrong!
It actually ...e.g.
![image](/uploads/fc3823cd4ec6e288615934a084db52e1/image.png)
You might think from this screenshot that this reminder won't fire unless the membership end date is at least 26 Aug 2022.
But surprise!, you'd be wrong!
It actually won't fire until the *trigger date* is at least 26 Aug 2022, and we set the trigger date above to be 1 week before the membership end date.
Expected behaviour
----------------------------------------
Either the queries should be changed to go on the actual date, as the labels say, OR, the labels should be updated to explain this.
The first feels like poking a hornets nest. The latter is like trying to have a rational debate on twitter.
I think I'd propose:
- Change the "When" label to "When (trigger date)"
- Then in the 'effective' dates' descriptions, just put "Earliest trigger date to include".
If folks agree with my proposal I'm happy to put in a PR for this.5.54.0https://lab.civicrm.org/dev/core/-/issues/3783Make Recent Items available providers an option group so extensions can exten...2022-08-10T04:17:03ZherbdoolMake Recent Items available providers an option group so extensions can extend itOverview
----------------------------------------
I would like my custom entities to be available to the Recent Items block.
In `CRM_Utils_Recent::getProviders()` there's a comment to make the hard-coded list into an Open Group. I agree...Overview
----------------------------------------
I would like my custom entities to be available to the Recent Items block.
In `CRM_Utils_Recent::getProviders()` there's a comment to make the hard-coded list into an Open Group. I agree. Let's make it so.
Current behaviour
----------------------------------------
Hard-coded list of some core entities.
Proposed behaviour
----------------------------------------
Create an option group and call it from this method.5.53.0https://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/3740Set default lock level to READ COMMITTED2023-10-20T07:57:25ZJoeMurraySet default lock level to READ COMMITTEDDrupal recently changed the default lock level slightly down from REPEATABLE READ to READ COMMITTED, which has the effect of avoiding some db locks. See https://www.drupal.org/node/3269885 We have seen over recent years some issues with ...Drupal recently changed the default lock level slightly down from REPEATABLE READ to READ COMMITTED, which has the effect of avoiding some db locks. See https://www.drupal.org/node/3269885 We have seen over recent years some issues with deadlocks, primarily on rebuilding group contact cache when there are hierarchies of smart groups. Should CiviCRM be more explicit about what isolation level we expect in order to get more repeatable results, and should we follow Drupal in its move to READ COMMITTED? I tend to think so.
See responses in MM chat from @demeritcowboy
https://chat.civicrm.org/civicrm/pl/gnmhfdxes7rgb8k7ppoaezo45ahttps://lab.civicrm.org/dev/core/-/issues/3729Form Builder doesn't use dedupe2023-02-16T22:18:18ZJonGoldForm Builder doesn't use dedupeIdeally Form Builder would allow you to select a dedupe rule on a per-contact basis, but on a basic level contacts should get deduped.Ideally Form Builder would allow you to select a dedupe rule on a per-contact basis, but on a basic level contacts should get deduped.https://lab.civicrm.org/dev/core/-/issues/3659APIv4 Contact.get - include email, phone, address?2023-01-04T23:44:25Zaydunsaidan.saunders@squiffle.ukAPIv4 Contact.get - include email, phone, address?# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-user...# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-users or newcomers to SK, they either don't find how to do it, or they do and it looks excessively complicated and off-putting for something so basic
In APIv3, `Contact.get` includes the primary email, phone and address.
Without polluting APIv4 with lots of special cases, I wonder whether it is worth making an exception for email and phone and returning those fields in APIv4 `Contact.get` Maybe also the address fields, but for me, that comes up less frequently.https://lab.civicrm.org/dev/core/-/issues/3462Event location search2024-01-31T10:18:23Zaydunsaidan.saunders@squiffle.ukEvent location searchOverview
----------------------------------------
Following on from #2103 - when configuring an event and reusing a location, Civi shows a message like 'This location is used by 2 other events' but does not indicate which events.
It w...Overview
----------------------------------------
Following on from #2103 - when configuring an event and reusing a location, Civi shows a message like 'This location is used by 2 other events' but does not indicate which events.
It would be useful to show a list of those locations, or include a link to search for them.
Note that SearchKit displays now handle LocBlocks (see #2676)https://lab.civicrm.org/dev/core/-/issues/3136Use domain id in log file name making it easy to find correct log file2022-11-25T05:33:18ZyashodhaUse domain id in log file name making it easy to find correct log fileIf you have loads of domains, it gets harder to locate the correct log file. Incorporating the domain id in the log file name will make it simpler.If you have loads of domains, it gets harder to locate the correct log file. Incorporating the domain id in the log file name will make it simpler.yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/3124SearchKit - Add fields for core icons (contact type / activity type)2022-04-06T00:43:28ZsamuelsovSearchKit - Add fields for core icons (contact type / activity type)In the idea that we want to make searches a bit more compact and easy for the eyes, it would be good to add support for new fields to display :
- contact type and sub type icons
- activity font-awesome icons
![ksnip_20220316-170327](/up...In the idea that we want to make searches a bit more compact and easy for the eyes, it would be good to add support for new fields to display :
- contact type and sub type icons
- activity font-awesome icons
![ksnip_20220316-170327](/uploads/89c180dacb96a941197ea418e54bce4a/ksnip_20220316-170327.png)colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3117FormBuilder - support relationships between contacts2022-05-09T20:31:53ZsamuelsovFormBuilder - support relationships between contactsAdd the possibility to add/edit multiple contacts specifying the relationship between them in FormBuilder.
Example of use case that we want to be able to do on one form :
- create/edit an organization with a primary contact and a list o...Add the possibility to add/edit multiple contacts specifying the relationship between them in FormBuilder.
Example of use case that we want to be able to do on one form :
- create/edit an organization with a primary contact and a list of employees
- create/edit a household contact with parents and children contacts
Example of custom form that we currently use that we would like to replace with FormBuilder :
![screenshot](/uploads/61d27d13f044748b7d273f513628829d/screenshot.png)colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/2981Pledge improvements2023-11-15T05:03:18ZyashodhaPledge improvementsCiviPledge improvements
-------------------------
There are frequent discrepancies between received and pledged payments, the following specifications detail each of the suggested improvements.
Technical Specifications
-----------------...CiviPledge improvements
-------------------------
There are frequent discrepancies between received and pledged payments, the following specifications detail each of the suggested improvements.
Technical Specifications
-------------------------
- Delete pledge behavior
When a pledge is deleted, currently all associated payments are also deleted. Instead, only delete the records in the civicrm_pledge and civicrm_pledge_payment tables.
- Unlink pledge payment
In the View Payment pop-up window associated with a pledge payment, add a button ‘Unlink’ next to the ‘Delete’ button.
![unlink](/uploads/9844b5fdddc9456508af0560266d5f12/unlink.png)
Pressing this button will reset the pledge_payment record (ie. reset contribution_id, actual_amount, and status_id fields to blank/null), but not delete the contribution itself.
- Delete scheduled payment
In the Edit Scheduled Payment pop-up window associated with scheduled pledge payments, add a button ‘Delete’ next to the ‘Save’ button.
![del](/uploads/4c5aa52d6d471d8ebfd583720b1bb969/del.png)
Pressing this button will delete the scheduled pledge payment and reduce the pledge amount (ie. civicrm_pledge.amount) by the corresponding amount.
- Add scheduled payment
In the Edit Scheduled Payment pop-up window associated with scheduled pledge payments, add a button ‘Save and New’ next to the ‘Save’ button.
![add](/uploads/1fcb8f2ee9bb03e91745bdc842b15398/add.png)
Pressing this button will save the existing screen and reset it to create a new Scheduled Payment. The Scheduled Date is preset to one period after the last scheduled payment, and the amount the same as the original scheduled amount (ie. all calculated from the information in the civicrm_pledge record, we are basically extending by one installment).
UI behaviours:
- [ ] Pressing Save and New, then Cancel should not create a new scheduled payment
- [ ] Pressing Save and New, then Delete should not result in an error
Adding a scheduled pledge payment needs to augment the pledge amount by the amount of the new scheduled payment.
- Link Existing payment
In the Edit Scheduled Payment pop-up window associated with scheduled pledge payments, add a selector in order to link unmatched existing payments with this scheduled payment.
![link](/uploads/f35e26f50f5f4660602f2db553cd00c2/link.png)
The drop-down is populated with all completed, non-test payments from the same contact that are not linked to any pledge payments through the civicrm_pledge_payment table.
Each payment is displayed as: {date} {financial_type} {amount}
UI behaviours:
- [ ] When selecting a payment, protect the scheduled amount control and replace the scheduled amount with the contribution amount
- [ ] If the payment amount is not the same as the scheduled amount, then open the controls below Adjust Selected Amount and pre-select first option:
![link1](/uploads/922fbce25b325334d4fa87cd43e58379/link1.png)
- [ ] The Save action will trigger updates the same schedule / amount / adjustment updates to the civicrm_pledge_payment record, but also link with any selected payment (ie. fields contribution_id, actual_amount and status_id).
- [ ] Resetting the Link with Payment drop-down to “ -- select --” will restore the Scheduled Amount control to the initially scheduled amount and close the Adjustment controls.yashodhayashodha