commit 79ac18cecc0e9708b2ac69551b5e2b8d92a72e97 Author: Jonathan Druart Date: Wed May 14 13:37:30 2025 +0200 Bug 38010: Fix cypress tests by mocking more API responses Jenkins runs the tests on top of the onboarding, there is no acq data Signed-off-by: Jonathan Druart commit 202d0e1fcc4510db65194dce250cf4c8877e5826 Author: Katrin Fischer Date: Tue May 13 16:50:30 2025 +0000 Revert "Bug 39532: Script debar_patrons_with_fines.pl creates repeat restrictions, uses wrong restriction type" This reverts commit 94286343c714c1671f37ce3a2f65bf6beaac23d8. Signed-off-by: Katrin Fischer commit 645d769a947cdf63332dfa615f40ae6bc53915ce Author: Katrin Fischer Date: Tue May 13 16:43:25 2025 +0000 Bug 39837: DBIC schema update Signed-off-by: Katrin Fischer commit ee4d5cd0bd85229639abc6d65d7fb79bd8fc2b64 Author: Katrin Fischer Date: Tue May 13 16:41:13 2025 +0000 Bug 39837: DBRev 24.12.00.043 Signed-off-by: Katrin Fischer commit 95c6d191956b18fe2908863193a1dd1e24d42c50 Author: Tomás Cohen Arazi Date: Mon May 5 15:17:34 2025 -0300 Bug 39837: Fix uses of `interface_id` Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit d68474784ea0220586cecad25e236aa0251d7eec Author: Tomás Cohen Arazi Date: Mon May 5 15:16:09 2025 -0300 Bug 39837: Add definition in swagger Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit fb2a4d99f51e4954101b0f63030071d6b1484183 Author: Tomás Cohen Arazi Date: Mon May 5 15:15:31 2025 -0300 Bug 39837: Rename (aqbookseller_interfaces) column interface_id to vendor_interface_id Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 74c33953c4abbd3554c9e9567890f70b2818f3e9 Author: Katrin Fischer Date: Tue May 13 16:37:44 2025 +0000 Bug 39838: DBIC schema update Signed-off-by: Katrin Fischer commit a745cf192c1b662dd0f852d3fe7059d6b2a5abd1 Author: Katrin Fischer Date: Tue May 13 16:34:56 2025 +0000 Bug 39838: DBRev 24.12.00.042 Signed-off-by: Katrin Fischer commit c4ea2cdb5b6143435affaf36afda6b8de4ee8ddd Author: Tomás Cohen Arazi Date: Mon May 5 14:58:49 2025 -0300 Bug 39838: Fix uses of `alias_id` Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit d81636c2798f5c8b2c4ae38ccc1cfc5c3f4fe0a3 Author: Tomás Cohen Arazi Date: Mon May 5 14:33:10 2025 -0300 Bug 39838: Add `vendor_alias` definition in swagger This patch adapts the definition file and also tweaks the attribute names and descriptions to match our guidelines. Signed-off-by: Tomas Cohen Arazi Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit f3109d002179004d27e503ab387329ef8944a70f Author: Tomás Cohen Arazi Date: Mon May 5 14:54:56 2025 -0300 Bug 39838: Rename (aqbookseller_aliases) column alias_id to vendor_alias_id Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 6812b170a6ae14042a8f1ac559ec23ed6ba38187 Author: Nick Clemens Date: Fri Apr 4 09:20:57 2025 +0000 Bug 39561: Allow users with fast_cataloging to continue after duplicate is found This patch adds the fast_cataloging permission to those checked when a duplicate is found Additionally, the barcode was missing from the duplicate check and is now added to be passed forward To test: 1 - Create or choose a borrower and grant permissions: catalogue circulate borrowers: list_borrowers editcatalogue: fast_cataloguing 2 - Log in as that patron 3 - Search for another borrower and go to checkout screen 4 - Enter random string as barcode to checkout 5 - Item is not found, click to fast catalogue 6 - In the editor type into 245$a 'Perl best practices' - or another title that exists in your system 7 - Get a notice of duplicate with options: Yes: View existing items No, save as new record 8 - Clicking 'Yes' will take you to the record details page - you cannot add an item because record is not FA framework 9 - You can click 'back' to return to the messages 10 - Clicking 'No' will create a new record and take you to the details page - you can add an item (Edit->manage items) but barcode has been dropped 11 - Apply patch 12 - Repeate 3-6 13 - You now get options: Yes: View existing items (you cannot add items to an existing record) No, save as new record 14 - 'Yes' will take you to details view 15 - Click back 16 - 'No' will take you to the edit items screen and populate the barcode 17 - Saving the item should return you to patron and issue item 18 - Repeat again with a staff patron with full permissions and confirm saying 'Yes' completes the fast catalogin workflow as expected Signed-off-by: Phil Ringnalda Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 94286343c714c1671f37ce3a2f65bf6beaac23d8 Author: Kyle M Hall Date: Wed Apr 2 11:47:32 2025 -0400 Bug 39532: Script debar_patrons_with_fines.pl creates repeat restrictions, uses wrong restriction type The cronjob debar_patrons_with_fines.pl is meant to add a restriction based on a fines threshold. The problem is that the script adds a MANUAL restriction, which makes no sense. MANUAL restrictions are meant to be manually created, never automatic as this script does. In addition, they are repeatable, not unique. Every time this script runs, it will add an additional restriction. There is already a restriction type meant for this type of use case: SUSPENSION We should change this script to create SUSPENSION restrictions instead of MANUAL restrictions. In summary, this script should use the unique restriction type SUSPENSION to prevent multiple additional restrictions from being created on each run. Test Plan: 1) Set up a patron with fines 2) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" 3) Note the restriction is created 4) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" again 5) Note another restriction is created 6) Delete the restrictions 7) Apply this patch 8) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" 9) Note the restriction is created 10) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" again 11) Note another restriction is *not* created! Signed-off-by: Magnus Enger Signed-off-by: Emmi Takkinen Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit f7a74621ad54f2b99ce96a30274bd9853796b6eb Author: Chloe Zermatten Date: Tue Apr 8 14:36:32 2025 +0000 Bug 39494: Announce status messaging on login page So that screen readers announce errors, add a role attribute set to "alert" and a aria-live attribute set to "assertive". Since the page reloads on each login attempt, the page will effectively be loaded with both attributes set (if there is an error) and so screens readers should be able to detect and announce the message. Test plan: 1) On the Koha OPAC, navigate to Home > Log in to your account 2) Attempt to login, entering an incorrect password 3) Inspect the HTML, and notice that the relevant element now has a role attribute set to "alert" and an aria-live attribute set to "assertive". Repeat steps 2-3, but instead of an incorrect password error, trigger: A) a timeout error B) a different IP address error C) a too many login attempts error D) an authorisation error (where we are authenticating with a third party) E) a shibboleth authentication error F) a CAS login error G) an invalid username/password error for an anonymous patron H) an anonymous patron error I) a password expired error Signed-off-by: Brendan Gallagher Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 6b80dec84d82ae38010eb6f1cce9e2ebd8d1a1a8 Author: Lucas Gass Date: Mon Apr 14 17:45:18 2025 +0000 Bug 39604: Remember cancelreserve choice when remembering patron for session To test: 1. Put a few items on hold and make note of the barcodes. 2. Check out one of the items to a patron who doesn't have the hold 3. Check the cancel hold radio button 4. Also check the Remember for the session for this patron 5. Click 'Yes, check out' 6. Notice the item is checked out and the hold is cancelled 7. No checkout another on hold item to the same patron 8. No confirm screen ( good ) 9. The item is checked out ( good ) 10. The hold is not cancelled. ( bad ) 11. APPLY PATCH and restart all 12. Try steps 1 - 9 again. This time the 2nd hold should be cancelled. Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 574bd4f1fabd29c06cc18aba0a0833fa474bd12b Author: Nick Clemens Date: Fri Apr 11 12:36:40 2025 +0000 Bug 39503: Collapse thesaurus if value in 008_/11 = 'z' and 040 $f With bug 30280 and subsequent patches we attempt to respect the thesaurus indication when linking with LinkerConsiderThesaurus on. However, there are still cases when we link wrong. This happens when thesaurus in bibliographic field 6XX is defined by subfield $2. In such a case the authority record should have 008/11 = 'z' and, according to https://www.loc.gov/marc/authority/ad008.html (cf. comment for 008/11 = 'z': "A MARC code for the conventions used to formulate the heading *may* be contained in subfield $f"), may or may have thesaurus declared in 040 $f. This is why we make a second search attempt in C4::Heading::_search, but doing so we have to make sure that the resulting authority record has not a different thesaurus declared in 040 $f. (Note that 008/11 and 040 $f are indexed with the same search field: subject-heading-thesaurus. So we search for the second time in the same search field but with 'notdefined' == 008/11='z' instead of the original thesaurus taken from subfield $2 of the bibliographic field 6XX.) This means we have to explicitly check the content of 040 $f of the resulting authority record. Test plan: ========== 1. Turn on the LinkerConsiderThesaurus systempreference. 2. Create an authority record (e.g. TOPIC_TERM) with 008/11 = 'z' and 040 $f containing a thesaurus indication (e.g. 'kaba'), and a term in field 150 $a (e.g. Early music). 3. Edit a bibliographic record: in field 650 put 2nd indicator '7', the term 'Early music' in $a, and a different thesaurus code in $2 (e.g. 'dbn'). Click the 'Link authorities automatically' button. Note that 650 'Early music' (dbn) has been linked with and authority record 'Early music' (kaba). This is wrong. 4. Apply the patch ; restart_all ; reindex ES for authorities with: koha-elasticsearch --rebuild -d -a kohadev 5. Repeat p. 3. Now the 650 'Early music' (dbn) has not been linked to an authority record (650 - No matching authority found.) Signed-off-by: Janusz Kaczmarek Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit b15d06714db954b861126b34a17856da65891ef6 Author: Janusz Kaczmarek Date: Tue Apr 1 11:20:13 2025 +0000 Bug 39503: Unit tests NB, some previous test had to be adjusted to make it posible to call search_auth_compat in _search and properly interpret its results. Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit ef8329bd3766b753eee70c2924b9befbf3bf8a4d Author: David Nind Date: Mon May 12 21:58:24 2025 +0000 Bug 39878: (follow-up) Update hints for default FTP and SFTP ports Hint now covers the default ports for FTP (21) and SFTP (22), instead of "will default to 22". Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit fb9722a12860e0c6cb0f368e1e38a92e40416ac2 Author: Kyle M Hall Date: Mon May 12 14:48:17 2025 +0000 Bug 39878: EDIFACT vendor account records sets default port incorrectly for FTP When creating or editing an EDI (EDIFACT vendor record) if the port is left empty it will be set to port 22. This is fine then the service is SFTP, but if FTP is selected the default to 21. Test plan: 1) Enable EDIFACT 2) Create a new EDI Vendor account with the FTP transport selected. Pleave the ports unpopulated 3) Note the saved record has port 22 set 4) Apply this patch 5) Restart all the things! 6) Repeat stepts 1 and 2 7) The port should now be 21 for new ftp site and 22 for new stp sites! Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit efc39ed8ef583258a8cf8ea7f6da142995d0bc4b Author: Martin Renvoize Date: Tue May 13 11:36:12 2025 +0100 Bug 39888: Prevent load of superflous JS when table is not present We shouldn't attempt to load the JS block for dealing with the budgets table if there is no budgets defined and thus no budgets table. Test plan 1) Remove all budgets 2) Load acqui-home.pl and note an error in the browser console 3) Apply the patch 4) Reload acqui-home.pl and note the errors have gone Signed-off-by: Martin Renvoize Amended-by: Jonathan Druart Tidy Signed-off-by: Jonathan Druart commit 49732435e2e97b6f7ba80505d231421c79ba3570 Author: Matt Blenkinsop Date: Tue May 13 11:11:31 2025 +0100 Bug 38010: (follow-up) Remove DT reference Signed-off-by: Jonathan Druart commit 829186d77de56d4de05f1da6faf358e7722e8c3c Author: Andrew Fuerste Henry Date: Tue Apr 8 12:32:04 2025 +0000 Bug 39576: Show preferred_name for hiddenborrowername The last patron menu uses the value "hiddenborrowername." I've made that use preferred_name instead of firstname. When a patron's preferred_name is not manually set/edited, it automatically takes the value of firstname, so we don't need an IF in the template toolkit here. To test: 1 - have a patron with a preferred_name and one without 2 - get both patrons in the Last Patron dropdown, confirm they both show firstname 3 - apply patch, restart services, clear cache, reload page 4 - get your patrons in Last Patron again, confirm now one shows preferred name and the other firstname Signed-off-by: Emmanuel Bétemps Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit e398743e06d8cfabf26e40de1664e045faba47d1 Author: Baptiste Wojtkowski Date: Mon Feb 17 17:05:55 2025 +0100 Bug 39148: Correct sort by publicationdate in OPAC lists Test plan (UNIMARC): 1 - Create a list with different publicationdates, chose to sort it by copyright gate 2 - Go to the list in the OPAC -> it is not correctly sorted 3 - Pick sort order: copyright date -> not correctly sorted 4 - Apply patch 5 - Retry 2&3 and see it works Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit cef1685925fabf1d2e81f056656871a111c70ae9 Author: Fridolin Somers Date: Thu Apr 24 12:11:00 2025 +0200 Bug 39737: Obsolete call on system preference 'PatronSelfRegistrationAdditionalInstructions' Bug 34889 moved to additional contents. Remove call in opac pages. Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit a210683610433ddd06028f298ead93e798e287dd Author: Fridolin Somers Date: Thu Apr 24 12:06:37 2025 +0200 Bug 39736: Remove obsolete call on system preference 'OPACResultsSidebar' Bug 34869 moved additional contents. Remove call in opac/opac-search.pl Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit e52132d9c274e5322cac760f080bf9ff73327b88 Author: Imani Thomas Date: Wed Feb 12 20:48:53 2025 +0000 Bug 39029: When a basket contains an order transferred from another basket some info is incorrect. To test: 1 - Create a new basket - 'Gonna transfer' 2 - Add an order to the basket 3 - Create another basket 'Has the transfer' 4 - Return to first basket and transfer order to second 5 - Return to second basket, click 'Add to basket' and inspect the modal 6 - Note basketno says 'Gonna transfer' 7 - apply the patch 8 - redo steps 1 through 6 with fresh baskets and the modal should have the correct values Signed-off-by: Andrew Auld Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit f2d40e1c691efff1a2b6c08e929b0f2612cf3dc1 Author: Nick Clemens Date: Fri Mar 21 16:35:15 2025 +0000 Bug 39413: Add a check for item fields in MARC records to data inconsistencies script This patch adds a new test to the data inconsistencies script to report where MARC records contain item fields. These may not cause issues in Koha, however, in discovery harvests they have eben found to create errors To test: 1 - Follow test plan on bug 39412 to generate records with item tags 2 - perl misc/maintenance/search_for_data_inconsistencies.pl 3 - Note new section and hint on how to fix 4 - perl misc/maintenance/touch_all_biblios.pl 5 - repeat 2 6 - Errors cleared Signed-off-by: Magnus Enger Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 50a68bfa1dc87908545cc84b941aca84ec1a4b2a Author: Nick Clemens Date: Mon Feb 10 17:31:06 2025 +0000 Bug 39079: Follow 'and_or' variable when passed to build_auth_query_compat When building queries for matchign Zebra uses OR to combine searches - Elasticsearch has been effectively using 'AND' - this patch checks whether and_or has been passed and follows the variable when present. To test: 1 - Have an import file of auths with multiple 035 2 - Setup an authority matching rule Search index: other-control-number Score: 1000 Tag: 035 Subfields: a 3 - Make sure Koha is using Elasticsearch 4 - Stage file without matching, import file 5 - Stage file again, using your matching rule 6 - Note all records match 7 - Setup Cataloging->Marc modification template 8 - Add an action to delete first 035 field 9 - Run it against the records you just imported You can use a report: SELECT authid FROM auth_header WHERE authid > #### (find the lowest new record number in batch you imported) 10 - Change matching rule in batch to none, then back to your rule 11 - No matches! 12 - Apply patch, restart all 13 - Set matchign rule to none, then back to your rule 14 - Matches! Signed-off-by: Magnus Enger Works as advertised! Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit f94283fdc5211df1924f9ee123388a3b7ea4a9a5 Author: Lucas Gass Date: Tue Apr 8 21:00:05 2025 +0000 Bug 39587: Add surname to contact information list on moremember.tt To test: 1. Go to members/moremember.pl?borrowernumber=X where X is borrowernumber of a patron with a surname 2. Look under contact information and notice surname is missing. 3. APPLY PATCH and look again. 4. Surname should be included. Signed-off-by: Roman Dolny Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 9b8e2ea5e6ade2312d54fef8bc1a8fcbfc04c490 Author: Lucas Gass Date: Tue Apr 8 22:22:32 2025 +0000 Bug 39588: Fix concatenation in bookings to collect 1. Turn on bookings for an item or item type 2. Find an item and book it. 3. Check the same item out. 4. Go to Circulation > Bookings to collect and run the report 5. The table never loads 6. APPLY PATCH 7. Try again, the bookings to collect report should load! Signed-off-by: Andrew Fuerste Henry Signed-off-by: Kristi Krueger Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 22470246b815a4fd601afb18e14d50a28d73606e Author: Andrew Fuerste Henry Date: Fri Apr 4 19:27:29 2025 +0000 Bug 39555: Relabel "On Loan" in Transfers to Send This test plan edits database values rather than getting these transfers requested via StockRotation. I don't believe that impacts the validity of the testing. To test: 1 - enable StockRotation syspref (otherwise the Transfers to Show page doesn't show up) 2 - go to /cgi-bin/koha/circ/branchtransfers.pl and transfer an item 3 - log into the database and "update branchtransfers set datesent=NULL where branchtransfer_id=[your transfer]" 4 - go to /cgi-bin/koha/circ/transfers_to_send.pl 5 - confirm there is a column named "On shelf" and your transfer shows the value "On shelf" in that column 6 - back in the database, "update items set onloan=curdate() where itemnumber=[your item]" 7 - reload Transers to Send, confirm it now shows "Due [today]" for your item in the On Loan column 8 - apply patch 9 - reload Transfers to Send, confirm column is now titled "Date due" and the value for your item is still the due date 10 - back in the database, "update items set onloan=NULL where itemnumber=[your item]" 11 - reload Transfers to Send, confirm your item now shows a value of "Not checked out" Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 2a6da59f484a5914e2cbabd96125c239cce47fda Author: Lucas Gass Date: Tue Apr 15 22:29:27 2025 +0000 Bug 39276: Show record level priority in opac detail page To test: 1. Enable Holds history system preference and set the OPACShowHoldQueueDetails to "Show holds and their priority level". 2. Make an item level hold on a record. 3. Make a record level hold on a different record. 4. Login to the OPAC as that patron 5. On the detail page for the item level hold, it works 6. On the detail page for the record level hold, dataTable error 7. APPLY PATCH 8. Try each of the OPAC detail pages again, they should both work. Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 79e872915ff8963891152ae07a689332b0deb9b9 Author: Martin Renvoize Date: Thu May 8 14:34:43 2025 +0100 Bug 39696: (follow-up) Set text-bg-info on badge We also use a badge without a text-bg-# class on the modal claims include.. this patch adds the same text-bg-info to that. Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 2f4f34de0a7ff736d0e0144218337490dd9ce807 Author: Martin Renvoize Date: Thu May 8 14:29:26 2025 +0100 Bug 39696: Set text-bg-info on badge With bootstrap 5, a 'badge' class should always be accompanied by a text-bg-# class. This second class sets the badge color and an appropriate forground text color to ensure appropriate contrast. Steps to test: 1. Enable the ability to mark items as "Claimed Returned" by setting the ClaimReturnedLostValue system preference. 2. Check out an item to a patron, and backdate the due date so that it becomes overdue. 3. Navigate to: /cgi-bin/koha/circ/overdue.pl to view the overdue item. 4. Mark the item as "Claims Returned". 5. Observe the display: the claim return date text uses #fff (white), which is not visible on white table rows and has poor contrast on grey rows. 6. Apply the patch 7. Clear cache in browser and observe the display: the claim return date badge is now blue with black text. 8. Sign off and have an amazing day! :D Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer commit 25432b5c7e96af7478644dc0a368802c60302294 Author: Martin Renvoize Date: Mon May 12 09:39:13 2025 +0100 Bug 39679: (QA follow-up) Translation friendly approach As discussed at length on (mattermost)[https://chat.koha-community.org/koha-community/pl/wiopmtr7j3835df3yfi6q64ooy] we need to use the I18N library to properly handle this otherwise we will end up with TT tags inside the translatable strings. We can not use here as we are inside an