Commit Graph

58042 Commits

Author SHA1 Message Date
Pedro Amorim efe048ec66
Bug 39970: Add tests
Test plan:
1) Apply this test patch. Run. Verify it fails
2) Apply other patch. Run. Verify it passes.

prove t/db_dependent/api/v1/patrons.t

Verify no other regressions are introduced, run:
prove t/db_dependent/Koha/Patron/Attribute.t

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
2025-06-02 15:26:08 -06:00
Nick Clemens 67c95addeb
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>
2025-06-02 14:55:41 -06:00
Nick Clemens 732c7d11ce
Bug 38477: Unit test
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
2025-06-02 14:55:40 -06:00
Nick Clemens fd2c0709bb
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>
2025-06-02 14:55:39 -06:00
Tomas Cohen Arazi 9fcf329dcf
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>
2025-06-02 14:55:38 -06:00
Jonathan Druart 89c42eda9f
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>
2025-06-02 14:55:37 -06:00
Owen Leonard b4171a1522
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>
2025-06-02 14:55:37 -06:00
Martin Renvoize f6fd9f2e90
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>
2025-06-02 14:55:36 -06:00
Nick Clemens 64ec35b2a5
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>
2025-06-02 14:55:27 -06:00
Owen Leonard 753ce067e6
Bug 39947: Do not use bg-* Bootstrap classes
This patch removes a few instances of the "bg-*" class from our
templates, and adds some CSS to ensure that we can safely add the
".bg-*-subtle" class to a div with ".page-section."

To test, apply the patch and rebuild the staff interface CSS.

- Go to Administration -> Circulation and fine rules. The information
  about rules specificity should have a pale blue background matching
  the color found in an "info" style alert.
- Go to Tools -> Import patrons. The "Notes" section should match what
  you saw in the previous step.
  NOTE: I made a small change to whitespace in the markup of this
  section to prevent the database column list from displaying without
  line breaks--an issue introduced by the global tidy.
- Go to Authorities and perform a search which will return results.
  - Click Actions -> Merge on one of the results. An "info" style alert
    should be shown at the top of the page, "Merging with authority..."
  - Without completing a merge, go to the Authorities home page. You
    should see an identical alert.
- In KTD, bibliographic record 369 can be used to test errors related to
  encoding problems:
  - Go to http://localhost:8081/cgi-bin/koha/catalogue/detail.pl?biblionumber=369
    and confirm that you see a "warning" style alert (a pale yellow
    background).
  - Edit that record and confirm you see a similar error messages on
    that page.

Sponsored-by: Athens County Public Libraries
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>
2025-06-02 12:20:51 -06:00
Lucas Gass eeef260c8a
DBRev 25.06.00.000: Start of a new release cycle
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
2025-06-02 12:20:42 -06:00
Jonathan Druart da75bdc692
Bug 40002: Add a cypress test
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-28 12:14:55 +02:00
Jonathan Druart ea359a10a9
Bug 40002: Fix filtering of patrons by 'Browse by last name'
We cannot longer filter patrons by first letter, the browser errors
"Uncaught TypeError: v.replace is not a function"

Signed-off-by: Emmi Takkinen <emmi.takkinen@koha-suomi.fi>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-28 12:14:54 +02:00
Katrin Fischer ae5fde9586
Koha 25.05.00 is here!
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:50 +02:00
Katrin Fischer ad4dfd097d
25.05.05: Add release notes
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:50 +02:00
Katrin Fischer 80464afe8a
25.05.05: Update kohastructure.sql
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:49 +02:00
Katrin Fischer 272c0e7d81
25.05.00: Update history.txt
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:49 +02:00
Katrin Fischer f442039ffa
25.05.00: Update contributors.yaml
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:48 +02:00
David Cook ec01689dc0
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: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 18:45:48 +02:00
Tomas Cohen Arazi 86f61b4f07
25.05.00: Update .mailmap (part 4)
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2025-05-26 10:19:09 -03:00
Jonathan Druart 82bd6aac35
Bug 39995: Prevent Koha/Biblio.t to fail on slow servers
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-26 14:48:04 +02:00
Katrin Fischer ef9041feb4
25.05.00: Update .mailmap (part 3)
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-23 18:33:07 +02:00
Martin Renvoize 2368ee0882
25.05.00: Update .mailmap (part 2)
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-23 15:40:39 +02:00
Tomas Cohen Arazi d194f195b9
Bug 37334: Adjust mocked _status data (bug 39932 follow-up)
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2025-05-22 10:51:43 -03:00
Katrin Fischer 7045e6b558
25.05.00: Update .mailmap
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-22 15:21:46 +02:00
Owen Leonard fa557624e9
Bug 39680: "Clear" menu item doesn't delete search history
This patch fixes the behavior of the OPAC's "Clear" link, which was not
updated to work with CSRF protection.

To test:

- If necessary, go to Administration -> System preferences in the staff
  interface and set the EnableOpacSearchHistory preference to "Keep."
- Log in to the OPAC.
- If necessary, perform several catalog searches in order to populate
  your search history.
- Expand the user menu in the upper right-hand corner and click the
  "Clear" link next to "Search history."
  - You should be prompted to confirm.
  - After confirming your search history should be empty.

Sponsored-by: Athens County Public Libraries
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-22 15:21:46 +02:00
Martin Renvoize 4564ed5ef1
Bug 39754: Enable fixed height and overflow on EDIFACT dropdown
This patch updates the 'Create EDIFACT order' menu dropdown for cases
where multiple EANs are available for the library.

We set the dropdown to a max-height of 75% of the window height and then
we enable y scrolling and hide the x scrollbar.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-22 15:21:45 +02:00
Owen Leonard fdf3b4e799
Bug 39957: Fix JS error on credit and debit types administration pages
This patch fixes an JS error in several administration pages, introduced
by Bug 39099 and 39810. We can't access a DOM node without checking for
its existence first.

To test, apply the patch and go to Administration.

- Check the following pages:
  - Authorized values
  - Credit types
  - Debit types
  - Item types
  - Patron categories.
- On each page check the JavaScript console on the initial page. There
  should be no errors.
- Check the add/edit page for each and confirm that the library
  limitation Select2 widget works correctly.

Sponsored-by: Athens County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-22 15:21:44 +02:00
Katrin Fischer d7af2cacff
Bug 26869: (QA follow-up) Fix missed sysprefs.sql
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-20 15:15:34 +02:00
Matthias Meusburger f51ec30438
Bug 38142: (follow-up) Choose language to report from authority to bibliographic record
- Rename LanguageToReportOnMerge system preference to LanguageToUseOnMerge
 - Use "use" instead of "report" in system preference description
 - Mark this feature as UNIMARC-only.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-20 15:15:33 +02:00
Matt Blenkinsop 0c027e9db1
Bug 30301: (follow-up) Fix API spec
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-20 15:15:33 +02:00
Jonathan Druart fb2136bc29
Bug 37334: Fix conflict with bug 39473
Bug 39473 added ^ and $ to options of the dropdown lists from the
column filters.

They are removed and replaced with "exact" later in the code (using
build_query).

But in the case of "_status", we do no get this code as it's not a
regular column (it does not have "data" attribute), but an additional
filters.

I don't think this fix is ideal, but we are too close to the release to
rework datatables.js

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-20 15:15:32 +02:00
Raphael Straub c184893a53
Bug 39540: Add a warning to the circulation rules page if CalcFine is overwritten.
This patch adds a warning to the "Circulation and fine rules" page in
"Koha administration" if there is an enabled plugin that implements the
overwrite_calc_fine plugin hook.

To test:
1) Apply the patch.
2) In your browser go to
   /cgi-bin/koha/admin/smart-rules.pl
   and check that there is no warning on the top of the page.
3) Install a plugin that implements overwrite_calc_fine.
4) Reload /cgi-bin/koha/admin/smart-rules.pl and check
   that now there is a warning that displays the installed
   plugin's name.

Sponsored-by: Karlsruhe Institute of Technology (KIT)
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>
2025-05-20 15:15:32 +02:00
Tomas Cohen Arazi 8d9bdbde07
Bug 39932: Remove split in template
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>
2025-05-20 15:15:31 +02:00
Tomas Cohen Arazi 4609ffd715
Bug 39932: Add POD for Koha::Item->_status()
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
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>
2025-05-20 15:15:30 +02:00
Tomas Cohen Arazi ffab355be0
Bug 39932: Make Koha::Item->_status return an arrayref
This patch makes the method return an actual array instead of a
comma-separated string. The API spec is adjusted so it also expects an
array in the response.

Tests are adjusted for the new return value.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ yarn api:bundle
  k$ prove t/db_dependent/Koha/Item.t
=> SUCCESS: Tests pass!
3. Sign off :-D

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>
2025-05-20 15:15:30 +02:00
Katrin Fischer d17f6552a1
Bug 30301: DBRev 24.12.00.046
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:34 +02:00
Nick Clemens 32b829ace1
Bug 30301: (QA follow-up) Restore terminology in messaging preferences
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:33 +02:00
Matt Blenkinsop 0f2b79c444
Bug 30301: (QA follow-up) Restore correct terminology and add to columns settings
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:33 +02:00
Matt Blenkinsop 9a57c7c8f8
Bug 30301: Allow for forcing of print notices
Although we're reverting 32216, we still want to be able to force print notices as per the original intent.
This patch adds that into queue_notices, rather than in the cronjob

Co-authored-by: Jake Deery <jake.deery@openfifth.co.uk>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:32 +02:00
Matt Blenkinsop 9b5da196c4
Bug 30301: Restore check for mandatory notice
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:32 +02:00
Matt Blenkinsop c54a14a43f
Bug 30301: Revert "Bug 32216: Add print notices to membership_expiry.pl"
This reverts commit 3040f46d5e.

Bug 30300 adds a patron messaging preference for the expiration notice and abstracts this logic into queue_notice
Bug 32216 removes this call to enable print notice functionality but this would be handled already by queue_notice based on the patron's messaging preferences

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:31 +02:00
Matt Blenkinsop db9f3126ef
Bug 30301: Update cronjob to check for mandatory notice
The patches on this bug add the ability for staff members to set the patron expiry notice as mandatory at the category level. When set, the cronjob will automatically send an expiry notice regardless of existing messaging preferences. If it is turned off, the old messaging preferences will still be in place and actioned

Test plan:
1) Apply patch and run updatedatabase
2) In system preferences set MembershipExpiryDaysNotice to 5
3) Choose a patron and edit their expiry date to today's date, ensuring they have a primary email set
4) Create a MEMBERSHIP_EXPIRY notice (content of the notice is irrelevant, just needs to exist)
5) Run perl misc/cronjobs/membership_expiry.pl -c -v -before 10 -after 10
6) Check the patron's messages, there should be no expiry notice queued
7) Set the patron's category 'enforce expiry notice' field to Yes
8) Repeat step 5, there should be a notice queued
9) Set that patron's primary contact method to primary email and run step 5 again
10) There should be a notice queued for an email
11) Set the category level enforce expiry notice back to No
12) Choose a second patron and set an email address, expiry date to today and set the patron expiry messaging preference for that patron to 'email'
13) Repeat step 5 - this time only one notice should be queued on the second patron, no new notice should queue for the first
14) Re-set the category level option to Yes
15) Repeat step 5 - this time both patron's should have notices queued
16) Unset the category level option again, the behaviour should be the same as step 13
17) Set the category level option back to Yes and check the patron messaign preferences menus in both the OPAC and Staff client - the patron expiry option should not be visible while the cateogry level enforcement is set to Yes

Signed-off-by: Hanna Leiker <tech.hanna@salinapublic.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:30 +02:00
Matt Blenkinsop 84076d5169
Bug 30301: Update templates
Signed-off-by: Hanna Leiker <tech.hanna@salinapublic.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:30 +02:00
Matt Blenkinsop a319d7052b
Bug 30301: DBIC file
Signed-off-by: Hanna Leiker <tech.hanna@salinapublic.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:29 +02:00
Matt Blenkinsop c882117b95
Bug 30301: Add a new column to enforce the expiry notice
Signed-off-by: Hanna Leiker <tech.hanna@salinapublic.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:29 +02:00
Janusz Kaczmarek c0b3310ab8
Bug 38925: Update record 'date entered on file' when duplicating a record -- in advanced editor (MARC21)
With Bug 36552 we set 'date entered on file' (MARC21: 008/0-5)
of a record created by duplication of an existing record to the current
date instead of having there the value from the original record.

The same should be done for the advanced editor (for now, it retains
the date of the original record).

Test plan:
==========
1. Enable EnableAdvancedCatalogingEditor systempreference.
2. Open any record in advanced editor to make it default. Go back to
   record normal display.
3. Make a duplicate: Edit > Edit as new (duplicate)
4. Note that the date in 008/0-5 is of the original record, not of
   today.
5. Apply the patch ; restart_all.
6. Repeat p. 3. The date in 008/0-5 should be of the today. If not,
   refresh browser's cache (Ctrl+Shift+R etc.) to get the fresh
   version of the JS.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:28 +02:00
Hammat Wele b37d107aa3
Bug 35434: (follow-up) Unit test
Test plan:
1. Tests should pass: prove t/db_dependent/Koha/Item.t

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:28 +02:00
Hammat Wele 03fc8b4057
Bug 35434: (follow-up) Added canreservefromotherbranches
When IndependentBranches is enabled, canreservefromotherbranches
set to don't allow is also required to prevent non-superlibrarians
from placing holds in other libraries.

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:27 +02:00
Emily-Rose Francoeur 15988d1a6a
Bug 35434: Prevent non-superlibrarians from placing holds in other libraries when using IndependentBranches
When IndependentBranches is enabled and canreservefromotherbranches
is set to don't allow, then non-superlibrarians should not be able to
place holds for other libraries.

Test plan:
1. Appy the patch.
2. In Koha administration > System preferences, set:
   - IndependentBranches: Yes
   - canreservefromotherbranches: Don't allow
3. In Koha administration > Circulation and fines rules, check that
   you have a rule for all patron categories and all item types, with
   unlimited holds.
4. Find (or create) a staff patron for a library other than Centerville:
   - Change the username and password so you can log in as the
     staff patron.
   - Add permissions to the staff patron (More > Set permissions):
     . Staff access, allows viewing of catalogue in staff interface
     . Add, modify and view patron information
     . Place and modify holds for patrons
5. Find (or create) a patron with the same home library as the
   staff patron in step 4.
6. Find (or create) a record with an item where the home and
   current library are the same as the staff patron in step 3 and the
   patron in step 5.
7. As a superlibrarian place a hold for the record from step 6
   using the patron from step 5:
   - If placing a hold for the next available item, the "Pickup at"
     dropdown list should list all libraies.
   - If placing a hold on a specific item, the dropdown list for the
     "Allowed pickup locations" column for each item should also list
     all libraries.
   - After placing the hold, in the "Existing holds" table, the dropdown
     list for each hold in the "Pickup library" column should
     also list all libraries.
8. Log out from the staff interface and login with the staff patron
   from step 4.
9. Find the record from step 6 and place a hold using the patron from
   step 5 - the library dropdown list should be limited to the
   item's home library:
   - If placing a hold for the next available item, the "Pickup at"
     dropdown list should only list the item's home library.
   - If placing a hold on a specific item, the dropdown list for the
     "Allowed pickup locations" column for each item should also only
     list the item's home library.
   - After placing the hold, in the "Existing holds" table, the
     "Pickup library" column should now only show the item's home
     librayr, with no dropdown list.

Signed-off-by: Anni Rajala <anni.rajala@turku.fi>
Signed-off-by: baptiste <baptiste.bayche@inlibro.com>
Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-05-19 18:54:27 +02:00