koha.git
8 months agoBug 33170: Refactor MARCItemFieldsToOrder to make adding more fields trivial
Kyle Hall [Wed, 8 Mar 2023 14:53:07 +0000 (09:53 -0500)]
Bug 33170: Refactor MARCItemFieldsToOrder to make adding more fields trivial

There is no need for this code to have a hard coded list of fields directly in the code.
Any invalid keys would be skipped anyway.
If we refactor this code then adding new fields will be much simpler.

Test Plan:
1) Set up your MARCItemFieldsToOrder, verify everything is working
2) Apply this patch
3) Restart all the things!
4) Verify there has been no change to the MARCItemFieldsToOrder
   functionality

Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 32335: (QA follow-up) Add 'btn-primary' instead of 'btn-default' class to dialog...
Pedro Amorim [Thu, 7 Sep 2023 15:38:00 +0000 (15:38 +0000)]
Bug 32335: (QA follow-up) Add 'btn-primary' instead of 'btn-default' class to dialog Save buttons

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 32335: (QA follow-up) Add 'Actions' label to 'Actions' column
Pedro Amorim [Thu, 7 Sep 2023 15:37:29 +0000 (15:37 +0000)]
Bug 32335: (QA follow-up) Add 'Actions' label to 'Actions' column

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 32335: Allow stock rotation items to be advanced when in transit
Nick Clemens [Wed, 23 Nov 2022 13:24:12 +0000 (13:24 +0000)]
Bug 32335: Allow stock rotation items to be advanced when in transit

This patch adjusts the logic so that we check:
1 - If there are less than 2 stages we disable the 'Move to next stage' button
2 - If the item is not in transit, we show move to next normally
3 - If the item is in transit (and there is more than 1 stage) the button is enabled with a note about transfer

To test:
1 - Setup a rota with multiple stages
2 - Add an item
3 - Advance to next stage
4 - Observe 'Move to next stage' button is disabled
5 - Check item in at destination
6 - Reload rota - observe 'Move to next stage' is enabled
7 - Apply patch
8 - Click 'Move to next stage'
9 - Note button is not disabled
10 - Hover and confirm note about transit
11 - Click 'Move to next stage'
12 - Checkin item at wrong branch, confirm it is correctly directed to correct stage

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33239: (QA follow-up) Tidy and improve description
Kyle M Hall [Fri, 1 Sep 2023 17:02:26 +0000 (13:02 -0400)]
Bug 33239: (QA follow-up) Tidy and improve description

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33239: Add the ability to run borrowers-force-messaging-defaults.pl only on a...
Fridolin Somers [Thu, 16 Mar 2023 02:50:40 +0000 (16:50 -1000)]
Bug 33239: Add the ability to run borrowers-force-messaging-defaults.pl only on a specified message name

Test plan:
1) Select a patron A
2) Change all the message prefs away from defaults.
3) Run misc/maintenance/borrowers-force-messaging-defaults.pl --doit --message-name Item_due
    Verify that patron A prefs changed only for 'Item due'

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33843: Use filter_by_last_update in Koha::Notice::Util
Marcel de Rooy [Fri, 26 May 2023 08:19:36 +0000 (08:19 +0000)]
Bug 33843: Use filter_by_last_update in Koha::Notice::Util

Resolve FIXME in sub _get_domain_count by using new logic
from bug 33837.

Test plan:
Run t/db_dependent/Koha/Notice_Util.t.
This triggers the _get_domain_count call using the filter.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33837: Remove datetime parameter
Jonathan Druart [Fri, 21 Jul 2023 12:32:11 +0000 (14:32 +0200)]
Bug 33837: Remove datetime parameter

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Perltidied one line in cleanup_database.pl.

Bug 33837: Perl tidy block in Objects.t

WARN   t/db_dependent/Koha/Objects.t
   WARN   tidiness
                The file is less tidy than before (bad/messy lines before: 319, now: 320)

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33837: Replace days_inclusive by min_days
Marcel de Rooy [Fri, 26 May 2023 07:26:15 +0000 (07:26 +0000)]
Bug 33837: Replace days_inclusive by min_days

Instead of passing days and days_inclusive, this patch adds
min_days as replacement. Since days_inclusive is not widely
used, this can be done easily. It removes the confusion
whether days_inclusive impacted other parameters or not.

Test plan:
Run t/db_dependent/Koha/Objects.t
Run t/db_dependent/Koha/Old/Checkouts.t
Run t/db_dependent/Koha/Patrons.t (verifying the change in the
Koha::Patrons module for filtering by expiration date).

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33837: filter_by_last_update: Add older_than and younger_than
Marcel de Rooy [Wed, 17 May 2023 11:22:08 +0000 (11:22 +0000)]
Bug 33837: filter_by_last_update: Add older_than and younger_than

Test plan:
Run t/db_dependent/Koha/Objects.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33837: Add unit test
Marcel de Rooy [Thu, 25 May 2023 14:25:32 +0000 (14:25 +0000)]
Bug 33837: Add unit test

Test plan:
Run t/db_dependent/Koha/Objects.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33837: Add datetime comparison to filter_by_last_update
Marcel de Rooy [Mon, 15 May 2023 09:48:58 +0000 (09:48 +0000)]
Bug 33837: Add datetime comparison to filter_by_last_update

Test plan:
Verify that filter_by_last_update still works as expected by
running cleanup_database.pl with --messages DAYS parameter.
Look at the oldest messages.message_date (or insert one).
Run with -days X where today - X is before that date.
Run with -days Y where today - Y is just after it.

Note: misc/cronjobs/cleanup_database.pl -confirm -messages -1 -v
will remove all messages including one you inserted just now.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 21246: DBRev 23.06.00.034
Tomas Cohen Arazi [Wed, 11 Oct 2023 13:06:51 +0000 (10:06 -0300)]
Bug 21246: DBRev 23.06.00.034

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 21246: Set ShowLastPatronCount to 1 on update
Katrin Fischer [Fri, 28 Jul 2023 09:14:59 +0000 (09:14 +0000)]
Bug 21246: Set ShowLastPatronCount to 1 on update

Setting the new preference to 1 will allow us to keep the
current behaviour on update. The library can then actively
decide to increase the number to whatever they prefer.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 21246: (QA follow-up) Add new syspref to control how many previous patrons are...
Kyle M Hall [Mon, 24 Jul 2023 16:22:57 +0000 (12:22 -0400)]
Bug 21246: (QA follow-up) Add new syspref to control how many previous patrons are displayed

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Tidied the atomicupdate file.
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 21246: Extend the 'Last patron' navigation feature to 'Last 10 patrons'
Kyle M Hall [Thu, 29 Jun 2023 19:07:04 +0000 (15:07 -0400)]
Bug 21246: Extend the 'Last patron' navigation feature to 'Last 10 patrons'

This retains the "last patron" link, but extends it to add a dropdown
containg the last 10 patrons.

A future enhancement to control how many patrons to retain would
complement this well.

1) Enable showLastPatron
2) Visit two patrons details pages
3) Note "Last patron" link displays and links to the last visited patron
4) Log out
5) Apply this patch
6) Log in
7) Visit the patron details page for a few patrons
8) Note the "Last patron" link behaves as is did previously
9) Note the split button has a pulldown with the other previous patrons
10) Verify that only the last 10 patrons are retained in the pulldown
11) Verify that if you visit a patron who is already in the list
    they get moved to the top of the list

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28130: (QA follow-up) Tidy
Nick Clemens [Fri, 21 Jul 2023 13:00:10 +0000 (13:00 +0000)]
Bug 28130: (QA follow-up) Tidy

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28130: (QA follow-up) Use schema result to fetch alerts to allow for prefetch
Nick Clemens [Fri, 21 Jul 2023 12:56:51 +0000 (12:56 +0000)]
Bug 28130: (QA follow-up) Use schema result to fetch alerts to allow for prefetch

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28130: Manage subscription alerts on OPAC
Aleisha Amohia [Wed, 24 May 2023 21:53:38 +0000 (21:53 +0000)]
Bug 28130: Manage subscription alerts on OPAC

This patch adds an 'Alert subscriptions' tab to the patron's account on the OPAC, so they can easily view or cancel email alerts they have subscribed to.

To test:

1. Subscribe to email alerts for one or more subscriptions via the OPAC
2. Go to your account, notice the new 'Alert subscriptions' menu option, click here
3. Confirm your subscribed alerts show here. Confirm the table sorting works etc (JS enabled).
4. Test unsubscribing from email alerts, make sure the confirmation pop-up works as expected (JS enabled).
5. Confirm that, when unsubscribing, you are redirected back to this page.
6. Confirm the menu option disappears from the left sidebar navigation if you have no alert subscriptions.

Sponsored-by: Bibliotheksservice-Zentrum Baden-Wuerttemberg
Signed-off-by: Christian Stelzenmüller <christian.stelzenmueller@bsz-bw.de>
Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28130: Manage a patron's subscription alerts
Aleisha Amohia [Tue, 23 May 2023 05:09:10 +0000 (05:09 +0000)]
Bug 28130: Manage a patron's subscription alerts

This enhancement adds an 'Alert subscriptions' page to a patron account to easily view or cancel email alerts the patron has subscribed to.

To test:

1. Go to Cataloging. Create a biblio.
2. Go to Tools -> Notices & slips. Create a notice under the "Serials (new issue)" module, if you don't already have one.
3. Go to Serials. Create a subscription. Link the biblio you just created. Add info like the callnumber, location, library. Choose your notice under Patron notification. Fill out the remaining details and save your subscription.
4. Open this record in the OPAC. Under the Subscriptions tab, click the button to "Subscribe to email notification on new issues"
5. Go back to the staff interface. Go to your patron account.
6. Notice there is a new "Alert subscriptions" tab in the left sidebar menu. The number in brackets should say 1, for the subscription you just enabled email alerts.
7. Click into the page. Confirm your subscription shows in the table.
8. Click the button to unsubscribe. A confirmation should pop up. Confirm you can cancel the unsubscribe action. Then confirm you can unsubscribe using this button.
9. Confirm tests pass t/db_dependent/Koha/Patron.t

Sponsored-by: Bibliotheksservice-Zentrum Baden-Wuerttemberg
Signed-off-by: Christian Stelzenmüller <christian.stelzenmueller@bsz-bw.de>
Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33204: (QA follow-up) Improve option description
Kyle M Hall [Fri, 1 Sep 2023 16:47:47 +0000 (12:47 -0400)]
Bug 33204: (QA follow-up) Improve option description

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33204: Add the ability to filter on patron library for borrowers-force-messaging...
Fridolin Somers [Sat, 11 Mar 2023 06:32:56 +0000 (20:32 -1000)]
Bug 33204: Add the ability to filter on patron library for borrowers-force-messaging-defaults.pl

Like filter on category Bug 19454, it would be helpful to filter on a specified library for misc/maintenance/borrowers-force-messaging-defaults.pl

Test plan:
1) Select two patrons A and B in say libraries L1 and L2.
2) Change the msg prefs for A and B away from defaults.
3) Run misc/maintenance/borrowers-force-messaging-defaults.pl -doit -library L1
    Verify that patron A changed and patron B did not.
4) Run with both category and library filters

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34064: Tidy script
Tomas Cohen Arazi [Tue, 10 Oct 2023 13:51:38 +0000 (10:51 -0300)]
Bug 34064: Tidy script

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34064: Add SQL::Translator dependency to cpanfile
David Cook [Wed, 5 Jul 2023 05:47:54 +0000 (05:47 +0000)]
Bug 34064: Add SQL::Translator dependency to cpanfile

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34064: Remove no_batch_alters option
David Cook [Tue, 20 Jun 2023 06:20:00 +0000 (06:20 +0000)]
Bug 34064: Remove no_batch_alters option

This change removes the no_batch_alters option.

When working with real world databases, you really want to use batch
alters to group together changes. Otherwise, the output becomes
too overwhelming/unwieldy.

On real world databases, I'm noticing big discrepancies, although
I think most of the time this is a difference in the collation
at the column level.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34064: Add an audit script to compare database with kohastructure.sql
David Cook [Tue, 20 Jun 2023 04:18:09 +0000 (04:18 +0000)]
Bug 34064: Add an audit script to compare database with kohastructure.sql

This script can take a connected database handle and compare that database
schema against kohastructure.sql to see what changes the database would
need in order to match kohastructure.sql

NOTE: It uses SQL::Translation::Diff, which is installed with DBIx::Class.

WARNING: The diff doesn't seem to compare comments, so that difference
won't appear in the output. If we wanted, we could easily enhance the
audit_database.pl script to also compare comments.

WARNING: The output is a proposed series of SQL commands. While they
are useful to review, they won't always duplicate the changes done
by updatedatabase.pl, so it's important to carefully analyze the output.
The key purpose of this audit script is to just highlight the differences
between the two.

Test plan:
0. Apply patch
1. vi ./installer/data/mysql/kohastructure.sql
2. Comment out some columns, change NULL status, or whatever you like
3. perl misc/maintenance/audit_database.pl \
    --filename /kohadevbox/koha/installer/data/mysql/kohastructure.sql
4. Note that the output includes SQL commands to change the database
to match the new kohastructure.sql

5a. Try using koha-foreach and note that the database name appears above
the database comparison
5b. koha-foreach "perl misc/maintenance/audit_database.pl \
    --filename /kohadevbox/koha/installer/data/mysql/kohastructure.sql"

Signed-off-by: Emmi Takkinen <emmi.takkinen@koha-suomi.fi>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34075: DBRev 23.06.00.033
Tomas Cohen Arazi [Tue, 10 Oct 2023 13:46:06 +0000 (10:46 -0300)]
Bug 34075: DBRev 23.06.00.033

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34075: Improve JS code
Jonathan Druart [Wed, 19 Jul 2023 07:32:15 +0000 (09:32 +0200)]
Bug 34075: Improve JS code

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34075: (follow-up) Fixes for QA tool errors
Owen Leonard [Fri, 23 Jun 2023 13:03:40 +0000 (13:03 +0000)]
Bug 34075: (follow-up) Fixes for QA tool errors

- Added missing filter to template variable
- Correct spelling in atomicupdate

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34075: Add DefaultAuthorityTab system preference
Nick Clemens [Wed, 21 Jun 2023 12:41:21 +0000 (12:41 +0000)]
Bug 34075: Add DefaultAuthorityTab system preference

This patch adds a new system preference, DefaultAuthorityTab.
When set, this will choose the default display on the authorities details
page.

To test:
1 - Apply patch, update database
2 - View an authority detail
3 - You should default to the 0XX or first tab
4 - Set DefaultAuthorityTab to a number that there is no tab for in your authority
5 - Reload and verify details page loads the first tba
6 - Set DefaultAuthorityTab to 1XX or another tab that exists in your record
7 - Reload the details and confirm the correct tab is selected

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31731: (QA follow-up) Add pull down to DefaultLongOverdueLostValue and DefaultLon...
Katrin Fischer [Sun, 16 Jul 2023 11:29:19 +0000 (11:29 +0000)]
Bug 31731: (QA follow-up) Add pull down to DefaultLongOverdueLostValue and DefaultLongOverdueChargeValue preferences

Adds LOST pull downs to 2 more preferences.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31731: Offer user a dropdown of authorized values instead of a text field in...
Owen Leonard [Mon, 10 Jul 2023 13:46:48 +0000 (13:46 +0000)]
Bug 31731: Offer user a dropdown of authorized values instead of a text field in preferences

This patch updates the system preferences interface so that preferences
which ask for a single authorized value can offer a dropdown menu of
choices instead of a text field.

The patch also updates a few existing preferences to use the new
feature: BundleLostValue, BundleNotLoanValue, and
ClaimReturnedLostValue.

To test, apply the patch and restart services.

- Go to Administration -> System preferences and search for "authorized
  value."
- The search results should include the entries for BundleLostValue,
  BundleNotLoanValue, and ClaimReturnedLostValue.
- Confirm that the dropdowns show the correct authorized value category
  (LOST or NOT_LOAN)
- Confirm that setting or unsetting each of the preferences works
  correctly.

Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 29033: Add C4::Context->multivalue_preference
Tomas Cohen Arazi [Wed, 15 Sep 2021 18:56:59 +0000 (15:56 -0300)]
Bug 29033: Add C4::Context->multivalue_preference

I've seen several places in which a syspref is retrieved and then
splitted using split and the fact they are pipe-separated strings.

It seems it would be simple (and handy) to add a method to do that.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/Context.t
=> SUCCESS: Tests pass, a pipe-separated syspref is correctly retrieved
as an arrayref.
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 25560: DBRev 23.06.00.032
Tomas Cohen Arazi [Tue, 10 Oct 2023 13:21:15 +0000 (10:21 -0300)]
Bug 25560: DBRev 23.06.00.032

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 25560: Unit tests
Alex Buckley [Mon, 1 Aug 2022 18:58:19 +0000 (18:58 +0000)]
Bug 25560: Unit tests

Test plan:
1. Run tests
sudo koha-shell <instancename>
prove t/db_dependent/Circulation/issue.t

Sponsored-By: Waikato Institute of Technology, NZ
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 25560: Define item-type specific rules in UpdateNotForLoanStatusOnCheckin
Alex Buckley [Tue, 2 Aug 2022 05:05:39 +0000 (17:05 +1200)]
Bug 25560: Define item-type specific rules in UpdateNotForLoanStatusOnCheckin

This enhancement respects the 'item-level_itypes' syspref, so will look
at the authoritative item type when determining to update the notforloan
status.

Test plan:
1. Set -1 to 'Ordered', and 1 to 'Not for Loan' in Administration > Authorised values > NOT_LOAN

2. Make sure the 'item-level_itypes' syspref is set to 'specific item'

3. Add the following rules in UpdateNotForLoanStatusOnCheckin system
preference:
-1: 0

4. Apply patch & update database
cd installer/data/mysql
sudo koha-shell <instancename>
./updatedatabase.pl

5. Restart plack

6. Observe the UpdateNotForLoanStatusOnCheckin syspref values have
updated to the following format:
_ALL_:
 -1: 0

7. Check in an 'Ordered' item of any item type and confirm it is changed
to 'Available for loan' (NOT_LOAN=0)

8. Reset the UpdateNotForLoanStatusOnCheckin syspref to:
_ALL_:
 -1: 0

CD:
 -1: 2
 2: 0

9. Check-in an 'ordered' (NOT_LOAN=-1) CD item (item level itype='CD') and observe the item's notforloan status updates to 'Staff collection' (NOT_LOAN=2). This is because the _ALL_ rule does not override all other rules.

10. Check-in a 'Staff collection' (NOT_LOAN=2) CD item (item level itype='CD') and
observe the item's notforloan status updates to 'Available for loan'
(NOT_LOAN=0)

11. Check-in a 'Staff collection' (NOT_LOAN=2) DVD item (item level itype='DVD') and observe
the items notforloan status does not change

12. Check-in an 'ordered' (NOT_LOAN=-1) DVD item (item level itype='DVD') and observe the items notforloan status updates to 'Available for loan' (NOT_LOAN=0)

Sponsored-By: Waikato Institute of Technology, NZ
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 25560: Template changes
Alex Buckley [Tue, 2 Aug 2022 05:04:34 +0000 (17:04 +1200)]
Bug 25560: Template changes

Sponsored-by: Waikato Institute of Technology, New Zealand
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 25560: Database changes
Alex Buckley [Tue, 2 Aug 2022 03:05:33 +0000 (15:05 +1200)]
Bug 25560: Database changes

Sponsored-by: Waikato Institute of Technology, New Zealand
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 33426: Add DataTables saveState to suggestion.tt
emlam [Wed, 5 Apr 2023 19:51:33 +0000 (15:51 -0400)]
Bug 33426: Add DataTables saveState to suggestion.tt

To test:
1. In the staff client, go to Purchase Suggestion management page and
   add a suggestion if needed to make the table display.
2. Make some changes to the table settings (hide/show columns, change
   sort column, and/or change number of rows to display)
3. Navigate to a different page.
4. Navigate back to Purchase Suggestions page. Note that the table
   settings have been reset.
5. Apply patch and restart_all
6. Repeat steps 1-4. Note that this time the changes to the table
   settings were preserved.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31692: Tidy and rebase fix
Tomas Cohen Arazi [Tue, 10 Oct 2023 12:53:19 +0000 (09:53 -0300)]
Bug 31692: Tidy and rebase fix

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31692: (follow-up) Adjust reserves.item_level_hold
Lari Taskula [Thu, 3 Nov 2022 20:50:33 +0000 (20:50 +0000)]
Bug 31692: (follow-up) Adjust reserves.item_level_hold

Original patch missed handling reserves.item_level_hold column.

To test:
1. prove t/db_dependent/Koha/Hold.t

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31692: Allow librarians to change hold type in staff client
Lari Taskula [Wed, 5 Oct 2022 16:04:59 +0000 (16:04 +0000)]
Bug 31692: Allow librarians to change hold type in staff client

To test:
1. Apply patch
2. Add item level hold to a record/item, make sure patron has no other
   holds on that record
3. Go to /cgi-bin/koha/reserve/request.pl?biblionumber=xxx where xxx is
   the record you placed the hold for
4. Under "Existing holds" table, in "Details" column you should see
   "Only item <barcode>" dropdown
5. Select "Next available" from the dropdown
6. Click Update hold(s)
7. Observe dropdown is gone and cell value has changed from
   "Only item <barcode>" to "Next available"
8. Cancel the hold and add two item level holds for the same patron
9. Under "Existing holds" table, in "Details" column you should see
   "Only item <barcode>", but no select dropdown

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 31692: Add Koha::Hold::change_type and unit tests
Lari Taskula [Wed, 5 Oct 2022 14:54:03 +0000 (14:54 +0000)]
Bug 31692: Add Koha::Hold::change_type and unit tests

To test:
1. prove t/db_dependent/Koha/Hold.t

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 26053: Add unit test for Koha::Patron::Restriction
Fridolin Somers [Fri, 29 Sep 2023 19:27:30 +0000 (09:27 -1000)]
Bug 26053: Add unit test for Koha::Patron::Restriction

Run:
prove t/db_dependent/Koha/Patron/Restriction.t

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 26053: Distinguish expired patron restrictions
Fridolin Somers [Thu, 21 Sep 2023 22:12:46 +0000 (12:12 -1000)]
Bug 26053: Distinguish expired patron restrictions

On the patron detail page, in restrictions table to show that the restriction has expired.
With text and a grey color line.
Uses 'text-muted' boostrap class (already used in OPAC).

Test plan :
1) Go to a patron details page cgi-bin/koha/members/moremember.pl
2) Create 2 restrictions in the future
3) Edit in database to se the first restriction into the past
4) Create a retriction without date
5) Check you see on expired line text : (expired)
6) Check line is grey

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 35014: Only set time for enable-time flatpickr
Martin Renvoize [Mon, 9 Oct 2023 15:37:22 +0000 (16:37 +0100)]
Bug 35014: Only set time for enable-time flatpickr

This patch adds a check to the onChange function such that we only
attempt to set the default time on change for time enabled flatpickrs
when the date is entered manually.

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: DBRev 23.06.00.031
Tomas Cohen Arazi [Tue, 10 Oct 2023 12:43:14 +0000 (09:43 -0300)]
Bug 12532: DBRev 23.06.00.031

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (follow-up) Catch more cases in tests
Martin Renvoize [Wed, 20 Sep 2023 14:09:26 +0000 (15:09 +0100)]
Bug 12532: (follow-up) Catch more cases in tests

This patch added lots more cases to the unit tests to try and catch all
the new functionality.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: Fix test
Jonathan Druart [Tue, 19 Sep 2023 09:14:42 +0000 (11:14 +0200)]
Bug 12532: Fix test

The mock was working. The problem was that the to_address of the notice
was set from the previous send.

A fix would be to update the message, but it seems better to simply
re-enqueue it.

This patch also use Koha::Notice::Messages.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Fix issues highlighted by unit tests
Martin Renvoize [Mon, 18 Sep 2023 15:29:28 +0000 (16:29 +0100)]
Bug 12532: (QA follow-up) Fix issues highlighted by unit tests

* YesNo preferences yield '1' or '0' not 'yes' and 'no'.
* Set message_cc address so we can report later that the message went to
  a cc address.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: DBIC Schema
Martin Renvoize [Mon, 18 Sep 2023 14:26:31 +0000 (15:26 +0100)]
Bug 12532: DBIC Schema

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: Expose CC address in patron notices display
Martin Renvoize [Tue, 19 Sep 2023 06:38:40 +0000 (07:38 +0100)]
Bug 12532: Expose CC address in patron notices display

Add the CC address into the patrons notices on the staff client to
highlight that the message was copied to another user.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Add cc_address to message_queue
Martin Renvoize [Mon, 18 Sep 2023 14:24:35 +0000 (15:24 +0100)]
Bug 12532: (QA follow-up) Add cc_address to message_queue

Add the cc_address field to the message_queue so we may report back that
an email was copied to the guarantor email addresses.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Add tests for SendQueuedMessages
Martin Renvoize [Mon, 18 Sep 2023 14:19:05 +0000 (15:19 +0100)]
Bug 12532: (QA follow-up) Add tests for SendQueuedMessages

This patch adds unit tests for the changes made to
_send_message_by_email for Guarantor CC

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Remove defunkt test
Martin Renvoize [Mon, 18 Sep 2023 13:04:11 +0000 (14:04 +0100)]
Bug 12532: (QA follow-up) Remove defunkt test

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) More cleanup
Martin Renvoize [Mon, 18 Sep 2023 12:31:59 +0000 (13:31 +0100)]
Bug 12532: (QA follow-up) More cleanup

Minor QA cleanup, perltidy, remove Data::Dumper and clarify warn

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (follow-up) Send email to guarantor using the CC field
Hammat Wele [Fri, 25 Aug 2023 23:39:24 +0000 (23:39 +0000)]
Bug 12532: (follow-up) Send email to guarantor using the CC field

In This patch the CC field is used to send the message to the guarantors. If the «to» field is empty (the guarantee has no address) we send the message «to» the garantors.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Clean up notice_email_address
Martin Renvoize [Wed, 10 May 2023 18:25:21 +0000 (19:25 +0100)]
Bug 12532: (QA follow-up) Clean up notice_email_address

Reduce some of the code duplication

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: (QA follow-up) Undo changes to Koha::Email
Martin Renvoize [Wed, 10 May 2023 17:11:52 +0000 (18:11 +0100)]
Bug 12532: (QA follow-up) Undo changes to Koha::Email

The changes here aren't required (Email::Address already deals with
lists of addresses internally)

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 12532: Send email to guarantee and guarantor
Hammat Wele [Wed, 26 Apr 2023 15:02:02 +0000 (15:02 +0000)]
Bug 12532: Send email to guarantee and guarantor

This patch allows guarantors to receive emails sended to their
guarentees. This patch is a rebase of the previous patches.
I took all the content of previous commit and put it in one commit.

TO TEST:

Before applying:
1) Search, or create, a patron with guarantor.
2) For both guarantors and guarantees:
   - Add an email address
   - Update the 'Patron messaging preferences' section so that an email is sent for item checkouts
3) Checkout an item. An email should be sent only to the guarantee.
4) Apply the patch.
5) Run updatedatabase.pl
6) Run prove t/db_dependent/Members.t and prove t/db_dependent/Letters.t
7) Enable 'RedirectGuaranteeEmail'
8) Run misc/cronjobs/process_message_queue.pl
9) Notice that the email should be sended to both the guarantee AND the
guarantor.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Fix test
Jonathan Druart [Tue, 10 Oct 2023 12:16:11 +0000 (14:16 +0200)]
Bug 34828: Fix test

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 23241: Remove unused koha-index-daemon-ctl.sh
Martin Renvoize [Mon, 9 Oct 2023 10:44:06 +0000 (11:44 +0100)]
Bug 23241: Remove unused koha-index-daemon-ctl.sh

This script was never fully promoted or documented and it requires third
party libraries are installed to use. This patch removes it from the
repository and the Makefile so it is no longer installed.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 35015: (QA follow-up) Fix paid transactions filter in the staff interface
Katrin Fischer [Mon, 9 Oct 2023 19:58:50 +0000 (19:58 +0000)]
Bug 35015: (QA follow-up) Fix paid transactions filter in the staff interface

Same problem: we added a column without adjusting the filter.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 35015: Adjust column index in fnFilter
Matt Blenkinsop [Mon, 9 Oct 2023 16:11:48 +0000 (16:11 +0000)]
Bug 35015: Adjust column index in fnFilter

This patch fixes the column index in the call to fnFilter following the
addition of a new column to the table in bug 32341

Test plan:
1) Add some charges to a patron account
2) Pay some of these charges so that they are no longer outstanding
3) In the OPAC log in as that patron and navigate to the Charges tab in
   their account
4) Observe that all charges are listed, even if they have been paid and
   clicking the Show all transactions button has no effect even if
   clicked multiple times between the different filtering options
5) Apply patch
6) Refresh page and now the settled charges should be filtered out
7) Click the Show all transactions button and it should correctly update

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 35013: Font Awesome icons broken in self checkout and self checkin
Owen Leonard [Mon, 9 Oct 2023 15:21:30 +0000 (15:21 +0000)]
Bug 35013: Font Awesome icons broken in self checkout and self checkin

This patch updates the way Font Awesome icon assets are included on the
self checkout and self checkin pages. This change should have been made
during the upgrade to Font Awesome 6 (Bug 32910).

To test, apply the patch and make sure both SelfCheckInModule and
WebBasedSelfCheck system preferences are enabled.

- Go to the self checkout module (/cgi-bin/koha/sco/sco-main.pl) and log
  in.
- Check that Font Awesome icons are working: You should see an
  information icon by the "Help" link in the header, and a check mark
  icon in the "Finish" button.
- Click the help link to confirm that the icon appears there too.
- Go to the self checkin module (/cgi-bin/koha/sci/sci-main.pl).
- In the header you should see the information icon by the help link and
  an icon with the "Log out" link too.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 35010: In record checkout history do not show anonymous patron link
Fridolin Somers [Mon, 9 Oct 2023 08:57:29 +0000 (22:57 -1000)]
Bug 35010: In record checkout history do not show anonymous patron link

In a biblio record checkout history, when a checkout is anonymized the
patron id has been replaced by anonymous patron id.
In this case we should not show anonymous patron link.
It looks like a real patron did this checkout.

Test plan :
1) Set an existing patron id in system preference 'AnonymousPatron'
2) Perform anonymisation on old checkouts (or edit database manually)
3) Look at a record checkout history with old checkouts
=> You see 'Anonymized' for anonymized checkouts
4) Set system preference 'AnonymousPatron' empty
5) Look at same record checkout history
=> Check no error

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34883: Add unit test
Matt Blenkinsop [Fri, 29 Sep 2023 09:04:52 +0000 (09:04 +0000)]
Bug 34883: Add unit test

prove -v t/db_dependent/Koha/Patrons/Import.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34883: Stop patron expiry date being set to NULL during import
Matt Blenkinsop [Mon, 25 Sep 2023 10:34:18 +0000 (10:34 +0000)]
Bug 34883: Stop patron expiry date being set to NULL during import

A regression has been identified whereby an empty field in the dateexpiry field in a patron import file will cause the patron's expiry date to be set to NULL. This patch addresses this by checking for an empty field and using the existing expiry date if one is found.

Test plan:
1) Setup a csv with column headers:
    surname firstname branchcode categorycode cardnumber dateenrolled dateexpiry
2) Add values:
    Acosta Edna CPL PT 23529001000463 02/01/2013
3) Leave the dateexpiry column blank
4) Check Edna and make a note of her patron expiry date
5) Run the import_patrons.pl script with the following flags:
    a) --file <filepath_for_your_csv_file>
    b) --matchpoint cardnumber
    c) --confirm
    d) --overwrite
6) Check Edna, note her expiry date is now set to NULL
7) Manually edit Edna's expiry date to be reset to what it was before you ran the script
8) Apply the patch and restart_all
9) Repeat step 5
10) Check Edna, this time her expiry date should be the same as the value you set it to in step 7
11) Sign off!

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: DBRev 23.06.00.030
Tomas Cohen Arazi [Tue, 10 Oct 2023 11:51:04 +0000 (08:51 -0300)]
Bug 28688: DBRev 23.06.00.030

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: (follow-up) Remove redundant options
Marcel de Rooy [Wed, 4 Oct 2023 13:41:17 +0000 (13:41 +0000)]
Bug 28688: (follow-up) Remove redundant options

Test plan:
Run misc/cronjobs/membership_expiry.pl --help
misc/cronjobs/membership_expiry.pl --man

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: Use pod2usage for incorrect usage
Jonathan Druart [Wed, 4 Oct 2023 13:02:08 +0000 (15:02 +0200)]
Bug 28688: Use pod2usage for incorrect usage

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: Add renewal to crontab example
Marcel de Rooy [Thu, 15 Jun 2023 06:39:00 +0000 (06:39 +0000)]
Bug 28688: Add renewal to crontab example

Note: I did not add an example to the debian cron daily file, since
we have no commented lines there. And automatic renewal is no default
behavior.

Test plan:
Read new lines in misc/cronjobs/crontab.example. Just comments.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: Allow to pass another renewal notice
Marcel de Rooy [Thu, 15 Jun 2023 07:04:37 +0000 (07:04 +0000)]
Bug 28688: Allow to pass another renewal notice

Just as passing another expiry notice.

Test plan:
Pick a patron to expire.
Create another membership renewal notice, say X.
Run misc/cronjobs/membership_expiry.pl -c -n -v -letter_renew X
Check output on command line.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: Add renew option to membership_expiry.pl
Marcel de Rooy [Wed, 14 Jun 2023 13:34:11 +0000 (13:34 +0000)]
Bug 28688: Add renew option to membership_expiry.pl

Test plan:
[1] Pick an account to expire soon.
[2] Choose MembershipExpiryDaysNotice so that it will be selected.
    (Note: You can extend the selection with -before or -after.)
[3] Run misc/cronjobs/membership_expiry.pl -c -v -renew
[4] Check new expiry date in the notice. Does it correspond with
    enrollment period of category and pref BorrowerRenewalPeriodBase?
[5] If the patron category has an enrollment fee, check account too.
[6] Reset dateexpiry of this patron to original date.
[7] Run misc/cronjobs/membership_expiry.pl -c -v
[8] Check if you got an expiry notice instead and dateexpiry did not
    change.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Removed $fees and $substitute in favor of notice approach

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 28688: Add new notice MEMBERSHIP_RENEWED
Marcel de Rooy [Thu, 15 Jun 2023 08:51:32 +0000 (08:51 +0000)]
Bug 28688: Add new notice MEMBERSHIP_RENEWED

Test plan:
Run new install or upgrade.
Check for this notice under Tools/Notices.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Enrollment fee via object instead of substitute hash.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Remove useless variable
Tomas Cohen Arazi [Tue, 10 Oct 2023 11:33:54 +0000 (08:33 -0300)]
Bug 34828: Remove useless variable

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Make normalized_oclc use Koha::Biblio::Metadata::Extractor
Jonathan Druart [Thu, 5 Oct 2023 09:48:59 +0000 (11:48 +0200)]
Bug 34828: Make normalized_oclc use Koha::Biblio::Metadata::Extractor

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Add Koha::Biblio::Metadata::Extractor::MARC
Jonathan Druart [Thu, 5 Oct 2023 07:44:42 +0000 (09:44 +0200)]
Bug 34828: Add Koha::Biblio::Metadata::Extractor::MARC

and inherit from it

The new usage is now:

1. With a Koha::Biblio object
my $extractor = Koha::Biblio::Metadata::Extractor->new({biblio => $biblio});
$extractor->get_normalized_upc;

or

2. With a MARC::Record
my $extractor = Koha::Biblio::Metadata::Extractor->new({metadata=> $biblio->metadata->record});
$extractor->get_normalized_upc;

Note that there are "Inconsistent hierarchy during C3 merge of class"
warnings raised by the QA script. We could remove them by replacing the
'use' by 'require' in Koha::Biblio::Metadata::Extractor::MARC (in ->new)
but that's suboptimal.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Move to Koha::Biblio::Metadata::Extractor
Jonathan Druart [Thu, 5 Oct 2023 06:30:05 +0000 (08:30 +0200)]
Bug 34828: Move to Koha::Biblio::Metadata::Extractor

We are not directly linked with the other Koha::Metadata* packages.
Better to isolate this under Koha::Biblio::Metadata (at least for now).

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34828: Introduce Koha::MetadataExtractor and ->get_normalized_upc
Tomas Cohen Arazi [Mon, 18 Sep 2023 12:35:16 +0000 (09:35 -0300)]
Bug 34828: Introduce Koha::MetadataExtractor and ->get_normalized_upc

This patch introduces a new pattern for the different ->get_<thing>
methods we've been adding. The aim is that code will look more like:

my $metadata_extractor = Koha::MetadataExtractor->new;

while ( my $biblio = $biblios->next ) {
    my $record = $biblio->record;
    my $schema = $biblio->record_schema;

    $data->{$biblio->id}->{normalized_upc} =
$metadata_extractor->get_normalized_upc( { record => $record, schema =>
$schema } );
    $data->{$biblio->id}->{normalized_ean} =
$metadata_extractor->get_normalized_ean( { record => $record, schema =>
$schema } );
}

The key is that we are actually reusing the MARC::Record, and code for
each schema is organized cleanly so easier to maintain.

For the class names, I chose to add the 'MARC' name in the path, so we
don't need to refactor anything if we want to add support for another
serialization formats.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ qa -c 1
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34657: DBRev 23.06.00.029
Tomas Cohen Arazi [Mon, 9 Oct 2023 19:30:41 +0000 (16:30 -0300)]
Bug 34657: DBRev 23.06.00.029

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34467: OAI GetRecord bad encoding for Unimarc
Frédéric Demians [Thu, 3 Aug 2023 08:59:01 +0000 (10:59 +0200)]
Bug 34467: OAI GetRecord bad encoding for Unimarc

For some Unimarc biblio records, the OAI Server returns a bad XML
document, ie a document with extended characters, such as accents, not
encoded in UTF8. It seems to come from somewhere in MARC::Record library
trying to deduce biblio record endoding from some fields. It may work
for MARC21 records. It doesn't for Unimarc records. So it's necessary to
send to the method transforming record into XML the marcflavour. This
way there is no encoding guessing from Unimarc biblio records content.

https://bugs.koha-community.org/show_bug.cgi?id=34467
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34336: Remove the dependency for Test::DBIx::Class
Marcel de Rooy [Fri, 6 Oct 2023 06:52:28 +0000 (06:52 +0000)]
Bug 34336: Remove the dependency for Test::DBIx::Class

The module is removed from t.
We only have 01-test_dbic.t and we do not need it any longer.

Test plan:
git grep for Test::DBIx::Class. You should only see release notes.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34667: Update MARC21 default framework to Update 36 (June 2023)
Caroline Cyr La Rose [Wed, 30 Aug 2023 20:49:49 +0000 (16:49 -0400)]
Bug 34667: Update MARC21 default framework to Update 36 (June 2023)

This patch updates the default MARC21 framework to reflect the changes brought by Update 36 (June 2023).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click Actions next to the default framework and choose MARC structure
4. Check for the changes detailed in the update https://www.loc.gov/marc/bibliographic/bdapndxg.html

- There should be one new subfield in field 041
  - 3 Materials specified (NR)

- There should be a new field 361, named STRUCTURED OWNERSHIP AND CUSTODIAL HISTORY
  - This field should be repeatable
  - Subfields:
    - 0 Authority record control number or standard number (R)
    - 1 Real World Object URI (R)
    - 3 Materials specified (NR)
    - 5 Institution to which field applies (NR)
    - 6 Linkage (NR)
    - 7 Data provenance (R)
    - 8 Field link and sequence number (R)
    - a Name (NR)
    - f Ownership and custodial history evidence term (R)
    - k Formatted date (NR)
    - l Date (NR)
    - o Type of ownership and custodial history information (R)
    - s Shelf mark of copy described (NR)
    - u Uniform Resource Identifier (R)
    - x Nonpublic note (R) **This should not be visible in the OPAC
    - y Identifier of the copy described (NR)
    - z Public note (R)

- There should be three new subfields in field 653
  - 0 Authority record control number or standard number (R)
  - 1 Real World Object URI (R)
  - 5 Institution to which field applies (NR)

- There should be two new subfields in field 658
  - 0 Authority record control number or standard number (R)
  - 1 Real World Object URI (R)

- There should be four new subfields in field 720
  - 0 Authority record control number or standard number (R)
  - 1 Real World Object URI (R)
  - 5 Institution to which field applies (NR)
  - 7 Data provenance (R)

- There should be a new field 857, named ELECTRONIC ARCHIVE LOCATION AND ACCESS
  - This field should be repeatable
  - Subfields
    - 2 Access method (NR)
    - 3 Materials specified (NR)
    - 5 Institution to which field applies (NR)
    - 6 Linkage (NR)
    - 7 Access status (NR)
    - 8 Field link and sequence number (R)
    - b Name of archiving agency (NR)
    - c Name of Web archive or digital archive repository (NR)
    - d Date range of archived material (NR)
    - e Data provenance (R)
    - f Archive completeness (NR)
    - g Persistent identifier (R)
    - h Non-functioning Uniform Resource Identifier (R)
    - l Standardized information governing access (R)
    - m Contact for access assistance (R)
    - n Terms governing access (R)
    - q Electronic format type (R)
    - r Standardized information governing use and reproduction (R)
    - s File size (R)
    - t Terms governing use and reproduction (R)
    - u Uniform Resource Identifier (R)
    - x Nonpublic note (R)
    - y Link text (R)
    - z Public note (R)

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34665: Update MARC21 default framework to Update 35 (Dec. 2022)
Caroline Cyr La Rose [Wed, 30 Aug 2023 19:13:34 +0000 (15:13 -0400)]
Bug 34665: Update MARC21 default framework to Update 35 (Dec. 2022)

This patch updates the default MARC21 framework to reflect the changes brought by Update 35 (December 2022).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click Actions next to the default framework and choose MARC structure
4. Check for the changes detailed in the update https://www.loc.gov/marc/up35bibliographic/bdapndxg.html

- There should be one new subfield in field 856
  - g Persistent identifier (R)
  - Subfield h should now be named Non-functioning Uniform Resource Identifier
  - Subfield q should now be repeatable

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34659: Update MARC21 default framework to Update 34 (July 2022)
Caroline Cyr La Rose [Wed, 30 Aug 2023 18:44:58 +0000 (14:44 -0400)]
Bug 34659: Update MARC21 default framework to Update 34 (July 2022)

This patch updates the default MARC21 framework to reflect the changes brought by Update 34 (July 2022).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click Actions next to the default framework and choose MARC structure
4. Check for the changes detailed in the update https://www.loc.gov/marc/up34bibliographic/bdapndxg.html

- There should be one new subfield in field 041
  - 7 Data provenance (R)

- There should be one new subfield in field 082
  - 7 Data provenance (R)

- There should be one new subfield in field 083
  - 7 Data provenance (R)

- There should be one new subfield in field 084
  - 7 Data provenance (R)

- There should be one new subfield in field 100
  - 7 Data provenance (R)

- There should be one new subfield in field 110
  - 7 Data provenance (R)

- There should be one new subfield in field 111
  - 7 Data provenance (R)

- There should be one new subfield in field 130
  - 7 Data provenance (R)

- There should be one new subfield in field 210
  - 7 Data provenance (R)

- There should be one new subfield in field 240
  - 7 Data provenance (R)

- There should be one new subfield in field 245
  - 7 Data provenance (R)

- There should be one new subfield in field 246
  - 7 Data provenance (R)

- There should be one new subfield in field 247
  - 7 Data provenance (R)

- There should be one new subfield in field 250
  - 7 Data provenance (R)

- There should be one new subfield in field 255
  - 7 Data provenance (R)

- There should be one new subfield in field 256
  - 7 Data provenance (R)

- There should be one new subfield in field 264
  - 7 Data provenance (R)

- There should be one new subfield in field 300
  - 7 Data provenance (R)

- There should be one new subfield in field 335
  - 7 Data provenance (R)

- There should be one new subfield in field 336
  - 7 Data provenance (R)

- There should be one new subfield in field 340
  - q Reduction ratio designator (R)
  - Subfield f should now be named Reduction ratio value

- There should be one new subfield in field 348
  - 7 Data provenance (R)

- There should be one new subfield in field 370
  - 7 Data provenance (R)

- There should be one new subfield in field 377
  - 7 Data provenance (R)

- There should be one new subfield in field 380
  - 7 Data provenance (R)

- There should be one new subfield in field 381
  - 7 Data provenance (R)

- There should be one new subfield in field 382
  - 7 Data provenance (R)

- There should be one new subfield in field 383
  - 7 Data provenance (R)

- There should be one new subfield in field 384
  - 7 Data provenance (R)

- There should be one new subfield in field 385
  - 7 Data provenance (R)

- There should be one new subfield in field 386
  - 7 Data provenance (R)

- There should be a new field 387, named REPRESENTATIVE EXPRESSION CHARACTERISTICS
  - This field should be repeatable
  - Subfields:
    - 0 Authority record control number or standard number (R)
    - 1 Real World Object URI (R)
    - 2 Source of term (NR)
    - 3 Materials specified (NR)
    - 6 Linkage (NR)
    - 7 Data provenance (R)
    - 8 Field link and sequence number (R)
    - a Aspect ratio of representative expression (R)
    - b Color content of representative expression (R)
    - c Content type of representative expression (R)
    - d Date of capture of representative expression (R)
    - e Date of representative expression (R)
    - f Duration of representative expression (R)
    - g Intended audience of representative expression (R)
    - h Language of representative expression (R)
    - i Place of capture of representative expression (R)
    - j Projection of cartographic content of representative expression (R)
    - k Scale of representative expression (R)
    - l Script of representative expression (R)
    - m Sound content of representative expression (R)

- There should be one new subfield in field 388
  - 7 Data provenance (R)

- There should be one new subfield in field 490
  - 7 Data provenance (R)

- There should be one new subfield in field 500
  - 7 Data provenance (R)

- There should be one new subfield in field 501
  - 7 Data provenance (R)

- There should be one new subfield in field 502
  - 7 Data provenance (R)

- There should be one new subfield in field 505
  - 7 Data provenance (R)

- Field 507 should now be named SCALE NOTE FOR VISUAL MATERIALS

- There should be one new subfield in field 508
  - 7 Data provenance (R)

- There should be one new subfield in field 510
  - 7 Data provenance (R)

- There should be one new subfield in field 515
  - 7 Data provenance (R)

- There should be one new subfield in field 518
  - 7 Data provenance (R)

- There should be one new subfield in field 520
  - 7 Data provenance (R)

- There should be one new subfield in field 533
  - y Data provenance (R)

- There should be one new subfield in field 546
  - 7 Data provenance (R)

- There should be one new subfield in field 550
  - 7 Data provenance (R)

- There should be one new subfield in field 555
  - 7 Data provenance (R)

- There should be one new subfield in field 583
  - 7 Data provenance (R)

- There should be one new subfield in field 600
  - 7 Data provenance (R)

- There should be one new subfield in field 610
  - 7 Data provenance (R)

- There should be one new subfield in field 611
  - 7 Data provenance (R)

- There should be one new subfield in field 630
  - 7 Data provenance (R)

- There should be one new subfield in field 648
  - 7 Data provenance (R)

- There should be one new subfield in field 650
  - 7 Data provenance (R)

- There should be one new subfield in field 651
  - 7 Data provenance (R)

- There should be one new subfield in field 653
  - 7 Data provenance (R)

- There should be one new subfield in field 655
  - 7 Data provenance (R)

- There should be one new subfield in field 700
  - 7 Data provenance (R)

- There should be one new subfield in field 710
  - 7 Data provenance (R)

- There should be one new subfield in field 711
  - 7 Data provenance (R)

- There should be one new subfield in field 751
  - 7 Data provenance (R)

- There should be one new subfield in field 760
  - l Data provenance (R)

- There should be one new subfield in field 762
  - l Data provenance (R)

- There should be one new subfield in field 765
  - l Data provenance (R)

- There should be one new subfield in field 767
  - l Data provenance (R)

- There should be one new subfield in field 770
  - l Data provenance (R)

- There should be one new subfield in field 772
  - l Data provenance (R)

- There should be one new subfield in field 773
  - l Data provenance (R)

- There should be one new subfield in field 774
  - l Data provenance (R)

- There should be one new subfield in field 775
  - l Data provenance (R)

- There should be one new subfield in field 776
  - l Data provenance (R)

- There should be one new subfield in field 777
  - l Data provenance (R)

- There should be one new subfield in field 780
  - l Data provenance (R)

- There should be one new subfield in field 785
  - l Data provenance (R)

- There should be one new subfield in field 786
  - l Data provenance (R)

- There should be one new subfield in field 787
  - l Data provenance (R)

- There should be a new field 788, named PARALLEL DESCRIPTION IN ANOTHER LANGUAGE OF CATALOGING
  - This field should be repeatable
  - Subfields:
    - 4 Relationship (R)
    - 5 Institution to which field applies (NR)
    - 6 Linkage (NR)
    - 8 Field link and sequence number (R)
    - a Main entry heading (NR)
    - b Edition (NR)
    - d Place, publisher, and date of publication (NR)
    - e Language of cataloging (NR)
    - i Relationship information (R)
    - l Data provenance (R)
    - n Note (R)
    - s Uniform title (NR)
    - t Title (NR)
    - w Record control number (R)
    - x International Standard Serial Number (NR)

- There should be one new subfield in field 800
  - y Data provenance (R)

- There should be one new subfield in field 810
  - y Data provenance (R)

- There should be one new subfield in field 811
  - y Data provenance (R)

- There should be one new subfield in field 830
  - y Data provenance (R)

- There should be one new subfield in field 856
  - e Data provenance (R)
  - Subfield l is renamed Standardized information governing access (R)
  - Subfield n is renamed Terms governing access (R)
  - Subfield r is renamed Standardized information governing use and reproduction (R)
  - Subfield t is renamed Terms governing use and reproduction (R)

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34658: Update to 007 value builder to reflect changes brought by Update 33 (Nov...
Caroline Cyr La Rose [Wed, 30 Aug 2023 15:39:48 +0000 (11:39 -0400)]
Bug 34658: Update to 007 value builder to reflect changes brought by Update 33 (Nov. 2021)

This patch updates the terms used in the 007 value builder in
concordance with the MARC21 format update 33.

To test:
1. Apply patch and restart
2. Go to Cataloguing > New recordGo to Cataloguing > New record
3. Click the small tag editor icon next to 007
3. Change Material type to Sound recording
   --> Position 13 should now be named Original capture and storage technique
4. Open the 13 Original capture and storage technique drop-down menu
   --> The values should be renamed

a - Acoustical capture, analog direct storage
b - Electrical capture, analog direct storage
d - Electrical capture, digital storage
e - Electrical capture, analog electrical storage
u - Unknown capture and storage
z - Other **Unchanged
| - No attempt to code **Unchanged

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34658: Update MARC21 default framework to Update 33 (Nov. 2021)
Caroline Cyr La Rose [Wed, 30 Aug 2023 15:38:32 +0000 (11:38 -0400)]
Bug 34658: Update MARC21 default framework to Update 33 (Nov. 2021)

iThis patch updates the default MARC21 framework to reflect the changes brought by Update 33 (November 2021).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click Actions next to the default framework and choose MARC structure
4. Check for the changes detailed in the update https://www.loc.gov/marc/up33bibliographic/bdapndxg.html

- There should be a new subfield in field 340
  - l Binding (R)

- There should be a new subfield in field 344
  - j Original capture and storage technique (R)

- There should be two new subfields in field 490
  - y Incorrect ISSN (R)
  - z Canceled ISSN (R)
  **Note that subfield 7 was added in a later update and is therefore not included in this patch

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34649: (fixup) Update MARC21 default framework to Update 32 (June 2021)
Caroline Cyr La Rose [Wed, 30 Aug 2023 14:39:14 +0000 (10:39 -0400)]
Bug 34649: (fixup) Update MARC21 default framework to Update 32 (June 2021)

Fixes a small typo that prevented the yaml from loading correctly

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34649: Updated code list for 008 value builder for continuing resources
Caroline Cyr La Rose [Tue, 29 Aug 2023 21:53:23 +0000 (17:53 -0400)]
Bug 34649: Updated code list for 008 value builder for continuing resources

This patch updates the code list for 008/21 for continuing resources in
concordance with Update 32 to the MARC21 format.

g - Magazine
h - Blog
j - Journal
r - Repository
s - Newsletter
t - Directory

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34649: Update MARC21 default framework to Update 32 (June 2021)
Caroline Cyr La Rose [Tue, 29 Aug 2023 21:52:26 +0000 (17:52 -0400)]
Bug 34649: Update MARC21 default framework to Update 32 (June 2021)

This patch updates the default MARC21 framework to reflect the changes brought by Update 32 (June 2021).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click Actions next to the default framework and choose MARC structure
4. Check for the changes detailed in the update https://www.loc.gov/marc/up32bibliographic/bdapndxg.html

- There should be two new subfields in field 022
  - 0 Authority record control number or standard number (NR)
  - 1 Real World Object URI (R)

- There should be three new subfields in field 046
  - 3 Materials specified (NR)
  - x Nonpublic note (R) (this one should be hidden from the OPAC)
  - z Public note (R)
  **Note that subfield 7 was added in a later update and is therefore not included in this patch

- Subfield 082$2 should now be named Edition information

- Subfield 083$2 should now be named Edition information

- There should be a new field 334, named MODE OF ISSUANCE
  - This field should be repeatable
  - Subfields:
    - 0 Authority record control number or standard number (R)
    - 1 Real World Object URI (R)
    - 2 Source (NR)
    - 6 Linkage (NR)
    - 8 Field link and sequence number (R)
    - a Mode of issuance term (NR)
    - b Mode of issuance code (NR)

- There should be one new subfield in field 344
  - i Sound content (R)
  **Note that subfield j was added in a later update and is therefore not included in this patch

- Field 348 should now be named NOTATED MUSIC CHARACTERISTICS
  - There should be two new subfields
    - c Form of musical notation term (R)
    - d Form of musical notation code (R)
    **Note that subfield 7 was added in a later update and is therefore not included in this patch

- There should be a new field 353, named SUPPLEMENTARY CONTENT CHARACTERISTICS
  - This field should be repeatable
  - Subfields:
    - 0 Authority record control number or standard number (R)
    - 1 Real World Object URI (R)
    - 2 Source (NR)
    - 3 Materials specified (NR)
    - 6 Linkage (NR)
    - 8 Field link and sequence number (R)
    - a Supplementary content term (NR)
    - b Supplementary content code (NR)

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34648: (fixup) Update MARC21 frameworks to Update 31 (December 2020)
Caroline Cyr La Rose [Thu, 31 Aug 2023 13:03:55 +0000 (09:03 -0400)]
Bug 34648: (fixup) Update MARC21 frameworks to Update 31 (December 2020)

Added missing 881$a subfield.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34648: (follow up) updated comment
Caroline Cyr La Rose [Tue, 29 Aug 2023 21:11:12 +0000 (17:11 -0400)]
Bug 34648: (follow up) updated comment

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34648: Update MARC21 frameworks to Update 31 (December 2020)
Caroline Cyr La Rose [Tue, 29 Aug 2023 21:02:32 +0000 (17:02 -0400)]
Bug 34648: Update MARC21 frameworks to Update 31 (December 2020)

This patch updates the default MARC21 framework to reflect the changes brought by Update 30 (Dec. 2020).

To test:
1. Apply patch and restart
2. Go to Administration > MARC bibliographic framework
3. Click "Actions" next to the default framework and choose "MARC structure"
4. Check for the changes detailed in the update https://www.loc.gov/marc/up31bibliographic/bdapndxg.html

- Field 043 should now be repeatable

- There should be a new field 335, named EXTENSION PLAN
  - This field should be repeatable
  - Subfields:
    - 0 Authority record control number or standard number (R)
    - 1 Real World Object URI (R)
    - 2 Source (NR)
    - 3 Materials specified (NR)
    - 6 Linkage (NR)
    - 8 Field link and sequence number (R)
    - a Extension plan term (NR)
    - b Extension plan code (NR)
    **Note that subfield 7 was added in a later update and is therefore not included in this patch

- Field 345 should now be named MOVING IMAGE CHARACTERISTICS
  - There should be two new subfields
    - c Aspect ratio value (R)
    - d Aspect ratio designator (R)

- There should be two new subfields in field 384
  - 0 Authority record control number or standard number (R)
  - 1 Real World Object URI (R)

- The following subfields of field 856 should have an [OBSOLETE] mention and be hidden (shown in OPAC and intranet, but not editor)
  - b Access number [OBSOLETE]
  - h Processor of Request [OBSOLETE]
  - i Instruction [OBSOLETE]
  - j Bits per second [OBSOLETE]
  - k Password [OBSOLETE]
  - l Logon [OBSOLETE]
  - n Name of location of host [OBSOLETE]
  - r Settings [OBSOLETE]
  - t Terminal emulation [OBSOLETE]

- There should be a new field 881, named MANIFESTATION STATEMENTS
  - This field should be repeatable
  - Subfields:
    - 3 Materials specified (NR)
    - 6 Linkage (NR)
    - 8 Field link and sequence number (R)
    - a Manifestation statement, high-level/general (R)
    - b Manifestation identifier statement (R)
    - c Manifestation title and responsibility statement (R)
    - d Manifestation edition statement (R)
    - e Manifestation production statement (R)
    - f Manifestation publication statement (R)
    - g Manifestation distribution statement (R)
    - h Manifestation manufacture statement (R)
    - i Manifestation copyright statement (R)
    - j Manifestation frequency statement (R)
    - k Manifestation designation of sequence statement (R)
    - l Manifestation series statement (R)
    - m Manifestation dissertation statement (R)
    - n Manifestation regional encoding statement (R)

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34549: Strip non-XML chars during TransformHtmlToMarc
David Cook [Thu, 17 Aug 2023 04:28:29 +0000 (04:28 +0000)]
Bug 34549: Strip non-XML chars during TransformHtmlToMarc

This patch strips non-XML characters from inputs during
TransformHtmlToMarc.

To test:
0. Apply patch
1. koha-plack --restart kohadev
2. Go to http://localhost:8081/cgi-bin/koha/cataloguing/addbiblio.pl
3. Fill out record and use the text from "Text file containing control characters"
as the title
4. Click Save
5. Note that your record displays without any warnings like the following:
Error: invalid data, cannot decode metadata object
parser error : PCDATA invalid Char value 27

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Squashed the tidy patch. Still needed a few spaces to satisfy qa tools.
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34982: Add pagination to the currencies table
Jonathan Druart [Wed, 4 Oct 2023 09:42:44 +0000 (11:42 +0200)]
Bug 34982: Add pagination to the currencies table

Otherwise we only display the first 20.

Test plan:
Create more than 20 currencies and confirm that you can know
filter the table and see all the currencies.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34558: Update custom.sql for it-IT webinstaller
Zeno Tajoli [Thu, 17 Aug 2023 12:04:12 +0000 (14:04 +0200)]
Bug 34558: Update custom.sql for it-IT webinstaller

It is an update of this file, here there are the specific customization for
italian users. There are simple changes on defaults values.

To test it:
1 - Start a web installation with italian language.
2 - Select Marc21 as biblio format
3 - Select all optional .sql files
4 - Conclude the installation.
5 - Go to MySQL command line and do:
    SELET value FROM systempreferences where variable = 'BorrowersTitles'
    You see: 'Sig|Sig.ra|Sig.na'
6 - Apply the patch.
7 - Drop and recreate the mysql db
8 - Redone the installation with italian language.
9 - Use the same options written above.
10 - Conclude the installation.
11 - Go to MySQL command line and do:
    SELECT value FROM systempreferences where variable = 'BorrowersTitles'
    You see: 'Sig|Sig.ra|Dott.|Dott.ssa'
12 - Refactor is OK

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34393: (follow-up) QA fixes and further refinement
Owen Leonard [Wed, 4 Oct 2023 11:12:14 +0000 (11:12 +0000)]
Bug 34393: (follow-up) QA fixes and further refinement

This patch addresses issues discovered during testing and fixes a couple
of issues which were missed.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34393: Fix inconsistencies in MARC bibliographic framework page titles, breadcrum...
Owen Leonard [Mon, 2 Oct 2023 18:41:15 +0000 (18:41 +0000)]
Bug 34393: Fix inconsistencies in MARC bibliographic framework page titles, breadcrumbs, and header

This patch fixes some inconsistencies in the MARC bibliographic
framework administration page, making sure the page title, breadcrumb
navigation, and page headers are consistent with each other.

The file admin/marc_subfields_structure.pl is modified so that it
provides the framework name to the template.

Test each page to confirm that page title, heading, and breadcrumbs are
consistent:

- MARC bibliographic frameworks
  - New framework
  - Edit framework
  - Delete a framework which is not used
  - Delete a framework which is in use
  - Framework MARC structure
    - New tag
    - Edit tag
    - Delete tag
    - View subfields
    - Edit subfields

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
8 months agoBug 34677: (QA follow-up) Update description of RELTERMS authorised value
Katrin Fischer [Fri, 6 Oct 2023 14:30:23 +0000 (14:30 +0000)]
Bug 34677: (QA follow-up) Update description of RELTERMS authorised value

The patch as is kind of undid the change of bug 34679. The new
proposal is a mix of this and the old version with a link that
opens in a new tab.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>