commit fc0554ee6129d864af87ca7b8af381a12b57c1bf Author: Baptiste Wojtkowski Date: Wed Feb 11 10:56:48 2026 +0100 Bug 41070: Fix selector in addorderiso validator Steps to reproduce, do not apply patch 1 - Go to any record and click save -> marc (Unicode/utf8) 2 - Go to any vendor and add a basket 3 - In your acquisition grid, make sure "barcode" is mandatory 4 - In this basket, create a new order from file, use the generated file and wait for the end of the import. Click on add staged files to basket. 5 - Select the record, make sure no Fund or barcode is filled, neither in first or third tab. 6 - Validate: There will be an error due to the missing barcode. If there is another error, fill the missing part of the form. 7 - Apply patch, repeat 6, the error will be due to the missing fund 8 - Select a fund in the first panel -> the error will be due to the missing barcode 9 - Select a fund in the third panel -> the error will be due to the missing barcode Note: the point about the barcode are not relevant for the bug, they are just here to prevent the submission of the form. And avoid repeating steps 4-5. commit a019e78f4b681b3336c2bbe18245c65385dae70c Author: Jonathan Druart Date: Tue Feb 10 21:14:57 2026 +0100 Bug 41812: Adjust find-missing-csrf.t test to ignore csrf input from JS This code injected the csrf token using the TT include file, that made pass xt/find-missing-csrf.t This bug removed the TT tags from the script tags, and we now need to use a JS variable and retrieve the csrf token from the meta tag. This patch suggests to adjust the script to ignore this case. We could also rewrite the whole JS code and use built the HTML elements using vanilla JS but that's for another day... Signed-off-by: Lucas Gass Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 6adf1c1cc1a32e2269ab2e719f45ab9baa36e040 Author: Lucas Gass Date: Tue Feb 10 22:44:58 2026 +0000 Bug 28530: (follow-up) Place system pref in corret order Signed-off-by: Lucas Gass commit ec0453354c58b64fb7d04a4f4ea6ed2830d04100 Author: Martin Renvoize Date: Tue Feb 10 17:59:00 2026 +0000 Bug 38096: (follow-up) Fix missing biblionumber parameter in renderMARCOnlineResourceField The renderMARCOnlineResourceField template uses $biblionumber for the TrackClicks feature but this parameter was never declared in the template definition nor passed by any of the call sites. This caused XSLT runtime errors when TrackClicks system preference is enabled ('track' or 'anonymous') and records contain MARC fields 856 or 857 with subfield $u (URLs): Variable 'biblionumber' has not been declared. Undefined variable XPath evaluation returned no result. This patch: 1. Adds biblionumber parameter to renderMARCOnlineResourceField template 2. Passes biblionumber value in all 4 call sites (2 in Detail, 2 in Results) Test plan: 1. Enable TrackClicks: System Preferences > OPAC > TrackClicks = "track" 2. Find a bibliographic record with field 856 or 857 containing subfield $u 3. Run: yarn build (to regenerate XSLT for all languages) 4. View the record in OPAC detail and search results pages 5. Verify no XSLT errors in plack-opac-error.log 6. Verify online resource links display correctly 7. Verify links include biblionumber parameter in tracklinks.pl URLs Signed-off-by: Lucas Gass commit f63a1d295f6c6414cd086038ef80d133671c31f6 Author: Pedro Amorim Date: Tue Feb 10 18:07:25 2026 +0000 Bug 38096: (QA follow-up): Fix URLLinkText Signed-off-by: Lucas Gass commit 18c18175ca1e3609ea4b7ffbc029d421fb19e147 Author: Jan Kissig Date: Tue Oct 28 11:45:36 2025 +0000 Bug 41120: Fix broken Add data provider functionality Clicking on New data provider in the ERM eUsage section will not work, when a data provider was shown before. Test plan: prequisites: - activate the ERM module system preference. - this is for ktd a) go to /cgi-bin/koha/erm/eusage/usage_data_providers b) add a new data provider, dummy data is sufficient c) submit the new provider and on the following screen click close to return to the provider list d) click on 'Add data provider' (open web dev tools will display an error) e) apply patch f) run 'yarn js:build' f) do a hard refresh in the browser g) on provider list click your created provider h) close it via 'close' to return to the provider list d) click on 'Add data provider' should work now Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 9445ffc9aac2fe94b65223e72e1f8560ed1f63b4 Author: Olli Kautonen Date: Thu Jul 24 11:34:55 2025 +0300 Bug 40154: prevent deletion of items with holds This patch prevents deletion of items that have item level holds on them. Test plan: 1. Create an item level hold. 2. Delete the item using alternative A or B: A. Open the biblios Detail-view -> From the toolbar, open "Edit"-dropdown menu -> Manage items -> Delete the item that has an item level hold attached to it from "Actions"-dropdown menu B. Open the biblios Detail-view -> Select the item that has an item level hold attached to it -> Click "Delete selected items" -> Confirm deletion 3. Notice that the item is deleted without any warning and the item level hold has disappeared. 4. Apply this patch. 5. Repeat steps 1-3. 6. Notice that the item cannot be deleted and a warning is shown. 7. prove t/db_dependent/Koha/Item.t 8. Run the REST API tests: prove t/db_dependent/api/v1/items.t Sponsored-by: Koha-Suomi Oy Signed-off-by: Owen Leonard Signed-off-by: Lucas Gass commit 57dbd3677a7e8aabd20ae8be65a2ca96d22238f7 Author: Jonathan Druart Date: Fri Jan 9 13:10:56 2026 +0100 Bug 41565: bookings - auto tidy Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 7a80a9be011071d504b7ed2aa2190433aed772a5 Author: Jonathan Druart Date: Thu Jan 8 11:18:46 2026 +0100 Bug 41565: Tidy kohaTable - bookings/list.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit a5dc152afc832b88f3a8925ec0664f0dba6cbcce Author: Owen Leonard Date: Mon Jan 12 14:27:17 2026 -0500 Bug 41564: (follow-up) Minor fixes Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 22087ab2ec6ac7dbaab95a6647c3a5c9e5754494 Author: Jonathan Druart Date: Fri Jan 9 13:10:23 2026 +0100 Bug 41564: admin - auto tidy Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 8ed37667b8786e5a275d1f492032348f92a23be4 Author: Jonathan Druart Date: Thu Jan 8 11:13:24 2026 +0100 Bug 41564: Tidy kohaTable - admin/z3950servers.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 2c4923e9ffb636bc859f9e342535d8226303892c Author: Jonathan Druart Date: Thu Jan 8 11:11:01 2026 +0100 Bug 41564: Tidy kohaTable - admin/systempreferences.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 9d5b3885ab8491257bbcd325bf9b63cb2a71011b Author: Jonathan Druart Date: Thu Jan 8 11:09:35 2026 +0100 Bug 41564: Tidy kohaTable - admin/smtp_servers.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 724ca164e8d88546dad66b33198d53aaf8e4c642 Author: Jonathan Druart Date: Thu Jan 8 11:08:31 2026 +0100 Bug 41564: Tidy kohaTable - admin/oai_servers.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 91244796521aebd18ebf05151e2d526b277d04b2 Author: Jonathan Druart Date: Thu Jan 8 11:04:17 2026 +0100 Bug 41564: Tidy kohaTable - admin/marc-overlay-rules.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 3d24965157634eef75eb81cc777745ef73cffda6 Author: Jonathan Druart Date: Thu Jan 8 11:03:43 2026 +0100 Bug 41564: Tidy kohaTable - admin/localization.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit f243cf8197865384f4268ea8dda965899e773b0f Author: Jonathan Druart Date: Thu Jan 8 11:02:34 2026 +0100 Bug 41564: Tidy kohaTable - admin/itemtypes.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit aa255653d1358fb35d2b1695ffe72a4546cb785b Author: Jonathan Druart Date: Thu Jan 8 11:01:19 2026 +0100 Bug 41564: Tidy kohaTable - admin/identity_provider_domains.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 3435a23656d23256b5ee79ef82f4db26a3429af1 Author: Jonathan Druart Date: Thu Jan 8 10:59:05 2026 +0100 Bug 41564: Tidy kohaTable - admin/file_transports.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 3206232bd84e4e5444bbc65a2c95f7d4681b1a95 Author: Jonathan Druart Date: Thu Jan 8 10:57:21 2026 +0100 Bug 41564: Tidy kohaTable - admin/edi_accounts.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 87d5ac14dfa0d3593537a287a5cbdcf900dcb771 Author: Jonathan Druart Date: Thu Jan 8 10:56:56 2026 +0100 Bug 41564: Tidy kohaTable - admin/currenty.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit f5eb9a4d1ad045fdcad53c53088e40f99628446c Author: Jonathan Druart Date: Thu Jan 8 10:56:21 2026 +0100 Bug 41564: Tidy kohaTable - admin/cities.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit cf8c0b6b5d11485b429fa5636d9f21083dc66bca Author: Jonathan Druart Date: Thu Jan 8 10:55:14 2026 +0100 Bug 41564: Tidy kohaTable - admin/branches.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 50094e9fb2106962703ed8fb38e38d126cda5b22 Author: Jonathan Druart Date: Thu Jan 8 10:53:41 2026 +0100 Bug 41564: Tidy kohaTable - admin/branch_transfer_limits.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 6d6158070b199e3014e4c75289cbf54cf2d351fd Author: Jonathan Druart Date: Thu Jan 8 10:52:53 2026 +0100 Bug 41564: Tidy kohaTable - admin/background_jobs.tt Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 5700336366b0a1e536b1abf808fa98d8e10fd476 Author: Jonathan Druart Date: Thu Jan 8 10:48:29 2026 +0100 Bug 41564: Tidy kohaTable - admin/auth_subfields_structure.tt See bug 41324 comment 6 Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 288d4b28abae09339bbcb437969bb86edf1702fb Author: Jonathan Druart Date: Thu Jan 8 10:45:22 2026 +0100 Bug 41564: Tidy kohaTable - admin/aqbudgets.tt See bug 41324 comment 6 Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 8e613bc2685d21939e32ce849284b75f524de039 Author: Jonathan Druart Date: Thu Jan 8 10:42:01 2026 +0100 Bug 41564: Tidy kohaTable - admin/aqbudgetperiods.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit ebff6e124d55420e2e5bb0f791a8daf42dbb3d6b Author: Jonathan Druart Date: Mon Jan 26 13:12:49 2026 +0100 Bug 41563: Remove JS error from newordersuggestion Not caused by this patchset but it's a good place to fix it (and not add a conflict) Uncaught TypeError: can't access property "DataTable", suggestionst is undefined Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit d45c6ce11530061dc4150bfb8c844d9e739acf6b Author: Owen Leonard Date: Mon Jan 12 11:53:03 2026 -0500 Bug 41563: (follow-up) Tidy parcel.tt Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 39d349e1f108f39eb057ef0c3b2b948de931659e Author: Owen Leonard Date: Mon Jan 12 11:52:10 2026 -0500 Bug 41563: (follow-up) Fix two typos Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit a0fdafe8ff59582a1d4cdfb4bf30cf0aa055500c Author: Jonathan Druart Date: Fri Jan 9 13:08:37 2026 +0100 Bug 41563: acqui - auto tidy Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 5163b05ad61c086c7023d166cb5227f688be9e9b Author: Jonathan Druart Date: Thu Jan 8 10:33:03 2026 +0100 Bug 41563: Tidy kohaTable - acqui/vendor_issues.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit bd66dff0656d9a090ed07865f28ec3fa2770e3dc Author: Jonathan Druart Date: Tue Jan 6 16:48:33 2026 +0100 Bug 41563: Tidy kohaTable - acqui/parcel.tt See bug 41324 comment 6 1. Variable serialization 2. Use of permissions and sysprefs Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit bb40a690d298f8d262080946ea2adc2da379fc16 Author: Jonathan Druart Date: Tue Jan 6 16:40:36 2026 +0100 Bug 41563: Tidy kohaTable - acqui/orderreceive.tt See bug 41324 comment 6 1. Variable serialization 2. Use of permissions and sysprefs We also removed 'UniqueItemFields' from the controller. Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit e99cdb29f23d25b4fee5a3308fd456ee259e3e2c Author: Jonathan Druart Date: Tue Jan 6 16:30:42 2026 +0100 Bug 41563: Tidy kohaTable - acqui/newordersuggestion.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit a5989d0832bdc7f3d0e5fdaedb31cbf25f6f1510 Author: Jonathan Druart Date: Tue Jan 6 16:28:19 2026 +0100 Bug 41563: Tidy kohaTable - acqui/lateorders.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 68219779d0fa7af0fbd07418bc8fe0468f7eaa63 Author: Jonathan Druart Date: Tue Jan 6 16:27:54 2026 +0100 Bug 41563: Tidy kohaTable - acqui/invoice.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit e987e7f4c9102119fe8a3dee89bdb1cad6e14be2 Author: Jonathan Druart Date: Tue Jan 6 16:25:16 2026 +0100 Bug 41563: Tidy kohaTable - acqui/histsearch.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 2289262dac881899abfcf2ec350c0b1a77ed0371 Author: Jonathan Druart Date: Tue Jan 6 16:24:38 2026 +0100 Bug 41563: Tidy kohaTable - acqui/duplicate_orders.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 6ca1854aa80de87f96b1b1551a18811d5056facc Author: Jonathan Druart Date: Fri Jan 9 14:28:40 2026 +0100 Bug 41563: Tidy kohaTable - acqui/basketgroup.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 5c67161e8f9493cd34784cce58bcd542276808cc Author: Jonathan Druart Date: Fri Jan 9 14:28:30 2026 +0100 Bug 41563: Tidy kohaTable - acqui/basket.tt See bug 41324 comment 6 1. Variable serialization 3. "table_settings" variable Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit dd0578f809e9f3e9cf034783aa4aa58aeff4ca0a Author: Jonathan Druart Date: Fri Jan 9 14:28:21 2026 +0100 Bug 41563: Tidy kohaTable - acqui/acqui-home.tt See bug 41324 comment 6 1. Variable serialization Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit b708776eb02eb0e655756bd1f11c7bbf2f9ef08f Author: Jonathan Druart Date: Fri Jan 9 11:21:18 2026 +0100 Bug 41562: Introduce "stores" for regular javascript We already have "Stores" in Vue, here we are going to use a shared object to store permissions and sysrepfs For follow-up bug reports we will have the need to store syspref's values and permissions. It seems a good idea to have a "store" to share the permissions and system preferences' values we need for the current page. Several "script" tag can coexist and define their own permissions or sysprefs. Added on its own bug for reusability purpose. Test plan: Test follow-up bug reports ;) Signed-off-by: Owen Leonard Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit fdf9fcfee433bf9a34fddb4063e739a39b14e241 Author: Lucas Gass Date: Tue Feb 10 17:40:01 2026 +0000 Bug 28530: DBIC Signed-off-by: Lucas Gass commit d427bd25c997e4a7560cf775f9077267e022133c Author: Lucas Gass Date: Tue Feb 10 17:38:29 2026 +0000 Bug 28530: DBRev 25.12.00.024 Signed-off-by: Lucas Gass commit f2721c8be37d54e18762887944cf2207c62d70fc Author: Lucas Gass Date: Tue Feb 10 16:54:01 2026 +0000 Bug 28530: (RM follow-up) Move kohastructure update to right place alphabetically Signed-off-by: Lucas Gass commit 4a658430a3cb6aa3b545fa7baaa1ad324ed7bc03 Author: Martin Renvoize Date: Wed Feb 4 17:59:24 2026 +0000 Bug 28530: (QA follow-up) Fix branch transfer limits not checking alternate libraries Fixed a pre-existing bug where branch transfer limits would prevent ANY transfer if the optimal library was blocked, instead of trying the next best candidate. Original behavior: - Sort candidates by best ratio - Check if transfer to best candidate is allowed - If not allowed: exit loop immediately (bug!) and return undef - Result: No transfer created even if other valid candidates exist Fixed behavior: - Sort candidates by best ratio - Check if transfer to best candidate is allowed - If allowed: use that library and exit loop - If not allowed: continue to next candidate - Result: Uses the best ALLOWED candidate This fix ensures that when branch transfer limits block the optimal destination, the system will try the next-best option instead of giving up entirely. Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 7076f57bd8f41927d36975d83b91442ac0d1fd26 Author: Martin Renvoize Date: Wed Feb 4 17:55:15 2026 +0000 Bug 28530: (QA follow-up) Fix N+1 query performance issue Refactored lowest_ratio_library() to eliminate the N+1 query problem by using aggregated queries with GROUP BY instead of per-branch queries. Performance improvement: - Before: O(3n) queries where n = number of branches with float limits Example: 20 branches = 60 database queries - After: O(3) queries regardless of number of branches Example: 20 branches = 3 database queries The optimization uses three aggregated queries: 1. Single query with GROUP BY to get item counts at all branches 2. Single query with GROUP BY to get in-transit-to counts for all branches 3. Single query with GROUP BY to get in-transit-from counts for all branches Results are combined in memory to calculate ratios, maintaining identical logic and behavior while dramatically improving database efficiency. Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass