koha.git
22 months agoBug 23919: Zebra search by ISSN variations
Slava Shishkin [Tue, 26 Apr 2022 20:38:33 +0000 (23:38 +0300)]
Bug 23919: Zebra search by ISSN variations

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 23919: Add new system preference SearchWithISSNVariations
Slava Shishkin [Sat, 23 Apr 2022 21:18:22 +0000 (00:18 +0300)]
Bug 23919: Add new system preference SearchWithISSNVariations

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30984: DBIC update
Tomas Cohen Arazi [Mon, 1 Aug 2022 13:00:54 +0000 (10:00 -0300)]
Bug 30984: DBIC update

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30612: Rename other occurrences
Jonathan Druart [Mon, 1 Aug 2022 12:44:04 +0000 (14:44 +0200)]
Bug 30612: Rename other occurrences

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30612: (QA follow-up) Rename accountlines method to account_lines
Kyle Hall [Mon, 1 Aug 2022 12:34:17 +0000 (08:34 -0400)]
Bug 30612: (QA follow-up) Rename accountlines method to account_lines

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30612: Update schema files
Kyle M Hall [Wed, 8 Jun 2022 17:43:01 +0000 (13:43 -0400)]
Bug 30612: Update schema files

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30612: Add accountlines method to Koha::Checkout and Koha::Old::Checkout
Kyle M Hall [Wed, 8 Jun 2022 17:41:56 +0000 (13:41 -0400)]
Bug 30612: Add accountlines method to Koha::Checkout and Koha::Old::Checkout

It would be very useful to have an accountlines method on checkouts objects. In particular it would make fees related to a checkout available from the checkout objects in overdue notices.

Test Plan:
1) Apply this patch
2) prove t/db_dependent/Koha/Account/Line.t
3) prove t/db_dependent/Koha/Checkouts.t

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>
22 months agoBug 27849: (follow-up) Add test
Marcel de Rooy [Mon, 1 Aug 2022 07:25:10 +0000 (07:25 +0000)]
Bug 27849: (follow-up) Add test

Compacting the code a bit too.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 27849: Koha::Token may access undefined C4::Context->userenv
MJ Ray [Wed, 3 Mar 2021 17:54:42 +0000 (17:54 +0000)]
Bug 27849: Koha::Token may access undefined C4::Context->userenv

The _add_default_csrf_params internal function accesses
C4::Context->userenv without checking that it has been defined. I think
not all of the potential callers of it declare that they require a
defined userenv, so we should test and provide defaults for required
values if it is not defined, to avoid some "Can't use an undefined value
as a HASH reference" HTTP 500 Internal Server Errors.

To test:

Do anything that requires a form with CSRF token, such as editing your
details. Behaviour should be unchanged. To test the failure case, you
would need some customised code that indirectly generates a CSRF token
before setting the userenv up and I am not sure there is any in released
Koha yet.

Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Looks good to me. Working as expected.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 28864: Have patron card creator use PatronsPerPage
Michael Hafen [Fri, 13 Aug 2021 21:52:52 +0000 (15:52 -0600)]
Bug 28864: Have patron card creator use PatronsPerPage

Add pageLength to members/member.tt
Add aLengthMenu and pageLength to
 patroncards/add_user_search (common/patron_search.tt).
Add aLengthMenu, pageLength, and iDisplayLength to patroncards/edit-batch

Test plan:
1.  Set the PatronsPerPage system preference to any integer other than 20.

2.  Go to Tools -> Patron card creator.
3.  Start a new Card Batch.
4.  Click the 'Add patron(s)' button to open the patron search window.
5.  Do a search.
6.  Add more than 20 patrons to the batch.
7.  Close patron search window.
8.  Click the 'Add patron(s)' button to add the selected patrons to the batch.
9.  Observe that the table of patrons is has 20 as the default per page setting.

10. Apply patch.
11. Reload the batch.
12. Observe that the per page drop down includes the value of PatronsPerPage
     and that value is selected by default.

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30964: (QA follow-up) Add classes to allow for additional styling
Katrin Fischer [Sat, 30 Jul 2022 13:39:41 +0000 (13:39 +0000)]
Bug 30964: (QA follow-up) Add classes to allow for additional styling

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30964: Add 'restricted' and 'has overdues' on curbside pickup
Jonathan Druart [Mon, 27 Jun 2022 13:20:03 +0000 (15:20 +0200)]
Bug 30964: Add 'restricted' and 'has overdues' on curbside pickup

This patch adds more information about the patron's account on the
curbside pickup list view.
"Patron's account is restricted" if the patron is restricted
"Patron has items overdue" if the patron has overdues

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30984: DBRev 22.06.00.026
Tomas Cohen Arazi [Mon, 1 Aug 2022 12:26:59 +0000 (09:26 -0300)]
Bug 30984: DBRev 22.06.00.026

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30984: (QA follow-up) Switch from mediumtext to varchar(255)
Kyle Hall [Fri, 29 Jul 2022 10:53:06 +0000 (06:53 -0400)]
Bug 30984: (QA follow-up) Switch from mediumtext to varchar(255)

My research indeicates that tinytext of less than 40 bytes uses
about the same storage as a varchar(255). Also, using
a TEXT field in a complex query may create a temp table.
varchar fields are also more efficient for sorting on.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30984: (QA follow-up) Ternary formatting style
Marcel de Rooy [Fri, 29 Jul 2022 06:39:21 +0000 (06:39 +0000)]
Bug 30984: (QA follow-up) Ternary formatting style

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30984: Action logs should log the cronjob script name that generated the given log
Kyle Hall [Fri, 17 Jun 2022 10:59:11 +0000 (06:59 -0400)]
Bug 30984: Action logs should log the cronjob script name that generated the given log

When something is changed by a cronjob, and that entity is logged via action logs, we can know what changed, and that it was via a cronjob, but we cannot necessarily know which cronjob made that change. The closest we can come is to find the action logs for the cronjob module which ran before the change which is by no means reliable assuming the CronLog is even enabled.

We should add a new column to action logs to store the name of the script ran for any action logs where the interface is "cron".

Test plan:
1) Apply this patch
2) Run updatedatabase.pl
3) Enable all the Log/Logging sysprefs
4) Run some cronjobs that will generate action logs
5) Note the new action_logs column "script" contains the filename of the
   cronjob that caused the change.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30658: (bug 29496 follow-up) CheckMandatorySubfields don't work properly with...
Janusz Kaczmarek [Sun, 1 May 2022 21:59:09 +0000 (23:59 +0200)]
Bug 30658: (bug 29496 follow-up) CheckMandatorySubfields don't work properly with select field in serials-edit.tt for Supplemental issue

CheckMandatorySubfields use the class "input_marceditor" but in file
serials-edit.tt this class is not set for select input in Supplemental
issue form. In consequence if a select field is set as mandatory, it is
detected as missing even if it is filed and so you can't submit the form
and receive the new supplemantal issue.

Test plan:
1- Create (or find) a subscription for a biblio record and select the
   option "Create an item record when receiving this serial"
2- Be sure to have at least one mandatory subfield that is filed with a
   select input in the framework used by the biblio record. (ex: 952$a,
   952$b or 952$c).
3- From the subscription-detail page click on "Receive"
4- In the lower part--Supplemental issue--fill the suppelemant details,
   change the status to "Arrived" and fill the item form that appears.
5- Click on "Save"
6- Check that an error box appear with the message " Form not submitted
   because of the following problem(s) 1 mandatory fields empty
   (highlighted)" (the number can be different according to the number of
   concerned subfields)
7- Apply the patch
8- Repeat step 3 to 5
9- Check that no error appear and that your item has been created

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30468: Restore 'set -e' and remove echos
Jonathan Druart [Mon, 1 Aug 2022 10:31:21 +0000 (12:31 +0200)]
Bug 30468: Restore 'set -e' and remove echos

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30468: koha-mysql does not honor Koha's timezone setting
Kyle Hall [Wed, 6 Apr 2022 12:38:00 +0000 (08:38 -0400)]
Bug 30468: koha-mysql does not honor Koha's timezone setting

If I run a query like "SELECT NOW()" from a koha report, I will get a different answer than if I had run it from koha-mysql.
In Koha, we set the timezone for each database connection.
However, koha-mysql does not do this, so instead we are left using the default timezone of the database.

Test Plan:
1) Set your time zone to something other than the database time zone
2) run "SELECT NOW()" using debian/scripts/koha-mysql
   *not* /usr/sbin/koha-mysql
3) Note you get the database timezone's current time
4) Apply this patch
5) Repeat step 2
6) Now you get the correct time!

Signed-off-by: Michal Urban <michalurban177@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31269: Define sDefaultContent for DataTables
Lucas Gass [Fri, 29 Jul 2022 23:41:13 +0000 (23:41 +0000)]
Bug 31269: Define sDefaultContent for DataTables

1. Stage a MARC record for import
2. Once you have one click on 'Manage staged records'
3. You will see an alert that says "Something went wrong when loading the table."
4. If you dismiss that you should see the following error:

DataTables warning: table id=records-table - Requested unknown parameter '' for row 0, column 4. For more information about this error, please see http://datatables.net/tn/4

5. Appy patch
6. Try ssteps 1 & 2 again
7. No DataTable errors

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30028: Fix patron message delete confirmation to be translatable
Shi Yao Wang [Fri, 27 May 2022 14:52:08 +0000 (10:52 -0400)]
Bug 30028: Fix patron message delete confirmation to be translatable

Make the message deletion confirmation popup translatable. Test plan
uses fr-CA translations.

Test plan:
1) Switch language to french (fr-CA)
If you do not have the translations, go to
  misc/translator
then do
  ./translate install fr-CA
After it is done, go to administration > global system preference >
l18N/L10N then select Français (fr-CA) under language preference.
Refresh then you should be able to switch languages.
2) Add a message to a patron account from your own branch (or make sure AllowAllMessageDeletion is on)
3) Click "Delete" next to the message
--> a confirmation message appears "Are you sure you want to delete this message? This cannot be undone." with options "Cancel" and "OK".
4) Apply the patch
5) Write a translation in misc/translator/po/fr-CA-messages-js.po :
msgid "Are you sure you want to delete this message? This cannot be undone."
msgstr "Êtes-vous sûr de vouloir supprimer ce message? Cette opération est irréversible."
6) Refresh the translations by going to misc/translator and execute ./translate install fr-CA
7) Refresh and click "Delete" again
--> now the confirmation message is "Êtes-vous sûr de vouloir supprimer ce message? Cette opération est irréversible." with options "Cancel" and "OK"

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>
22 months agoBug 30499: Move the include for catalogue-search-box.inc in circ-search.inc to correc...
Tim McMahon [Fri, 29 Jul 2022 18:29:52 +0000 (13:29 -0500)]
Bug 30499: Move the include for catalogue-search-box.inc in circ-search.inc to correct keyboard shortcuts

Keyboard shortcuts for catalog search, check in and renew should be following:
1) Alt-q for catalog search
2) Alt-r for check in
3) Alt-w for renew

However on some of the pages shortcuts get mixed up:

1) Alt-w for catalog search
2) Alt-q for check in
3) Alt-r for renew

Affected files are:
circ/pendingreserves.tt
circ/circulation_batch_checkouts.tt
circ/circulation-home.tt
circ/branchtransfers.tt
circ/branchoverdues.tt
circ/set-library.tt
circ/checkout-notes.tt
circ/renew.tt
circ/waitingreserves.tt
circ/transferstoreceive.tt
circ/offline.tt
circ/bookcount.tt
circ/on-site_checkouts.tt
circ/circulation.tt
circ/transfers_to_send.tt
circ/request-article.tt
circ/overdue.tt
circ/reserveratios.tt
offline_circ/list.tt
offline_circ/process_koc.tt
offline_circ/enqueue_koc.tt
plugins/plugins-upload.tt
plugins/plugins-disabled.tt
pos/registers.tt
pos/register.tt
pos/pay.tt
reports/reports-home.tt
reports/dictionary.tt
reports/guided_reports_start.tt
reserve/request.tt
tools/scheduler.tt

This is because the include statement for catalogue-search-box.inc is in the wrong line in circ-search.inc.

To test:
1) Go to an affected page (circulation-home was the first one I noticed)
2) Try the keyboard shortcuts and notice they are incorrect
3) Apply patch and refresh the page
4) Notice that the keys work properly

Signed-off-by: Andrew <andrewfh@dubcolib.org>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 28707: Translate RECEIPT notice
Bernardo Gonzalez Kriegel [Fri, 6 May 2022 22:27:28 +0000 (19:27 -0300)]
Bug 28707: Translate RECEIPT notice

There is a badly crafted regex used when extracting
strings in multiline fields in yaml files
The regex is my own, introduced in Bug 24262, sorry.

This patch correct it a little. Better eyes are welcome.

To test:
1) go to misc translator, update some language
    ./translate update fr-CA

2) check missing strings

    egrep "Total out|Operator ID|August 31" po/fr-CA-installer.po

   first two are from sample notices, third from sample creator data

3) apply the patch, repeat 1)

4) repeat 2), verify the strings are present in the translation file

5) translate some of the new strings, install the language,
   verify strings are present in the translated files
    ./translate install fr-CA
   check fr-CA/optional/sample_creator_data.yml and
   fr-CA/mandatory/sample_notices.yml

There are some 60+ new strings.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31251: Use jQuery val() to clear_entry
Lucas Gass [Thu, 28 Jul 2022 18:18:15 +0000 (18:18 +0000)]
Bug 31251: Use jQuery val() to clear_entry

1. Add some patron attributes that are textarea and some that have an AV category so they are select dropdowns
2. Go to the patron form and add some values to the patron attributes
3. Use the "Clear" button to try and clear the values, doesnt work.
4. Apply patch
5. Try clearing values from patron attributes that are both select dropdowns and textarea. The "Clear" button should work.

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>
22 months agoBug 31223: Do not explode if plugins disabled
Tomas Cohen Arazi [Tue, 26 Jul 2022 12:55:38 +0000 (09:55 -0300)]
Bug 31223: Do not explode if plugins disabled

This patch makes the code skip calculating the plugin-related task
codes => class mapping if plugins are entirely disbaled.

To test:
1. Apply the regression tests
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Plugins/BackgroundJob.t
=> FAIL: Tests explode with: Can't call method "GetPlugins" on an
undefined value at... Koha/BackgroundJob.pm line 424.
3. Apply this patch
4. Repeat 2
=> SUCCESS: Tests pass!
5. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31223: Regression tests
Tomas Cohen Arazi [Tue, 26 Jul 2022 13:48:21 +0000 (10:48 -0300)]
Bug 31223: Regression tests

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30965: Add a 'x' to go back to the patron search
Jonathan Druart [Sun, 31 Jul 2022 06:14:21 +0000 (08:14 +0200)]
Bug 30965: Add a 'x' to go back to the patron search

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30965: Add patron autocomplete search to curbside pickups
Jonathan Druart [Mon, 27 Jun 2022 12:51:45 +0000 (14:51 +0200)]
Bug 30965: Add patron autocomplete search to curbside pickups

Prior to this patch librarians had to know the cardnumber to search for
patron. Now it's possible to search using the default patron
autocomplete search (name, cardnumber, etc.)

Test plan:
Confirm that you can search for a patron without their cardnumber,
select it and create a curbside pickup

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add missing koha_object[s]_class methods
Jonathan Druart [Sun, 31 Jul 2022 05:57:03 +0000 (07:57 +0200)]
Bug 30650: Add missing koha_object[s]_class methods

To fix TestBuilder.t
        #   at t/db_dependent/TestBuilder.t line 453.
        #          got: 'Can't locate Koha/CurbsidePickupPolicys.pm

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30389: Switch to Bootstrap tabs on the page for adding orders from MARC file
Owen Leonard [Mon, 28 Mar 2022 19:21:55 +0000 (19:21 +0000)]
Bug 30389: Switch to Bootstrap tabs on the page for adding orders from MARC file

This patch updates addorderiso2709.tt so that it uses Bootstrap tabs
intead of jQuery.

The patch contains indentation changes, so diff accordingly.

To test apply the patch and go to Acquisitions -> Vendor -> Basket ->
Add to basket -> From a staged file.

- Click "Add orders" next to the staged file you want to use.
- On the "Add orders" page, test that the tabs work correctly.

Signed-off-by: Séverine Queune <severine.queune@bulac.fr>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: DBRev 22.06.00.025
Tomas Cohen Arazi [Fri, 29 Jul 2022 19:06:12 +0000 (16:06 -0300)]
Bug 14364: DBRev 22.06.00.025

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 29012: DBRev 22.06.00.024
Tomas Cohen Arazi [Fri, 29 Jul 2022 19:04:12 +0000 (16:04 -0300)]
Bug 29012: DBRev 22.06.00.024

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: (QA follow-up) Add email validation to ExpireReservesAutoFillEmail
Katrin Fischer [Tue, 26 Apr 2022 14:34:18 +0000 (14:34 +0000)]
Bug 14364: (QA follow-up) Add email validation to ExpireReservesAutoFillEmail

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: (QA follow-up) Fix capitalization
Katrin Fischer [Tue, 26 Apr 2022 14:23:25 +0000 (14:23 +0000)]
Bug 14364: (QA follow-up) Fix capitalization

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: Fix spelling and tests
Nick Clemens [Mon, 25 Apr 2022 14:41:33 +0000 (14:41 +0000)]
Bug 14364: Fix spelling and tests

Moved the installer to pl file
Adjusted capitalization / reply-to
Fix tests by importing needed fuction and adjusting a wrong call

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: (follow-up) Cleanup duplicate code and adjust notices and prefs
Nick Clemens [Mon, 20 Dec 2021 14:03:22 +0000 (14:03 +0000)]
Bug 14364: (follow-up) Cleanup duplicate code and adjust notices and prefs

This patch removes a duplicated stanza left form moving routine
Changes the routines to use inbound_library_address
Improves the display if the system preferences
Updates the update file
Moves smaple notice

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: (QA follow-up) Generate message for transfers as well
Kyle M Hall [Thu, 13 May 2021 16:04:41 +0000 (12:04 -0400)]
Bug 14364: (QA follow-up) Generate message for transfers as well

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 14364: Allow automatically canceled expired waiting holds to fill the next hold
Kyle M Hall [Fri, 2 Feb 2018 13:36:02 +0000 (08:36 -0500)]
Bug 14364: Allow automatically canceled expired waiting holds to fill the next hold

Right now, if a library automatically cancels expired waiting holds, a
librarian must still re-checkin an item to trap the next available hold
for that item. It would be better if the next hold was automatically
trapped and the librarians receive an email notification so they can
make any changes to the item if need be ( hold area, hold slip in item,
etc ).

Test Plan:
 1) Apply this patch
 2) Run updatedatabase.pl
 3) Create a record with one item
 4) Place two holds on that record
 5) Check in the item and set it to waiting for the first patron
 6) Set ReservesMaxPickUpDelay to 1
 7) Enable ExpireReservesMaxPickUpDelay
 8) Enable ExpireReservesAutoFill
 9) Set an email address in ExpireReservesAutoFillEmail
10) Modify the holds waitingdate to be in the past
11) Run misc/cronjobs/holds/cancel_expired_holds.pl
12) Note the hold is now waiting for the next patron
12) Note a waiting hold notification email was sent to that patron
13) Note a hold changed notification email was sent to the library

Signed-off-by: Victoria Faafia <vfaafia29@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31238: Fix typo in marc_subfields_structure.pl
Emmi Takkinen [Tue, 26 Jul 2022 09:02:16 +0000 (12:02 +0300)]
Bug 31238: Fix typo in marc_subfields_structure.pl

After bug 29001 one is unable to save authorised value to frameworks
subfields. This is caused by minor typo in marc_subfields_structure.pl.

To test:
1. Edit e.g. default frameworks subfield 952$8
2. Add or change fields authorised value
3. Save your changes
=> note that on subfield listing there is no mention that 952$8 is linked to any authorised value
=> if you edit 952$8 authorised value input is empty
4. Apply this patch.
5. Repeat steps 1.-3.
=> authorised value should now be saved

Sponsored-by: Koha-Suomi Oy
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 29012: (QA follow-up) Use q{} instead of '' in smart-rules.pl
Kyle Hall [Fri, 29 Jul 2022 12:12:53 +0000 (08:12 -0400)]
Bug 29012: (QA follow-up) Use q{} instead of '' in smart-rules.pl

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 29012: Add default values for blank circulation rules that weren't saved to the...
Kevin Carnes [Fri, 3 Dec 2021 09:49:59 +0000 (09:49 +0000)]
Bug 29012: Add default values for blank circulation rules that weren't saved to the database

There are 5 fields that are not set if no value is provided when saving/editing a rule in Administration->Circulation and fines rules
- issuelength
- hardduedate
- unseenrenewalsallowed
- rentaldiscount
- decreaseloanholds

This is problematic because it gives the impression these rules are set as blank, but in reality they don't exist and the rule will fal back to the higher level

To test:
1 - Set a rule for
    Patron category: Teacher
    Itemtype: All
    Hard due date: (Today)
    Lona period: 10
2 - Set a rule for
    Patron category: Teacher
    Itemtype: Books
    Hard due date: (leave blank)
    Loan period: 10
3 - Expected behaviour is Book item will checkout to teacher for 10 days, all other types will be due yesterday at 25:59:00
4 - Checkout an non-book item type to teacher
5 - Hard due date applies
6 - Checkout a 'book' item type to teacher
7 - Hard due date applies - FAIL

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30308: Fix bulkmarcimport.pl broken by OAI-PMH:AutoUpdateSets(EmbedItemData)
Frédéric Demians [Mon, 11 Jul 2022 10:05:54 +0000 (12:05 +0200)]
Bug 30308: Fix bulkmarcimport.pl broken by OAI-PMH:AutoUpdateSets(EmbedItemData)

Test plan:

(A) Reproduce the bug:

A1 In Administration > System preferences > Web services:
   - Enable OAI-PMH
   - Enable OAI-PMH:AutoUpdateSets
   - Enable OAI-PMH:AutoUpdateSetsEmbedItemData

A2 In Tools > Export data > Export bibliographic records, export 1 (one)
   biblio record. Be sure that this biblio record has at least one item.
   Don't tick "Don't export items".

A3 Delete the exported biblio record, and its items.

A4 In command line, on the server load the exported file:
   ./bulkmarcimport.pl -b -v -file /path/to/koha.mrc

A5 Retrieve the biblio record in Koha. Note the absence of the item(s). This is
   the bug.

(B) Apply the patch

B1 Delete the record (without item) loaded at A4.

B2 In command line, on the server load the exported file:
   ./bulkmarcimport.pl -b -v -file /path/to/koha.mrc

B2 Retrieve the biblio record in Koha. Note the presence of the item(s).

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31247: Fix OPAC authentication when 2FA is enabled
Jonathan Druart [Wed, 27 Jul 2022 15:47:18 +0000 (17:47 +0200)]
Bug 31247: Fix OPAC authentication when 2FA is enabled

Silly mistake from bug 28786, the $type should be compared to "opac"
instead of "OPAC", erk!

Test plan:
Turn 2FA on
Set it up for an user
Login at the OPAC
=> Without this patch you keep being redirected to the auth form screen
=> With this patch applied you are able to successfully login

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31247: Add tests
Jonathan Druart [Wed, 27 Jul 2022 15:52:34 +0000 (17:52 +0200)]
Bug 31247: Add tests

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: (QA follow-up) Some higher-level methods usage
Tomas Cohen Arazi [Fri, 29 Jul 2022 18:38:51 +0000 (15:38 -0300)]
Bug 30650: (QA follow-up) Some higher-level methods usage

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: DBRev 22.06.00.023
Tomas Cohen Arazi [Fri, 29 Jul 2022 18:33:13 +0000 (15:33 -0300)]
Bug 22456: DBRev 22.06.00.023

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: (QA follow-up) Consider cancellation requested as cancelled in OPAC
Tomas Cohen Arazi [Mon, 11 Jul 2022 20:35:27 +0000 (17:35 -0300)]
Bug 22456: (QA follow-up) Consider cancellation requested as cancelled in OPAC

This patch adds a helper method for filtering out cancellation
requested-holds from resultsets, and makes use of it in the OPAC to
filter out those in the current holds tab. Holds history now shows
'Waiting (cancellation requested)' on those.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: (follow-up) Cancel holds at checkin
Tomas Cohen Arazi [Fri, 27 May 2022 13:38:29 +0000 (10:38 -0300)]
Bug 22456: (follow-up) Cancel holds at checkin

This patch makes checkin process the cancellation requested holds
actually cancel them before moving forward.

To test:
1. Have a waiting hold with a patron generated cancellation request
2. At circulation, check the item in
=> SUCCESS: The workflow follows as if the cancellation requested hold
was already cancelled
=> SUCCESS: The hold is actually cancelled
=> SUCCESS: Not shown in the OPAC anymore

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Staff interface handling
Tomas Cohen Arazi [Wed, 18 May 2022 20:38:37 +0000 (17:38 -0300)]
Bug 22456: Staff interface handling

This patch introduces a new tab to the 'Holds awaiting pickup' screen
for holds that have cancellation requests. This can be accepted (by
cancelling the hold) or rejected.

To test:
1. Set circulation rules for cancellation requests, allowing them for
   certain item type.
2. Have some waiting holds for a patron on an item type that allows
   requesting cancellation.
3. Visit 'Holds awaiting pickup'
=> SUCCESS: No holds have cancellation requests
4. In the OPAC, on the user details, notice some holds have the ability
   to be requested cancellation.
5. Choose to request cancellation
=> SUCCESS: Request is placed, the button is disabled
6. In 'Holds awaiting pickup' you can see them
7. Play with rejecting/accepting
=> SUCCESS: It works!
8. Things are reflected in the OPAC side

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Allow requesting cancellation from the OPAC
Tomas Cohen Arazi [Wed, 18 May 2022 19:16:58 +0000 (16:16 -0300)]
Bug 22456: Allow requesting cancellation from the OPAC

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Add Koha::Holds->filter_by_has_cancellation_requests
Tomas Cohen Arazi [Mon, 23 May 2022 14:44:19 +0000 (11:44 -0300)]
Bug 22456: Add Koha::Holds->filter_by_has_cancellation_requests

This patch adds that method. Which is covered by new tests.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Holds.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Add cancellation request methods to Koha::Hold
Tomas Cohen Arazi [Wed, 18 May 2022 17:05:04 +0000 (14:05 -0300)]
Bug 22456: Add cancellation request methods to Koha::Hold

This patch adds the following helper methods for dealing with hold
cancellation requests to the Koha::Hold class:

 * cancellation_requests
 * add_cancellation_request
 * cancellation_requestable_from_opac
 * cancellation_requested_by_owner

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Hold.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Add Koha::Hold::CancellationRequest(s) class(es)
Tomas Cohen Arazi [Thu, 21 Apr 2022 14:19:58 +0000 (11:19 -0300)]
Bug 22456: Add Koha::Hold::CancellationRequest(s) class(es)

This patch adds the Koha::Object-derived classes for cancellation
requests.

Tests are added for the overloaded ->store method.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove t/db_dependent/Koha/Hold/CancellationRequest.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: DBIC update
Tomas Cohen Arazi [Mon, 18 Apr 2022 16:08:19 +0000 (13:08 -0300)]
Bug 22456: DBIC update

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Add waiting_hold_cancellation circulation rule
Tomas Cohen Arazi [Mon, 18 Apr 2022 20:54:14 +0000 (17:54 -0300)]
Bug 22456: Add waiting_hold_cancellation circulation rule

This patch adds handling for the waiting_hold_cancellation circulation
rule. It is set no 'No' by default in the atomic update, if not
previously set.

Handling in the rules editor is added, in its own section.

To test:
1. Apply this patch
2. Run:
   $ updatedatabase
=> SUCCESS: All good
3. Verify that the syspref is set:
   $ koha-mysql kohadev
   > SELECT * FROM circulation_rules WHERE rule_name='waiting_hold_cancellation';
=> SUCCESS: Set to 0
4. Play with the rules editor, changing things back and forth, things
   should work, including library-specific and global/defualt settings.
=> SUCCESS: It works
=> SUCCESS: Texts are idiomatic
5. Sign off :-D

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 22456: Add cancellation request table
Tomas Cohen Arazi [Mon, 18 Apr 2022 13:45:02 +0000 (10:45 -0300)]
Bug 22456: Add cancellation request table

This patch adds a new table, for storing holds cancellation requests,
and managing them afterwards.

The *hold_id* attribute is not made a FK on the reserves table because
of the old_reserves thing we still do (see bug 25260 for a discussion
about it).

Sponsored-by: Montgomery County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: DBRev 22.06.00.022
Tomas Cohen Arazi [Fri, 29 Jul 2022 18:20:27 +0000 (15:20 -0300)]
Bug 30650: DBRev 22.06.00.022

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: (QA follow-up) Terminology: location - library
Katrin Fischer [Fri, 29 Jul 2022 16:14:46 +0000 (16:14 +0000)]
Bug 30650: (QA follow-up) Terminology: location - library

Updates one remaining occurrence of "at this location" meaning
"at this library".

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add missing name to notice added by database update
Katrin Fischer [Fri, 29 Jul 2022 15:58:11 +0000 (15:58 +0000)]
Bug 30650: Add missing name to notice added by database update

The notice was missing the name, which gives you an error when
you try to save changes in Koha.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add message on the admin page if the pref is off
Jonathan Druart [Fri, 29 Jul 2022 14:58:24 +0000 (16:58 +0200)]
Bug 30650: Add message on the admin page if the pref is off

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Split yml on several lines to help translation
Jonathan Druart [Fri, 29 Jul 2022 14:36:19 +0000 (16:36 +0200)]
Bug 30650: Split yml on several lines to help translation

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add the sidebar to the circ view
Jonathan Druart [Fri, 29 Jul 2022 14:22:04 +0000 (16:22 +0200)]
Bug 30650: Add the sidebar to the circ view

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add link to the circ nav bar
Jonathan Druart [Fri, 29 Jul 2022 14:12:36 +0000 (16:12 +0200)]
Bug 30650: Add link to the circ nav bar

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add info to the trash icon
Jonathan Druart [Fri, 29 Jul 2022 14:07:50 +0000 (16:07 +0200)]
Bug 30650: Add info to the trash icon

And add a missing space between the time and icon

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add dayjs license to the about page
Jonathan Druart [Fri, 29 Jul 2022 14:04:17 +0000 (16:04 +0200)]
Bug 30650: Add dayjs license to the about page

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Fix some typos
Jonathan Druart [Fri, 29 Jul 2022 14:03:26 +0000 (16:03 +0200)]
Bug 30650: Fix some typos

* Curbside pickups are not enabled for your location. = library
* Pickup Date/Time = capitalization
* ... it is an holiday = it is a holiday. (multiple)
* Deliver Date/Time = capitalization
* There is no waiting holds for this patron at this location. = There are no... at this library
* No pickup time define for this day. = defined (multiple)
* You don't have waiting holds at this location = library

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Display the link in the admin even if the pref is off
Jonathan Druart [Fri, 29 Jul 2022 09:21:14 +0000 (11:21 +0200)]
Bug 30650: Display the link in the admin even if the pref is off

The link in the sidebar was displayed already. The idea is to let admins
configure the module before enabling it for users.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Take dateformat into account
Jonathan Druart [Wed, 6 Jul 2022 14:08:35 +0000 (16:08 +0200)]
Bug 30650: Take dateformat into account

dayjs init was not passing the dateformat.
We really need to clean the date handling with the following two bugs:
  Bug 30310 - Replace Moment.js with Day.js
and
  Bug 30718 - Use flatpickr's altInput option everywhere

But it's outside the scope of this bug report.

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add dayjs customParseFormat plugin
Jonathan Druart [Wed, 6 Jul 2022 14:07:58 +0000 (16:07 +0200)]
Bug 30650: Add dayjs customParseFormat plugin

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Don't display slots that have are before now
Jonathan Druart [Wed, 6 Jul 2022 07:48:39 +0000 (09:48 +0200)]
Bug 30650: Don't display slots that have are before now

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Display holds waiting at the logged-in library
Jonathan Druart [Mon, 4 Jul 2022 15:12:24 +0000 (17:12 +0200)]
Bug 30650: Display holds waiting at the logged-in library

Not those waiting at the library of the logged-in user

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: DBIC specific
Jonathan Druart [Tue, 10 May 2022 06:34:05 +0000 (08:34 +0200)]
Bug 30650: DBIC specific

Note for QA - a false positive is raised by the QA tools:

"""
The new column curbside_pickup_opening_slots.day is using TINYINT(1) as
type but is not defined as boolean in the schema file
(Koha/Schema/Result/CurbsidePickupOpeningSlot.pm)
"""

=> It's not a boolean!

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: DBIC
Jonathan Druart [Mon, 27 Jun 2022 11:59:51 +0000 (13:59 +0200)]
Bug 30650: DBIC

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Prevent browser crash if no pickup interval set
Jonathan Druart [Wed, 15 Jun 2022 09:27:19 +0000 (11:27 +0200)]
Bug 30650: Prevent browser crash if no pickup interval set

Don't get stuck in an infinite loop

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Select 'schedule a pickup' if no pickups yet
Jonathan Druart [Wed, 15 Jun 2022 08:58:07 +0000 (10:58 +0200)]
Bug 30650: Select 'schedule a pickup' if no pickups yet

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Split the permission
Jonathan Druart [Wed, 15 Jun 2022 08:03:28 +0000 (10:03 +0200)]
Bug 30650: Split the permission

We actually want one permission to manage the administration page, and
one for the circulation module.

Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Prevent pickup to be created on holiday
Jonathan Druart [Tue, 10 May 2022 12:01:09 +0000 (14:01 +0200)]
Bug 30650: Prevent pickup to be created on holiday

We could improve this more and add disable the holiday from the date
picker widget, but it's out of the scope here.

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add filter_by_scheduled_today
Jonathan Druart [Tue, 10 May 2022 08:42:51 +0000 (10:42 +0200)]
Bug 30650: Add filter_by_scheduled_today

A bit of cleaning

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add link from the circ patron page
Jonathan Druart [Tue, 10 May 2022 07:50:55 +0000 (09:50 +0200)]
Bug 30650: Add link from the circ patron page

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add link from the mainpage
Jonathan Druart [Tue, 10 May 2022 07:24:16 +0000 (09:24 +0200)]
Bug 30650: Add link from the mainpage

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Allow to restrict curbside pickup for waiting holds only
Jonathan Druart [Tue, 10 May 2022 07:04:36 +0000 (09:04 +0200)]
Bug 30650: Allow to restrict curbside pickup for waiting holds only

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: DB - Add policy.enable_waiting_holds_only
Jonathan Druart [Tue, 10 May 2022 06:18:02 +0000 (08:18 +0200)]
Bug 30650: DB - Add policy.enable_waiting_holds_only

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Notify the patron when a new curbside pickup is created
Jonathan Druart [Mon, 9 May 2022 16:35:10 +0000 (18:35 +0200)]
Bug 30650: Notify the patron when a new curbside pickup is created

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add link from the member toolbar
Jonathan Druart [Mon, 9 May 2022 10:14:39 +0000 (12:14 +0200)]
Bug 30650: Add link from the member toolbar

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: OPAC view
Jonathan Druart [Tue, 3 May 2022 20:05:58 +0000 (22:05 +0200)]
Bug 30650: OPAC view

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add dayjs to opac
Jonathan Druart [Tue, 3 May 2022 20:51:26 +0000 (22:51 +0200)]
Bug 30650: Add dayjs to opac

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add dayjs and isSameOfAfter plugin
Jonathan Druart [Mon, 2 May 2022 15:21:59 +0000 (17:21 +0200)]
Bug 30650: Add dayjs and isSameOfAfter plugin

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add circulation page view
Jonathan Druart [Tue, 10 May 2022 08:14:20 +0000 (10:14 +0200)]
Bug 30650: Add circulation page view

This is the main commit message.

A plugin already exists to manage curbside pickups. This new
enhancehemnt is suggesting an implementation that is ready to be integrated
into Koha core in order to provide the feature out-of-the-box.

What has been done in this patch set:
- Deal with installations using the existing plugin (upgrade the DB schema and migrate their data)
- Add a new syspref (CurbsidePickup) and two new permissions:
  * parameters.manage_curbside_pickups
  * circulate.manage_curbside_pickups
- Add an administration page to setup the configuration: admin/curbside_pickup.pl
- Add a circulation page to manage the existing pickups, and create new one
- Add a new OPAC view "your curbside pickups" to let patron manage their pickups, and create new ones
- Add link from the "member" toolbar

Improvements compared to the plugin:
- Ability to create several pickup windows per day
- Better display of the pickup times (not in a dropdown list)
- Ability to disable pickups for patrons without waiting holds
- Display pickups on the patron circulation page
- Display pickups of the library on the homepage
- Prevent pickup to be created on a holiday
- Better error handling (exceptions)
- Unit tests

More improvements are already planned, see related bug reports.

Test plan:
After you setup the feature correctly from the administration view, you
will be able to use the schedule curbside pickups from the staff
interface, and from the OPAC interface if you selected "patron-scheduled
pickup"
A. Staff interface
1. Go to Circulation > Curbside pickups
=> If the logged-in user has the circulate.manage_curbside_pickups
permission you will be able to create and manage curbside pickups
2. Go to a patron detail page and click the "Schedule pickup" button in
the toolbar
3. If the patron has waiting holds and you selected "Enable for waiting holds only",
of if you didn't select the option, you will be able to select a pickup
date and slots to create a pickup.
4. Confirm that you cannot create more pickups per slot than what you
defined in the curbside pickup configuration for this library
5. Confirm that you cannot create a pickup if the feature is disabled
for the library
6. Notice that you can mark the pickup as "stage and ready", then
"patron is outside" and finally "delivered today". You can also rollback
the change
7. Notice that once the pickup has been marked as delivered, the
item has been checked out and that a new notice has been generated (if
the patron has "Hold_Filled" in their messaging preferences
8. Confirm that the information about current pickups is displayed on
the circulation page of the patron

B. OPAC interface
1. Create a new curbside pickup from the OPAC
2. Confirm that the same limitations as from the staff interface are in
effect (waiting holds, number of patron per slots, etc.)
3. Confirm that you can cancel a pickup and alert staff of you arrival
4. Confirm that you cannot cancel a pickup that has been delivered
already

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add some useful modules and tests
Jonathan Druart [Tue, 10 May 2022 08:29:27 +0000 (10:29 +0200)]
Bug 30650: Add some useful modules and tests

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Be more flexible with opening slots
Jonathan Druart [Mon, 2 May 2022 13:21:27 +0000 (15:21 +0200)]
Bug 30650: Be more flexible with opening slots

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Adjust atomic update
Jonathan Druart [Fri, 29 Apr 2022 15:52:18 +0000 (17:52 +0200)]
Bug 30650: Adjust atomic update

Take into account existing installs using the plugins

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Admin page
Jonathan Druart [Fri, 29 Apr 2022 10:04:03 +0000 (12:04 +0200)]
Bug 30650: Admin page

This patch adds a new page in the administration area to manage curbside
pickups.

Test plan:
1. Enable the new CurbsidePickup syspref
2. Go to Administration > Curbside pickups
=> If the logged-in user has the manage_curbside_pickups permission you
should see the administration view
3. Enable the feature for some libraries and configure it.
 a. You must define a "pickup interval" and a "maximum patrons per interval"
values.
 b. If "Patron-scheduled pickup" is enabled, patrons will be able to
schedule curbside pickups from the OPAC
 c. If "Enable for waiting holds only" is enabled, only patron with waiting
holds will be allowed to schedule curbside pickups
 d. In the bottom part of the form you can define the slots available for
curbside pickups.
 e. Save

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add link from the admin home page
Jonathan Druart [Fri, 29 Apr 2022 09:37:24 +0000 (11:37 +0200)]
Bug 30650: Add link from the admin home page

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add new permission manage_curbside_pickups
Jonathan Druart [Fri, 29 Apr 2022 09:01:27 +0000 (11:01 +0200)]
Bug 30650: Add new permission manage_curbside_pickups

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Add the CurbsidePickup syspref
Jonathan Druart [Fri, 29 Apr 2022 08:48:07 +0000 (10:48 +0200)]
Bug 30650: Add the CurbsidePickup syspref

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: Koha classes
Jonathan Druart [Fri, 29 Apr 2022 08:42:05 +0000 (10:42 +0200)]
Bug 30650: Koha classes

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 30650: DB changes
Jonathan Druart [Fri, 29 Apr 2022 07:57:26 +0000 (09:57 +0200)]
Bug 30650: DB changes

Sponsored-by: Association KohaLa - https://koha-fr.org/
Signed-off-by: Koha Team University Lyon 3 <koha@univ-lyon3.fr>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31244: Fix 500 if logout and not logged in
Jonathan Druart [Tue, 26 Jul 2022 12:55:02 +0000 (14:55 +0200)]
Bug 31244: Fix 500 if logout and not logged in

Can't use an undefined value as a HASH reference at /kohadevbox/koha/C4/Auth.pm line 985
        C4::Auth::checkauth('CGI=HASH(0x5603b7dc4300)', 0, 'HASH(0x5603b2633238)', 'intranet', undef, 'intranet-main.tt') called at /kohadevbox/koha/C4/Auth.pm line 186
        C4::Auth::get_template_and_user('HASH(0x5603b7b83d08)') called at /kohadevbox/koha/mainpage.pl line 40

Test plan:
Open a private window
Hit /cgi-bin/koha/mainpage.pl?logout.x=1

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31246: <span> displayed in 'Additional fields' section
Tomas Cohen Arazi [Wed, 27 Jul 2022 12:54:19 +0000 (09:54 -0300)]
Bug 31246: <span> displayed in 'Additional fields' section

This patch avoids escaping HMTL data in the additional fields section.

To test:
1. Open the additional fields section
   http://kohadev-intra.mydnsname.org:8081/cgi-bin/koha/admin/additional-fields.pl
=> FAIL: there are some nasty <span> </span> texts in there
2. Apply this patch
3. Reload
=> SUCCESS: Things display nicely again!
4. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
22 months agoBug 31120: Items will renew for zero ( 0 ) days if renewalperiod is blank/empty value
Kyle M Hall [Thu, 7 Jul 2022 19:14:59 +0000 (15:14 -0400)]
Bug 31120: Items will renew for zero ( 0 ) days if renewalperiod is blank/empty value

If the rule renewalperiod is the blank empty string instead of being null/undefined or non-existant, Koha will interpret the renewal period as being zero days instead of falling back to the issuelength rule.

It makes sense to me that a literal 0 here should make it renew for zero days even though that is nonsensical.

Test Plan:
1) Delete all your rules
2) Create an all/all/all rules with an empty string for renewal base
   period
3) Note that renewing an item does nothing
4) Apply this patch
5) Restart all the things!
6) Renew again
7) Note the renewal uses the issuelength rule as intended

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>