@@ -, +, @@ and that the checkout length is not reduced --- C4/Circulation.pm | 30 +++++++++--- circ/circulation.pl | 18 ++++++- .../prog/en/modules/circ/circulation.tt | 49 +++++++++++++++++-- .../{ => Circulation}/DecreaseLoanHighHolds.t | 22 +++++++-- 4 files changed, 100 insertions(+), 19 deletions(-) rename t/db_dependent/{ => Circulation}/DecreaseLoanHighHolds.t (85%) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -657,7 +657,7 @@ sub itemissues { =head2 CanBookBeIssued ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $borrower, - $barcode, $duedatespec, $inprocess, $ignore_reserves ); + $barcode, $duedatespec, $inprocess, $ignore_reserves, $params ); Check if a book can be issued. @@ -674,6 +674,12 @@ C<$issuingimpossible> and C<$needsconfirmation> are some hashref. =item C<$inprocess> boolean switch =item C<$ignore_reserves> boolean switch +=item C<$params> Hashref of additional parameters + +Available keys: + override_high_holds - Ignore high holds + onsite_checkout - Checkout is an onsite checkout that will not leave the library + =back Returns : @@ -754,7 +760,8 @@ sub CanBookBeIssued { my %issuingimpossible; # filled with problems that causes the issue to be IMPOSSIBLE my %alerts; # filled with messages that shouldn't stop issuing, but the librarian should be aware of. - my $onsite_checkout = $params->{onsite_checkout} || 0; + my $onsite_checkout = $params->{onsite_checkout} || 0; + my $override_high_holds = $params->{override_high_holds} || 0; my $item = GetItem(GetItemnumberFromBarcode( $barcode )); my $issue = GetItemIssue($item->{itemnumber}); @@ -1068,11 +1075,20 @@ sub CanBookBeIssued { my $check = checkHighHolds( $item, $borrower ); if ( $check->{exceeded} ) { - $needsconfirmation{HIGHHOLDS} = { - num_holds => $check->{outstanding}, - duration => $check->{duration}, - returndate => output_pref( $check->{due_date} ), - }; + if ($override_high_holds) { + $alerts{HIGHHOLDS} = { + num_holds => $check->{outstanding}, + duration => $check->{duration}, + returndate => output_pref( $check->{due_date} ), + }; + } + else { + $needsconfirmation{HIGHHOLDS} = { + num_holds => $check->{outstanding}, + duration => $check->{duration}, + returndate => output_pref( $check->{due_date} ), + }; + } } } --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -65,6 +65,10 @@ my $query = new CGI; my $sessionID = $query->cookie("CGISESSID") ; my $session = get_session($sessionID); +my $override_high_holds = $query->param('override_high_holds'); +warn "OVER: $override_high_holds"; +my $override_high_holds_tmp = $query->param('override_high_holds_tmp'); + # branch and printer are now defined by the userenv # but first we have to check if someone has tried to change them @@ -300,8 +304,17 @@ if ($borrowernumber) { # if ($barcode) { # always check for blockers on issuing - my ( $error, $question, $alerts ) = - CanBookBeIssued( $borrower, $barcode, $datedue , $inprocess, undef, { onsite_checkout => $onsite_checkout } ); + my ( $error, $question, $alerts ) = CanBookBeIssued( + $borrower, + $barcode, $datedue, + $inprocess, + undef, + { + onsite_checkout => $onsite_checkout, + override_high_holds => $override_high_holds || $override_high_holds_tmp || 0, + } + ); + my $blocker = $invalidduedate ? 1 : 0; $template->param( alert => $alerts ); @@ -573,6 +586,7 @@ $template->param( canned_bor_notes_loop => $canned_notes, debarments => GetDebarments({ borrowernumber => $borrowernumber }), todaysdate => output_pref( { dt => dt_from_string()->set(hour => 23)->set(minute => 59), dateformat => 'sql' } ), + override_high_holds => $override_high_holds, ); output_html_with_http_headers $query, $cookie, $template->output; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -206,6 +206,10 @@ $(document).ready(function() {
[% END %] +[% IF alert.HIGHHOLDS %] + +[% END %] + [% IF ( NEEDSCONFIRMATION ) %]+ + +
+[% END %] + [% IF ( RESERVED ) %]@@ -344,6 +363,7 @@ $(document).ready(function() { + [% IF ( DEBT ) %][% END %] [% IF ( INVALID_DATE ) %]
@@ -636,6 +656,23 @@ No patron matched [% message %] [% END %] + + [% IF Koha.Preference('decreaseLoanHighHolds') %] + [% IF NEEDSCONFIRMATION %] + [% IF override_high_holds %] + + [% ELSE %] + + [% END %] + [% ELSE %] + [% IF override_high_holds %] + + [% ELSE %] + + [% END %] + [% END %] + + [% END %]