From 0c0151ac8445cba529f89e194e514851929232bd Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Tue, 13 Mar 2018 14:57:49 +0000 Subject: [PATCH] Bug 20421: Inform staff that patron does have the title checked out during placing hold Test plan: 1) Enable the CheckPrevCheckout and DisplayMultiPlaceHold system preferences 2) Have a patron with some checkouts history 3) Try to place hold on one of titles from history for this patron 4) You should see an information at the top of confirm request page, but you still should be able to place a hold 5) Try this with multiple titles - one or more of them should be from history 6) You should see this information in "Information" column 7) There is also new column placed at the beggining with checkbox, you could uncheck it for titles you do not want to place a hold on it 8) Confirm the hold is placed only on checked titles --- .../prog/en/modules/reserve/request.tt | 28 ++++++++++++++++++---- reserve/request.pl | 16 +++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index 91e9e5b..cfd57e4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -99,7 +99,7 @@ function check() { } function checkMultiHold() { - var spans = $(".multi_hold_item"); + var spans = $(".multi_hold_item_checkbox:checked"); if ($(spans).size() == 0) { alert(MSG_NO_ITEMS_AVAILABLE); return false; @@ -297,6 +297,14 @@ function checkMultiHold() { [% ELSIF NOT noitems %] +[% IF ( checked_previously && !multi_hold ) %] +
+ +
+[% END %] + [% IF ( exceeded_maxreserves || exceeded_holds_per_record || alreadyreserved || none_available || alreadypossession || ageRestricted ) %]
@@ -636,6 +644,7 @@ function checkMultiHold() { + [% UNLESS ( item_level_itypes ) %] @@ -650,15 +659,17 @@ function checkMultiHold() { [% END %] + [% END %] + @@ -669,6 +680,9 @@ function checkMultiHold() { [% END %]
  TitleItem type
+ [% UNLESS ( biblioloo.warn ) %] + - [% UNLESS ( biblioloo.warn ) %] - - [% ELSE %] + [% IF ( biblioloo.warn ) %] [% END %] [% biblioloo.rank %] + [% IF ( biblioloo.checked_previously ) %] + Patron has previously checked out this title
+ [% END %] [% IF ( biblioloo.alreadyres ) %]
    [% ELSE %] @@ -706,7 +720,11 @@ function checkMultiHold() { [% ELSIF ( none_available ) %] [% ELSE %] - + [% IF ( multi_hold ) %] + + [% ELSE %] + + [% END %] [% END %] [% END %] diff --git a/reserve/request.pl b/reserve/request.pl index 2902de0..ec8eede 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -133,6 +133,7 @@ if ( $biblionumbers ) { push @biblionumbers, $input->multi_param('biblionumber'); } +my $multihold = scalar $input->param('multi_hold'); # FIXME multi_hold should not be a variable but depends on the number of elements in @biblionumbers $template->param(multi_hold => scalar $input->param('multi_hold')); @@ -198,6 +199,10 @@ my $patron = Koha::Patrons->find( $borrowernumber_hold ); my $logged_in_patron = Koha::Patrons->find( $borrowernumber ); +my $wants_check; +if ($patron) { + $wants_check = $patron->wants_check_for_previous_checkout; +} my $itemdata_enumchron = 0; my @biblioloop = (); foreach my $biblionumber (@biblionumbers) { @@ -363,6 +368,17 @@ foreach my $biblionumber (@biblionumbers) { foreach my $itemnumber ( @{ $itemnumbers_of_biblioitem{$biblioitemnumber} } ) { my $item = $iteminfos_of->{$itemnumber}; + if ( $patron ) { + my $do_check = $patron->do_check_for_previous_checkout($item) if $wants_check; + if ( $do_check && $wants_check ) { + $item->{checked_previously} = $do_check; + if ( $multihold ) { + $biblioloopiter{checked_previously} = $do_check; + } else { + $template->param( checked_previously => $do_check ); + } + } + } $item->{force_hold_level} = $force_hold_level; unless (C4::Context->preference('item-level_itypes')) { -- 2.1.4