@@ -, +, @@ and that the checkout length is not reduced --- C4/Circulation.pm | 30 ++++++++--- circ/circulation.pl | 17 ++++++- .../prog/en/modules/circ/circulation.tt | 59 ++++++++++++++++++---- t/db_dependent/DecreaseLoanHighHolds.t | 20 ++++++-- 4 files changed, 103 insertions(+), 23 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -660,7 +660,7 @@ sub itemissues { =head2 CanBookBeIssued ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $borrower, - $barcode, $duedate, $inprocess, $ignore_reserves ); + $barcode, $duedate, $inprocess, $ignore_reserves, $params ); Check if a book can be issued. @@ -678,6 +678,12 @@ C<$issuingimpossible> and C<$needsconfirmation> are some hashref. =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 : @@ -758,7 +764,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}); @@ -1074,11 +1081,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 @@ -62,6 +62,9 @@ my $query = new CGI; my $sessionID = $query->cookie("CGISESSID") ; my $session = get_session($sessionID); +my $override_high_holds = $query->param('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 @@ -332,8 +335,17 @@ if (@$barcodes) { for my $barcode ( @$barcodes ) { my $template_params = { barcode => $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_params->{alert} = $alerts; @@ -639,6 +651,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 @@ -207,6 +207,10 @@ $(document).ready(function() {
[% END %] +[% IF alert.HIGHHOLDS %] + +[% END %] + [% IF ( NEEDSCONFIRMATION ) %]+ + +
+[% END %] + [% IF ( RESERVED ) %]@@ -351,6 +370,7 @@ $(document).ready(function() { + [% IF ( DEBT ) %][% END %] [% IF ( INVALID_DATE ) %]
@@ -647,6 +667,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 %]