Koha-clms/C4
Arthur Suzuki a151d7ba0f Bug 20985: Add OnShelfHoldsAllowed checks to CanItemBeReserved
The expected behaviour for "On shelf holds allowed" setting for the circulation rules (Koha administration > Patrons and circulation > Circulation and fines rules):
- Allow holds only on items that are currently checked out or otherwise unavailable.
- If set to "Yes", patrons can place holds on items currently checked in.
- If set to "If any unavailable", patrons can only place holds on items that are not unavailable.
- If set to "If all unavailable", patrons can only place holds on items where *all* items on the record are unavailable.
(Adapted from https://bywatersolutions.com/education/preparing-for-library-closures)

These rules should also work when using ILS-DI, but currently they don't. This bug makes sure that the "On shelf holds allowed" rules work correctly when using ILS-DI to place holds.

Test plan:

1. Enable ILS-DI (set the ILS-DI system preference to Enable).
2. Go to Koha administration > Patrons and circulation > Circulation and fines rules.
3. Work through steps 4-5 for each of the settings for "On shelf holds allowed" for all libraries/patron categories/item types:
   . "Yes", "If any unavailable", and "If all unavailable"
4. Staff interface - place a hold on a record with items available for loan, the rules should work as expected before and after the patch is applied:
   . "Yes"
      ==> information column in the item table displays "Not on hold", the hold is placed, cancel the hold
   . "If any unavailable" and "If all unavailable"
      ==> the hold is not placed, message is "Cannot place hold. No items are available to be placed on hold.", red "X" in the hold column and the information column displays "Not on hold".
5. ILS-DI - place a hold on a record with items available for loan (note: without the patch, holds can be placed):
   . Query to place a hold using ILS-DI on a title that have all its items available,
     example query: http://127.0.0.1:8080/cgi-bin/koha/ilsdi.pl?service=HoldTitle&patron_id=1&bib_id=1&request_location=127.0.0.1
     ==> Without the patch the hold is placed but it shouldn't be allowed, cancel the hold
   . Query to place a hold using ILS-DI on an available item,
     example query: http://127.0.0.1:8080/cgi-bin/koha/ilsdi.pl?service=HoldItem&patron_id=1&bib_id=1&item_id=1)
     ==> Without the patch the hold is placed but it shouldn't be allowed, cancel the hold
6. Run the tests prove t/db_dependent/Reserves.t - these should pass.
7. Apply the patch (and flush_memcached and restart_all if using koha-testing-docker).
8. Run through steps 3-6 again, and note the changes when "If any unavailable" and "If all unavailable" options are used:
   . For the staff interface: there should be no change in behavour and should work as expected, for the red "X" in the items table additional text is added "onShelfHoldsNotAllowed".
   . For ILS-DI: these should now work as expected, with holds not placed, and this message in the results returned <code>onShelfHoldsNotAllowed</code> (check to confirm no holds place for either the patron or the item)
   . Tests: should still pass.
9. Sign off.

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

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

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-06-15 16:41:47 +02:00
..
AuthoritiesMarc Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
Barcodes Bug 26673: Fix perlcritic complains 2020-11-02 08:42:20 +01:00
ClassSortRoutine
…
ClassSplitRoutine Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Creators Bug 25852: Improve C4::Creators::Lib reliability under plack 2020-07-31 10:03:26 +02:00
External Bug 22010: Check preferences for ebook integration 2019-04-30 11:42:51 +00:00
Form
…
Heading Bug 18017: Add subdivisions to UNIMARC authorities zebra configuration 2021-04-16 15:12:45 +02:00
ILSDI Bug 17229: Check if patron is expired in CanItemBeReserved 2021-01-19 15:45:11 +01:00
Installer Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Labels Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Linker Bug 25189: Don't create authority if results found 2020-06-24 14:31:37 +02:00
Members Bug 24447: Changing 'DUE' to example in database that exists. 2021-01-22 13:46:41 +01:00
OAI Bug 25460: Update OAI sets when adding/editing/deleting item records 2020-10-15 12:56:30 +02:00
Output
…
Patroncards Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Reports Bug 24695: Move to Koha::Report->is_sql_valid 2021-04-12 15:27:50 +02:00
SIP Bug 28490: Revert "Bug 26995: Drop column relationship from borrowers, deletedborrowers and borrower_modifications tables" 2021-06-14 17:35:19 +02:00
Search Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
Serials
…
Utils Bug 28069: (bug 27715 follow-up) Fix sort for lists 2021-04-16 16:20:50 +02:00
Accounts.pm Bug 22394: Remove C4::Accounts::manualinvoice 2020-11-04 12:59:33 +01:00
Acquisition.pm Bug 27203: Calculate tax based on ecost if unitprice not set 2021-05-11 15:09:13 +02:00
Auth.pm Bug 28489: Don't deal with encoding during the serialization 2021-06-14 17:35:19 +02:00
Auth_cas_servers.yaml.sample
…
Auth_with_cas.pm Bug 20854: (QA follow-up) Improve readability 2021-04-21 10:51:29 +02:00
Auth_with_ldap.pm Bug 28490: Revert "Bug 26995: Drop column relationship from borrowers, deletedborrowers and borrower_modifications tables" 2021-06-14 17:35:19 +02:00
Auth_with_shibboleth.pm Bug 28367: (follow-up) Fix plack condition in C4/Auth_with_shibboleth.pm 2021-05-18 11:26:27 +02:00
AuthoritiesMarc.pm Bug 21958: Fix bibliographic record field comparison with authority 2021-04-01 17:13:56 +02:00
BackgroundJob.pm Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
Barcodes.pm
…
Biblio.pm Bug 27837: Always pass permanent location from items editor if it was defined 2021-05-19 15:06:42 +02:00
Breeding.pm Bug 26528: Z39.50/SRU ignore invalid replies 2021-04-16 16:20:42 +02:00
Budgets.pm Bug 23195: Always count shipping costs as 'spent' 2021-04-22 14:50:11 +02:00
Calendar.pm Bug 25723: (QA follow-up) Handle holiday and exception on same day 2020-07-20 17:45:31 +02:00
Charset.pm Bug 22721: Remove frameworkcode parameter in GetMarcFromKohaField calls 2019-07-15 11:28:08 +01:00
Circulation.pm Bug 28520: Allow creating a transfer back automatically if a hold is canceled during transit 2021-06-15 16:41:47 +02:00
ClassSortRoutine.pm Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
ClassSource.pm
…
ClassSplitRoutine.pm
…
Context.pm Bug 28317: Use the default CGI::Session serializer 2021-05-19 14:45:32 +02:00
Contract.pm Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
CourseReserves.pm Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Creators.pm Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Debug.pm
…
HTML5Media.pm Bug 27422: YouTube videos are HTTPS only 2021-02-08 17:09:34 +01:00
Heading.pm Bug 21958: Fix bibliographic record field comparison with authority 2021-04-01 17:13:56 +02:00
HoldsQueue.pm Bug 27069: Adapt uses of holdallowed 2021-04-07 16:08:04 +02:00
ImportBatch.pm Bug 24469: Move the new queries to a dedicated ImportBatch subroutine 2021-02-18 11:52:59 +01:00
ImportExportFramework.pm Bug 27968: Fix framework import if isurl has an incorrect value 2021-04-23 10:03:30 +02:00
InstallAuth.pm Bug 28317: Use the default CGI::Session serializer 2021-05-19 14:45:32 +02:00
Installer.pm Bug 28281: Remove double decoding when importing installation data 2021-05-07 14:44:00 +02:00
ItemCirculationAlertPreference.pm Bug 23271: Replace search_limited with search_with_library_limits 2021-04-21 15:25:07 +02:00
Items.pm Bug 27837: (follow-up) Do not check subfield unless tag defined 2021-05-19 15:06:42 +02:00
Koha.pm Bug 27746: prevent regexp undefined warning when checking subfield contents ($oclc) 2021-04-14 15:25:26 +02:00
Labels.pm Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Languages.pm Bug 27491: Rename system preference opaclanguages to OPACLanguages 2021-01-22 14:59:27 +01:00
Letters.pm Bug 26734: Rename activethemes with availablethemes 2021-05-27 15:07:36 +02:00
Linker.pm
…
Log.pm Bug 23632: Remove C4::Logs::GetLogs 2020-08-18 15:45:48 +02:00
MarcModificationTemplates.pm Bug 24840: Replace DateTime->now with dt_from_string 2020-04-08 11:54:23 +01:00
Matcher.pm Bug 26199: Include LDR for match check/match point 2021-03-09 17:20:47 +01:00
Members.pm Bug 28001: (bug 27050 follow-up) Fix delete_patrons if no category passed 2021-04-16 12:28:17 +02:00
Message.pm Bug 28230: Store C4::Message->{metadata} as Perl string always 2021-04-28 11:07:06 +02:00
NewsChannels.pm Bug 21066: Rename publicationdate with published_on 2020-09-02 15:35:08 +02:00
Output.pm Bug 11994: OpenSearch plugins needs to be delivered with Content-Type application/opensearchdescription+xml 2020-06-24 14:31:37 +02:00
Overdues.pm Bug 28144: Check if issue_id defined 2021-04-27 16:23:49 +02:00
Patroncards.pm Bug 21395: Make perlcritic happy 2020-06-29 12:37:02 +02:00
Record.pm Bug 27673: Fix encoding issues 2021-02-16 14:54:50 +01:00
Reports.pm Bug 27486: Rename system preference delimiter to CSVDelimiter 2021-01-29 09:03:45 +01:00
Reserves.pm Bug 20985: Add OnShelfHoldsAllowed checks to CanItemBeReserved 2021-06-15 16:41:47 +02:00
Ris.pm Bug 27673: Fix encoding issues 2021-02-16 14:54:50 +01:00
RotatingCollections.pm Bug 17202: Don't report an item in a collection if the collection doesn't exist 2021-04-28 11:07:06 +02:00
SMS.pm Bug 27673: Replace YAML with YAML::XS 2021-02-16 14:54:50 +01:00
Scheduler.pm Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
Scrubber.pm
…
Search.pm Bug 18989: Allow displaying biblios with all items hidden by OpacHiddenItems 2021-05-12 14:12:07 +02:00
Serials.pm Bug 27842: Update serial.biblionumber when a subscription is linked with another record 2021-04-28 11:07:06 +02:00
Service.pm Bug 25898: Prohibit indirect object notation 2020-10-15 12:56:30 +02:00
ShelfBrowser.pm Bug 26673: Remove shebangs from Perl modules 2020-10-26 00:14:42 +01:00
SocialData.pm
…
Stats.pm Bug 24151: Copy info to the pseudonymized table when a transaction is done 2020-07-20 15:17:42 +02:00
Suggestions.pm Bug 7806: Fix remaining occurrences of 0000-00-00 2021-03-01 11:16:42 +01:00
TTParser.pm Bug 26673: Remove #!/usr/bin/env perl from .pm modules too 2020-10-26 00:14:42 +01:00
Tags.pm Bug 23084: Replace grep {^$var$} with grep {$_ eq $var} 2020-02-17 10:44:45 +00:00
Templates.pm Bug 26734: Rename activethemes with availablethemes 2021-05-27 15:07:36 +02:00
TmplToken.pm
…
TmplTokenType.pm Bug 24217: use Modern::Perl for modules when strict is missing 2020-01-03 10:45:46 +00:00
UsageStats.pm Bug 28108: Fix filtering 2021-05-10 15:52:53 +02:00
XISBN.pm Bug 26364: Don't discard the passed isbn 2021-01-07 15:37:15 +01:00
XSLT.pm Bug 23406: Don't translate suppressed authorised values 2021-05-11 15:37:42 +02:00