Test fix - legacy api4 wrapper should always return id
[civicrm-core.git] / release-notes / 5.20.0.md
1 # CiviCRM 5.20.0
2
3 Released December 4, 2019
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | **Fix security vulnerabilities?** | **yes** |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | **Require attention to configuration options?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="security"></a>Security advisories
25
26 - **[CIVI-SA-2019-24](https://civicrm.org/advisory/civi-sa-2019-24-csrf-in-apiv4-ajax-end-point): Cross-site request forgery in APIv4 AJAX endpoint**
27
28 ## <a name="features"></a>Features
29
30 ### Core CiviCRM
31
32 - **Replace complex logic in email templates with simple logic on billing name
33 and credit card
34 ([dev/core#1344](https://lab.civicrm.org/dev/core/issues/1344):
35 [15653](https://github.com/civicrm/civicrm-core/pull/15653),
36 [15688](https://github.com/civicrm/civicrm-core/pull/15688),
37 [15646](https://github.com/civicrm/civicrm-core/pull/15646),
38 [15651](https://github.com/civicrm/civicrm-core/pull/15651),
39 [15682](https://github.com/civicrm/civicrm-core/pull/15682) and
40 [15680](https://github.com/civicrm/civicrm-core/pull/15680))**
41
42 The Billing Name and Address and Credit Card Information sections are now
43 included when the billing name and credit card type fields are available,
44 respectively. This replaces template-based logic regarding the payment
45 method, amount, waitlist status, and more with the logic used when collecting
46 and processing this information.
47
48 - **Contact Display Name vs Email Greeting in Workflow templates
49 ([dev/core#781](https://lab.civicrm.org/dev/core/issues/781):
50 [15491](https://github.com/civicrm/civicrm-core/pull/15491))**
51
52 This ensures all standard workflow message templates use the contact's email
53 greeting. Before this change some standard workflow message templates used a
54 hard-coded "Dear" followed by the display name.
55
56 - **Workflow templates - Update 'Thank You' & other text corrections
57 ([dev/core#1316](https://lab.civicrm.org/dev/core/issues/1316):
58 [15749](https://github.com/civicrm/civicrm-core/pull/15749),
59 [15745](https://github.com/civicrm/civicrm-core/pull/15745),
60 [15503](https://github.com/civicrm/civicrm-core/pull/15503) and
61 [15751](https://github.com/civicrm/civicrm-core/pull/15751))**
62
63 Improves grammar and readability of the standard workflow templates.
64
65 - **Workflow templates - Include displayname in subject
66 ([dev/core#1320](https://lab.civicrm.org/dev/core/issues/1320):
67 [15513](https://github.com/civicrm/civicrm-core/pull/15513))**
68
69 This adds a contact's display name to the subject of some workflow templates
70 to make them more personal, less likely to be grouped together by email
71 clients, and more likely to be opened.
72
73 - **Replace Open Flash Charts with charts that work
74 ([15448](https://github.com/civicrm/civicrm-core/pull/15448),
75 [268](https://github.com/civicrm/civicrm-packages/pull/268),
76 [267](https://github.com/civicrm/civicrm-packages/pull/267) and
77 [15493](https://github.com/civicrm/civicrm-core/pull/15493))**
78
79 These changes move CiviCRM charts to use dc.js (which is based upon
80 Crossfilter and D3.js) instead of the outdated Open Flash Chart library.
81
82 - **Add freeform relative date for 'This Fiscal Year'
83 ([14894](https://github.com/civicrm/civicrm-core/pull/14894))**
84
85 Adds support for freeform relative dates (this_n.year & this_n.fiscal_year).
86 To utilize this new functionality administrators must add an option value to
87 the `relative_date_filters` option group.
88
89 - **Remove the sentence: "Please print this page for your records." from the
90 various CiviCRM tpls
91 ([dev/core#371](https://lab.civicrm.org/dev/core/issues/371):
92 [15467](https://github.com/civicrm/civicrm-core/pull/15467))**
93
94 Removes the text "Print for your records" to discourage people from wasting
95 paper.
96
97 - **Remove Print Icon
98 ([15322](https://github.com/civicrm/civicrm-core/pull/15322))**
99
100 This removes the print icon from the upper left hand corner of all pages. The
101 icon generally linked to a version of the page stripped of styling, but
102 printing the page through the browser's normal print command nearly always
103 looks better.
104
105 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
106 (Work towards [dev/core#560](https://lab.civicrm.org/dev/core/issues/560):
107 [15608](https://github.com/civicrm/civicrm-core/pull/15608) and
108 [15623](https://github.com/civicrm/civicrm-core/pull/15623))**
109
110 Works towards throwing exceptions (instead of fatal errors) in
111 several places including if aborting because if a type of a param error.
112
113 - **Make relationship description searchable
114 ([dev/core#1257](https://lab.civicrm.org/dev/core/issues/1257):
115 [15358](https://github.com/civicrm/civicrm-core/pull/15358))**
116
117 Exposes the relationship description field to the advanced search form.
118
119 - **Add in method to allow extensions to opt out of using temporary table when
120 building ACL Contact Cache
121 ([15701](https://github.com/civicrm/civicrm-core/pull/15701))**
122
123 Adds in getter and setter functions and a static class variable to
124 determine if a temporary table should be used when building the ACL contact
125 Cache
126
127 - **Re-arrange change log advanced search panel so both modified fields are next
128 to each other ([15712](https://github.com/civicrm/civicrm-core/pull/15712))**
129
130 This switches the modified date and changed date to appear in the reverse
131 order in order to improve the appearance.
132
133 - **Schema changes for PaymentProcessor and PaymentProcessorType to support
134 apiv4 entities ([15733](https://github.com/civicrm/civicrm-core/pull/15733))**
135
136 Begins work to add `PaymentProcesor` and `PaymentProcessorType` entities to
137 APIv4.
138
139 - **Remove CIVICRM_SUPPORT_MULTIPLE_LOCKS and make it always enabled if
140 available ([15604](https://github.com/civicrm/civicrm-core/pull/15604))**
141
142 Makes `CIVICRM_SUPPORT_MULTIPLE_LOCKS` turned on by default so that by default
143 sites can use multiple locks on modern versions of MySQL/MariaDB.
144
145 - **Add help text to payment processor subject field
146 ([15590](https://github.com/civicrm/civicrm-core/pull/15590))**
147
148 Improves consistency by adding a help icon to the subject field on the
149 "Settings - Payment Processor" form (CiviCRM Admin bar -> Adminster -> System
150 Settings -> Payment Processors add or edit a payment processor).
151
152 - **Generic Settings Pages: Make getSettingPageFilter() public so we can use it
153 in hooks ([15576](https://github.com/civicrm/civicrm-core/pull/15576))**
154
155 Makes the `_filter` property available in hooks so extension developers can
156 use it.
157
158 - **Update api3 explorer url path for consistency
159 ([15597](https://github.com/civicrm/civicrm-core/pull/15597))**
160
161 Changes the path to access the Api3 explorer to `civicrm/api3` so that it
162 is consistent with `civicrm/api4`, `civicrm/api` now redirects to
163 `civicrm/api3`.
164
165 - **Improvements to copying events and contribution pages
166 ([15144](https://github.com/civicrm/civicrm-core/pull/15144))**
167
168 Ensures when an admin copies an event or contribution page the current user ID
169 and time are stored in the `created_date` and `created_id` fields.
170 Additionally, ensures when copying a contribution page the user is
171 redirected to the 'edit' screen for the newly copied page.
172
173 - **Allow custom ts functions in extensions; defer custom ts calls until booted
174 ([15411](https://github.com/civicrm/civicrm-core/pull/15411))**
175
176 Makes it possible for developers to write custom translate functions in
177 extensions.
178
179 - **Update Sending Emails section of configuration checklist
180 ([dev/core#1278](https://lab.civicrm.org/dev/core/issues/1278):
181 [15359](https://github.com/civicrm/civicrm-core/pull/15359))**
182
183 Improves the readability of the "Sending Emails" section of the configuration
184 checklist.
185
186 - **Support street address sorting for contact detail report
187 ([15581](https://github.com/civicrm/civicrm-core/pull/15581))**
188
189 Improves the "Contact Detail" report template by making it possible to sort by
190 "Street Address".
191
192 ### CiviCase
193
194 - **Unable to use url search arguments in 'Advanced Search' using force=1 (Work
195 Towards [dev/core#692](https://lab.civicrm.org/dev/core/issues/692):
196 [15370](https://github.com/civicrm/civicrm-core/pull/15370))**
197
198 Improves the "Find Cases" form's ability to accept url arguments.
199
200 - **Convert case activity links to 'actionLinks'
201 ([14349](https://github.com/civicrm/civicrm-core/pull/14349))**
202
203 Converts Case activity links to use actionLinks so they can be accessed by
204 extension developers using the hook `hook_civicrm_links`.
205
206 - **Format details for case custom data activity in a human readable format
207 ([13365](https://github.com/civicrm/civicrm-core/pull/13365))**
208
209 Improves readability of the activity details saved to case "Change Custom
210 Data" activities.
211
212 ### CiviContribute
213
214 - **Payment processor names: separate internal and external usage
215 ([dev/financial#2](https://lab.civicrm.org/dev/financial/issues/2):
216 [15418](https://github.com/civicrm/civicrm-core/pull/15418),
217 [15497](https://github.com/civicrm/civicrm-core/pull/15497),
218 [15617](https://github.com/civicrm/civicrm-core/pull/15617) and
219 [15632](https://github.com/civicrm/civicrm-core/pull/15632))**
220
221 Adds a new field "Payment Processor Title" to the "Edit Payment Processor"
222 form if configured the title will appear on front end forms. This allows
223 administrators to configure internal and external names for payment
224 processors. For example, internally a payment processor may be called "Action
225 Fund - Stripe" while externally It may use the label "Credit Card". Ensures
226 that the front end title of the payment processor is used in receipts when
227 available.
228
229 - **Payments - Where do we store IDs from payment processor?
230 ([dev/financial#57](https://lab.civicrm.org/dev/financial/issues/57):
231 [15468](https://github.com/civicrm/civicrm-core/pull/15468))**
232
233 Adds an `order_reference` field to `civicrm_financial_trxn` table. The
234 `order_reference` field is intended to hold the payment processor provided
235 external reference to an order / invoice (when applicable/possible).
236
237 - **New methodology for storing template contributions (Work towards
238 [dev/financial#72](https://lab.civicrm.org/dev/financial/issues/72):
239 [15472](https://github.com/civicrm/civicrm-core/pull/15472),
240 [15470](https://github.com/civicrm/civicrm-core/pull/15470),
241 [15550](https://github.com/civicrm/civicrm-core/pull/15550),
242 [15431](https://github.com/civicrm/civicrm-core/pull/15431),
243 [15456](https://github.com/civicrm/civicrm-core/pull/15456),
244 [15433](https://github.com/civicrm/civicrm-core/pull/15433) and
245 [15419](https://github.com/civicrm/civicrm-core/pull/15419))**
246
247 Moves towards a new methodology for storing template contributions by: using a
248 standard function to create contribution status dropdowns for batch
249 contribution entry and the batch pending contribution status update task, adds
250 a new contribution status "Template", adds an `is_template` field to
251 contributions. Adds some logic surrounding pulling Contributions templates
252 using the new `is_template` field.
253
254 - **PaymentProcessor.pay should handle 'invoice_id' & map it to a getter so
255 processors can retrieve it
256 ([dev/financial#77](https://lab.civicrm.org/dev/financial/issues/77):
257 [15639](https://github.com/civicrm/civicrm-core/pull/15639))**
258
259 Makes `contribution_id` required when calling the `PaymentProcessor.pay` API.
260
261 - **Order.create should not require total amount
262 ([dev/financial#73](https://lab.civicrm.org/dev/financial/issues/73):
263 [15501](https://github.com/civicrm/civicrm-core/pull/15501))**
264
265 Updates the Order.create API to require `total_amount` OR `line_items` instead
266 of solely requiring `total_amount`.
267
268 - **Order api updates to fix participant handling & deprecate creating
269 'completed ([15514](https://github.com/civicrm/civicrm-core/pull/15514))**
270
271 Improves the Order api by making it so status is no longer required for
272 creating participants and creating completed orders is deprecated.
273
274 - **Develop getter & setter structure for Payment classes (Work towards
275 [dev/financial#82](https://lab.civicrm.org/dev/financial/issues/82):
276 [15707](https://github.com/civicrm/civicrm-core/pull/15707) and
277 [15509](https://github.com/civicrm/civicrm-core/pull/15509))**
278
279 Begins work to refactor how CRM_Core_Payment works so that `doPayment` accepts
280 a consistent defined set of variables.
281
282 - **Contribution Summary report only shows first 50 entries
283 ([dev/core#1252](https://lab.civicrm.org/dev/core/issues/1252):
284 [15528](https://github.com/civicrm/civicrm-core/pull/15528))**
285
286 Adds support for paging on the Contribution Summary Report.
287
288 - **Provide precautionary handling for theoretical error scenario.
289 ([15748](https://github.com/civicrm/civicrm-core/pull/15748))**
290
291 Provides protection against fatal errors when adding payments if
292 `financial_items` have not been created.
293
294 - **Support chaining Payment.create from Order api
295 ([15548](https://github.com/civicrm/civicrm-core/pull/15548))**
296
297 Adds support to chain a `Payment.create` call from an `Order.create` api call.
298
299 - **Translate two string in AdditionalPayment form
300 ([15577](https://github.com/civicrm/civicrm-core/pull/15577))**
301
302 Translates two strings on the Additional Payment form.
303
304 ### WordPress Integration
305
306 - **Switch WP over to new installer
307 ([dev/wordpress#37](https://lab.civicrm.org/dev/wordpress/issues/37):
308 [165](https://github.com/civicrm/civicrm-wordpress/pull/165))**
309
310 Improves the CiviCRM installation process for WordPress sites by redirecting
311 users to an install screen when the CiviCRM plugin is activated.
312
313 ## <a name="bugs"></a>Bugs resolved
314
315 ### Core CiviCRM
316
317 - **Add support for bulkcreates (Work towards
318 [dev/core#1093](https://lab.civicrm.org/dev/core/issues/1093):
319 [15599](https://github.com/civicrm/civicrm-core/pull/15599))**
320
321 Fixes a fatal error when updating a custom field with logging enabled.
322
323 - **Attachment API for event custom field gives: Failed to run Permissions
324 checks ([dev/core#1205](https://lab.civicrm.org/dev/core/issues/1205):
325 [15580](https://github.com/civicrm/civicrm-core/pull/15580))**
326
327 Fixes a bug where using the Attachment API for a custom file field would fail
328 with a permission denied error.
329
330 - **Email Processor drops the other attachments if there's more than 3
331 ([dev/core#1270](https://lab.civicrm.org/dev/core/issues/1270):
332 [15438](https://github.com/civicrm/civicrm-core/pull/15438))**
333
334 Fixes a bug where the email processor would drop attachments if there were
335 more attachments in the incoming email than the limit set at system settings -
336 misc.
337
338 - **Fix CSS for public select2 elements regardless of parent theme box-size
339 ([15442](https://github.com/civicrm/civicrm-core/pull/15442))**
340
341 Fixes the height of select2 boxes (so that they do not appears squished) on
342 front facing forms across CMS's and browsers.
343
344 - **CiviCRM Dashboard does not respect multiple domains
345 ([dev/core#1200](https://lab.civicrm.org/dev/core/issues/1200):
346 [15283](https://github.com/civicrm/civicrm-core/pull/15283))**
347
348 Ongoing fixes for the CiviCRM Dashboard when using multiple Domains.
349
350 - **Warning: array_key_exists(): The first argument should be either a string or
351 an integer in CRM_Contact_Form_Search::getModeValue()
352 ([dev/core#1347](https://lab.civicrm.org/dev/core/issues/1347):
353 [15650](https://github.com/civicrm/civicrm-core/pull/15650))**
354
355 Fixes a php warning on the advanced search form when opening some accordions.
356
357 - **Report improvements
358 ([CRM-21677](https://issues.civicrm.org/jira/browse/CRM-21677):
359 [15567](https://github.com/civicrm/civicrm-core/pull/15567))**
360
361 Removes redundant gender evaluation code from the Case Demographic Report
362 template.
363
364 - **Re-installation of Extension With Custom Fields and Logging Enabled Causes
365 Error ([dev/core#1383](https://lab.civicrm.org/dev/core/issues/1383):
366 [15816](https://github.com/civicrm/civicrm-core/pull/15816))**
367
368 - **Php 7.3 fix - don't mis-use continue
369 ([15737](https://github.com/civicrm/civicrm-core/pull/15737))**
370
371 Fixes some php warnings regarding using continue where break would be
372 preferable for sites running PHP 7.3.
373
374 - **Allow regen.sh to work with either upper/lower case for CMS name to match
375 elsewhere ([15647](https://github.com/civicrm/civicrm-core/pull/15647))**
376
377 Ensures regen.sh works with both Proper and lower case CMS names.
378
379 - **Make sure labels match the actual date input format
380 ([15520](https://github.com/civicrm/civicrm-core/pull/15520))**
381
382 Ensures the labels of the date input format dropdown (under
383 `/civicrm/admin/setting/date`) match the actual value of the formats.
384
385 - **Can't search for activity subjects starting with 1 - and many more caching
386 issues ([dev/core#1411](https://lab.civicrm.org/dev/core/issues/1411):
387 [15918](https://github.com/civicrm/civicrm-core/pull/15918))**
388
389 The query to fill the SQL cache would fail in a variety of cases, either
390 returning no results or running a fresh, uncached set of results.
391
392 - **Fix fatal error when sorting by status in activity search
393 ([15923](https://github.com/civicrm/civicrm-core/pull/15923))**
394
395 - **E Notice 'info' Extension.php:248 -> When installing via cv
396 ([dev/core#1371](https://lab.civicrm.org/dev/core/issues/1371):
397 [15762](https://github.com/civicrm/civicrm-core/pull/15762))**
398
399 - **Reports show "&nbsp;" in filters with child-groups
400 ([dev/core#826](https://lab.civicrm.org/dev/core/issues/826):
401 [15293](https://github.com/civicrm/civicrm-core/pull/15293))**
402
403 - **Upgrade failure with 5.19 involving interaction between APIv4 and extensions
404 ([dev/core#1376](https://lab.civicrm.org/dev/core/issues/1376):
405 [15765](https://github.com/civicrm/civicrm-core/pull/15765))**
406
407 - **Fixing a fatal error when installing extensions with Option Values defined
408 in XML ([15643](https://github.com/civicrm/civicrm-core/pull/15643))**
409
410 - **Civi\Core\Container - Fix warning about Symfony 3=>4 and boot services
411 ([15704](https://github.com/civicrm/civicrm-core/pull/15704))**
412
413 - **Customfields attached to addresses break the profile page
414 ([dev/core#1324](https://lab.civicrm.org/dev/core/issues/1324):
415 [15541](https://github.com/civicrm/civicrm-core/pull/15541))**
416
417 - **Fix bug in SQL queue that can cause tasks to be run twice in a
418 multiprocess environment
419 ([15421](https://github.com/civicrm/civicrm-core/pull/15421))**
420
421 - **Fixes an issue where the two arrays weren't always being merged correctly
422 ([15482](https://github.com/civicrm/civicrm-core/pull/15482))**
423
424 - **Fix error when adding activities from Search Builder
425 ([15522](https://github.com/civicrm/civicrm-core/pull/15522))**
426
427 - **Do no invoke Hooks via UF unless container has been built or it is a hook
428 designed to run without container being built
429 ([15339](https://github.com/civicrm/civicrm-core/pull/15339))**
430
431 - **Ensure front-end hooks are only registered on main query
432 ([166](https://github.com/civicrm/civicrm-wordpress/pull/166))**
433
434 - **Fix E_NOTICE for is_required in address form
435 ([15423](https://github.com/civicrm/civicrm-core/pull/15423))**
436
437 - **Customfields of type Multiselect attached to an Address do not render in
438 profile page (appear empty)
439 ([dev/core#1282](https://lab.civicrm.org/dev/core/issues/1282):
440 [15375](https://github.com/civicrm/civicrm-core/pull/15375) and
441 [15638](https://github.com/civicrm/civicrm-core/pull/15638))**
442
443 - **Upgrade to CiviCRM 5.20.beta fails because of MessageTemplate error
444 ([marketing/civicrm-website#163](https://lab.civicrm.org/marketing/civicrm-website/issues/163):
445 [15844](https://github.com/civicrm/civicrm-core/pull/15844))**
446
447 This change allows the upgrade process to sidestep missing system workflow
448 message templates rather than failing when trying to update them.
449
450 - **Link to docs.civicrm.org instead of wiki
451 ([15973](https://github.com/civicrm/civicrm-core/pull/15973))**
452
453 Outdated links to the old CiviCRM wiki that appear in upgrade messages have
454 been replaced with links to the current user documentation.
455
456 - **Ensure that Relative key is not added for non Select Date is_search_range
457 custom fields ([15977](https://github.com/civicrm/civicrm-core/pull/15977) and
458 [16002](https://github.com/civicrm/civicrm-core/pull/16002))**
459
460 ### CiviCase
461
462 - **Fix longstanding name vs label problems for case roles
463 ([dev/core#1046](https://lab.civicrm.org/dev/core/issues/1046):
464 [15556](https://github.com/civicrm/civicrm-core/pull/15556),
465 [15483](https://github.com/civicrm/civicrm-core/pull/15483), and
466 [15939](https://github.com/civicrm/civicrm-core/pull/15939))**
467
468 Case roles are now defined in case types as relationship type names instead of
469 labels. This fixes a variety of bugs for CiviCRM instances with case roles
470 that rely on relationships where the label does not match the name. A new
471 system check will alert administrators if case types stored in XML files need
472 to be edited.
473
474 - **Saving a case type can give a php warning, but the warning is more hidden
475 than usual so it seems like everything is ok
476 ([dev/core#1335](https://lab.civicrm.org/dev/core/issues/1335):
477 [15554](https://github.com/civicrm/civicrm-core/pull/15554))**
478
479 Prevents a php warning "htmlspecialchars() expects parameter 1 to be string,
480 array given" when saving case type.
481
482 - **Reinstate Case ID search field
483 ([15935](https://github.com/civicrm/civicrm-core/pull/15935))**
484
485 This resolves a regression in 5.20.beta where the case search lacked a case ID
486 field.
487
488 - **Upgrade script to flip autoassignees using bidirectional relationship in
489 older civicase configs
490 ([15542](https://github.com/civicrm/civicrm-core/pull/15542))**
491
492 Fixes a visual display issue for sites with configured activity autoassignees
493 in a CiviCase timeline using "by relationship" with a bidirectional
494 relationship (e.g. sibling) prior to 5.16 . Specifically, sites with this
495 setup will see a blank on the case type edit screen. It doesn't affect
496 operation, and saving the case type doesn't lose any info, but it's a visual
497 confusion. This upgrade script flips the a's and b's for those settings.
498
499 - **Minor a_b/b_a mixup on case type edit screen
500 ([15412](https://github.com/civicrm/civicrm-core/pull/15412))**
501
502 - **Print Merge document from case search doesn't file on correct contact.
503 ([dev/core#893](https://lab.civicrm.org/dev/core/issues/893):
504 [15626](https://github.com/civicrm/civicrm-core/pull/15626))**
505
506 - **Ensure that using case_start_date_high and case_start_date_low etc in url
507 variables works in force=1 mode
508 ([15619](https://github.com/civicrm/civicrm-core/pull/15619))**
509
510 - **Minimal fix for new enotice on case.subject
511 ([15616](https://github.com/civicrm/civicrm-core/pull/15616))**
512
513 - **Clicking on a contact's cases tab gives Network Error Unable to reach the
514 server ([dev/core#1381](https://lab.civicrm.org/dev/core/issues/1381):
515 [15804](https://github.com/civicrm/civicrm-core/pull/15804))**
516
517 ### CiviContribute
518
519 - **Respect calling code passing in 'null' for creditnote_id.
520 ([15232](https://github.com/civicrm/civicrm-core/pull/15232))**
521
522 Fixes an issue where the contribution BAO disregards 'null' when passed in for
523 'credit_note_id'.
524
525 - **Change test to use preferred methods, fix revealed money bug
526 ([15622](https://github.com/civicrm/civicrm-core/pull/15622))**
527
528 Ensures that Payment.create cleans the `total_amount` field like
529 Contribution.create.
530
531 - **Membership and Event Related Contributions - shows all contributions
532 ([dev/core#1435](https://lab.civicrm.org/dev/core/issues/1435):
533 [16013](https://github.com/civicrm/civicrm-core/pull/16013))**
534
535 This resolves a regression when viewing a membership or participant record
536 where the related contributions show all contributions, not those related to
537 the record.
538
539 - **Fix cancel payment action to reverse financial items related to cancelled
540 payment ([15630](https://github.com/civicrm/civicrm-core/pull/15630))**
541
542 Fixes a bug where the `financial_entity_trxn` entries associated with a
543 canceled payment were not being reversed as they should have been.
544
545 - **Missing Financial type and Credit Account Code in Bookkeeping Transaction
546 Report (Work towards
547 [dev/financial#40](https://lab.civicrm.org/dev/financial/issues/40):
548 [15740](https://github.com/civicrm/civicrm-core/pull/15740))**
549
550 Fixes an issue whereby `civicrm_entity_financial_trxn` records for the
551 `civicrm_financial_item` table were not created when refunding against line
552 items with a quantity of zero - i.e. where there were selected check boxes &
553 they were reversed.
554
555 - **Deprecate Contribute.transact api
556 ([dev/financial#79](https://lab.civicrm.org/dev/financial/issues/79):
557 [15564](https://github.com/civicrm/civicrm-core/pull/15564),
558 [15591](https://github.com/civicrm/civicrm-core/pull/15591) and
559 [15504](https://github.com/civicrm/civicrm-core/pull/15504))**
560
561 Marks the `Contribute.transact` as deprecated in the API explorer, adds a
562 noisy deprecation warning to Contribute.transact and moves it to its own file.
563
564 - **Cleanup date handling on Payment.create
565 ([15687](https://github.com/civicrm/civicrm-core/pull/15687))**
566
567 Ensures that adding a payment on the `AdditionalPaymentForm` does not change
568 the Contribution `receive_date`.
569
570 - **Ensure contributionRecurID is set on processor
571 ([15673](https://github.com/civicrm/civicrm-core/pull/15673))**
572
573 Ensures that `contributionRecurID` is available to payment processors that
574 need it in `cancelSubscription`.
575
576 - **fix 'balance due' on Pledge Detail for non-US installs
577 ([15543](https://github.com/civicrm/civicrm-core/pull/15543))**
578
579 Fixes a bug where the Pledge Detail report crashed when "Balance Due" was
580 selected and the label of either of the pledge statuses "Completed" or
581 "Canceled" had been modified.
582
583 - **Record Refund fails due to thousands separator in amount
584 ([dev/core#1409](https://lab.civicrm.org/dev/core/issues/1409):
585 [15889](https://github.com/civicrm/civicrm-core/pull/15889))**
586
587 This bug was sidestepped by removing the Net Amount field on the Record Refund
588 form.
589
590 - **Incorrect allocation of payment on an edited multi-line item event
591 registration
592 ([dev/financial#34](https://lab.civicrm.org/dev/financial/issues/34):
593 [14763](https://github.com/civicrm/civicrm-core/pull/14763))**
594
595 - **Incorrect Allocation of refunded line items on Multi Event Registrations
596 ([dev/financial#94](https://lab.civicrm.org/dev/financial/issues/94):
597 [15664](https://github.com/civicrm/civicrm-core/pull/15664))**
598
599 - **Conditionally add contribution metadata for advanced search only if the user
600 has access to CiviContribute
601 ([15966](https://github.com/civicrm/civicrm-core/pull/15966))**
602
603 - **Fix ambiguous column in Contribution Search query with ORDER BY
604 ([15899](https://github.com/civicrm/civicrm-core/pull/15899))**
605
606 This fixes an issue where columns whose names are not unique in the underlying
607 query of a search cause a database error when they're used as a sort column.
608
609 - **Custom Search: Find Contributors by Aggregate Totals does not return results
610 if 'Choose date range' is selected and end date is empty
611 ([dev/core#1297](https://lab.civicrm.org/dev/core/issues/1297):
612 [15415](https://github.com/civicrm/civicrm-core/pull/15415))**
613
614 - **Custom Search: Search actions broken on Find Contributors by Aggregate
615 Totals ([dev/core#1377](https://lab.civicrm.org/dev/core/issues/1377):
616 [15873](https://github.com/civicrm/civicrm-core/pull/15873))**
617
618 - **Fix Sybunt to select mark rows as selected
619 ([15872](https://github.com/civicrm/civicrm-core/pull/15872))**
620
621 This resolves a bug where checking result rows on the SYBUNT custom search
622 would not actually select them or increment the "selected" count of rows.
623
624 - **Remove unhelpful alert from contribution search
625 ([15787](https://github.com/civicrm/civicrm-core/pull/15787))**
626
627 This removes the "We did not recognize the search field..." warning that would
628 appear when searching on certain fields even as the search would accurately
629 filter on the field's value.
630
631 - **Save & Next button on Contribution Page Widgets tab does not move user to
632 next step ([dev/core/1266](https://lab.civicrm.org/dev/core/issues/1266):
633 [15323](https://github.com/civicrm/civicrm-core/pull/15323))**
634
635 - **Fix parameters for statusBounce in AdditionalPayment
636 ([15579](https://github.com/civicrm/civicrm-core/pull/15579))**
637
638 - **Fix deprecation warning on Price Set report
639 ([15952](https://github.com/civicrm/civicrm-core/pull/15952))**
640
641 - **RepeatTransaction API incorrectly calculates the total amount when recur
642 payment has tax amount.
643 ([dev/core#1317](https://lab.civicrm.org/dev/core/issues/1317):
644 [15517](https://github.com/civicrm/civicrm-core/pull/15517))**
645
646 - **Incorrect line items recorded with contribution repeattransaction api.
647 ([dev/core#1367](https://lab.civicrm.org/dev/core/issues/1367):
648 [15735](https://github.com/civicrm/civicrm-core/pull/15735))**
649
650 - **Contribution Detail Report gives incorrect results when `force=1`
651 ([dev/report#20](https://lab.civicrm.org/dev/report/issues/20):
652 [15315](https://github.com/civicrm/civicrm-core/pull/15315))**
653
654 - **Fix typo in parameter description for PaymentProcessor.pay
655 ([15476](https://github.com/civicrm/civicrm-core/pull/15476))**
656
657 - **Fix Payment.create with a negative value to create the correct financial
658 items ([15705](https://github.com/civicrm/civicrm-core/pull/15705))**
659
660 - **Fix Payment.create bug whereby payment_processor_id is not being used for
661 the to_account_id
662 ([15640](https://github.com/civicrm/civicrm-core/pull/15640))**
663
664 - **Fix bug whereby cidZero does not prepopulate billing details for selected
665 contact for pay later.
666 ([15565](https://github.com/civicrm/civicrm-core/pull/15565))**
667
668 - **Contribution Dashboard still uses broken Open Flash Charts
669 ([dev/core#1309](https://lab.civicrm.org/dev/core/issues/1309):
670 [15474](https://github.com/civicrm/civicrm-core/pull/15474))**
671
672 - **Fix 5.20 regression on retrieving template transaction with no logged in
673 user ([15976](https://github.com/civicrm/civicrm-core/pull/15976))**
674
675 ### CiviEvent
676
677 - **Event Participants actions (Print Name Badges, Export...) ignores search
678 criteria ([dev/core#1422](https://lab.civicrm.org/dev/core/issues/1422):
679 [15962](https://github.com/civicrm/civicrm-core/pull/15962))**
680
681 This resolves an issue where the action would be based upon all participants
682 of all events rather than all of the results of the current search.
683
684 - **Fix loading of profile fields on additional participant form
685 ([15698](https://github.com/civicrm/civicrm-core/pull/15698))**
686
687 Fixes a bug where no profile fields were loaded on the additional participant
688 form of an Online Registration form configured to accept multiple
689 participants.
690
691 - **Fix logic determining whether (masked) credit card details are displayed in
692 event online receipts
693 ([15532](https://github.com/civicrm/civicrm-core/pull/15532))**
694
695 Fixes Event online receipts to display credit card info if available.
696
697 ### CiviGrant
698
699 - **Grant in Edit mode doesn't show the associated contact and standardize all
700 screens accordingly.
701 ([dev/core#1065](https://lab.civicrm.org/dev/core/issues/1065):
702 [15362](https://github.com/civicrm/civicrm-core/pull/15362),
703 [15321](https://github.com/civicrm/civicrm-core/pull/15321) and
704 [15744](https://github.com/civicrm/civicrm-core/pull/15744))**
705
706 ### CiviMail
707
708 - **Add in unit test for namespaced fields in mailing reports and also fix issue
709 where by mailing_name has been namespaced also in 5.20 (Follow-up to
710 [dev/mail#56](https://lab.civicrm.org/dev/mail/issues/56) and
711 [dev/mail#57](https://lab.civicrm.org/dev/mail/issues/57):
712 [15782](https://github.com/civicrm/civicrm-core/pull/15782))**
713
714 ### CiviMember
715
716 - **Duplicated inherited membership with multiple relationships when adding a
717 new relationship
718 ([dev/core#1361](https://lab.civicrm.org/dev/core/issues/1361):
719 [15731](https://github.com/civicrm/civicrm-core/pull/15731))**
720
721 Fixes a bug where duplicate inherited relationships were being created for the
722 same membership.
723
724 - **Agile fixFix inherited membership being deleted when there is still a valid
725 relationship
726 ([15062](https://github.com/civicrm/civicrm-core/pull/15062))**
727
728 Fixes a bug where contacts with two or more relationships to a member contact
729 would lose their inherited relationship if one of their other relationships
730 was deleted.
731
732 - **Unable to edit the membership end date for members that have a recurring
733 payment ([dev/core#1126](https://lab.civicrm.org/dev/core/issues/1126):
734 [15540](https://github.com/civicrm/civicrm-core/pull/15540))**
735
736 ### Backdrop Integration
737
738 - **Backdrop support for adding roles and perms
739 ([infra/ops#906](https://lab.civicrm.org/infra/ops/issues/906):
740 [15571](https://github.com/civicrm/civicrm-core/pull/15571))**
741
742 Ensures that one can build a Backdrop/CiviCRM site with a demo user with
743 the permissions expected of a demo user.
744
745 ### WordPress Integration
746
747 - **Reinstate traversal as "method of last resort" to find WordPress (Follow-up
748 from [dev/core#1412](https://lab.civicrm.org/dev/core/issues/1412):
749 [15929](https://github.com/civicrm/civicrm-core/pull/15929))**
750
751 This restores code removed in 5.19.3 to resolve the location of the CiviCRM
752 code in WordPress, only executing it as a fallback method if the new method
753 fails.
754
755 ## <a name="misc"></a>Miscellany
756
757 - **Replace jcalendar instances with datepicker
758 ([dev/core#561](https://lab.civicrm.org/dev/core/issues/561):
759 [15661](https://github.com/civicrm/civicrm-core/pull/15661),
760 [15677](https://github.com/civicrm/civicrm-core/pull/15677),
761 [15694](https://github.com/civicrm/civicrm-core/pull/15694),
762 [15671](https://github.com/civicrm/civicrm-core/pull/15671),
763 [15637](https://github.com/civicrm/civicrm-core/pull/15637),
764 [15633](https://github.com/civicrm/civicrm-core/pull/15633),
765 [15614](https://github.com/civicrm/civicrm-core/pull/15614),
766 [15710](https://github.com/civicrm/civicrm-core/pull/15710),
767 [15719](https://github.com/civicrm/civicrm-core/pull/15719),
768 [15618](https://github.com/civicrm/civicrm-core/pull/15618),
769 [15636](https://github.com/civicrm/civicrm-core/pull/15636),
770 [15693](https://github.com/civicrm/civicrm-core/pull/15693),
771 [15711](https://github.com/civicrm/civicrm-core/pull/15711),
772 [15702](https://github.com/civicrm/civicrm-core/pull/15702) and
773 [15635](https://github.com/civicrm/civicrm-core/pull/15635))**
774
775 - **Api support for deduping (Code cleanup in preparation for
776 [dev/core#1230](https://lab.civicrm.org/dev/core/issues/1230):
777 [15184](https://github.com/civicrm/civicrm-core/pull/15184))**
778
779 - **group.get API (v3) fails to find groups of one group_type if group has
780 multiple types (Test for
781 [dev/core#1321](https://lab.civicrm.org/dev/core/issues/1321):
782 [15546](https://github.com/civicrm/civicrm-core/pull/15546))**
783
784 - **composer.{json,lock} - Make the "tplaner/when" exception for old PHP
785 reproducible ([15732](https://github.com/civicrm/civicrm-core/pull/15732))**
786
787 - **Add in xkerman/restricted-unserialize package
788 ([15730](https://github.com/civicrm/civicrm-core/pull/15730))**
789
790 - **INTL_IDNA_VARIANT_2003 deprecated in PHP_7.2
791 ([266](https://github.com/civicrm/civicrm-packages/pull/266))**
792
793 - **Extract contribution search functions to help with case search improvements
794 ([15373](https://github.com/civicrm/civicrm-core/pull/15373))**
795
796 - **Further cleanup and clarification on MembershipPayment
797 ([15407](https://github.com/civicrm/civicrm-core/pull/15407))**
798
799 - **The loop doth process too much, methinks
800 ([15473](https://github.com/civicrm/civicrm-core/pull/15473))**
801
802 - **[Membership-backoffice] Reduce reliance on multiple specific but confusing
803 class variables
804 ([14919](https://github.com/civicrm/civicrm-core/pull/14919))**
805
806 - **Simplify logic for displaying card details for Event online registration
807 Confirm, Thankyou page
808 ([15533](https://github.com/civicrm/civicrm-core/pull/15533))**
809
810 - **Fix typo in Manager.php
811 ([15518](https://github.com/civicrm/civicrm-core/pull/15518))**
812
813 - **Update my organisation
814 ([15469](https://github.com/civicrm/civicrm-core/pull/15469))**
815
816 - **Combine IF clause for readability.
817 ([15568](https://github.com/civicrm/civicrm-core/pull/15568))**
818
819 - **Switch creation of ParticipantPayment to use API
820 ([15500](https://github.com/civicrm/civicrm-core/pull/15500))**
821
822 - **Remove when package from packages
823 ([264](https://github.com/civicrm/civicrm-packages/pull/264))**
824
825 - **Cast result of getContributionBalance to float to match comment block.
826 ([15621](https://github.com/civicrm/civicrm-core/pull/15621))**
827
828 - **Remove obsolete supportStorageOfAccents() method.
829 ([15589](https://github.com/civicrm/civicrm-core/pull/15589))**
830
831 - **Upgrade When package to the lastest version
832 ([15223](https://github.com/civicrm/civicrm-core/pull/15223))**
833
834 - **Api4 explorer: Fix variable leaking to global scope
835 ([15615](https://github.com/civicrm/civicrm-core/pull/15615))**
836
837 - **Improve metadata support for table civicrm_mailing_job in search
838 ([15634](https://github.com/civicrm/civicrm-core/pull/15634))**
839
840 - **Change parent class on mailing_form
841 ([15629](https://github.com/civicrm/civicrm-core/pull/15629))**
842
843 - **Add uniquenames for mailing_name, mailing_job_status
844 ([15652](https://github.com/civicrm/civicrm-core/pull/15652))**
845
846 - **Add getQillValue fn to generalise qill string construct
847 ([15667](https://github.com/civicrm/civicrm-core/pull/15667))**
848
849 - **Remove scriptFee & scriptArray params
850 ([dev/event#19](https://lab.civicrm.org/dev/event/issues/19):
851 [15679](https://github.com/civicrm/civicrm-core/pull/15679))**
852
853 - **Fix the relationship direction in testSingleMembershipForTwoRelationships
854 ([15738](https://github.com/civicrm/civicrm-core/pull/15738))**
855
856 - **Remove recordPayment function.
857 ([15684](https://github.com/civicrm/civicrm-core/pull/15684))**
858
859 - **Eliminate silly parameter
860 ([15723](https://github.com/civicrm/civicrm-core/pull/15723))**
861
862 - **Use Yes-No radio instead of checkbox on search form.
863 ([15669](https://github.com/civicrm/civicrm-core/pull/15669))**
864
865 - **Cleanup following smart group conversions and fix the old name of the
866 relationship date relative fields for conversion and add a unit test
867 ([15648](https://github.com/civicrm/civicrm-core/pull/15648))**
868
869 - **Remove a redundant call to formatParamsForPaymentProcessor in
870 AdditionalPayment form
871 ([15578](https://github.com/civicrm/civicrm-core/pull/15578))**
872
873 - **Remove extraneous full stop, line
874 ([15531](https://github.com/civicrm/civicrm-core/pull/15531))**
875
876 - **Remove early return on joinTable
877 ([15721](https://github.com/civicrm/civicrm-core/pull/15721))**
878
879 - **Remove unused, hidden subsystem for "persistent DB tpl strings"
880 ([15660](https://github.com/civicrm/civicrm-core/pull/15660))**
881
882 - **Fix test setup Function to use order api
883 ([15620](https://github.com/civicrm/civicrm-core/pull/15620))**
884
885 - **Delete mkdocs.yml
886 ([15658](https://github.com/civicrm/civicrm-core/pull/15658))**
887
888 - **[NFC] minor simplification
889 ([15425](https://github.com/civicrm/civicrm-core/pull/15425))**
890
891 - **[NFC] code formatting
892 ([15424](https://github.com/civicrm/civicrm-core/pull/15424))**
893
894 - **[NFC] dev/core#1046 - minor consistency change
895 ([15486](https://github.com/civicrm/civicrm-core/pull/15486))**
896
897 - **[NFC] dev/core#1046 - more accurate column heading
898 ([15485](https://github.com/civicrm/civicrm-core/pull/15485))**
899
900 - **[NFC] comments tidy up …
901 ([15607](https://github.com/civicrm/civicrm-core/pull/15607))**
902
903 - **[NFC] dev/core#1336 Update doc blocks for various ACL related functions
904 ([15603](https://github.com/civicrm/civicrm-core/pull/15603))**
905
906 - **[NFC] Cleanup on exceptions
907 ([15750](https://github.com/civicrm/civicrm-core/pull/15750))**
908
909 - **(NFC) Remove windows-specific debugging code from 11 years ago
910 ([15736](https://github.com/civicrm/civicrm-core/pull/15736))**
911
912 - **[NFC] Allow users on backdrop to trigger regen.sh
913 ([15717](https://github.com/civicrm/civicrm-core/pull/15717))**
914
915 - **[NFC] Fix exception thrown to std CRM_Core_Exception
916 ([15716](https://github.com/civicrm/civicrm-core/pull/15716))**
917
918 - **[NFC] various code cleanup on CRM_Contact_BAO_Query
919 ([15713](https://github.com/civicrm/civicrm-core/pull/15713))**
920
921 - **[NFC] Test class preliminary clean up
922 ([15685](https://github.com/civicrm/civicrm-core/pull/15685))**
923
924 - **[NFC] test cleanup
925 ([15683](https://github.com/civicrm/civicrm-core/pull/15683))**
926
927 - **[NFC] define variable type
928 ([15681](https://github.com/civicrm/civicrm-core/pull/15681))**
929
930 - **[NFC] Remove unreachable lines
931 ([15672](https://github.com/civicrm/civicrm-core/pull/15672))**
932
933 - **[NFC] Test cleanup - switch to OrderApi in test setup, add throws, use sin…
934 ([15662](https://github.com/civicrm/civicrm-core/pull/15662))**
935
936 - **[NFC] reformat BAO_Case file
937 ([15627](https://github.com/civicrm/civicrm-core/pull/15627))**
938
939 - **[NFC] Add date information to MailingJob Schema
940 ([15628](https://github.com/civicrm/civicrm-core/pull/15628))**
941
942 - **[NFC] Add in debugging to try and resolve E2E Cache intermitant test …
943 ([15625](https://github.com/civicrm/civicrm-core/pull/15625))**
944
945 - **Fix test to be more valid
946 ([15743](https://github.com/civicrm/civicrm-core/pull/15743))**
947
948 - **Add test to lock in obscure custom join handling
949 ([15715](https://github.com/civicrm/civicrm-core/pull/15715))**
950
951 - **Test improvements
952 ([15720](https://github.com/civicrm/civicrm-core/pull/15720))**
953
954 - **Test calling CRM_Financial_BAO_PaymentProcessor::getPaymentProcessors
955 ([15499](https://github.com/civicrm/civicrm-core/pull/15499))**
956
957 - **Update tests to simulate labels that are not the same as names
958 ([15399](https://github.com/civicrm/civicrm-core/pull/15399))**
959
960 - **Add test for participant receipts, super minor consistency fix.
961 ([15525](https://github.com/civicrm/civicrm-core/pull/15525))**
962
963 - **[Code-quality] remove references to where_tables, where_clause
964 ([14891](https://github.com/civicrm/civicrm-core/pull/14891))**
965
966 - **REF Move ipAddress and CC expiry date to prepareParamsForPaymentProcessor
967 ([15291](https://github.com/civicrm/civicrm-core/pull/15291))**
968
969 - **REF Use the new prepareParamsForPaymentProcessor function in more places
970 ([15281](https://github.com/civicrm/civicrm-core/pull/15281))**
971
972 - **[REF] Remove transaction as part of minor code cleanup
973 ([15460](https://github.com/civicrm/civicrm-core/pull/15460))**
974
975 - **[ref] Simplify function signature as parameter is not used
976 ([15459](https://github.com/civicrm/civicrm-core/pull/15459))**
977
978 - **[REF] move definition of important values & retrieval outside payment…
979 ([15458](https://github.com/civicrm/civicrm-core/pull/15458))**
980
981 - **[REF] Minor cleanup to determine taxterm with a helper function.
982 ([15488](https://github.com/civicrm/civicrm-core/pull/15488))**
983
984 - **[REF] Replace deprecated function call with a more readable alternative
985 ([15489](https://github.com/civicrm/civicrm-core/pull/15489))**
986
987 - **[REF] remove call to deprecated function
988 ([15465](https://github.com/civicrm/civicrm-core/pull/15465))**
989
990 - **[REF] Fix typos and remove unused variables
991 ([15462](https://github.com/civicrm/civicrm-core/pull/15462))**
992
993 - **[REF] Rename balanceTrxnParams variable to paymentTrxnParams
994 ([15535](https://github.com/civicrm/civicrm-core/pull/15535))**
995
996 - **[REF] minor extraction with code to build dedupe arrays
997 ([15519](https://github.com/civicrm/civicrm-core/pull/15519))**
998
999 - **[REF] basic extraction of sendMails functionality along with a small test
1000 extension ([15516](https://github.com/civicrm/civicrm-core/pull/15516))**
1001
1002 - **[REF] remove obsolete code.
1003 ([15515](https://github.com/civicrm/civicrm-core/pull/15515))**
1004
1005 - **[REF] Deprecate calls to createCreditNoteId
1006 ([15492](https://github.com/civicrm/civicrm-core/pull/15492))**
1007
1008 - **[REF] minor extraction in dedupe code
1009 ([15587](https://github.com/civicrm/civicrm-core/pull/15587))**
1010
1011 - **[REF] minor extraction - Extract code to update line items to paid
1012 ([15602](https://github.com/civicrm/civicrm-core/pull/15602))**
1013
1014 - **[REF] Remove usage of CRM_ACL_BAO_Cache::deleteEntry in favour of usi…
1015 ([15611](https://github.com/civicrm/civicrm-core/pull/15611))**
1016
1017 - **[REF] Remove CRM_Exception in favour of CRM_Core_Exception
1018 ([15610](https://github.com/civicrm/civicrm-core/pull/15610))**
1019
1020 - **[REF] minor refactor towards removing complexity.
1021 ([15594](https://github.com/civicrm/civicrm-core/pull/15594))**
1022
1023 - **[REF] minor tidy ups on very nasty function
1024 ([15722](https://github.com/civicrm/civicrm-core/pull/15722))**
1025
1026 - **[REF] Remove early return on joinTable
1027 ([15718](https://github.com/civicrm/civicrm-core/pull/15718))**
1028
1029 - **[REF] remove as a return Param of getHierContactDetails
1030 ([15714](https://github.com/civicrm/civicrm-core/pull/15714))**
1031
1032 - **[REF] minor code simplification
1033 ([15728](https://github.com/civicrm/civicrm-core/pull/15728))**
1034
1035 - **[REF] Move calls to CRM_Core_BAO_FinancialTrxn::createDeferredTrxn back to
1036 the calling functions.
1037 ([15641](https://github.com/civicrm/civicrm-core/pull/15641))**
1038
1039 - **[REF] Refactor Smart Group Cache population code to be less intensive
1040 ([15588](https://github.com/civicrm/civicrm-core/pull/15588))**
1041
1042 - **[REF] Refactor ACL Contact Cache generation to be more efficient
1043 ([15592](https://github.com/civicrm/civicrm-core/pull/15592))**
1044
1045 - **[REF] extract chunk of code that creates the financial items for a given
1046 line. ([15613](https://github.com/civicrm/civicrm-core/pull/15613))**
1047
1048 - **[REF] Further deconstruction of updateFinancialAccounts
1049 ([15631](https://github.com/civicrm/civicrm-core/pull/15631))**
1050
1051 - **[REF] simplify definition of isARefund
1052 ([15601](https://github.com/civicrm/civicrm-core/pull/15601))**
1053
1054 ## <a name="credits"></a>Credits
1055
1056 This release was developed by the following code authors:
1057
1058 a-n The Artists Information Company - William Mortada; AGH Strategies - Alice
1059 Frumin, Andrew Hunt, Eli Lisseck; Agileware - Pengyi Zhang; Alexy
1060 Mikhailichenko; Australian Greens - Seamus Lee; Christian Wach; CiviCoop - Jaap
1061 Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
1062 CompuCorp- Camilo Rodriguez, Davi Alexandre, Omar Abu Hussein; Dave D;
1063 Electronic Frontier Foundation - Mark Burdett; Florian Kohrt; Freeform
1064 Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; Greenpeace CEE -
1065 Patrick Figel; iXiam - César Ramos; JMA Consulting - Monish Deb; John Kingsnorth;
1066 Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW
1067 Consulting - Matthew Wire; Mountev Ltd; Richard van Oosterhout; Squiffle
1068 Consulting - Aidan Saunders; SYSTOPIA Organisationsberatung - Björn Endres;
1069 Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton,
1070 Elliott Eggleston
1071
1072 Most authors also reviewed code for this release; in addition, the following
1073 reviewers contributed their comments:
1074
1075 a-n The Artists Information Company - William Mortada; Agileware - Justin
1076 Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan Dixon; Circle
1077 Interactive - Dave Jenkins, Pradeep Nayak; CompuCorp - Jamie Novick; Coop
1078 SymbioTIC - Mathieu Lutfy; Fuzion - Luke Stewart; iXiam - Vangelis Pantazis; JMA
1079 Consulting - Joe Murray; Nicol Wistreich; Ray Wright; Red Hot Irons - Heather
1080 Oliver; Skvare - Mark Hanna; OSSeed Technologies LLP - Sushant Paste
1081
1082 ## <a name="feedback"></a>Feedback
1083
1084 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
1085 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1086 and contact `@agh1`.