Bug 24683: Fix for take smart rules into account in "if all unavailable"
Inside of ItemsAnyAvailableAndNotRestricted was no effect from main set
of smart rules (per record and other limits): i.e. call to
"CanItemBeReserved" was absent totally.
Because of this there was a bug: for example none of two items were
allowed to be held when first was allowed by one smart rule, BUT on loan,
and second was disallowed by another smart rule (for example,
0 "Holds per record"),
i.e. in this case both items unavailable: so on-shelf holds setting
"allow hold if all unavailable" should allow to hold first one, and not
the second one. But it was that both wasn't allowed to be held.
Solution: call to sub "CanItemBeReserved" added so it checked for
"...->{status} ne 'OK'" so now if item restricted by smart rule it also
accounted as "unavailable" and "AnyAvailavble" not counts it.
How to reproduce:
1. Add 2 smart rules (/cgi-bin/koha/admin/smart-rules.pl) with "on shelf
holds": "if all unavailable" for all rules, no "item level holds", and
set "holds per record" to 2 for "books" and "0" for "computer files".
2. Create only 2 items for one biblio, but different types, "book"
and "computer file". For example in misc4dev env:
/cgi-bin/koha/cataloguing/additem.pl?biblionumber=1#additem
3. Check out that item of type "book" to some person, for example,
in misc4dev:
/cgi-bin/koha/circ/circulation.pl?borrowernumber=2&barcode=
3999900000001
4. Open reserve/request, for example, for item 1 and patron 1 in misc4dev
env (/cgi-bin/koha/reserve/request.pl?biblionumber=1&borrowernumber=1)
5. It does not allow to hold, both red crossed, but computer file says
"Exceeded max holds per record" because of "0" limit set on step 1.
6. Apply the patch.
7. Reload page on step 5 and see that "book" will be available for hold,
but "computer file" still will be red-crossed "Exceeded max holds
per record", now that's correct because both items unavailable:
one because on load, another because of "0" limit for computer files.
8. Check-in book from step 3 so it will be returned to the library,
9. Reload page on step 5 and see that again no any holds available,
but it's now also correct: "book" now returned but "on shelf holds"
set to "if all unavailable".
Signed-off-by: Agustin Moyano <agustinmoyano@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>