commit 66a66dcaad769cb4def29869ab3fe00915900c4f Author: Matt Blenkinsop Date: Wed Jan 21 09:47:01 2026 +0000 Bug 26355: Add cypress tests commit e6a759c7c3eb65adf1590210ffa9a0d2421af8b8 Author: Matt Blenkinsop Date: Wed Jan 21 09:46:39 2026 +0000 Bug 26355: Add unit and API tests commit 7867f7eb50fc6dcb15b8a0cbcdfcf18024c46e93 Author: Matt Blenkinsop Date: Wed Jan 21 09:46:08 2026 +0000 Bug 26355: Update opac-user and opac-memberentry to support the renewal workflow This is part of a sponsored piece of development from one of our customers. There was a specification of requirements but I was conscious of the ideas already discussed on this bug and wanted to try and develop a solution that would balance both sets of requirements. The concept works as follows: - Self-renewal can be enabled and controlled at a category level - The window within which it is available is customisable (both pre and post-expiry) - Defaults to the NotifyBorrowerDeparture syspref - The amount in fines that block self-renewal is customisable - Defaults to the category level charges and then the noissescharge preference - The message to display if renewal fails is customisable - Libraries can also add additional verification steps. This was a requirement for our customer and to enable it I’ve opted to use Patron attribute types because these are already configurable by category and library. This means you can add additional verification questions such as ‘Do you still live within X miles of the library?” - The self-renewal process will also respect the OPACPatronDetails and AutoApprovePatronProfileSettings sysprefs. If OPACPatronDetails is enabled, the renewal will redirect the patron to the OPAC details form and ask them to confirm their details are still correct. Any changes will be logged as patron modifications and approved in line with the auto approval syspref - Renewal happens regardless of whether OPACPatronDetails is enabled, only the details changes are logged as modification requests - Notifications are sent to the patron in line with their messaging preferences Test plan: 1. Apply all patches and reset_all 2. In the intranet, navigate to patron categories and edit the ‘Patron’ category 3. Scroll to the bottom, there should be a section called ‘Account expiry and self-renewal’ 4. Set ‘Allow self-renewal’ to Yes 5. Set Self-renewal availability period to be 10 days 6. Set Self-renewal availability post-expiry’ to also be 10 days and save 7. In system preferences, set the OPACPatronDetails preference to ‘Don’t allow’ 8. Choose a patron that has the ‘Patron’ type category 9. Edit that patron so that you can log into the OPAC and set their expiry date to be yesterday’s date 10. Log into the OPAC as that patron (it may be easiest to do this in incognito as we will be swapping between the intranet and OPAC throughout the test plan and it will remove the need to keep logging out and in) 11. You should see a message that says “You are eligible for self-renewal. Please click here to renew your account.” 12. Click that link - you will be presented with a modal that says “Are you sure you want to renew your account?” 13. Click “Close” - we don’t want to complete renewal yet as there is more functionality available to test 14. Navigate to the patron category again, set ‘Self-renewal availability post-expiry’ to be 0 15. Refresh the OPAC, the self-renewal link should not be there as we are now outside the patron self-renewal window 16. Undo that change in the patron category, the link should reappear when refreshing the OPAC 17. Now set the patron’s expiry date to be tomorrow 18. In the category, set ‘Self-renewal availability period’ to 0 19. Refresh the OPAC, it should still show the link as it is defaulting to NotifyBorrowerDeparture 20. Set NotifyBorrowerDeparture to 0 21. Refresh the OPAC, the link should vanish 22. In the category, restore ‘Self-renewal availability period’ to 10 days 23. Refresh the OPAC, the link should reappear 24. In the intranet, set the patron to be debarred using a manual restriction 25. In the OPAC refresh the page - self-renewal should no longer be available 26. Remove the restriction - the renewal link will be visible again 27. Set a fine on the patron record of 6 USD 28. Refresh the OPAC, the self-renewal link will be gone because we are over the global ‘noissuescharge’ preference value of 5 29. In the category, set ‘Checkout charge limit’ to 7 30. Refresh the OPAC, the link will be visible because we are now under the category charge 31. Add an additional fine of 2 to the patron account 32. Refresh the OPAC, the self-renewal link is gone 33. In the category, set ‘Self-renewal charge limit’ to be 10 34. Refresh the OPAC, the link will be visible again 35. In the category, set ‘Self-renewal failure message’ to be whatever you want 36. In the OPAC, refresh the page and then click into the self-renewal process 37. This time, click “No” - you should see the failure message you have just set 38. Click “Close” and refresh the page to reset this message 39. In the Intranet, navigate to Admin > Patron attribute types 40. Click to create a new attribute 41. The code isn’t important here but we do need a description - this can be anything for the plan, for example “Do you still live locally to this library?” 42. Tick the new checkbox - Self-renewal verification check 43. Create a second attribute, this time set the description to something like “We don’t want to see this one!”. Do NOT click the self-renewal checkbox this time 44. In the OPAC, refresh the page and then click the renewal link again 45. You should be met with the modal, this time asking the verification question we just set up in the patron attributes 46. Click “Yes” - you should see the “Are you sure you want to renew your account?” message again 47. The second attribute that we set up without the self-renewal checkbox selected should not appear 48. This time when prompted with the “Are you sure” message, click “Yes” 49. The page should refresh and display a confirmation with the new expiry date. 50. In the intranet, view the patron’s record - the date should have been updated 51. In the Modification log tab, there should be a log entry for “Membership renewed” 52. Change the patron’s expiry date again, this time to be yesterday’s date 53. In the OPAC, click on “Personal detail”, the new expiry date should show there 54. Now set the OPACPatronDetails syspref to be “Allow” 55. Click on “Summary” again, the self-renewal link should be there again 56. Click into the self-renewal process and click “Yes” on your verification step 57. This time you should be met with a message that says “Confirm your account details” 58. Click “Continue” - you will be redirected to the OPAC details form 59. There should be a message at the top that says “Please verify your details to proceed with your self-renewal.” 60. Update a field somewhere on the patron form 61. Scroll to the bottom - the button should say “Submit renewal request” 62. Click this button 63. You will be shown the renewal confirmation message 64. In the intranet, on the homepage you should now see a modification request 65. Check the request, it should match the fields you changed - don’t approve or deny for now 66. Set ‘AutoApprovePatronProfileSettings’ in sysprefs to “Enable” 67. Reset your patron’s expiry date to today’s date 68. In the OPAC, click into Personal details and then back into Summary again (we need to do this to remove the success parameter from the URL) 69. The renewal link will be visible again - go through the process again 70. On the form, you should see an alert that you have already sent a modification request 71. This time, change a different field to the previous attempt 72. Submit the form 73. In the intranet there should be no modification this time and the change should be visible in the patron record as it has been automatically approved and handled as per the syspref 74. prove t/db_dependent/Koha/Patron.t 75. prove t/db_dependent/api/v1/patrons_self_renewal.t 76. yarn cypress run --spec t/cypress/integration/Islands/SelfRenewal.ts 77. Sign off! Sponsored-by: Westminster City Council Sponsored-by: Royal Borough of Kensington and Chelsea Sponsored-by: LibraryOn commit 5f70e05f2c7870b42da8d22409638d749ee842ff Author: Matt Blenkinsop Date: Wed Jan 21 09:44:31 2026 +0000 Bug 26355: Add an endpoint and class methods to handle patron renewal commit 732874a19df423c6971501ac32b092387e90cc97 Author: Matt Blenkinsop Date: Wed Jan 21 09:43:39 2026 +0000 Bug 26355: Add a Vue island for the self renewal modal commit fbf9975a0cd8c17bc302ca67c1913483c8a769af Author: Matt Blenkinsop Date: Wed Jan 21 09:42:22 2026 +0000 Bug 26355: Add the new category and attribute columns to the UI commit 868b0724baa47750c79e9d6f2c0cd81298eac5c4 Author: Matt Blenkinsop Date: Wed Jan 21 09:39:56 2026 +0000 Bug 26355: Update API specs for categories Adds the new db columns to the category specs and adds a POST endpoint for patron categories. Also adds a check for self renewal eligibility to the patron definition commit bb6f7c783093973d0d36416c5239c34dab1b177d Author: Matt Blenkinsop Date: Wed Jan 21 09:36:41 2026 +0000 Bug 26355: DBIC files commit ef4a1cbccb0f394e4237ce5e0da4ac023998e899 Author: Matt Blenkinsop Date: Wed Jan 21 09:36:15 2026 +0000 Bug 26355: Add new columns to the patron categories and attributes tables commit 1b3fe83d6aa97081ad359413d71ecc55247788b2 Author: Jonathan Druart Date: Mon Jan 26 14:42:39 2026 +0100 Bug 41682: More fixes * free => Free * options=NULL where type=Free * fix options and type for ArticleRequestsSupportedFormats * fix more explanation and options Signed-off-by: Lucas Gass commit f3525b169f35b22e9a393ffc4634dcf7bbb066b3 Author: Jonathan Druart Date: Mon Jan 26 13:39:26 2026 +0100 Bug 41682: Ensure that sysprefs.sql is kept ordered by syspref's name Signed-off-by: Lucas Gass commit fecaedbbd814ed462f09af8f3d55330f20b9b024 Author: Jonathan Druart Date: Mon Jan 26 11:40:18 2026 +0100 Bug 41682: Ignore 'FrameworksLoaded' Signed-off-by: Lucas Gass commit 15345742574432f52b4010c942d82099a04ea125 Author: Fridolin Somers Date: Fri Apr 25 11:46:09 2025 +0200 Bug 39745: Fix wrong system preference 'language' in test suite (mock_preference) Bug 27490 renamed system preference language to StaffInterfaceLanguages. Needs to be done in test suite on mock_preference calls Test by running impacted tests Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 5f9ec5e5c081d624b3a9ecdb988a1b3d1ea7f18c Author: Jonathan Druart Date: Mon Jan 26 11:09:33 2026 +0100 Bug 41710: Correctly run tests SearchEngine/Elasticsearch/Search.t in a txn Test plan: 0. Apply this patch and startup ktd with elastic (e.g `--search-engine es7`) 1. prove t/db_dependent/check_sysprefs.t => pass 2. DB cli> SELECT COUNT(*) FROM systempreferences; 3. prove t/db_dependent/Koha/SearchEngine/Elasticsearch/Search.t 4. DB cli> SELECT COUNT(*) FROM systempreferences; => No change, still the same number of sysprefs 5. prove t/db_dependent/check_sysprefs.t => pass 6. Revert this patch or checkout main 7. prove t/db_dependent/Koha/SearchEngine/Elasticsearch/Search.t 8. DB cli> SELECT COUNT(*) FROM systempreferences; => One syspref crated (ElasticsearchIndexStatus_mydb) 9. prove t/db_dependent/check_sysprefs.t => fail Signed-off-by: David Nind Signed-off-by: Lucas Gass commit de3a33a56327facc414309fe3ac1a55c99520def Author: Jonathan Druart Date: Mon Jan 26 10:34:00 2026 +0100 Bug 38207: Add VENDOR_PAYMENT_METHOD for new installs Signed-off-by: Lucas Gass commit 84227f70db809a7324c4db022f1e075f9e8bfdff Author: Lucas Gass Date: Fri Jan 23 18:07:00 2026 +0000 Bug 41682: DBRev 25.12.00.014 Signed-off-by: Lucas Gass commit c435b04a935762065977302c9a69e196fd55cbe8 Author: Tomás Cohen Arazi Date: Fri Jan 23 11:50:28 2026 -0300 Bug 41682: Fix 'cancelation' typo Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 0ba2c8350c46c02166808889904de89167e1739f Author: Tomás Cohen Arazi Date: Fri Jan 23 11:47:11 2026 -0300 Bug 41682: Fix 'integer' vs. 'Integer' inconsistency There are 72 occurences for the 'Integer' type, and 8 for 'integer'. Tests fail because of `StoreLastBorrower` already, so fixing them all for good. Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 8552f04486606ad18b8b403bc9af6157d3c68bbe Author: Tomás Cohen Arazi Date: Fri Jan 23 11:38:35 2026 -0300 Bug 41682: Add ApiKeyLog description This particular case already introduced discrepancies. Fixing. Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 409c804bc199a770ba7bf9f8de9c46165e8ecae1 Author: Jonathan Druart Date: Thu Jan 22 10:41:24 2026 +0100 Bug 41682: Sync DB and sysprefs.sql for new and upgraded installs This patch removes the discrepancies and put in sync the systempreferences table for new and upgraded installations. Main changes: * Set options to NULL when options="" * Fix explanation when different * Fix wrong order (some rows had options=explanation) * Fix wrong type "Yes/No" => "YesNo" * Remove StaffLoginBranchBasedOnIP: both StaffLoginLibraryBasedOnIP and StaffLoginBranchBasedOnIP are in the DB for upgraded installs * Remove the 'showsql' from the test. If we need it back then it must be a maintenance script. * Improve the tests: * Compare sysprefs.sql and the DB content for options, explanation and type * Catch type not defined * Catch incorrect YesNo values (must be 0 or 1) Later: * Add a C4::Installer sub to add new syspref: add_pref( { variable => $variable, value => $value, options => $options, explanation => $explanation, type => $type } ); * Clean 'type' and make it an ENUM * Make it easy to run the test for devs (should be in xt but we need it in t/db_dependent for packages - FIXME?) * Run the tests on upgraded installs on CI Test plan: 0. Apply the "tests" patch only 1. prove it => It fails loudly 2. Apply the DB change and run updatedatabase, prove the tests => they pass 3. Test upgraded installs: * checkout v24.05.00 (the version we use for Jenkins' Koha_Main_MariaDB_update job) * reset_all * checkout the branch with this patchset * updatabase * prove t/db_dependent/check_sysprefs.t => Should be green Signed-off-by: Owen Leonard Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 42c2fc7dbf8e963f6ac1b7e86a66f446166d9681 Author: Jonathan Druart Date: Thu Jan 22 13:47:20 2026 +0100 Bug 41682: Add tests Signed-off-by: Owen Leonard Signed-off-by: Tomás Cohen Arazi Edit: uncommented the `Test::NoWarnings` line, probably commented by mistake. Signed-off-by: Lucas Gass commit b218bbc8c075d7c2a7c4a715f6a71561964d9336 Author: Connor Cameron-Jones Date: Wed Jan 21 01:27:49 2026 +0000 Bug 41347: Terminology: Item had a reserve waiting "Item had a reserve waiting" changed to "Hold waiting on item" "Item was reserved" changed to "hold placed on item" Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit ac1d6a7f2c706c0bf14a381b915cbd2d5d4c34be Author: Jonathan Druart Date: Fri Jan 9 10:26:32 2026 +0100 Bug 41557: Remove unused vars sent to template 488 LoginFirstname => ( C4::Context->userenv ? C4::Context->userenv->{"firstname"} : "Bel" ), 489 LoginSurname => C4::Context->userenv ? C4::Context->userenv->{"surname"} : "Inconnu", 490 emailaddress => C4::Context->userenv ? C4::Context->userenv->{"emailaddress"} : undef, Test plan: `git grep` the 3 variables and confirm that there is no occurrences in the templates (.tt/.inc files) Signed-off-by: Connor Cameron-Jones <22264cc@hvhs.school.nz> Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit b4cbe3c6fe8bb0eec6a17c751e3c76aeb3e6d97a Author: David Nind Date: Wed Jan 21 22:09:03 2026 +0000 Bug 32285: (QA follow-up) Remove additional spaces before colons 325$j This removes two additional spaces before colons for the UNIMARC 325$j value builder (unimarc_field_325j.pl plugin). Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 7bf6f009a63238828a96b42eed04342c9bf3f4e6 Author: Photonyx Date: Wed Jan 21 20:11:16 2026 +0000 Bug 32285: Removed spaces before the colons Signed-off-by: Katrin Fischer Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 8a09573fa33d709d29376d18541ef1c92d786cfe Author: Raguram Gopinath Date: Wed Jan 21 02:37:29 2026 +0000 Bug 40031: Redirect to add action page from add template form Test plan: 1. Login to staff client. 2. Go to: Cataloging > MARC modification templates > New template 3. Give new template a name and click submit. 4. Following URL loads: http://localhost:8081/cgi-bin/koha/tools/marc_modification_templates.pl If you are using KTD 5. Apply patch and restart services. 6. Repeat steps 2 and 3. 7. Following URL loads: http://localhost:8081/cgi-bin/koha/tools/marc_modification_templates.pl?template_id=(template_id)&op=select_template 8. You can now add actions for your new template. Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 3c34d7bf430ca8cdeeae53fbd9d6aacbcb5aa2ce Author: Lari Taskula Date: Tue Oct 21 22:34:18 2025 +0300 Bug 35423: Fix substr outside of string warning To test: Before applying patch 1. Create an authority record, fill field 400$w with "n" 2. Search for the authority you just created 3. Observe a warning has been logged "substr outside of string" 4. Apply patch 5. Refresh the search results from step 2 6. Observe no warnings have been logged Signed-off-by: Harrison Hawkins Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit 1e84cbd496ac2b70ec4e519b8a60cfb25753203c Author: Owen Leonard Date: Thu Jan 8 11:03:09 2026 -0500 Bug 39715: (follow-up) Undo change to shelves_results.tt This must have been an overzealous find and replace. A similar template, itemsearch_json.tt, was not similarly affected. Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 684c014577e151b4900233b45ccc11c6fe15f8c1 Author: Owen Leonard Date: Tue Apr 22 17:45:33 2025 +0000 Bug 39715: Do not quote DataTables options This patch updates templates so that the options passed to DataTables (via kohaTable) are not quoted. The quotes are not necessary, and are not consistent with official DataTables documentation. This establishes a standard for us to follow in the future. The patch also corrects some option names which required upates, particularly "sorting" -> "order". To test, apply the patch and test updated DataTables. Sponsored-by: Athens County Public Libraries Rebased-by: Jonathan Druart paginate => paging Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 166604f9f3938307de6ea5f2530b61ba1cb3b492 Author: Lucas Gass Date: Thu Jan 22 22:25:49 2026 +0000 Bug 41539: (follow-up) Add missing filters Signed-off-by: Lucas Gass commit f9912bcd1d72b439f783792636501ad0f9a36fe4 Author: Nick Clemens Date: Wed Jan 21 19:54:10 2026 +0000 Bug 41539: (QA follow-up) Add classes for styling Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 8a7109be70e326e42a0d1c68ed1adf7a80baaa42 Author: Andrew Fuerste-Henry Date: Wed Jan 7 17:18:25 2026 +0000 Bug 41539: Add item barcode to hold waiting message To test: 1 - have or create a waiting hold 2 - go to the patron's record, see your waiting hold is listed in the patron messages but does not include barcode 3 - apply patch, reload page 4 - confirm item barcode appears on both Check Out and Details pages, for holds waiting both at your current branch and at another branch Signed-off-by: David Nind Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 6efd0b04e02d93ed700ef4ee4e9c3b15424f6db1 Author: Owen Leonard Date: Mon Jan 5 09:12:31 2026 -0500 Bug 41497: ul.patronbriefinfo inconsistent in coding structure This patch updates the markup of the include which displays patron information on the checkout and patron detail pages. The changes are minor and should have no visible effect. To test, apply the patch and search for a patron in the staff interface. View the patron information in the sidebar on both the checkout and patron detail pages. Everything should look correct. Sponsored-by: Athens County Public Libraries Signed-off-by: Manvi Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit db11834480a71a8e44471963a0d4786280c7daa2 Author: Mercury WallacE Date: Wed Jan 21 01:36:59 2026 +0000 Bug 41398: Fixed Typo of Tagret item is not in the local hold group Signed-off-by: Owen Leonard Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 02b752e25cfc93a6bc42641b914bc8e40f907929 Author: Mia Date: Wed Jan 21 01:55:01 2026 +0000 Bug 41397: Changed "not reservable" to "cannot be placed on hold" test plan - step 1 - apply patch step 2 - observe in koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt:221 that Target item is not reservable is now cannot be placed on hold Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit df82b31ccb322c1512509a16b52771c7d6f4a4d3 Author: Photonyx Date: Wed Jan 21 01:11:46 2026 +0000 Bug 41658: "Data provider" string fix Fixed the miscapitalisation - "Data Provider" should be "Data provider" according to our spelling rules Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit 23dfbd051fd1777621339aeb0ff2578b488e8fa0 Author: Photonyx Date: Wed Jan 21 01:47:39 2026 +0000 Bug 41351: Capitalisation fix Corrected and standardized the capitalization of "Override Renew hold for another" to "Override renew hold for another" Signed-off-by: Owen Leonard Signed-off-by: David Nind Signed-off-by: Lucas Gass commit ccf41d8b210ce636b49bfbfa10270de9b73499ed Author: Samuel Young Date: Wed Jan 21 01:19:31 2026 +0000 Bug 41540: Updated description for system preferences for staffShibOnly Test Plan: 1. Apply Patch, go to the staff client 2. Navigate to the Administration 3. Search for staffShibOnly within System Preferences 4. Check that the description properly displays the right information "staff to log in by means other than Shibboleth" Signed-off-by: Owen Leonard Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 34bb9ad6331ecb424a21945d6d751d1161117e68 Author: Lucas Gass Date: Thu Jan 22 21:06:18 2026 +0000 Bug 26993: DBIC changes Signed-off-by: Lucas Gass commit 629838dea2b83c30871615fc71ddc928e48f54d1 Author: Lucas Gass Date: Thu Jan 22 20:49:14 2026 +0000 Bug 26993: (follow-up) Update kohastructure.sql Signed-off-by: Lucas Gass commit 833f370fd54e9b94baa05e6bf2958a85a967cbf0 Author: Lucas Gass Date: Thu Jan 22 20:35:41 2026 +0000 Bug 26993: DBRev 25.12.00.013 Signed-off-by: Lucas Gass commit edc7b29b171364b1171827ee133fa9be415d84d2 Author: Lucas Gass Date: Mon Jan 12 14:44:52 2026 +0000 Bug 26993: Use last_returned_by->delete_all Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 9d4b4efffd12fe6069a7ea22d4f58d326266de75 Author: Lucas Gass Date: Mon Oct 6 16:53:42 2025 +0000 Bug 26993: (follow-up) Rename last_returned_by_all as last_borrowers Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit cf018a0bf4b6e310e5f50f820e728c5a8425d34a Author: Lucas Gass Date: Mon Oct 6 16:49:22 2025 +0000 Bug 26993: (follow-up) Return Koha::Patron resultset from last_returned_by_all Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit c05bc3ad7e8ce181b960d810654b3fb4bcbf8c51 Author: Jonathan Druart Date: Mon Oct 6 13:28:08 2025 +0200 Bug 26993: Use a txn Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit aee88e86721637fd9d49139af9e10a8006116471 Author: Jonathan Druart Date: Mon Oct 6 13:26:44 2025 +0200 Bug 26993: Use FOREIGN_KEY_CHECKS Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit e25ecf6757e85b7cd3da00f8d3c353fe1e967bac Author: Lucas Gass Date: Tue Sep 23 20:35:13 2025 +0000 Bug 26993: last_returned_by_all should return an array ref Signed-off-by: Trevor Diamond Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit c0f1b747c47cef1c6d8d6107e965506406104420 Author: Lucas Gass Date: Tue Sep 23 13:56:11 2025 +0000 Bug 26993: Unit tests Signed-off-by: Trevor Diamond Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 4b04138ed1efbc361236c4df9f3f4184a12db22d Author: Lucas Gass Date: Mon Sep 22 21:41:54 2025 +0000 Bug 26993: Implement changes Test plan: 1. APPLY patch, restart_all, updatedatabase 2. Search for the StoreLastBorrower system preference, it should now allow you to enter a number of borrowers to store 3. Set the pref to 3. 4. Check an item out to any patron. Then immediately check it back in. 5. On catalogue/moredetail.pl?biblionumber=X ( where X is you biblionumber ) you should see a "Last returned by:" entry with the correct cardnumber for the borrower. 7. Confirm this is right in the database with: SELECT * FROM items_last_borrower where itemnumber = X; ( Where X is your itemnumber ) 8. Repeat step 4 to a different borrower. 9. Repeat steps 5 and 6. You should see 2 cardnumbers of each of the borrowers on catalogue/moredetail.pl?biblionumber=X 10. Repeat step 4 with another new borrower. 11. Repeat steps 5 and 6. You should see 3 cardnumbers of each of the borrowers on catalogue/moredetail.pl?biblionumber=X 12. Choose a different item and repeat steps 4 - 11 for this item. 13. Now set the StoreLastBorrower preference to 0. 14. Using the original item from step 4, check something out to a patron and immediately check it back in. 15. catalogue/moredetail.pl?biblionumber=X should NOT have an entry for "Last returned by:" 16. Check the database, all entries for the itemnumber from step 14 should be deleted. Signed-off-by: Trevor Diamond Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit ca47f953ddcf867c0b2159b38f6e42fc3dcd59be Author: Lucas Gass Date: Mon Sep 22 21:41:26 2025 +0000 Bug 26993: System preference updates Signed-off-by: Trevor Diamond Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass