Commit Graph

56605 Commits

Author SHA1 Message Date
Pedro Amorim ca9a2fe61e Bug 39823: Add tests
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 9b0d6260bb)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit d4fb56be5b)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:39:14 +02:00
Pedro Amorim 2fe997fa43 Bug 39823: Clean-up: Mock LWP response instead of class method being tested
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit d618dc808f)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 54ee4ded1e)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:38:47 +02:00
Lucas Gass a091c7751f Bug 38477: (follow-up) Correct failing Item.t test
prove /kohadevbox/koha/t/db_dependent/Koha/Item.t

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 53a9631335)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 13bff9ff2f)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:30:35 +02:00
Nick Clemens af0124caeb Bug 38477: Only charge a new lost fine when the last patron to return the item matches the original fined patron
Set these sysprefs:
- FinesMode: Calculate and Charge
- WhenLostForgiveFine: Forgive
- WhenLostChargeReplacementFee: Charge

In circ rules:
- Have a rule that charges fines
- Set Refund lost item replacement fee to "Refund lost item charge and charge new overdue fine"

1 - Have/create item with replacement price
2 - Check item out to patron 1, due date in past
3 - Run fines.pl
4 - confirm fines on patron 1
5 - mark item lost
6 - confirm replacement cost generated and fine forgiven on patron 1
7 - check item in
8 - confirm replacement cost forgiven and new fine generated on patron 1
9 - check item out to patron 2, due date in future
10 - check item in
11 - mark item lost (no replacement fee generated because item is not checked out)
12 - in database, update date_due for checkout to patron 2, set to a date in the past
13 - check item in
14 - confirm patron 2 now has a fine
15 - Apply patches, restart all
16 - Repeat test plan with another item and confirm no fine is added for patron 2

Note: At step 12 we're pushing the date_due of the old issue into the past to make date_due<curdate(). In production, this comes up when there are days between steps 10 and 13.
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 67c95addeb)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 9c81bdf529)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:30:35 +02:00
Nick Clemens 1ce180baf9 Bug 38477: Unit test
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 732c7d11ce)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 27266f68ad)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:30:35 +02:00
Nick Clemens fa2bd9507e Bug 39987: Correct breadcrumbs link to batch item deletion
This patch adds th del=1 param to the batchMod link in the breadcrumbs to ensure we return to batch item
deletion and not modification

To test:
1 - Browse to Cataloging->Batch item deletion
2 - Click the 'Batch item deletion' link in the breadcrumbs
3 - You are now at 'Batch item modification'
4 - Apply patch
5 - Repeat, you stay on the correct page
6 - Complete a batch item deletion and confirm the breadcrum is correct at each stage.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit fd2c0709bb)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 056ce915ff)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-19 09:28:00 +02:00
Tomas Cohen Arazi 5f1ec4595b Bug 36625: (follow-up) Restore subtest titles
Due to a bad rebase we ended up changing subtest names in commit 1b4bb57092
This patch restores them and has no effect on the tests themselves.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 9fcf329dcf)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 35aa5bd0bd)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-18 15:20:50 +02:00
Jonathan Druart 7aae661fc7 Bug 36625: Run subtests in txn - Koha/Biblio.t
Test plan:
select count(*) from itemtypes;
run the tests
exectute the select query again
=> No itemtypes should have been created

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 89c42eda9f)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 2b7d31a613)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-18 15:20:50 +02:00
Owen Leonard add3e016c2 Bug 38127: Missing column headings in 'Add user' pop-up modal
This patch modifies the template for adding to a basket from a new
(empty) record in order to make the "Add user" patron search results
correct. The patron search results table headers must be defined in the
template before they are used.

To test, apply the patch and go to Acquisitions.

- Search for a vendor.
- Add or create a basket for that vendor.
- Click "Add to basket" and select "From a new (empty) record."
- In the "New order" form, under the "Patrons" heading, click "Add user"
- Search for patrons to add.
- In the patron search results, each column should have a heading: Card,
  Name, Category, Library.

Sponsored-by: Athens County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit b4171a1522)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 5321f7fdd5)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-18 15:09:21 +02:00
Martin Renvoize db0be7b399 Bug 39887: Improve documentation for overdue_notices.pl
This patch corrects a few spelling mistakes and missing grammer and adds
a little more detail to the '--date', '--email' and '--frombranch'
options.

Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit f6fd9f2e90)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit b54a6574f2)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-18 15:05:20 +02:00
Nick Clemens db5b3a8384 Bug 39920: Update query for check previous checkout to use IN
This patch alters the query for checking previous checkouts to use
IN instead of a list of OR for itemnumbers.

To test:
1 - On the command line:
    export DBIC_TRACE=1
2 - perl -e 'use Koha::Patrons;my $patron = Koha::Patrons->find(5);my $item = Koha::Items->find(54);warn $item->itemnumber;$patron->do_check_for_previous_checkout( $item->unblessed );'
3 - Note the query
4 - Apply patch
5 - Repeat 2
6 - Note the shorter query

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 64ec35b2a5)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
(cherry picked from commit 8b044defb5)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2025-06-18 14:56:47 +02:00
Paul Derscheid a887152eb7
Update release notes for 24.11.05 release
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:59:56 +02:00
Paul Derscheid 2fcdbf1e14
Increment version for 24.11.05 release
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:49:30 +02:00
David Cook 1b28bd3425
Bug 39184: Turn off ABSOLUTE and EVAL_PERL for user-entered templates
This change turns off ABSOLUTE and EVAL_PERL for user-entered templates,
as these options can allow for arbitrary code execution and information
disclosure.

Test plan:
0. Apply the patch
1. koha-plack --restart kohadev
2. Create a Notice for Reports with a report like:
[% IF ( x == 1 ) %]
One
[% ELSE %]
Two
[% END %]
3. Run a report using this template
4. The report should show "Two"
5. Turn on CHECKOUT emails for a test patron
6. Perform a checkout
7. Look at the CHECKOUT email and note that the email body
is correctly generated

Signed-off-by: Magnus Enger <magnus@libriotech.no>
Would be good to have this fixed as the default.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
The test plan should include PERL blocks or absolute paths! Tested those
instead. Testing x==1 seems irrelevant.
I tried:[% PERL %]print 1;[% END %] and [% INCLUDE /app/Dockerfile_1 %]
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:48:04 +02:00
David Cook b5bc9cf343
Bug 36586: Define self-checkin timer using Javascript class
This patch rewrites the self-checkin timer code to be defined in a
Javascript class which is then instantiated in once in sci-main.pl
depending on certain conditions (ie a barcode has been entered, or
an item has been checked in by barcode).

To test:
1 - Set SelfCheckinTimeout to a small value like 5
2 - Go to the self checkin:
    http://localhost:8080/cgi-bin/koha/sci/sci-main.pl
3 - Sign in as the SCI user
4 - Watch the page, it should refresh every 5 seconds
5 - Confirm that moving the mouse/typing prevents the reset
6 - Check in an item
7 - Wait and confirm reload of main page happens when idle
8 - Confirm mouse/typing prevents refresh
9 - Sign off!

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>

Bug 36586: Add sc-timer to sco

This patch implements the timer form the last patch on the sco

To test:
1 - Set SelfCheckTimout to 5 or something low for testing
2 - Go to the self checkout module
3 - Either sign in or confirm you have AutoSelfCheck user setup
4 - Observe the page reloads every 5 seocnds (or as you set above)
5 - Sign in as a patron
6 - Confirm on idle you are logged out to home page
7 - Sign off!

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>

Bug 36586: Fix tidy

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit ff403dcfb3)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:06 +02:00
Thomas Klausner 3398c37bb4
Bug 37020: (follow-up): Remove memleak when not using Elasticsearch
If using ES, the script will collect the newly created records and biblionumbers in atwo arrays (@search_engine_record, @search_engine_record_ids) and pass that to the indexer when $commitnum records are read. The arrays are cleaned afterwards.

BUT: The records and biblionumbers were always stored, even if we're not using Elasticsearch. And as the cleaning of those arrays only happens if we are in fact using ES, all the data is added but never cleaned.

This patch fixes this by only storing record and biblionumber if we have an $indexer (i.e. if we're using Elasticsearch).

I have no idea though how/if the records are indexed when using Zebra.

After applying this patch and importing a large enough file without using Elasticsearch, the RAM usage also stays more or less constant.

@Jan, please verify!

Signed-off-by: Jan Kissig <bibliothek@th-wildau.de>
Signed-off-by: Thomas Klausner <domm@plix.at>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 132593c8a8)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:06 +02:00
Thomas Klausner d836f19689
Bug 37020: (follow-up) Fix txn handling, loop label and record_number counter
So, I reviewed the code, which has a bunch of issues:

* there's a call to `next RECORD`, but no `RECORD` loop label.
* $record_number is incremented twice
* and the calls to txn_begin is moved from the outside the loop into each record, starting one transaction per record. Not sure how mysql handles this, but postgres would not like it.

This patch fixes those issues:

After I fixed the first two issues, I ran the patched script on a file containing 75 authorities (from GND), and not one was added to the DB, presuambly because nested transactions don't work in mysql?

So I also moved the BEGIN transaction outside of the main loop and started a new one after each commit, and added a final commit after to loop.

Signed-off-by: Jan Kissig <bibliothek@th-wildau.de>
Signed-off-by: Thomas Klausner <domm@plix.at>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 01d36c5e8b)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:05 +02:00
David Gustafsson 848cd28c8e
Bug 37020: bulkmarcimport gets killed after update to 24.05. when inserting large files
Include checking for invalid marc data in main loop to avoid
loading all marc data into memory at once.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit ba0979a4c9)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:05 +02:00
Lucas Gass 66211fbbe8
Bug 17338: Fix redirection to correct tabs on waitingreserves.pl
To test:
1. Place multiple holds, good to have at least 4, for pickup at a location, I used Nick's handy script
2. Perl misc/cronjobs/holds/build_holds_queue.pl
3. Check in at least 4 items for pickup at one location so they'll be wating
4. Update the expiration date on those holds using ktd --dbshell
  update reserves set expirationdate = DATE('2024-01-01') where branchcode='CPL';
5. On Circulation > Holds waiting past their expiration date tab use the cancel button that is in the actions column to cancel a hold

The page loads on the Holds waiting tab, although in the url you see /circ/waitingreserves.pl?tab=holdsover

6. APPLY PATCH
7. Try 1 - 5 again, this time after step 5 you should be redirected.
8. Try cancelling holds with a transfer, ensuring you get redirected correctly.

Signed-off-by: Andrew Auld <andrew.auld@openfifth.co.uk>
Signed-off-by: Brendan Lawlor <blawlor@clamsnet.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 9c746e675c)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:04 +02:00
Nick Clemens 160f5fafe9
Bug 39415: (follow-up) Add 651g to bib heading fields as well
Test plan:
 0 - Apply other patches - reindex your catalog
     perl misc/search_tools/rebuild_elasticsearch.pl -v -d
 1 - Set the prefs AutoLinkBiblios and CatalogModuleRelink to Do
 2 - Create three GEOGR_NAME authorities:
      151$aDismal Swamp
      151$aDismal Swamp$gSouth
      151$aPit of Despair
 3 - In a new bib record, add 651 fields
      651$aPit of Despair
      651$aDismal Swamp
      651$aDismal Swamp$gSouth
 4 - Click Link authorities automatically
 5 - 'Pit of despair' links correct - other records both link to 'Dismal swamp'
 6 - Apply this patch, restart_all
 7 - Click Link authorities automatically
 8 - Dismal Swamp and Dismal Swamp South are correctly linked

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit e93057f4fc)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:03 +02:00
Nick Clemens 11880e199e
Bug 39415: Add subfield g for geographic name authorities
This patch adds the subfield g to the hardcoded list of controlled fields
so that it is no longer ignored

To test:
1 - Edit a GEOGR_NAME authority to add a g subfield to field 151
2 - Search for this authority in Authorities
3 - Don't see g
4 - Apply patch, restart all
5 - Search again, you see g!
6 - Edit a record and link to the authority
7 - g is copied over!

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Thomas Klausner <domm@plix.at>
Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 38d552f4cb)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:03 +02:00
Nick Clemens 697a18d9c5
Bug 38650: Only fill title level holds, or holds on the exact item
We change the conditions for filling holds to require that either:
- the hold is title level
- the hold is on the exact item

To test:
 1 - Place a hold for patron A on item #1 of a record
 2 - Place a hold for patron B on item #2 of a record
 3 - Issue item #2 to patron A - their hold on item #1 is filled incorrectly, check the item in
 4 - Apply patch, restart all
 5 - Place hold for patron A on item #1
 6 - Issue item #2 to patron A - their hold on item #1 is not filled, check the item in
 7 - Cancel that hold
 8 - Place a title level hold for the record for patron A
 9 - Check item #1 in at a different branch and confirm transfer
 9 - Issue item #2 to patron A
10 - The hold is filled as title level, even though item #1 was selected for the hold, check the item in
11 - Place an item level hold for item #2 for patron A
12 - Issue item #2 to patron A, hold is filled

Signed-off-by: Stephanie Petruso <spetruso@aacpl.net>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 1df229719c)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:17:02 +02:00
Nick Clemens a21bf53836
Bug 38650: Unit tests
Signed-off-by: Stephanie Petruso <spetruso@aacpl.net>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 5cdfea2d5f)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-26 20:16:57 +02:00
Paul Derscheid b5c6028818 Bug 39857: Add new dependency Test::NoWarnings for 24.11.x 2025-05-26 11:03:03 +02:00
Owen Leonard e662510452 Bug 35202: Table settings should apply to multiple subscriptions in the OPAC
This patch updates the bibliographic detail page in the OPAC so that if
there are multiple subscriptions attached to one record, each table of
issues under the subscriptions tab adheres to the settings defined in
Table Settings.

To test you should have at least two subscriptions attached to one
record, and at least one issue of each subscription.

- Apply the patch and view the record in the OPAC.
- Under the "Subscriptions" tab there should be separate tables for each
  subscription, each of them a sortable DataTable.
- In the staff interface, go to Administration -> Table settings -> OPAC
  -> subscriptionst
  - Select some columns to be hidden by default.
- Return to the OPAC and confirm that each subscription table now
  reflects the change you made in table settings.

Sponsored-by: Athens County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Ray Delahunty <lib-systems@arts.ac.uk>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit ff71f51b65)
2025-05-23 18:37:12 +02:00
Lucas Gass 3035ea4d48 Bug 39620: Fallback to GetMarcPrice if nessesary
To test:
1. Have a MRC file with price populated in the 020$c
2. Have nothing the MarcFieldsToOrder or  MarcItemFieldsToOrder sys prefs
3. Create a new basket and import from a new file
4. The price is not imported.
5. APPLY PATCH and restart_all
6. Try again, this time the price should be populated correctly.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit da3d4b72dd)
2025-05-23 18:28:42 +02:00
Aleisha Amohia de77d28db5 Bug 39406: Make serial issues sort from new to old on collection page
This patch fixes the serial collection table to sort in descending order on the date published column.

To test:

1. Create a subscription if you don't already have one.
2. Go to the Serial Collection tab using the left navigation.
3. Click the Generate Next button a bunch of times to generate some serial issues. Note that the issues are displaying in the table in ascending order, with the oldest date published at the top.

4. Apply the patch and refresh the page

5. Confirm the issues are now displaying in the table in descending order, with the newest date published at the top.
6. Click the Generate Next button again and confirm the issue is inserted at the top of the table.

Sponsored-by: Pymble Ladies' College
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit d49e7392bc)
2025-05-23 18:24:16 +02:00
Nick Clemens 1d6731025d Bug 38395: Only embed deleted_biblios for old holds
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 6db083163d)
2025-05-23 12:33:51 +02:00
Nick Clemens 72e52478ff Bug 38395: Display bibliographic data for deleted biblios in holds history
This patch adds deleted_biblio to the patron holds api and adjsuts the display to
shwo the data for deleted items

To test:
 - place a hold
 - cancel the hold
 - look in patron hold history, see the title
 - delete the biblio
 - reload patron hold history
 - you see a line with no title or author
 - apply patch, yarn build, restart_all
 - reload patron hold history
 - success, you see deleted title info
 - enable OPACHoldsHistory preference
 - sign in to OPAC as patron
 - confirm holds history shows deleted title info

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 8a628fd131)
2025-05-23 12:33:51 +02:00
Jonathan Druart afbf1ea56c Bug 38714: biblio-title.inc [opac]
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit df00647882)
2025-05-23 12:33:51 +02:00
Nick Clemens ae818c0ca8 Bug 36867: (follow-up) Don't check IP if ILS-DI disabled
When ILS-DI is disabled we still expect to return the correct service name/section in the
xml, but just indicate that it is disabled.

We should skip the check for authorized IPs in this case, as the IP only matters when service is enabled

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 3f649cfed7)
2025-05-23 12:18:30 +02:00
Paul Derscheid 97b0baa77d Bug 38641: Prevent failure of vue_tidy.t by removing excess whitespace 2025-05-23 12:18:30 +02:00
Nick Clemens d24b4f3806 Bug 39710: Handle deleted biblios in holds history
To test:
 - place a hold
 - cancel the hold
 - look in patron hold history, see the title
 - delete the biblio
 - reload patron hold history, error
[2025/04/23 11:43:28] [WARN] OpenAPI >>> GET api/v1/patrons/5/holds [{"message":"Expected integer - got null.","path":"\/body\/3\/biblio_id"},{"message":"Expected integer - got null.","path":"\/body\/4\/biblio_id"}]
 - apply patch, yarn build, restart_all
 - reload patron hold history
 - success
 - enable OPACHoldsHistory preference
 - sign in to OPAC as patron
 - confirm holds history can be loaded

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 926b8c9c68)
2025-05-23 12:18:30 +02:00
Nick Clemens 955f9d4528 Bug 39710: Unit test
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 0fff879e40)
2025-05-23 12:18:30 +02:00
Jonathan Druart a3179fb7eb Bug 35560: historical => past
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 64e51d89e1)
2025-05-23 12:18:30 +02:00
Owen Leonard 89c0c9591b Bug 35560: (follow-up) Changes to classes and ids; BS5 follow-ups
This follow-up changes the "selected" class to "select_hold_status" to
avoid possible future collisions with other CSS. IDs are added to the
checkbox containers because I can already tell that some libraries will
want to hide the "Processing" checkbox which is only relevant to some
setups.

The patch also makes a couple corrections to "alerts" to update them
with BS5 classes.

Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 963424d7c7)
2025-05-23 12:18:30 +02:00
Owen Leonard cf8e24c427 Bug 35560: (follow-up) Add in-page links to jump between tables
Also a terminology change: I think "Past holds" reads better than
"Historical holds."

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 86b4fcf656)
2025-05-23 12:18:30 +02:00
Jonathan Druart 49c5e2b5ec Bug 35560: Add filter on status
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 605ca6176e)
2025-05-23 12:18:30 +02:00
Jonathan Druart 58f23b99db Bug 35560: Use the REST API for holds
This patch uses the new REST API endpoint to retrieve the old holds.

We can now have 2 tables, one for the current holds and one for the old
ones.

Test plan:
Have several holds with several statuses.
Notice that you see the holds in the respective tables. Test the usual sorting
filtering DT feature and confirm that everything works as expected.

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit d581f067d6)
2025-05-23 12:18:29 +02:00
Tomas Cohen Arazi 7193d89c0a
Bug 38461: (follow-up) Fix tests
This patch does two things:

* Fixes a backport issue with 38461, making `mock_table_settings` have
  the right function signature, and accept (and use) the
  `table_settings_var` parameter.
* Makes the scope for the `items_table_settings` variable be the window
  object, so it is accessible to Cypress for manipulation/mocking. This
  is done by changing `let` for `var` [1]

To test:
1. Run:
   $ ktd --shell
  k$ run_cypress --spec t/cypress/integration/KohaTable_spec.ts
=> FAIL: Tests fail!
2. Apply this patch
3. Repeat 1
=> SUCCESS: Tests pass!
4. Sign off :-D

[1] If you are curious about it, change it back to `let` and run the
tests.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-22 19:58:50 +02:00
Lucas Gass 60623d7056
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 <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 2a6da59f48)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:06:00 +02:00
Lucas Gass 6c3645f3de
Bug 39633: Use column names to get table settings
1. Cataloging > Inventory
2. Run the tool without uploaded barcodes
3. Table loads and you see all the DataTable controls ( Table settings, etc )
4. Run the tool while uploading at least 1 barcode
5. No DataTable controls
6. APPLY PATCH
7. Try steps 1 -4 again, making sure everything now works.

Signed-off-by: Sam <sam.sowanick@corvallisoregon.gov>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 74838888c0)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:06:00 +02:00
Matt Blenkinsop b036666b81
Bug 39915: Restore CSV export of late issues
This patch restores the ability to export late serial claims to CSV

Test plan:
1) Create a new subscription, setting the vendor id as 1
2) Set the subscription start date as yesterday's date, the other
   details aren't relevant so set whatever you want
3) Click into claims
4) If you get a warning saying no claims notice is defined then click
   the link to define one (on the dropdown for the 'New notice' button
   you want 'Claim serial issue. The content of the notice isn't
   relevant here so input anything). Then head back to the claims page.
   If no warning shows, proceed to the next step
5) Choose My Vendor and hit OK
6) You should see a table of claims with the first issue for your new
   serial
7) Click the checkbox next to the row
8) Click the 'Download selected claims' button at the bottom
9) The CSV will download
10) Click into it - it will have the header but the rows will be blank
11) Apply patch
12) Hard refresh the page
13) Click the download button again
14) Check the new file, the rows will be filled out correctly with data

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit a3d16177c2)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:59 +02:00
Lucas Gass 6e54b335fd
Bug 39361: Wrap modal JS in document ready function
To test:
1. Find or create an item with a hold on it.
2. Go to Circulation > Transfers
3. Transfer the item from step 1.
4. No modal appears to warn that the item has a hold.
5. APPLY PATCH
6. Try step 3 again, this time the modal should appear correctly.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 097153f279)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:59 +02:00
Owen Leonard cc97c6290d
Bug 39886: [24.11.x] Identifier typed as Identifierr
This patch corrects a typo in the Elasticsearch mappings template:

Identifierr -> Identifier

To test, apply the patch and go to Administration -> Search engine
configuration. In the "Type" column, check the dropdown menus. There
should be an item "Identifier."

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:58 +02:00
Lucas Gass e2c2df4b22
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 <andrew@bywatersolutions.com>
Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 9b8e2ea5e6)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:57 +02:00
Lucas Gass 6993bb0017
Bug 39644: Skip processing guarantor if already seen
To test:
1. In k-t-d try loading both member/moremember.pl and circ/circulation.pl for a patron with many guarantors.
2. Note the load times.
3. APPLY PATCH
4. Load times should now be reduced pretty significantly.
5. prove -v /kohadevbox/koha/t/db_dependent/Koha/Patron.t
6. No behavior should change.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 8bd72af1ff)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:57 +02:00
Nick Clemens 178e8c6d20
Bug 39857: Fix expanded_avs option for OAI
This patch correct the call to filter the record

To test:
1 - Enable OAI
2 - Set  OAI-PMH:ConfFile to '/var/lib/koha/kohadev/OAI.yaml'
3 - Edit/create the file above to have content:
format:
  marcxml:
    metadataPrefix: marcxml
    metadataNamespace: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim
    schema: http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd
    include_items: 1
    expanded_avs: 1
4 - save and restart_all
5 - View some records:
    http://localhost:8080/cgi-bin/koha/oai.pl?verb=ListRecords&metadataPrefix=marcxml
6 - Note the items show coded values
7 - Apply the regressions tests patch
8 - Run:
    $ ktd --shell
   k$ prove t/db_dependent/Koha/OAI/Server/Repository.t
=> FAIL: Tests fail!
9 - Apply this patch
10 - Restart all
11 - Refresh and confirm items now have descriptions
12 - Repeat 8
=> SUCCESS: Tests pass!

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Edit (tcohen): Amended the test plan to include the added regression
tests run
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 6130a072d3)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:56 +02:00
Tomas Cohen Arazi 44c321861a
Bug 39857: Regression tests
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 2e07046708)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:56 +02:00
Phil Ringnalda 696454621f
Bug 39464: Grey rows in tables not highlighting in yellow when they should
Because the CSS rule for turning odd-numbered rows grey is highly-specific
(tbody tr:nth-child(2n+1):not(.dtrg-group, .active, .ok) td:not(.bg-danger,
.bg-warning, .bg-info, .bg-success, .bg-primary)), it overrides the
.highlighted-row, .highlighted-row td rule that some tables use to turn the
background of a currently-selected row yellow, so highlighted-row needs to be
added to the lists of not().

Test plan:
 1. Without the patch, Cataloging - New from Z39.50/SRU, perform a search like
    Author smith which will return at least two results.
 2. On an even-numbered row with a white background, click MARC and note that
    the row is given a yellow background (either by increasing the size of the
    popup to peer around the preview, or by closing the preview, since the
    highlight persists).
 3. On an odd-numbered row with a grey background, click MARC and note that
    the row isn't given a yellow background
 4. Administration - Circulation and fine rules, if you don't already have at
    least two rules add one by just changing the Patron category in the edit
    row and Save
 5. On a row with a white background, click Edit and note that the background
    for that row is yellow
 6. On a row with a grey background, click Edit and note that the background
    remains grey, not yellow
 7. Apply patch, in ktd --shell yarn build (or in a sandbox Actions - Build
    CSS and JS), clear browser cache or shift+Reload the page
 8. Repeat steps 1-6, but this time note that you get the same yellow
    highlighted background for both odd and even rows.

Signed-off-by: Magnus Enger <magnus@libriotech.no>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit b346ed1e79)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
2025-05-17 21:05:54 +02:00