Development issueshttps://lab.civicrm.org/groups/dev/-/issues2022-04-22T15:51:46Zhttps://lab.civicrm.org/dev/core/-/issues/3238Graphs on Contribution Summary report replace final row with grand total value2022-04-22T15:51:46ZAndrew WestGraphs on Contribution Summary report replace final row with grand total valueGraphs on the Contribution Summary report will include the grand total in some circumstances. To replicate on demo site:
1. Using demo data, launch the Contribution Summary report
2. Leave all settings as default
3. Refresh results a...Graphs on the Contribution Summary report will include the grand total in some circumstances. To replicate on demo site:
1. Using demo data, launch the Contribution Summary report
2. Leave all settings as default
3. Refresh results and note the grand total. Current data shows this:
![Annotation_2020-05-20_211434](/uploads/17d1b5942dde265bf0076d857396e46b/Annotation_2020-05-20_211434.png)
4. Switch to a bar chart in the top right and click 'View'. Hover over the final column and you'll see it's the grand total number:
![barchart](/uploads/3454788b2eecfc7ea4b8d44538b371d6/barchart.png)
I'm not terribly familiar with reports, but my initial fix was to add this to the top of CRM_Report_Form_Contribute_Summary::buildChart()
if ($this->_rollup) {
array_pop($rows);
}
If this makes sense I can make it a PR.5.28.0https://lab.civicrm.org/dev/core/-/issues/3239Contribution reports don't include thank-you date2022-04-22T15:51:49ZJonGoldContribution reports don't include thank-you dateThis is an issue that a couple of people have noted [on Stack Exchange](https://civicrm.stackexchange.com/questions/15374/thank-you-letter-report/15377). However, this is the first time anyone has paid me to fix it :) PR incoming.This is an issue that a couple of people have noted [on Stack Exchange](https://civicrm.stackexchange.com/questions/15374/thank-you-letter-report/15377). However, this is the first time anyone has paid me to fix it :) PR incoming.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3240Searchkit: ability to have simple "exposed filters" on the Display so staff c...2022-04-22T15:51:54ZherbdoolSearchkit: ability to have simple "exposed filters" on the Display so staff can do simple filtering (for example, set a date range but nothing else)I quite like the power of SearchKit but I was thinking that we'd share the display of a search with a client. But it would be great if they had the ability to do a simple filter, such as restricting the date range. Rather than give them ...I quite like the power of SearchKit but I was thinking that we'd share the display of a search with a client. But it would be great if they had the ability to do a simple filter, such as restricting the date range. Rather than give them all the power and complexity of the full search. (I guess I'm just used to this in Views).https://lab.civicrm.org/dev/core/-/issues/3241SearchKit: Chicken-and-egg problem upgrading from 5.35.2 to 5.44.02022-04-22T15:52:28ZDaveDSearchKit: Chicken-and-egg problem upgrading from 5.35.2 to 5.44.0## Steps:
1. Install 5.35.2 and enable search kit.
1. Create a search with a display and save it.
1. Upgrade to 5.44.0. The civi upgrade runs ok.
* The 5.44 part isn't too relevant I think - 5.40+ seems like it would also happen.
1. ...## Steps:
1. Install 5.35.2 and enable search kit.
1. Create a search with a display and save it.
1. Upgrade to 5.44.0. The civi upgrade runs ok.
* The 5.44 part isn't too relevant I think - 5.40+ seems like it would also happen.
1. Visit the system status page and run the extension upgrades.
1. Error as below because upgrade_1001 triggers something that doesn't exist until upgrade_1005.
If you look at http://stats.civicrm.org/?tab=sites you'll notice there's a lot of sites on `5.35` because it was a security release, so will be a problem when they upgrade.
Some workarounds are upgrade in smaller steps, or manually create the column first:
`alter table civicrm_search_display add column acl_bypass tinyint DEFAULT 0 COMMENT 'Skip permission checks and ACLs when running this display.';`
## Details
```
[info] Applying update 1001 - normalize search display columns.
[error] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -19
[message] => DB Error: no such field
[mode] => 16
[debug_info] => SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`saved_search_id` AS `saved_search_id`, `a`.`type` AS `type`, `a`.`settings` AS `settings`, `a`.`acl_bypass` AS `acl_bypass`
FROM civicrm_search_display a
WHERE (`a`.`saved_search_id` = "1")
[nativecode=1054 ** Unknown column 'a.acl_bypass' in 'field list']
[type] => DB_Error
[user_info] => SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`saved_search_id` AS `saved_search_id`, `a`.`type` AS `type`, `a`.`settings` AS `settings`, `a`.`acl_bypass` AS `acl_bypass`
FROM civicrm_search_display a
WHERE (`a`.`saved_search_id` = "1")
[nativecode=1054 ** Unknown column 'a.acl_bypass' in 'field list']
[to_string] => [db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info="SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`saved_search_id` AS `saved_search_id`, `a`.`type` AS `type`, `a`.`settings` AS `settings`, `a`.`acl_bypass` AS `acl_bypass`
FROM civicrm_search_display a
WHERE (`a`.`saved_search_id` = "1")
[nativecode=1054 ** Unknown column 'a.acl_bypass' in 'field list']"]
)
Dec 22 13:41:25 [debug] $backTrace = #0 ...\sites\all\modules\civicrm\CRM\Core\Error.php(942): CRM_Core_Error::backtrace("backTrace", TRUE)
1 ...\sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(922): CRM_Core_Error::exceptionHandler(Object(DB_Error))
2 ...\sites\all\modules\civicrm\vendor\pear\db\DB.php(997): PEAR_Error->__construct("DB Error: no such field", -19, 16, (Array:2), "SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
3 ...\sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(575): DB_Error->__construct(-19, 16, (Array:2), "SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
4 ...\sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(223): PEAR::_raiseError(Object(DB_mysqli), NULL, -19, 16, (Array:2), "SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...", "DB_Error", TRUE)
5 ...\sites\all\modules\civicrm\vendor\pear\db\DB\common.php(1928): PEAR->__call("raiseError", (Array:7))
6 ...\sites\all\modules\civicrm\vendor\pear\db\DB\mysqli.php(936): DB_common->raiseError(-19, NULL, NULL, "SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...", "1054 ** Unknown column 'a.acl_bypass' in 'field list'")
7 ...\sites\all\modules\civicrm\vendor\pear\db\DB\mysqli.php(406): DB_mysqli->mysqliRaiseError()
8 ...\sites\all\modules\civicrm\vendor\pear\db\DB\common.php(1234): DB_mysqli->simpleQuery("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
9 ...\sites\all\modules\civicrm\packages\DB\DataObject.php(2696): DB_common->query("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
10 ...\sites\all\modules\civicrm\packages\DB\DataObject.php(1829): DB_DataObject->_query("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
11 ...\sites\all\modules\civicrm\CRM\Core\DAO.php(468): DB_DataObject->query("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
12 ...\sites\all\modules\civicrm\CRM\Core\DAO.php(1621): CRM_Core_DAO->query("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...", TRUE)
13 ...\sites\all\modules\civicrm\Civi\Api4\Query\Api4SelectQuery.php(167): CRM_Core_DAO::executeQuery("SELECT `a`.`id` AS `id`, `a`.`name` AS `name`, `a`.`label` AS `label`, `a`.`s...")
14 ...\sites\all\modules\civicrm\Civi\Api4\Generic\DAOGetAction.php(111): Civi\Api4\Query\Api4SelectQuery->run()
15 ...\sites\all\modules\civicrm\Civi\Api4\Generic\DAOGetAction.php(99): Civi\Api4\Generic\DAOGetAction->getObjects(Object(Civi\Api4\Generic\Result))
16 ...\sites\all\modules\civicrm\Civi\Api4\Provider\ActionObjectProvider.php(68): Civi\Api4\Generic\DAOGetAction->_run(Object(Civi\Api4\Generic\Result))
17 ...\sites\all\modules\civicrm\Civi\API\Kernel.php(149): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Generic\DAOGetAction))
18 ...\sites\all\modules\civicrm\Civi\Api4\Generic\AbstractAction.php(234): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
19 ...\sites\all\modules\civicrm\api\api.php(85): Civi\Api4\Generic\AbstractAction->execute()
20 ...\sites\all\modules\civicrm\Civi\Api4\Provider\ActionObjectProvider.php(103): civicrm_api4("SearchDisplay", "get", (Array:13), NULL)
21 ...\sites\all\modules\civicrm\Civi\Api4\Provider\ActionObjectProvider.php(84): Civi\Api4\Provider\ActionObjectProvider->runChain((Array:4), (Array:14))
22 ...\sites\all\modules\civicrm\Civi\Api4\Provider\ActionObjectProvider.php(69): Civi\Api4\Provider\ActionObjectProvider->handleChains(Object(Civi\Api4\Generic\DAOGetAction), Object(Civi\Api4\Generic\Result))
23 ...\sites\all\modules\civicrm\Civi\API\Kernel.php(149): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Generic\DAOGetAction))
24 ...\sites\all\modules\civicrm\Civi\Api4\Generic\AbstractAction.php(234): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
25 ...\sites\all\modules\civicrm\ext\search_kit\CRM\Search\Upgrader.php(58): Civi\Api4\Generic\AbstractAction->execute()
26 ...\sites\all\modules\civicrm\CRM\Extension\Upgrader\QueueTrait.php(49): CRM_Search_Upgrader->upgrade_1001()
27 ...\sites\all\modules\civicrm\CRM\Queue\Task.php(74): CRM_Extension_Upgrader_Base::_queueAdapter(Object(CRM_Queue_TaskContext), "org.civicrm.search_kit", "upgrade_1001")
28 ...\sites\all\modules\civicrm\CRM\Queue\Runner.php(201): CRM_Queue_Task->run(Object(CRM_Queue_TaskContext))
29 ...\sites\all\modules\civicrm\CRM\Queue\Page\AJAX.php(36): CRM_Queue_Runner->runNext(TRUE)
30 ...\sites\all\modules\civicrm\CRM\Queue\ErrorPolicy.php(89): CRM_Queue_Page_AJAX::{closure}()
31 ...\sites\all\modules\civicrm\CRM\Queue\Page\AJAX.php(38): CRM_Queue_ErrorPolicy->call(Object(Closure))
32 ...\sites\all\modules\civicrm\CRM\Core\Invoke.php(279): CRM_Queue_Page_AJAX::runNext()
33 ...\sites\all\modules\civicrm\CRM\Core\Invoke.php(69): CRM_Core_Invoke::runItem((Array:13))
34 ...\sites\all\modules\civicrm\CRM\Core\Invoke.php(36): CRM_Core_Invoke::_invoke((Array:4))
35 ...\sites\all\modules\civicrm\drupal\civicrm.module(471): CRM_Core_Invoke::invoke((Array:4))
36 ...\includes\menu.inc(527): civicrm_invoke("queue", "ajax", "runNext")
37 ...\index.php(21): menu_execute_active_handler()
38 {main}
```5.46.0https://lab.civicrm.org/dev/core/-/issues/3242APIv4-Based Smart(er) Groups2022-04-22T15:52:29Zjoshjosh@civicrm.orgAPIv4-Based Smart(er) GroupsThis project will allow smart groups to be built from APIv4 criteria. The MVP would include a button in the API Explorer to save an api4 query as a smart group. This will also connect with the new Search Builder UI when that project is c...This project will allow smart groups to be built from APIv4 criteria. The MVP would include a button in the API Explorer to save an api4 query as a smart group. This will also connect with the new Search Builder UI when that project is complete.
Tasks:
- Allow swappable backend to smart groups
- Extend smart group schema to store api4 query parameters
- Add support for saving smart groups to API explorer UI.colemanwcolemanw2020-06-30https://lab.civicrm.org/dev/core/-/issues/3243Search Builder UI2022-04-22T15:52:31Zjoshjosh@civicrm.orgSearch Builder UIThis project will create a unified interface that replaces the current Advanced Search and Search Builder forms. This requires the APIv4 Query Improvements project to be done (or at least underway). This is a prerequisite to the Form-Bui...This project will create a unified interface that replaces the current Advanced Search and Search Builder forms. This requires the APIv4 Query Improvements project to be done (or at least underway). This is a prerequisite to the Form-Builder-based reports and custom searches projects.
The mockup for this interface is available at the bottom of https://lab.civicrm.org/dev/report/-/wikis/Search-Builder-Overhaul
Tasks:
- Selection of base table + joins
- Drag-n-drop nested and/or where clauses supporting all fields and operators
- Controls for grouping and sorting
- Display and paging of search results
- Configurable output columns with drag-n-droppable table headers
- Selection of actions to act upon output rows (e.g. “Add Tags”)
- Button to save query as APIv4-based smart group.colemanwcolemanw2020-06-30https://lab.civicrm.org/dev/core/-/issues/3244"You do not have permission to access this page" when exporting participants ...2022-04-22T15:52:33ZBobS"You do not have permission to access this page" when exporting participants in Search Kit- From Search Kit, create a new search.
- Search For: Participants
- Click Search and select 1 or more participants.
- From Action box: Choose Export Participants.
- Receive popup: "Error: You do not have permission to access this page."...- From Search Kit, create a new search.
- Search For: Participants
- Click Search and select 1 or more participants.
- From Action box: Choose Export Participants.
- Receive popup: "Error: You do not have permission to access this page."
I can, however, export participants from the traditional Search | Participants.
Confirmed on Demo site, Civi 5.38.0.https://lab.civicrm.org/dev/core/-/issues/3245Include random as an option when sorting displays2022-04-22T15:52:35Zjoshjosh@civicrm.orgInclude random as an option when sorting displaysCurrently on SearchKit displays, users can sort by a designated field using either "ascending" or "descending". I propose that we include an option to sort data in a "random" format.
![Screenshot_2021-__1_](/uploads/02ac6ff8f5609eddc51d...Currently on SearchKit displays, users can sort by a designated field using either "ascending" or "descending". I propose that we include an option to sort data in a "random" format.
![Screenshot_2021-__1_](/uploads/02ac6ff8f5609eddc51d64629d9e1ca1/Screenshot_2021-__1_.png)https://lab.civicrm.org/dev/core/-/issues/3246Error when installing extensions2022-04-22T15:52:36ZElin.WaringError when installing extensionsEvery time I install an extension I get this message:
> An error has occurred.
> 0 Argument 1 passed to CRM_Admin_Page_Extensions::createExtendedInfo() must be an instance of CRM_Extension_Info, null given, called in /mnt/data/vhosts/xxx...Every time I install an extension I get this message:
> An error has occurred.
> 0 Argument 1 passed to CRM_Admin_Page_Extensions::createExtendedInfo() must be an instance of CRM_Extension_Info, null given, called in /mnt/data/vhosts/xxxxxxxx/administrator/components/com_civicrm/civicrm/CRM/Admin/Form/Extensions.php on line 63
And the page is redirected to
administrator/?option=com_civicrm&task=civicrm/admin/extensions
The extension is actually correctly installed but it's still strange to get this message.
This is on Joomla and I just did it again updating to CiviCRM 5.33.2.https://lab.civicrm.org/dev/core/-/issues/3247OR term in WHERE clause crashes Search Kit2022-04-22T15:52:37ZBobSOR term in WHERE clause crashes Search KitSearch Kit can no longer save or load a search which contains an "OR" term in the WHERE clause.
Upon loading such a saved search, the WHERE clause is displayed as empty, and the following console error is observed:
```
angular.js:15697 ...Search Kit can no longer save or load a search which contains an "OR" term in the WHERE clause.
Upon loading such a saved search, the WHERE clause is displayed as empty, and the following console error is observed:
```
angular.js:15697 TypeError: Cannot read property 'indexOf' of undefined
at controller.operatorTakesInput (angular-modules.c4138be7c73c1c03a09face30217fa38.js?qw2iyi:2135)
at fn (eval at compile (angular.js:16548), <anonymous>:4:337)
at m.$digest (angular.js:19262)
at angular.js:19562
at Yg.completeTask (angular.js:21403)
at angular.js:6879
```
To reproduce:
1. Search | Search Kit | New Search
1. Where | OR
1. Add any term into the OR clause, e.g.: Contact ID = 1
1. Save
1. Observe that:
* The term previously specified in the OR clause has been deleted.
* Numerous errors are displayed in the console.
Observed on CiviCRM 5.39.0 and 5.41 alpha1.<br>
Problem did not occur in 5.38.0.https://lab.civicrm.org/dev/core/-/issues/3248Add "created_date" to report filters2022-04-22T15:52:38ZphilipkasoAdd "created_date" to report filters**Use Case**: Report on all contacts created <period>.
**Background/Ask**: "created_date" can only be used via Change Log in Advance Search. We would like to be able to use the "Change Log" created date as a filter in standard reporting...**Use Case**: Report on all contacts created <period>.
**Background/Ask**: "created_date" can only be used via Change Log in Advance Search. We would like to be able to use the "Change Log" created date as a filter in standard reporting to satisfy the stated use case.https://lab.civicrm.org/dev/core/-/issues/3249Activity Type + Activity Status + Case Type not being Combined Correctly in S...2022-04-22T15:52:40ZalistairjamesActivity Type + Activity Status + Case Type not being Combined Correctly in Search BuilderThis issue has the same outcome in the Search builder as noted for the Advanced Search in https://lab.civicrm.org/dev/report/-/issues/53 which is the main focus of my attention.
A search for contacts with scheduled meetings in one case ...This issue has the same outcome in the Search builder as noted for the Advanced Search in https://lab.civicrm.org/dev/report/-/issues/53 which is the main focus of my attention.
A search for contacts with scheduled meetings in one case type incorrectly includes contacts who have completed meetings in the case type of interest but also have scheduled meetings in the other case type.
Steps to create (in 5.31)
- Create CaseType1 containing a Meeting
- Create CaseType2 containing a Meeting
- Create a Case of CaseType1 for Alice and mark the Meeting as Completed
- Create a Case of CaseType1 for Bob and leave the Meeting as Scheduled
- Create a Case of CaseType2 for Alice and leave the Meeting as Scheduled
- Create a Case of CaseType2 for Bob and mark the Meeting as Completed
A table of the Meeting status for Alice and Bob in the different Cases
| Contact | CaseType1 | CaseType2 |
| ------ | ------ | ------ |
| Alice | Completed | Scheduled |
| Bob | Scheduled | Completed |
Use the Search Builder to search for Contacts with Meetings Scheduled in CaseType1.
Activity, Activity Type = Meeting
Activity, Activity Status = Scheduled
Case, Case Type = CaseType1
Result: Alice and Bob are both returned when only Bob satisfies the given search criteria.
The SQL query ($sql) displayed by CiviCRM in civicrm/CRM/Contact/Selector.php
public function fillupPrevNextCache($sort, $cacheKey, $start = 0, $end = self::CACHE_SIZE)
(Line 1019 in 5.31)
is as follows:
SELECT contact_a.id as id FROM civicrm_contact contact_a
LEFT JOIN civicrm_case_contact
   ON civicrm_case_contact.contact_id = contact_a.id
INNER JOIN civicrm_case
   ON civicrm_case_contact.case_id = civicrm_case.id
LEFT JOIN civicrm_activity_contact
   ON ( civicrm_activity_contact.contact_id = contact_a.id )
LEFT JOIN civicrm_activity
   ON ( civicrm_activity.id = civicrm_activity_contact.activity_id
   AND civicrm_activity.is_deleted = 0
   AND civicrm_activity.is_current_revision = 1 )
INNER JOIN civicrm_contact
   ON ( civicrm_activity_contact.contact_id = civicrm_contact.id and civicrm_contact.is_deleted != 1 )
LEFT JOIN civicrm_case_type
   ON civicrm_case.case_type_id = civicrm_case_type.id
   WHERE ( ( civicrm_activity.activity_type_id = 1
      AND civicrm_activity.status_id = 1
      AND civicrm_case.case_type_id = 3 ) )
   AND (contact_a.is_deleted = 0)
   AND (civicrm_activity.activity_type_id IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 60, 62, 64, 66, 67, 68))
GROUP BY contact_a.id
ORDER BY \`contact_a\`.\`sort_name\` asc, \`contact_a\`.\`id\`
LIMIT 0, 500https://lab.civicrm.org/dev/core/-/issues/3250Add custom field groups to Membership Contribution Detail report2022-04-22T15:52:41ZJonGoldAdd custom field groups to Membership Contribution Detail reportEvery other report template that has `Contact` in the `$_customGroupExtends` array also includes individual contact types - "Individual" almost always, "Organization" and "Household" where relevant.
This PR adds the contact types to the...Every other report template that has `Contact` in the `$_customGroupExtends` array also includes individual contact types - "Individual" almost always, "Organization" and "Household" where relevant.
This PR adds the contact types to the `$_customGroupExtends` array.5.31.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3251Searchkit: OptionValue search with a WHERE clause for option group returns 0 ...2022-04-22T15:52:42ZDaveDSearchkit: OptionValue search with a WHERE clause for option group returns 0 resultsThis worked the first time I tested https://github.com/civicrm/civicrm-core/pull/22081 two weeks ago, so has broken some time in between.
It looks like the query does this, mixing up `name` and `value`:
```
"where": [
[
"opti...This worked the first time I tested https://github.com/civicrm/civicrm-core/pull/22081 two weeks ago, so has broken some time in between.
It looks like the query does this, mixing up `name` and `value`:
```
"where": [
[
"option_group_id:name",
"=",
"2"
]
],
```5.44.0https://lab.civicrm.org/dev/core/-/issues/3252View Payment owned by Different contact on Membership and Participant View.2022-04-22T15:52:43ZsunilView Payment owned by Different contact on Membership and Participant View.Overview
----------------------------------------
Using Webform, we can set that, contribution assigned to contact A and Membership record will be assigned to Contact B and C (based on number Contact selected in webform). IF we visit the...Overview
----------------------------------------
Using Webform, we can set that, contribution assigned to contact A and Membership record will be assigned to Contact B and C (based on number Contact selected in webform). IF we visit the Membership Record of B and C, we can not see the linked Payment, because its owned by another contact. and there is NO way to check who own the payment record.
Current behaviour
----------------------------------------
Currently it does not show linked payment record if payment is not present on same contact.
Expected behaviour
----------------------------------------
Linked Payment record should show, irrespective of who own the payment record as long as payment is belong the respective Membership.
In this case, webform create membership payment link between each contact membership and contribution id in `civicrm_membership_payment` table.
As long as we have linking between membership and contribution id, then it shows linked payment on Membership View. Same apply to participant.
----------------------------------------
https://github.com/civicrm/civicrm-core/pull/182815.31.0https://lab.civicrm.org/dev/core/-/issues/3253Contribution Detail: selecting the "soft credits" colum results in fatal error2022-04-22T15:52:45ZbgmContribution Detail: selecting the "soft credits" colum results in fatal errorTo reproduce:
* Go to the Reports > Contribution Reports > Contribution Details
* In the "columns", select the "soft credit" column
* Click "preview"
Results in a fatal error.
![Capture_d_écran_de_2018-03-07_16-58-43](/uploads/b3f0480...To reproduce:
* Go to the Reports > Contribution Reports > Contribution Details
* In the "columns", select the "soft credit" column
* Click "preview"
Results in a fatal error.
![Capture_d_écran_de_2018-03-07_16-58-43](/uploads/b3f048038f56aef323c6b101838b5b89/Capture_d_écran_de_2018-03-07_16-58-43.png)https://lab.civicrm.org/dev/core/-/issues/3254Membership detail report uses deprecated method causing fatal error2022-04-22T15:52:53ZMichael McAndrewMembership detail report uses deprecated method causing fatal error## Before
Generated SQL for Membership Detail report contained errors. More specifically, it was joining twice on the `civicrm_acl_contact_cache` table *AS WELL AS* doing some ACL filtering in a where clause. See the example below
```s...## Before
Generated SQL for Membership Detail report contained errors. More specifically, it was joining twice on the `civicrm_acl_contact_cache` table *AS WELL AS* doing some ACL filtering in a where clause. See the example below
```sql
SELECT SQL_CALC_FOUND_ROWS contact_civireport.sort_name AS civicrm_contact_sort_name,
contact_civireport.id AS civicrm_contact_id,
membership_civireport.membership_type_id AS civicrm_membership_membership_type_id,
membership_civireport.start_date AS civicrm_membership_membership_start_date,
membership_civireport.end_date AS civicrm_membership_membership_end_date,
membership_civireport.join_date AS civicrm_membership_join_date,
mem_status_civireport.name AS civicrm_membership_status_name,
contribution_civireport.id AS civicrm_contribution_contribution_id,
contribution_civireport.currency AS civicrm_contribution_currency
FROM civicrm_contact contact_civireport
INNER JOIN civicrm_acl_contact_cache aclContactCache ON contact_civireport.id = aclContactCache.contact_id
INNER JOIN civicrm_acl_contact_cache aclContactCache ON contact_civireport.id = aclContactCache.contact_id
INNER JOIN civicrm_membership membership_civireport ON contact_civireport.id = membership_civireport.contact_id
AND membership_civireport.is_test = 0
LEFT JOIN civicrm_membership_status mem_status_civireport ON mem_status_civireport.id = membership_civireport.status_id
LEFT JOIN civicrm_membership_payment cmp ON membership_civireport.id = cmp.membership_id
LEFT JOIN civicrm_contribution contribution_civireport ON cmp.contribution_id=contribution_civireport.id
WHERE (1)
AND (`contact_civireport`.`id` IS NULL
OR (`contact_civireport`.`id` IN
(SELECT contact_id
FROM civicrm_acl_contact_cache
WHERE user_id = 636)))
AND (`contact_civireport`.`is_deleted` IS NULL
OR (`contact_civireport`.`is_deleted` != 1))
GROUP BY membership_civireport.id
ORDER BY contact_civireport.sort_name ASC,
membership_civireport.membership_type_id ASC,
contribution_civireport.receive_date DESC
LIMIT 0,
50
```
This appears to be because it is calling the deprecated method `CRM_Report_Form::buildACLClause()` and then later calling `CRM_Report_Form::buildQuery` which then calls `CRM_Report_Form::buildPermissionClause();` (the function that buildACLClause was deprecated in favour of.
## After
When one removes the call to `::buildACLClause` from `CRM_Report_Form_Member_Detail::postProcess`, the generated SQL is as follows:
```sql
SELECT SQL_CALC_FOUND_ROWS contact_civireport.sort_name AS civicrm_contact_sort_name,
contact_civireport.id AS civicrm_contact_id,
membership_civireport.membership_type_id AS civicrm_membership_membership_type_id,
membership_civireport.start_date AS civicrm_membership_membership_start_date,
membership_civireport.end_date AS civicrm_membership_membership_end_date,
membership_civireport.join_date AS civicrm_membership_join_date,
mem_status_civireport.name AS civicrm_membership_status_name,
contribution_civireport.id AS civicrm_contribution_contribution_id,
contribution_civireport.currency AS civicrm_contribution_currency
FROM civicrm_contact contact_civireport
INNER JOIN civicrm_membership membership_civireport ON contact_civireport.id = membership_civireport.contact_id
AND membership_civireport.is_test = 0
LEFT JOIN civicrm_membership_status mem_status_civireport ON mem_status_civireport.id = membership_civireport.status_id
LEFT JOIN civicrm_membership_payment cmp ON membership_civireport.id = cmp.membership_id
LEFT JOIN civicrm_contribution contribution_civireport ON cmp.contribution_id=contribution_civireport.id
WHERE (1)
AND (`contact_civireport`.`id` IS NULL
OR (`contact_civireport`.`id` IN
(SELECT contact_id
FROM civicrm_acl_contact_cache
WHERE user_id = 636)))
AND (`contact_civireport`.`is_deleted` IS NULL
OR (`contact_civireport`.`is_deleted` != 1))
GROUP BY membership_civireport.id
ORDER BY contact_civireport.sort_name ASC,
membership_civireport.membership_type_id ASC,
contribution_civireport.receive_date DESC
LIMIT 0,
50
```
This SQL works nicely and the report respects the ACL.
In turns out that once you have removed the call to the deprecated function, the postProcess method is identical to its parent, so it can be removed completely.https://lab.civicrm.org/dev/core/-/issues/3255Book keeping Report : Add Time field for Transaction Date and Receive Date field2022-04-22T15:52:54ZsunilBook keeping Report : Add Time field for Transaction Date and Receive Date fieldSame issue : https://lab.civicrm.org/dev/report/-/issues/7 ,with some solution : https://github.com/civicrm/civicrm-core/pull/13571
But not its not working ..., Reason Parent Class `CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME` Time ...Same issue : https://lab.civicrm.org/dev/report/-/issues/7 ,with some solution : https://github.com/civicrm/civicrm-core/pull/13571
But not its not working ..., Reason Parent Class `CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME` Time handling changed.
Add Time Time and Add Sort on Contribution Receive Date and Transaction Date.
![Screenshot_2020-08-27_at_10.31.17_PM](/uploads/5b3ab509542d99720f8d40cd67796187/Screenshot_2020-08-27_at_10.31.17_PM.png)5.30.0https://lab.civicrm.org/dev/core/-/issues/3256Search Kit: "Combine text" field transformation seems to break output2022-04-22T15:52:55ZherbdoolSearch Kit: "Combine text" field transformation seems to break outputWhen changing a field transformation to Combine text, such as for doing something simple of Last Name, First name, it breaks the output. That is, I get a flash and then nothing appears in the results. When I switch it back to no transfor...When changing a field transformation to Combine text, such as for doing something simple of Last Name, First name, it breaks the output. That is, I get a flash and then nothing appears in the results. When I switch it back to no transformation it works.
I made sure to test it again with a fresh install of 5.46.x and replicated it.
I didn't see anything meaningful in the console.log (not sure if there's a debugging option). The only thing I saw was a persistent 500 error when attempting to reach https://XXXX.XX/civicrm/ajax/api4. Which I don't get without the field transformation.
Actually, I just replicated it on a dev site on a different server (wasn't sure if it was related to Lando). This site was running 5.43.x. This one gave a bit more information:
```
Uncaught Error: Syntax error, unrecognized expression: #/create/Contact?params=%7B%22version%22:4,%22select%22:%5B%22id%22,%22CONCAT_WS(display_name)%20AS%20CONCAT_WS_display_name%22%5D,%22orderBy%22:%7B%7D,%22where%22:%5B%5D,%22groupBy%22:%5B%5D,%22join%22:%5B%5D,%22having%22:%5B%5D%7D
at Function.se.error (jquery.min.js?v=3.6.0:2)
at se.tokenize (jquery.min.js?v=3.6.0:2)
at se.select (jquery.min.js?v=3.6.0:2)
at Function.se [as find] (jquery.min.js?v=3.6.0:2)
at S.fn.init.find (jquery.min.js?v=3.6.0:2)
at new S.fn.init (jquery.min.js?v=3.6.0:2)
at S (jquery.min.js?v=3.6.0:2)
at handleFragmentLinkClickOrHashChange (form.js?v=9.2.10:144)
at debounce.js?v=9.2.10:31
at dispatch (jquery.min.js?v=3.6.0:2)
```https://lab.civicrm.org/dev/core/-/issues/3257REST api error after upgrade to 5.28.32022-04-22T15:52:57ZRTaglientoREST api error after upgrade to 5.28.3Hi,
I updated wordpress to 5.5 and CiviCRM to 5.28.3 and I am getting a new strange error on rest api.
It work correctly with XML format
[OK](https://www.yogapause.it/civicenter/wp-json/civicrm/v3/rest?entity=Contact&action=get&api_...Hi,
I updated wordpress to 5.5 and CiviCRM to 5.28.3 and I am getting a new strange error on rest api.
It work correctly with XML format
[OK](https://www.yogapause.it/civicenter/wp-json/civicrm/v3/rest?entity=Contact&action=get&api_key=YWpYNlhWYUR4bWhsaTl1OVJ0cGVL&key=6d8984d9bc0f9c2c7121db065e094e51)
[same URL with only "&json={"sequential":1}"](https://www.yogapause.it/civicenter/wp-json/civicrm/v3/rest?entity=Contact&action=get&api_key=YWpYNlhWYUR4bWhsaTl1OVJ0cGVL&key=6d8984d9bc0f9c2c7121db065e094e51&json={%22sequential%22:1})
I got this error:
**{"code":"rest_invalid_param","message":"Parametro(i) non valido(i): json","data":{"status":400,"params":{"json":"json non \u00e8 del tipo integer."}}}**
in english must be somthing like
**{"code":"rest_invalid_param","message":"Parameter(i) not valid(i): json","data":{"status":400,"params":{"json":"json is not an integer type."}}}**
Using the parameter json=1 works, but I use the chain query mode :/
[adding "&json=1&id=2&return=email" works](https://www.yogapause.it/civicenter/wp-json/civicrm/v3/rest?entity=Contact&action=get&api_key=dDA4VjROSkpLWm9EU0hIbFFyaHBj&key=6d8984d9bc0f9c2c7121db065e094e51&json=1&id=2&return=email)
May you check what's going on?