Commit Graph

56543 Commits

Author SHA1 Message Date
Jonathan Druart e5c81dcb4c
Bug 38714: acqui/acqui-home.tt - follow-up
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>
2025-02-11 14:55:55 +01:00
Jonathan Druart 6ff755f223
Bug 38714: acqui-home
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>
2025-02-11 14:55:55 +01:00
Jonathan Druart 685e8a5855
Bug 38720: HTML1 no longer valid - remove xt/tt_valid.t
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-11 14:55:54 +01:00
Jonathan Druart 2ffe4c6de1
Bug 30707: Fix cataloguing/z3950_search.tt
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-11 14:55:53 +01:00
Jonathan Druart 6cfcbabb53
Bug 30707: Fix acqui/z3950_search
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-11 14:55:53 +01:00
Jonathan Druart 10a41979e6
Bug 38838: Clean C4::Reports::Guided->get_columns
reports/dictionary.tt and reports/guided_reports_start.tt display a list
of the columns available using optgroup to group the columns per table.

The template code is quite ugly because of the perl structure choose in
C4::Reports::Guided->get_columns

This patch removes $cgi and the 'first' variable that were not used.
Now we have an usual structure with the table names as keys and column
info in an arrayref.

Test plan:
Create a report and a new dictionary definition.
At step 3 you should see the list of the columns.
Note that they are now identical. The list when you create a dictionary
now show the description of the columns.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-11 14:55:52 +01:00
Jonathan Druart 72ad69926d
Bug 39007: Replace warning_like with is
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-05 17:31:31 +01:00
Katrin Fischer 0cf04c11db
Bug 35028: DBRev 24.12.00.008
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:03 +01:00
Lucas Gass da6e35a978
Bug 35028: (QA follow-up) Fix file permission for DB update
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:03 +01:00
jeremy breuillard fbdc4132ea
Bug 35028: Add self-registrations alert on staff interface main page
This adds a new system preference PatronSelfRegistrationAlert to enable
or disable alerts (disabled by default)

Test plan:
1. Create patron category SELFREG
2. Enable PatronSelfRegistration and set
   PatronSelfRegistrationDefaultCategory to SELFREG and
   PatronSelfRegistrationAlert to "Show"
3. Go to OPAC, logout if needed, and create a new account. Remember the
   value you set for home library.
4. Go to staff interface, set the current library to the one you set in
   step 3.
5. Go to the staff interface main page. You should see at the bottom a
   message saying "Self-registrations from: All libraries: 1 /
   <CURRENT LIBRARY>: 1" (numbers can vary if you already had
   self-registered patrons)
6. Click on both links and verify that it shows the correct patrons (or
   redirect to the patron detail page if there is only one)
7. Set the current library to another one (one that doesn't have
   self-registered patrons)
8. Go to the staff interface main page. You should see at the bottom a
   message saying "Self-registrations from: All libraries: 1"
   (numbers can vary if you already had self-registered patrons)
9. Click on the link and verify that it shows the correct patrons (or
   redirect to the patron detail page if there is only one)

Co-authored-by: Fridolin Somers <fridolin.somers@biblibre.com>
Co-authored-by: Julian Maurice <julian.maurice@biblibre.com>
Sponsored-by: Écoles nationales supérieures d'architecture (ENSA)
Signed-off-by: William Lavoie <william.lavoie@inLibro.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:02 +01:00
Jonathan Druart 86a8c1d233
Bug 34778: (follow-up) Remove the include file
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:02 +01:00
Jonathan Druart 96bc32b5bc
Bug 34778: Remove the include file
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:01 +01:00
Jonathan Druart ecd03feef9
Bug 34778: Remove extra 'bootstrap' when loading the js asset
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:01 +01:00
Lucas Gass 0e2222f9af
Bug 34778: Add a selenium test
prove -v t/db_dependent/selenium/authentication.t

Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:00 +01:00
David Cook eb2760a9a8
Bug 34778: (follow-up) convert label from 'span' to 'label' element
Also uses the "for" attribute to uniquely point to the correct
checkbox.

Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:27:00 +01:00
David Cook 033a93e799
Bug 34778: Add a 'Show password' toggle when logging into the OPAC
1. Apply the patch
2. perl build-resources.PL
3. Go to http://localhost:8080/cgi-bin/koha/opac-main.pl
4. Type "ABC" into the "Password" box and click "Show password"
5. Note that the password is now visible. Click again to hide password.
6. Click "Log in to your account"
7. Type "123" into the "Password" box and click "Show password"
8. Note that the password is now visible. Click again to hide password.
9. Note that the password on the main screen wasn't affected by the "Show password"
in the modal
10. Repeat the above process on http://localhost:8080/cgi-bin/koha/opac-user.pl

Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:59 +01:00
Hammat Wele ba5689f731
Bug 32742: (follow-up) Add sorting feature when printing the patron cards from the patron card creator
This patch also put the «Order by» field at the last position in the form

To test

1. Go to Tools > Patron card creator
2. Create a new Card batch
3. Add some patrons
4. Select all cards by clicking on checkbox in the select colunm
5. Click on «Export selected card(s)», an Export patron cards windows is opened
6. Fill the «Order by» field and submit
7. Check the cards order in the pdf
    --> notice the cards are now ordered.
8. Close the window opened in step 5
9. Click on «Export card batch», an Export patron cards windows is opened
10. repeat step 6 and 7
    --> notice the cards are now ordered.
11. Close the window opened in step 9
12. Fill the «Batch description» field and click on «Save description»
13. Click on Manage -> Card Batches
14. Click on Export button
15. repeat step 6 and 7
    --> notice the cards are now ordered.
16. Select a batch to export and click on «Export selected batches» button
17. repeat step 6 and 7
    --> notice the cards are now ordered.

Signed-off-by: Kelly <kelly@bwatersolutions.com>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:59 +01:00
Hammat Wele 2e307f68d3
Bug 32742: Patron's lists option are not in alphabetical order
This patch add sorting feature to the patron card lists export option

To test

1. Go to Tools > Patron lists
2. Create a new patron list
3. Add 10 patrons in a random order (not in alphabetical nor in cardnumber sequence)
4. Go back to Tools > Patron lists management page
5. Find your list, click on 'Action' and select 'Print patron cards'
6. Check the cards order in the pdf
    --> notice these cards aren't in alphabetical order.
7. Apply the patch
8. Repeat step 4, 5
9. Fill the «Order by» field and submit
10. Check the cards order in the pdf
    --> notice the cards are now ordered.

Signed-off-by: Émily-Rose Francoeur <emily-rose.francoeur@inLibro.com>
Signed-off-by: Kelly <kelly@bwatersolutions.com>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:58 +01:00
Aleisha Amohia a1f8daa9aa
Bug 37588: Add ability to mark a suggestion as Available
This enhancement provides the ability to edit a suggestion and mark the status as Available.

To test:

1) In the staff interface, edit a patron and give them a primary email address.
2) Click the More menu at the top and go to Suggestions.
3) Create a new purchase suggestion. Fill in the required bibliographic information. Under the Suggestion management section, click the 'Set to patron' button and search for the patron you just edited. This is to mark the suggestion as created by this patron. Submit your suggestion.
4) Your suggestion is now pending. Check the checkbox for your suggestion and mark it as Available. Submit.
5) View your patron and go to their Notices tab.
6) Confirm the 'suggested purchase available' notice has been generated for them.
7) Repeat steps 2 & 3.
8) Once you've made a new suggestion, go to Edit the suggestion. Under the Suggestion management section, change the Status dropdown to Available. Save.
9) Repeat steps 5 & 6.

Sponsored-by: Pymble Ladies' College
Signed-off-by: Olivier V <olivier.vezina@inLibro.com>
Signed-off-by: Laura_Escamilla <laura.escamilla@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:58 +01:00
Katrin Fischer dddacd08e2
Bug 30300: DBRev 24.12.00.007
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:57 +01:00
Katrin Fischer e9c4ce897d
Bug 30300: Rename "Patron expiry" to "Patron account expiry"
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:57 +01:00
Martin Renvoize 89493cd622
Bug 30300: (QA follow-up) Remove use of Koha:: and C4:: in DB Update
We require that database updates don't rely on Koha:: or C4:: code to
reliably maintain idempotency (The underlying methods may change at a
future date).

This approach uses two INSERT IGNORE statements which should also
improve performance.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:56 +01:00
Matt Blenkinsop 6c337a049e
Bug 30300: (QA follow-up) Prevent regression and improve clarity
This patch amends the DB update to check the MembershipExpiryDaysNotice syspref and sets the flag for all patrons if the syspref is set

It also improves the UI visiblity by hiding the messaging preference if the syspref isn't set and adding more clarity to the syspref definition

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:56 +01:00
Nick Clemens f03a4af3fa
Bug 30300: (QA follow-up) Remove extra return
The routine loops on the found transports, if there are none it will simply return, no need to short circuit

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:55 +01:00
Matt Blenkinsop 3d3ccd4624
Bug 30300: (QA follow-up) Move logic to queue_notice
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:54 +01:00
Matt Blenkinsop ae68d05b59
Bug 30300: Update the cronjob to respect patron messaging preferences
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
4) Ensure that patron has a primary email address
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) Edit the patron's messaging preferences and select the checkbox for email in the row for 'Patron expiry'
8) Repeat step 5
9) There should be a patron expiry message in the patron's message queue
10) Sign off!

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:54 +01:00
Matt Blenkinsop d3a5ec0c61
Bug 30300: Add a patron expiry messaging preference
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:53 +01:00
Owen Leonard 1a71b5f70e
Bug 38773: SMTP server is not showing on the library detail page
This patch fixes and incorrect template variable name, making it
possible to see a library's SMTP server when viewing the details of an
individual library.

Test plan copied from the original bug report:

1. Create an SMTP server in Koha (it doesn't need to be valid)
   a. Go to Administration -> Additional parameters -> SMTP servers
   b. Click "New STP server"
   c. Fill all mandatory fields (it doesn't need to be valid
      information)
   d. Click "Submit"

2. Add the created SMTP server to a library
   a. Go to Administration -> Basic parameters -> Libraries
   b. Choose a library and click on Edit (in column "Actions")
   c. On the line "SMTP server" select the server created
   d. Click "Submit"

3. Check the display
   a. Go to Administration -> Basic parameters -> Libraries
   b. Check that the name of the SMTP server you just selected is
      displayed in the column SMTP server
   c. Click on the name of the library you modified
   d. Check that the line "SMTP server" shows the correct information.

4. Test with different permissions
   a. If the logged-in user has both 'manage_libraries' and
      'manage_smtp_servers' permissions the SMTP server name should be
      liked to the edit form for that server.
   b. If the logged-in user has only 'manage_libraries' permission there
      should be no link.

Signed-off-by: Bo Gustavsson <bosse@gustavsson.one>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-03 14:26:53 +01:00
David Nind da08fc5e1a
Bug 31270: (follow-up) Fix description for PatronSelfRegistrationLibraryList
Test plan:
1. Check that the updated description for the
   PatronSelfRegistrationLibraryList system preference makes sense.

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-01-31 15:57:36 +01:00
Nicolas Hunstein d8c5e63ec7
Bug 31270: Terminology - use "self-registration"
Standardize on the use of "self-registration" (and variations)
for consistency in the OPAC and staff interface, instead of
"self registration".

Test plan:
1. Check the codebase for occurences of "self reg":
   . git grep "self reg"
   . git grep "selfreg"
   . git grep "Self reg"
   . git grep "Selfreg"
2. Note the occurences, excluding code comments, previous
   database updates, and previous release notes.
3. Search the system preferences for "self reg" and "selfreg".
4. Note the occurences in the results for the system preference
   descriptions (excluding system preference names) for:
   - PatronSelfRegistrationDefaultCategory
   - PatronSelfRegistrationEmailMustBeUnique
   - PatronSelfRegistrationLibraryList
   - PatronSelfRegistrationPrefillForm
5. Note the system preferences category heading for the OPAC
   - "Self registration and modification".
6. Apply the patch.
7. Repeat steps 1 to 5. There should now be no occurences
   (excluding code comments, previous database updates, and
   previous release notes).

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-01-31 15:57:36 +01:00
Janusz Kaczmarek 37a7222de0
Bug 38895: In advanced editor, the fixed data helpers put '#' instead of space in record content
When editing a bibliographic record in advanced editor, there are
helpers for fixed data coded fields (like 008).  Like in the standard
editor, empty value (space) is represented by a hash sign.  But unlike
in the standard editor, the hash sign is not converted into a space but
remains as '#' in the saved record.  This is obviously wrong.

Test plan:
==========
1. Ensure to have EnableAdvancedCatalogingEditor set to 'enable'.
2. Create of edit a record, choosing for one of one-letter codes
   an empty value (represented by '#' in the helper).
3. Save the record, control in 'MARC preview' that you got a hash sign
   in the 008 field instead of a space.
4. Apply the patch ; restart all.
5. Open a record in advanced editor, refresh the page to reload the java
   script (Shift+Ctrl+R or another appropriate shortcut).  Edit the 008
   field again choosing for one of one-letter codes an empty value.
6. Save the record, control in 'MARC preview' that there is a space
   and not the hash sign.

Sponsored-by: Ignatianum University in Cracow
Signed-off-by: Esther Melander <esther@bywatersolutions.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-31 15:57:35 +01:00
Adolfo Rodríguez 117b7eb0eb
Bug 38515: Keep serial notes when generating next serial.
This patch prevents the loss of notes in serials when generating next serial

Test plan:
1 Create a subscription, fill the notes field for the serial with Expected status and activate the system preference PreserveSerialNotes
2 Click Generate next
3 Check that the notes from the now Late serial are gone and that the new serial doesn't have notes.
4 Apply patch, restart services
5 Edit the serial with Expected status to fill the notes field.
6 Click Generate next
7 Check that the notes from the now Late serial are kepts and that they have been copied to the new serial.

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-01-31 15:57:34 +01:00
Owen Leonard 92c6516651
Bug 38964: Fix column span in footer of staff interface account payment page
This patch fixes the column span in the table footer rows of the account
payment page (pay.tt). I've also added a couple of lines of CSS to style
the footer rows.

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

- In the staff client, locate a patron with charges.
- If necessary, go to a patrons "Accounting" tab and use the "Create
  manual invoice" page to add one or more charges to the account.
- Under the "Make a payment" tab there should be one or more footer rows
  including "Total due." The "Total due" cell should be aligned right,
  with a grey background.

Sponsored-by: Athens County Public Libraries
Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-31 15:57:34 +01:00
Lucas Gass 81446a7ce7
Bug 39003: Fix the tab template variable in opac-user.pl
To test:
1. SuspendHoldsOpac to 'allow'
2. Make some holds for a patron
3. Log in as that patron and go to 'Summary'
4. Click the 'Holds' tab
5. No suspend column
6. APPLY PATCH, restart_all
7. Try again, the column should show.
8. Turn off SuspendHoldsOpac, the column should be hidden.

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-01-31 15:57:33 +01:00
David Cook 322072a4bb
Bug 38998: Only show Edit link for DB default SMTP server
This change only shows the "Edit" on the smtp_servers.pl page
for the "Current default configuratio" if the default
configuration can be edited. That is, don't show it when
config comes from the code, and do show it when the config
comes from the database.

Test plan:
0. Apply the patch
1. Go to /cgi-bin/koha/admin/smtp_servers.pl
2. Ensure you delete any SMTP servers you've defined
3. Note that there is no "Edit" button at the bottom of
"Current default configuration"
4. Click "New SMTP server" and create a new default server
5. Go to /cgi-bin/koha/admin/smtp_servers.pl
6. Notice how now there is an "Edit" link at the bottom of
"Current default configuration"

Signed-off-by: Magnus Enger <magnus@libriotech.no>
Followed the test plan, works as advertised.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-31 15:57:32 +01:00
Matt Blenkinsop 5d67151107
Bug 39007: Update API spec and unit test
Test plan:
1) Run prove t/db_dependent/api/v1/erm_sushi_services.t - FAIL
2) Apply patch
3) Repeat step 1 - PASS
4) Inspect patch diff and note that last_audit has been added to the API definition

Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-31 15:57:32 +01:00
Andreas Roussos 48aad541cc
Bug 38987: Use the correct HTML id attribute
Starting with Koha 24.11.01, we can no longer link authorities with
other authorities (linking a bibliographic record with an authority
still works fine). This affects both MARC21 and UNIMARC instances,
and is valid on the main branch, too.

This patch fixes that.

Test plan:

1) Navigate to Koha's Authorities module and create a new authority
   (using the 'Default' authority type). In tab 5, expand field 500
   by clicking on its description.

2) Launch the Authority finder form by clicking on the small 'Tag
   editor' button on the far right of subfield 500$a.

3) Click the yellow 'Search' button at the bottom of the page.
   When the results appear, click on the '+ Choose' button for
   one of the authorities (any authority will do).

   Notice that nothing happens and the Authority finder stays open,
   whereas normally it should close automatically at this point and
   transfer you back to the authority editor, copying the info from
   the authority you selected into the subfields of field 500.

   Press F12 (works in Chrome and Firefox) to launch the Developer
   Tools of your browser and notice that in the JavaScript console
   the following error message has been registered:

   "Uncaught TypeError: e is null"

4) Apply this patch (and restart_all for good measure), then press
   CTRL-F5 to reload all JS assets.

5) Repeat step 3) above; this time, when you click on the '+ Choose'
   button the authority finder window will close and the contents of
   the authority you selected will be copied into the subfields of
   field 500.

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>
2025-01-30 19:13:54 +01:00
Fridolin Somers ed3481786f
Bug 38963: Check for existence of biblio object before fetching cover images in the OPAC
This patch adds a conditional to ensure the biblio object has been retrieved
and assumes no cover images otherwise. This is similar to bug 37425 that
fixed the issue for the staff interface.

Test plan:
 1. Enable the OPACLocalCoverImages system preference.
 2. Search in the OPAC (for example, attic).
 3. Find the biblionumber for one of the results and delete it
    from the database using SQL:
     DELETE FROM biblio WHERE biblionumber=3;
 4. Search again.
    NOTE: Steps 3 and 4 need to be done very quickly to generate the error.
    I had the terminal open with the SQL already loaded, and the browser
    also open.
 5. Error trace generated:
     Can't call method "cover_images" on an undefined value at /kohadevbox/koha/opac/opac-search.pl line 702.
 at /kohadevbox/koha/opac/opac-search.pl line 701
 6. Reindex, confirm error is gone: koha-rebuild-zebra -d -f -v kohadev
 7. Apply the patch.
 8. Repeat steps 2 to 4 - I searched for perl and used biblionumber 13.
 9. No error generated
10. Reindex and repeat search and confirm no error.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 19:13:53 +01:00
Pedro Amorim 05ea8ec61c
Bug 38528: (QA follow-up) Add tests for set_additional_fields with marcfield_mode = 'get'
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 19:13:52 +01:00
Baptiste Wojtkowski 30d0a31767
Bug 38528: (follow-up) add test for prepare_cgi_additional_field_values
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 19:13:52 +01:00
Pedro Amorim f9561c59c2
Bug 38528: Update empty field value logic
prepare_cgi_additional_field_values needs to consider a field value as empty, because a MARC get field will always be submitted empty, and then picked up and handled by set_additional_fields accordingly.
But because we don't want to polute the database with tons of empty additional fields if many empty repeatable fields were submitted in the UI, the check for empty value still happens, but only after the MARC get check has happen, not before.

Signed-off-by: Baptiste <baptiste.wojtkowski@biblibre.com>
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 19:13:51 +01:00
Nicolas Hunstein 489d8a47a3
Bug 38874: update descriptions of "UpdateItemLocationOnCheckout" and "UpdateItemLocationOnCheckin"
updates description "PROC: _PERM_ - causes an item that is in the Processing center to be updated to it's permanent location." to "PROC: _PERM_ - causes an item that is in the Processing center to be updated to its permanent location."

to test:
- go to Administration/System preferences
- check descriptionss for system preferences UpdateItemLocationOnCheckout and UpdateItemLocationOnCheckin
- verify descriptions contain "it's" instead of "its" in the place "PROC: _PERM_ ..."

- apply patch
- verify descriptions have changed to "its"

Signed-off-by: Aude <aude.charillon@ptfs-europe.com>
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:26 +01:00
Katrin Fischer 7d871e9de3
Bug 25711: (QA follow-up) Fix terminology, add form validation and price formatting
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:25 +01:00
Martin Renvoize eecad75fd1
Bug 25711: (QA follow-up) Re-base fixes
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:25 +01:00
Petro Vashchuk 171c679776
Bug 25711: Move get_effective_expire_charge to Koha::CirculationRules
Move get_effective_expire_reserves_charge as a new method
in Koha::CirculationRules to retrieve the effective value of the rule,
which means it will get the value from existing circulation rule and
if it doesn't exist or set to undefined it will get the default
value from the preferences.

Also added tests for this logic.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:24 +01:00
Petro Vashchuk 095b670436
Bug 25711: Fix existing tests and add new one
Add a new test with circulation rule for library_C_code that has
set expire_reserves_charge which is 0. In this case 0 should be used
as the charge.
Also use build_object instead of build to build the koha object.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:24 +01:00
Jonathan Druart e374fe685c
Bug 25711: Wording 'use global' > 'Default'
We use 'Default' for useDaysMode already

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:23 +01:00
Nick Clemens ae545d821b
Bug 25711: (QA follow-up) Move tests and disallow blank rule
The tests can go where the existing cancellation charge tests are.
If we define the default rule we do not need to delete all circulation rules
as the itemtypes and branches are all created for the tests

The rule should not be saved if blank, this allows simplifying the logic
when getting the charge

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:23 +01:00
Martin Renvoize 22418a5ba8
Bug 25711: (QA follow-up) Refactor to clarify logic
At the point where 'ExpireReservesMaxPickUpDelayCharge' can/should kick
in, we should already have an item waiting (else what's triggered a pickup
delay). As such we can drop the fall through default of using the syspref
when we don't yet have an item.

We can also save us some calculations and database hits by only
calculating the charge value when we've actually been asked to charge.
So we also move the block inside the 'charge_cancel_fee' block.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Petro Vashchuk <stalkernoid@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:22 +01:00
Petro Vashchuk 6f28ffbcc5
Bug 25711: Add ExpireReservesMaxPickUpDelayCharge to circulation rules
Add a feature that allows to define ExpireReservesMaxPickUpDelayCharge
in circulation rules per specific items/patron categories.
When value not found in circulation rules it uses global
ExpireReservesMaxPickUpDelayCharge, as it was before this smart-rules
feature was introduced.

To check the feature after applying the patch:
    1) Go to /cgi-bin/koha/admin/preferences.pl and set
ExpireReservesMaxPickUpDelay to allow.
    1) Go to /cgi-bin/koha/admin/smart-rules.pl circulation rules table
and notice the newly added "Expire reserve charge" row.
    2) In that row add numerical values to type/patron categories
that you will be using later to test this feature.
    3) Prepare an item for our next step, pick a biblio that has item
with the same item type you altered in smart rules and check it out.
    3) Place a hold on that item and set the expiration date as the
next day.
    4) Check in it after that.
    5) Do SQL request to change expiration date manually to "yesterday":
in "reserves" table, find the id of the hold that you placed and
"UPDATE reserves SET `expirationdate`='2020-07-19' WHERE
`reserve_id`=329;"
 Or alternatively:
    5) Wait for tomorrow, change server time or invent a time machine.
    6) Run cancel_expired_holds.pl cron job.
    7) Check that patron got charged in "accounting" left tab and
"transactions" upper tab: your patron should have debt of that amount
of fee you assigned in that rule
(/cgi-bin/koha/members/boraccount.pl?borrowernumber=...YourPatronID...)
    8) You can repeat this with other rules and different
numbers/biblio/item types to check that different fees apply according
to smart rules.
    9) If there's no matching smart rule or smart rule have an empty
string as a fee - global ExpireReservesMaxPickUpDelayCharge variable
value will be used.
   10) But in case if matching rule has zero ("0") as a value - that
allows to have no-fee smart-rule results, as a feature.

IMPORTANT:
Smart-rules filters only applied to item-level holds when item-type
for items is known. If there's biblio-level hold, in that case global
ExpireReservesMaxPickUpDelayCharge value will be used).

Mentored-by: Andrew Nugged <nugged@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-01-30 18:55:22 +01:00