Development issueshttps://lab.civicrm.org/groups/dev/-/issues2018-06-08T06:11:50Zhttps://lab.civicrm.org/dev/core/-/issues/165Bad link in civicrm/case/activity/view breadcrumb2018-06-08T06:11:50ZmikantchapBad link in civicrm/case/activity/view breadcrumbDisable popups in display preferences.
Find a case eg civicrm/case/search?reset=1.
'Manage' the case to open it.
Click on the activity Subject, goes to eg civicrm/case/activity/view?cid=203&aid=642
The 'Case Activity' breadcrumb link...Disable popups in display preferences.
Find a case eg civicrm/case/search?reset=1.
'Manage' the case to open it.
Click on the activity Subject, goes to eg civicrm/case/activity/view?cid=203&aid=642
The 'Case Activity' breadcrumb links to civicrm/case/activity?reset=1 which gives an error when you try to use it:
Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing when this occurred. required params missing.
Can reproduce this on http://dmaster.demo.civicrm.orghttps://lab.civicrm.org/dev/core/-/issues/1756Bad link in profile form confirmation page2020-05-14T19:30:08ZyosefromanoBad link in profile form confirmation pageThis issue happens when using a profile in create mode.
Even when the profile listing option is not setup, the confirmation page still includes a "Back to Listing" link which leads to an error page (since listings are not setup).
The "...This issue happens when using a profile in create mode.
Even when the profile listing option is not setup, the confirmation page still includes a "Back to Listing" link which leads to an error page (since listings are not setup).
The "Back to Listing" link should only be displayed when the listing feature is enabled for the profilehttps://lab.civicrm.org/dev/core/-/issues/1669Bad performance by recursivly invoking hook_civicrm_config (by civix generate...2020-03-26T19:06:28ZjaapjansmaBad performance by recursivly invoking hook_civicrm_config (by civix generated code)## The problem in short
`hook_civicrm_config` is called recursively causing CiviCRM to perform bad. Fixing this improves the CiviCRM performance by more than 50%!
This caused by civix generated code in extensions.
## The problem long
...## The problem in short
`hook_civicrm_config` is called recursively causing CiviCRM to perform bad. Fixing this improves the CiviCRM performance by more than 50%!
This caused by civix generated code in extensions.
## The problem long
When Civix generates the skeleton for an extension it adds the following code
```php
/**
* (Delegated) Implements hook_civicrm_config().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
*/
function _shoreditch_civix_civicrm_config(&$config = NULL) {
static $configured = FALSE;
if ($configured) {
return;
}
$configured = TRUE;
$template =& CRM_Core_Smarty::singleton();
$extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR;
$extDir = $extRoot . 'templates';
if (is_array($template->template_dir)) {
array_unshift($template->template_dir, $extDir);
}
else {
$template->template_dir = array($extDir, $template->template_dir);
}
$include_path = $extRoot . PATH_SEPARATOR . get_include_path();
set_include_path($include_path);
}
```
The line **`$template =& CRM_Core_Smarty::singleton();`** is causing the trouble because of the following in `CRM_Core_Smarty`
```php
/**
* Class constructor.
*
* @return CRM_Core_Smarty
*/
public function __construct() {
parent::__construct();
}
private function initialize() {
$config = CRM_Core_Config::singleton();
...
```
Above code is calling the `CRM_Core_Config::singleton()` which in turns invokes the hook_civicrm_config again...
## Performance Measurements
In my local environment a page load takes 1.6 seconds.
With a quick and dirty fix in my local environment it brings te page load down to 0.6 seconds.
My local environment has around 25 extensions installed.
## Solution
The ideal solution would be to add the extensions path to the _Civi Container_ so that it resides in code in _templates_c/CachedContainer.nnn.php_ I do think this is the best performing option.
Ideally we want to fix the hook_civicrm_config in every extension but we don't want them to break backwards compatibility.
So my way to create an ideal solution is the following:
1. Add the extensions template directory to the CiviCRM Container (and keeping in mind that extension developers might want to add their own custom template directory)
2. Fix the skeleton generated by Civix
3. Come up with a nasty hack so that extensions still work but performance is improved
4. Tell extension developers about this by a blog post/mailing and by adding a status message when the old civix code is still in use
@eileen @mattwire what are you thoughts on this?jaapjansmajaapjansmahttps://lab.civicrm.org/dev/core/-/issues/1061Bad popup on update recurring screen2019-08-21T16:48:10ZeileenBad popup on update recurring screenWe are seeing a popup when checksum users attempt to update a recurring contribution.
![Screenshot_2019-06-12_at_18.50.39](/uploads/85512b40438dcd0e198fddc51dd64c00/Screenshot_2019-06-12_at_18.50.39.png)
This appears to date back to M...We are seeing a popup when checksum users attempt to update a recurring contribution.
![Screenshot_2019-06-12_at_18.50.39](/uploads/85512b40438dcd0e198fddc51dd64c00/Screenshot_2019-06-12_at_18.50.39.png)
This appears to date back to March 2018 when custom data was added to this form (by @mattwire ) - which means we don't need to target the rc & I'm inclined to focus on 'the right fix' on master.
Fundamentally we have a backoffice form that is being exposed for front end users. I have personally proposed doing similar to the 'Add Payment' form recently so it probably bares a little thought. In this case the custom data is not accessible to checksum accessors of the page & superficially the problem is not that it is not available but that it is noisily not available.
I feel like at a conceptual level we probably want to either
1) say front end forms are front end forms and back end forms are back end forms and never the twain shall meet or
2) set the front end form flag whenever a both-use-form is accessed with a checksum
In terms of the custom data I feel the safest option is just to say 'don't expose custom data on both-use forms to users without Access CiviCRM'. If people want to this might not be the right form approach for them - they can actually probably intervene by hook but the risk of exposing inappropriate custom data fields seems real.
This probably also impacts on theming & provides an obvious way not to present un-themed versions of these pages (@seamuslee @totten )5.17.0https://lab.civicrm.org/dev/core/-/issues/3139Badgelayouts cannot be edited with PHP warning2022-09-01T13:49:35ZBradley TaylorBadgelayouts cannot be edited with PHP warning_Reproduced on dmaster and locally on WordPress_
**Steps to reproduce**
1. Navigate to "Administer CiviCRM", "Event Name Badge Layouts".
2. Create a new name badge
3. Edit the newly created name badge.
**Expected outcode**
The edit scr..._Reproduced on dmaster and locally on WordPress_
**Steps to reproduce**
1. Navigate to "Administer CiviCRM", "Event Name Badge Layouts".
2. Create a new name badge
3. Edit the newly created name badge.
**Expected outcode**
The edit screen should be pre-filled with the values entered initially.
**Actual outcome**
Each field is blank, a PHP warning is shown:
![Screenshot_2022-03-27_at_10.18.33](/uploads/105dc6046cbb9b569207500da40cf77f/Screenshot_2022-03-27_at_10.18.33.png)
**Technical explanation**
The bug was introduced in https://github.com/civicrm/civicrm-core/commit/873bfeb503caa413f17460dbe450b74fac3d6dbf.
The commit above added a new tokens:
```
'{event.start_date|crmDate:"%B %E%f"}' => ts('Event Start Date'),
'{event.end_date|crmDate:"%B %E%f"}' => ts('Event End Date'),`
```
The data for badge layouts is stored as encoded JSON. This means that the quote marks in these two tokens are being wrapped in double-quotes for the string, causing something like `"{event.start_date|crmDate:"%B %E%f"}"`. As such the JSON is not valid and cannot be `json_decode`ed.
The actual fix could be straightforward enough: Switch the tokens to use single instead of double quotes. However, I'm not sure what the correct solution is for any broken JSON which is now stored in CiviCRM databases. Some sort of upgrade script might be required to find/replace the known broken JSON.
Pinging @eileen who did a lot of work on tokens last year.https://lab.civicrm.org/dev/core/-/issues/1333Balance Due of completed contribution does not show as 0 but full amount in p...2019-10-22T00:07:05Zmagnolia61Balance Due of completed contribution does not show as 0 but full amount in payment receiptUsing 5.18.3 with patch https://github.com/civicrm/civicrm-core/pull/15545 (to be able to send the payment receipt at all)
I noticed that in different scenarios's (A. Pay the contribution in one payment & B. Pay it in a few payments)
the...Using 5.18.3 with patch https://github.com/civicrm/civicrm-core/pull/15545 (to be able to send the payment receipt at all)
I noticed that in different scenarios's (A. Pay the contribution in one payment & B. Pay it in a few payments)
the payment notification email shows the wrong amount for the Balance Due.
Interestingly it show the proper Balance Due when doing partial payments
```
Total Amount : 100
This Payment Amount : 60
Balance Due: 40
```
But at the final payment to full fill the contribution it shows the same as the full amount
```
Total Amount : 100
This Payment Amount : 100
Balance Due: 100
```5.18.4https://lab.civicrm.org/dev/core/-/issues/3394Balance owed visually not updated and multiple definitions of function displa...2024-01-13T05:03:29ZDaveDBalance owed visually not updated and multiple definitions of function display() in ParticipantFeeSelection formThis came out of PR review for https://github.com/civicrm/civicrm-core/pull/18238
There's probably multiple ways of getting here and different configurations might have different outcomes but take a stock demo install and do
1. Find pa...This came out of PR review for https://github.com/civicrm/civicrm-core/pull/18238
There's probably multiple ways of getting here and different configurations might have different outcomes but take a stock demo install and do
1. Find participants.
1. Pick one and click View, e.g. for the rainforest event.
1. Click the blue Change Selections link.
1. Change the selected price.
1. Nothing happens. No errors in console. At the very least I'd expect the balance owed field to visually update. Saving seems to change the selection as expected.
If you view-source, you can see the display() javascript function is defined 3 times apparently in global space each time. Doing some js debugging the one that gets run is the one from CRM/Price/Form/Calculate.tpl, which itself seems to be included twice so two of the display() functions are identical since they're both from there.
I can't see where the first function is used in civi - the one from CRM/Event/Form/ParticipantFeeSelection.tpl - but there might be many configurations that lead here and do different things.https://lab.civicrm.org/dev/core/-/issues/1776Bank fee has wrong date on import in civicrm_financial_item.transaction_date ...2023-01-31T04:25:07ZJoeMurrayBank fee has wrong date on import in civicrm_financial_item.transaction_date incorrected uses import date rather than payment date onOn import of a transaction with a bank fee, the revenue record gets the contribution receive date correctly put into civicrm_financial_item.transaction_date but the bank fee record incorrected uses import date rather than the imported pa...On import of a transaction with a bank fee, the revenue record gets the contribution receive date correctly put into civicrm_financial_item.transaction_date but the bank fee record incorrected uses import date rather than the imported payment date.
Bug 2 in https://gist.github.com/JoeMurray/6db6a82ff6c9e593ca5301b5f8708f52
Joe to confirm the exact API calls used on import to ensure that it was not a missed or incorrect parameter, but an interpretation of this date in processing a high level call to insert a contribution including a bank fee.seamusleeseamusleehttps://lab.civicrm.org/dev/financial/-/issues/83Barcelona sprint financials2019-11-01T12:05:38ZeileenBarcelona sprint financialsI'm creating this issue to document & track the discussions we had at the Barcelona sprint.
We had a financial team of @mattwire @JoeMurray @ayduns @artfulrobot @BjoernE @andrei @ejegg present
Main issues
1. Ensuring there were ...I'm creating this issue to document & track the discussions we had at the Barcelona sprint.
We had a financial team of @mattwire @JoeMurray @ayduns @artfulrobot @BjoernE @andrei @ejegg present
Main issues
1. Ensuring there were no blockers to people using the Order.create->PaymentProcessor.pay->Payment.create flow https://lab.civicrm.org/dev/financial/issues/76
1. Making the poor performance associated with the creditnote_id field opt in rather than opt out https://lab.civicrm.org/dev/financial/issues/84
1. Addressing Stripe's need to store some Stripe generated information for which there is no suitable field. We resolved this at the data level by adding the field civicrm_financial_trxn.result_code. However docs pending! https://lab.civicrm.org/dev/financial/issues/57
1. Having a plan to get off our broken contribution.template model https://lab.civicrm.org/dev/financial/issues/6
1. UI for permitting refunds processing for payments. https://lab.civicrm.org/dev/financial/issues/85
Not actually from the sprint but topical from discussions - add getters & setters to payment processor base class https://lab.civicrm.org/dev/financial/issues/82https://lab.civicrm.org/dev/core/-/issues/3829Barcodes in event badges missing data after updating to CiviCRM 5.45.72022-11-17T21:28:44ZLKuttnerBarcodes in event badges missing data after updating to CiviCRM 5.45.7When printing event badges from event participant search results and selecting _Name Badges - Print_ or clicking _Save and Preview_ in Event Name Badge Layouts, the barcodes in the PDFs created no longer include the contact_id and partic...When printing event badges from event participant search results and selecting _Name Badges - Print_ or clicking _Save and Preview_ in Event Name Badge Layouts, the barcodes in the PDFs created no longer include the contact_id and participant_id. The short barcode that is displayed only includes the hyphen that is usually in between, as specified in line 260 of Badge.php.
`$data['current_value'] = $formattedRow['values']['contact_id'] . '-' . $formattedRow['values']['participant_id'];`
The barcodes were printing fine until recently upgrading from CiviCRM 5.39.4. I see that there were [changes committed](https://github.com/civicrm/civicrm-core/commit/3fd42bb541eaa2861048f1c74b3da537887812b1#diff-b732ac83b0f3272ae759a9163725022788567c65717578b263d294e5ba1c3d7f) on Jan 16 that may be related.
We are on D7 with PHP 7.3.29. Thank you for any assistance you can offer in resolving this.5.54.1https://lab.civicrm.org/dev/wordpress/-/issues/58Base page fails to recognise Page Templates in subdirectories.2020-06-12T15:56:28ZhaystackBase page fails to recognise Page Templates in subdirectories.Currently, the CiviCRM base page fails to apply the selected Page Template if that template does not reside in the root directory of the theme. The fallback `page.php` template is used instead.
## Steps to reproduce
Copy the `page.php`...Currently, the CiviCRM base page fails to apply the selected Page Template if that template does not reside in the root directory of the theme. The fallback `page.php` template is used instead.
## Steps to reproduce
Copy the `page.php` template from the active theme into a subdirectory, rename it and replace its header with:
```php
/**
* Template Name: CiviCRM Test
*/
```
Then select "CiviCRM Test" as the template for the CiviCRM base page.
The template will not be loaded and `page.php` will be used instead.
## The problem
The code to find the Template "name" `$template_name = basename( $template );` is too simplistic.
PR to follow.haystackhaystackhttps://lab.civicrm.org/dev/wordpress/-/issues/59Base page is only created on main site in WordPress Multisite2023-02-28T15:26:35ZhaystackBase page is only created on main site in WordPress MultisiteThe default behaviour of CiviCRM on WordPress Multisite is that the base page is not created on every site on which CiviCRM is activated. Instead, the base page is only auto-created on the main site. The absence of the base page on a sub...The default behaviour of CiviCRM on WordPress Multisite is that the base page is not created on every site on which CiviCRM is activated. Instead, the base page is only auto-created on the main site. The absence of the base page on a sub-site can lead to confusion - however it may be the desired behaviour when the WordPress Multisite instance is one where sub-sites are not truly "separate" e.g. sites built on frameworks such as Commons in a Box or MultilingualPress.
Proposed fix: auto-create the base page on all sites on which CiviCRM has been activated but allow plugins to enable the legacy switch to the main site behaviour.haystackhaystackhttps://lab.civicrm.org/dev/core/-/issues/4165Basic Auth does not work when AuthX is activated2023-03-09T10:10:55ZMariaVBasic Auth does not work when AuthX is activatedI have found this issue and it seems that this problem occurred again: https://lab.civicrm.org/dev/core/-/issues/3416
It describes the current behavior: All CiviCRM pages error out with "401 Invalid Credential".
When AuthX disabled it w...I have found this issue and it seems that this problem occurred again: https://lab.civicrm.org/dev/core/-/issues/3416
It describes the current behavior: All CiviCRM pages error out with "401 Invalid Credential".
When AuthX disabled it works fine.
CiviCRM Version: 5.58.1 on Wordpress 6.1.1https://lab.civicrm.org/dev/core/-/issues/4727Basic/Advanced search and CiviReport filters showing `name` in tag dropdown i...2023-11-01T23:19:57ZDaveDBasic/Advanced search and CiviReport filters showing `name` in tag dropdown instead of `label`![untitled4](/uploads/ea919fe7f1f9257beb0f2c656f3efe2a/untitled4.png)
Also the QILL for the civireport (the QILL for the search is ok).
![untitled3](/uploads/ed24469c7b1110d79340b0f4b3555fb4/untitled3.png)![untitled4](/uploads/ea919fe7f1f9257beb0f2c656f3efe2a/untitled4.png)
Also the QILL for the civireport (the QILL for the search is ok).
![untitled3](/uploads/ed24469c7b1110d79340b0f4b3555fb4/untitled3.png)5.68.0https://lab.civicrm.org/dev/core/-/issues/4089Batch Data Entry for Membership2024-02-09T02:31:39ZmollconsBatch Data Entry for MembershipSee https://chat.civicrm.org/civicrm/pl/43n5d1d8tfr5xkc1ptmqhpn7iw for detail of issue.
I have created the contacts successfully and am now attempting to perform a "Batch Data Entry for Memberships". I have created the membership types ...See https://chat.civicrm.org/civicrm/pl/43n5d1d8tfr5xkc1ptmqhpn7iw for detail of issue.
I have created the contacts successfully and am now attempting to perform a "Batch Data Entry for Memberships". I have created the membership types (3 types) and when I attempt to "Enter Records" the error occurs.
If I delete all of the member type records, then I am able to enter the batch entry. But then I am not able to select any member type.
I am using Chrome browser on Joomla 4.2.6 and with CiviCRM 5.57.0 (or 5.57.1).https://lab.civicrm.org/dev/core/-/issues/3439batch geocode API does not process event addresses2024-01-22T05:03:19Zlcdwebbatch geocode API does not process event addressesThe Job.geocode API does not process event addresses because they are not tied to a contact record, and the query that currently retrieves these records is contact table dependent.
The query can be easily restructured to include the eve...The Job.geocode API does not process event addresses because they are not tied to a contact record, and the query that currently retrieves these records is contact table dependent.
The query can be easily restructured to include the event addresses.lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/5046Batch Membership Form: displayed total incorrect when numbers localized2024-03-07T13:33:05ZjamesbugdenBatch Membership Form: displayed total incorrect when numbers localizedOverview
----------------------------------------
Total calculation uses parseFloat which ignores localization settings.
This creates a display issue.
Batch Data Entry for Contributions / Total Amount Entered does not display correc...Overview
----------------------------------------
Total calculation uses parseFloat which ignores localization settings.
This creates a display issue.
Batch Data Entry for Contributions / Total Amount Entered does not display correctly when localized
![image](/uploads/6dd56b9e04871d1cc985ad0b3d1a1675/image.png)
Reproduction steps
----------------------------------------
1. Change Thousands and Decimal separators to space and comma
- Changing Default Language has no effect on issue.
- Default Language should determine thousands separator and decimal delimiter (but it doesn't).
2. Go to Batch Data Entry for Contributions form
3. Enter Number of Items equals 1 and a Total Amount containing a decimal and Save
4. On next form, enter the Amount with a decimal
- Total Amount Entered does not show the decimal
Current behaviour
----------------------------------------
Total Amount Entered is calculated using using JS parseFloat, which ignores localization.
The total does not show any decimal amount, and if the thousands separator is used, is even worse.
For example, in a French locale, 1000,10 & 1000,10 will total to 2000,00
And 1 000,10 & 1 000,10 will total to 2,00
Expected behaviour
----------------------------------------
The total calculation needs to use a locale aware method.
Suggested solution
---
Use localized input (parseMoney) and output (formatMoney) functions.
parseMoney replaces parseFloat but needs to be written.
https://github.com/eileenmcnaughton/civicrm-core/blob/7fd53dcad9604faff6b377a251f7227ab7f6d909/templates/CRM/Batch/Form/Entry.tpl#L287
```
function calculateActualTotal() {
var total = 0;
cj('input[id*="_total_amount"]').each(function () {
if (cj(this).val()) {
total += CRM.parseMoney(cj(this).val());
}
});
cj('.batch-actual-total').html(CRM.formatMoney(total));
}
```https://lab.civicrm.org/dev/core/-/issues/1239Batch merge dedupe when using the ALL button gets confused if you've selected...2019-09-09T15:05:10ZDaveDBatch merge dedupe when using the ALL button gets confused if you've selected some rows1. Set up some contacts that when deduped won't have conflicts, like just first/last name and email that are identical.
1. Go to the find and merge duplicates screen.
1. Click on Use a rule for some rule.
1. Check some checkboxes for som...1. Set up some contacts that when deduped won't have conflicts, like just first/last name and email that are identical.
1. Go to the find and merge duplicates screen.
1. Click on Use a rule for some rule.
1. Check some checkboxes for some rows from the results.
1. There's two batch merge buttons - one for selected rows and one for ALL. Click the ALL button.
1. It starts to do the dedupe and then returns you to the listing screen the same as if it had found conflicts, except there are no conflicts.
1. It doesn't prevent you from then proceeding to get them merged, it's just weird.
1. If you don't select any rows first then it works as expected and just does the dedupe on all the rows.https://lab.civicrm.org/dev/financial/-/issues/58Batch payment page breaks when an exported activity has no file to download2019-08-23T22:27:09ZJonGoldBatch payment page breaks when an exported activity has no file to downloadI had a batch export fail because `max_execution_time` failed. This left me with an exported batch without an export file - which causes the View Batches page to fail with the backtrace below.
My patch will prevent the page from crashi...I had a batch export fail because `max_execution_time` failed. This left me with an exported batch without an export file - which causes the View Batches page to fail with the backtrace below.
My patch will prevent the page from crashing so it's possible to view the batch page,
```
May 28 20:13:12 [info] $backTrace = #0 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Core/Error.php(385): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(1196): CRM_Core_Error::fatal()
#2 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Batch/BAO/Batch.php(337): CRM_Core_DAO::getFieldValue("CRM_Core_DAO_EntityFile", NULL, "file_id", "entity_id")
#3 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Batch/BAO/Batch.php(172): CRM_Batch_BAO_Batch::getBatchList((Array:31))
#4 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Batch/Page/AJAX.php(100): CRM_Batch_BAO_Batch::getBatchListSelector((Array:31))
#5 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(277): CRM_Batch_Page_AJAX::getBatchList()
#6 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(85): CRM_Core_Invoke::runItem((Array:12))
#7 /home/jon/local/agbud8/htdocs/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:3))
#8 /home/jon/local/agbud8/htdocs/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke((Array:3))
#9 /home/jon/local/agbud8/htdocs/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(75): Drupal\civicrm\Civicrm->invoke((Array:3))
#10 [internal function](): Drupal\civicrm\Controller\CivicrmController->main((Array:3), "")
#11 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array((Array:2), (Array:2))
#12 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/Render/Renderer.php(582): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#13 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#14 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext((Array:2), (Array:2))
#15 /home/jon/local/agbud8/htdocs/vendor/symfony/http-kernel/HttpKernel.php(151): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#16 /home/jon/local/agbud8/htdocs/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#17 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#18 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#19 /home/jon/local/agbud8/htdocs/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#20 /home/jon/local/agbud8/htdocs/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#21 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#22 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#23 /home/jon/local/agbud8/htdocs/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#24 /home/jon/local/agbud8/htdocs/web/core/lib/Drupal/Core/DrupalKernel.php(693): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#25 /home/jon/local/agbud8/htdocs/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#26 {main}
```5.18.0https://lab.civicrm.org/dev/core/-/issues/3092Batch search form/results incorrect vis-a-vis status2023-11-29T05:03:26ZlcarterBatch search form/results incorrect vis-a-vis statusThe batch search form searches based on contribution status, but has a results column displaying transaction/payment status. This is confusing and undesirable.
Even when the search is specifically limited to contributions with complete...The batch search form searches based on contribution status, but has a results column displaying transaction/payment status. This is confusing and undesirable.
Even when the search is specifically limited to contributions with completed status, some results may show pending status; this is confusing to the user. See https://www.screencast.com/t/XgNTPieRXz - the box is indicating two transaction records for the same dues payment.
Proposal:
1. Expose a search filter field for civicrm_financial_trxn.status_id as well as contribution status.
2. In Search Results, change the column title from Status to something more clear, like Financial Transaction Status or (slightly inaccurate but generally true and more understandable) Payment Status.
3. In Search Results, add a column title Contribution Status that displays the civicrm_contribution.status_id field.
Discussion:
This functionality has been around for a long time and not used much. Perhaps that because it has a confusing UX. The proposal would not break anything for existing users.
However, for many years there was a desire to get rid of Contribution Status, partly for reasons that @lcarter is raising here: a field on contribution record can't do the job of representing all of the statuses of multiple steps in multiple payments, for example, perhaps followed by refunds or cancellation or some failure attempts in the middle.