Bug 26139: Centralize code for "Place hold" button (detail)
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 7 Aug 2020 10:01:10 +0000 (12:01 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 25 Aug 2020 09:31:49 +0000 (11:31 +0200)
commitadd2f752b9717c07cc950d315fe093dc3c6e9536
treee96206cd11be12942eb3594b68efa91f01345cd5
parent3dd22f27bb7ddcc6eac729cdd938fef0a2df42e6
Bug 26139: Centralize code for "Place hold" button (detail)

There is a "norequest" boolean passed to the include cat-toolbar.inc, to
display or not the "Pace hold" button.
This flag was not calculated in some place (ISBDdetail and moredetail
for instance)

Here we centralize the code to make it more robust and less regression
prone.

Note that the same problem appears at the OPAC (opac-MARCdetail is
always display the button). That will have to be fixed separately

Test plan:
Create biblio A with 0 item, B and C with 1 item and D with 2 items
item for B is not for loan, C is for loan and D has 1 of each
Go to the bibliographic detail page of each record and confirm that the
"Place hold" button appears appropriately.
Test the different tabs of the catalogue module

QA note: This patch is only centralizing the existing code, but it is
still too naive. To manage the visibility of this button we certainly
want to copy what is done in C4::Search::searchResults:
  # can place a hold on a item if
  # not lost nor withdrawn
  # not damaged unless AllowHoldsOnDamagedItems is true
  # item is either for loan or on order (notforloan < 0)
  $can_place_holds = 1
    if (
         !$item->{itemlost}
      && !$item->{withdrawn}
      && ( !$item->{damaged} || C4::Context->preference('AllowHoldsOnDamagedItems') )
      && ( !$item->{notforloan} || $item->{notforloan} < 0 )
    );

Signed-off-by: Didier Gautheron <didier.gautheron@biblibre.com>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Koha/Items.pm
catalogue/MARCdetail.pl
catalogue/detail.pl
catalogue/imageviewer.pl
koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc
t/db_dependent/Koha/Items.t