X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Fcirculation.pl;h=33820669dbf4994a2311dc3fb2fcb2e0286b068d;hb=4dcee58a4da3026fee25e8e73e9240a0b755a8c0;hp=bcbcb6fb9152a25584a34ad164bf31c83694742a;hpb=8e9fc9b38565e574d9537250b579db023234cbcb;p=koha.git diff --git a/circ/circulation.pl b/circ/circulation.pl index bcbcb6fb91..33820669db 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -25,6 +25,7 @@ use strict; use warnings; use CGI; use C4::Output; +use C4::Print; use C4::Auth qw/:DEFAULT get_session/; use C4::Dates qw/format_date/; use C4::Branch; # GetBranches @@ -93,10 +94,14 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user ( my $branches = GetBranches(); my @failedrenews = $query->param('failedrenew'); # expected to be itemnumbers -our %renew_failed; +our %renew_failed = (); for (@failedrenews) { $renew_failed{$_} = 1; } -my $findborrower = $query->param('findborrower'); +my @failedreturns = $query->param('failedreturn'); +our %return_failed = (); +for (@failedreturns) { $return_failed{$_} = 1; } + +my $findborrower = $query->param('findborrower') || q{}; $findborrower =~ s|,| |g; my $borrowernumber = $query->param('borrowernumber'); @@ -117,7 +122,7 @@ if (C4::Context->preference("UseTablesortForCirc")) { $template->param(UseTablesortForCirc => 1); } -my $barcode = $query->param('barcode') || ''; +my $barcode = $query->param('barcode') || q{}; $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace $barcode = barcodedecode($barcode) if( $barcode && C4::Context->preference('itemBarcodeInputFilter')); @@ -126,7 +131,7 @@ my $duedatespec = $query->param('duedatespec') || $session->param('stickydu my $issueconfirmed = $query->param('issueconfirmed'); my $cancelreserve = $query->param('cancelreserve'); my $organisation = $query->param('organisations'); -my $print = $query->param('print'); +my $print = $query->param('print') || q{}; my $newexpiry = $query->param('dateexpiry'); my $debt_confirmed = $query->param('debt_confirmed') || 0; # Don't show the debt error dialog twice @@ -147,8 +152,6 @@ if($duedatespec_allow){ if ($duedatespec) { if ($duedatespec =~ C4::Dates->regexp('syspref')) { $datedue = dt_from_string($duedatespec); - $datedue->set_hour(23); - $datedue->set_minute(59); } else { $invalidduedate = 1; $template->param(IMPOSSIBLE=>1, INVALID_DATE=>$duedatespec); @@ -172,7 +175,10 @@ if ( $barcode eq '' && $query->param('charges') eq 'yes' ) { } if ( $print eq 'yes' && $borrowernumber ne '' ) { - PrintIssueSlip($session->param('branch') || $branch, $borrowernumber); + if ( C4::Context->boolean_preference('printcirculationslips') ) { + my $letter = IssueSlip($branch, $borrowernumber, "QUICK"); + NetworkPrint($letter->{content}); + } $query->param( 'borrowernumber', '' ); $borrowernumber = ''; } @@ -184,8 +190,7 @@ if ( $print eq 'yes' && $borrowernumber ne '' ) { my $borrowerslist; my $message; if ($findborrower) { - my $borrowers = Search($findborrower, 'cardnumber'); - my @borrowers = @$borrowers; + my $borrowers = Search($findborrower, 'cardnumber') || []; if (C4::Context->preference("AddPatronLists")) { $template->param( "AddPatronLists_".C4::Context->preference("AddPatronLists")=> "1", @@ -196,17 +201,17 @@ if ($findborrower) { $template->param(categories=>$categories); } } - if ( $#borrowers == -1 ) { + if ( @$borrowers == 0 ) { $query->param( 'findborrower', '' ); $message = "'$findborrower'"; } - elsif ( $#borrowers == 0 ) { - $query->param( 'borrowernumber', $borrowers[0]->{'borrowernumber'} ); + elsif ( @$borrowers == 1 ) { + $borrowernumber = $borrowers->[0]->{'borrowernumber'}; + $query->param( 'borrowernumber', $borrowernumber ); $query->param( 'barcode', '' ); - $borrowernumber = $borrowers[0]->{'borrowernumber'}; } else { - $borrowerslist = \@borrowers; + $borrowerslist = $borrowers; } } @@ -275,10 +280,12 @@ if ($borrowernumber) { # if ($barcode) { # always check for blockers on issuing - my ( $error, $question ) = + my ( $error, $question, $alerts ) = CanBookBeIssued( $borrower, $barcode, $datedue , $inprocess ); my $blocker = $invalidduedate ? 1 : 0; + $template->param( alert => $alerts ); + delete $question->{'DEBT'} if ($debt_confirmed); foreach my $impossible ( keys %$error ) { $template->param( @@ -365,6 +372,7 @@ if ($borrowernumber) { $getWaitingReserveInfo{biblionumber} = $getiteminfo->{'biblionumber'}; $getWaitingReserveInfo{itemtype} = $itemtypeinfo->{'description'}; $getWaitingReserveInfo{author} = $getiteminfo->{'author'}; + $getWaitingReserveInfo{itemcallnumber} = $getiteminfo->{'itemcallnumber'}; $getWaitingReserveInfo{reservedate} = format_date( $num_res->{'reservedate'} ); $getWaitingReserveInfo{waitingat} = GetBranchName( $num_res->{'branchcode'} ); $getWaitingReserveInfo{waitinghere} = 1 if $num_res->{'branchcode'} eq $branch; @@ -413,10 +421,10 @@ if ($borrowernumber) { # make the issued books table. my $todaysissues = ''; my $previssues = ''; -our @todaysissues; -our @previousissues; -our @relissues; -our @relprevissues; +our @todaysissues = (); +our @previousissues = (); +our @relissues = (); +our @relprevissues = (); my $displayrelissues; our $totalprice = 0; @@ -440,10 +448,10 @@ sub build_issue_data { $it->{'borrowernumber'},$it->{'itemnumber'} ); $it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error; - my ( $restype, $reserves, undef ) = CheckReserves( $it->{'itemnumber'} ); + my $restype = C4::Reserves::GetReserveStatus( $it->{'itemnumber'} ); $it->{'can_renew'} = $can_renew; $it->{'can_confirm'} = !$can_renew && !$restype; - $it->{'renew_error'} = $restype; + $it->{'renew_error'} = ( $restype eq "Waiting" or $restype eq "Reserved" ) ? 1 : 0; $it->{'checkoutdate'} = C4::Dates->new($it->{'issuedate'},'iso')->output('syspref'); $it->{'issuingbranchname'} = GetBranchName($it->{'branchcode'}); @@ -456,8 +464,9 @@ sub build_issue_data { $it->{'od'} = $it->{'overdue'}; ($it->{'author'} eq '') and $it->{'author'} = ' '; $it->{'renew_failed'} = $renew_failed{$it->{'itemnumber'}}; + $it->{'return_failed'} = $return_failed{$it->{'barcode'}}; - if ( $todaysdate eq $it->{'issuedate'} or $todaysdate eq $it->{'lastreneweddate'} ) { + if ( $it->{'issuedate'}."" gt $todaysdate or $it->{'lastreneweddate'} gt $todaysdate ) { (!$relatives) ? push @todaysissues, $it : push @relissues, $it; } else { (!$relatives) ? push @previousissues, $it : push @relprevissues, $it; @@ -532,7 +541,6 @@ foreach my $flag ( sort keys %$flags ) { $flags->{$flag}->{'message'} =~ s#\n#
#g; if ( $flags->{$flag}->{'noissues'} ) { $template->param( - flagged => 1, noissues => 'true', ); if ( $flag eq 'GNA' ) { @@ -564,7 +572,6 @@ foreach my $flag ( sort keys %$flags ) { if ( $flag eq 'CHARGES' ) { $template->param( charges => 'true', - flagged => 1, chargesmsg => $flags->{'CHARGES'}->{'message'}, chargesamount => $flags->{'CHARGES'}->{'amount'}, ); @@ -579,7 +586,6 @@ foreach my $flag ( sort keys %$flags ) { elsif ( $flag eq 'ODUES' ) { $template->param( odues => 'true', - flagged => 1, oduesmsg => $flags->{'ODUES'}->{'message'} ); @@ -591,7 +597,6 @@ foreach my $flag ( sort keys %$flags ) { elsif ( $flag eq 'NOTES' ) { $template->param( notes => 'true', - flagged => 1, notesmsg => $flags->{'NOTES'}->{'message'} ); } @@ -704,7 +709,9 @@ $template->param( soundon => C4::Context->preference("SoundOn"), fast_cataloging => $fast_cataloging, CircAutoPrintQuickSlip => C4::Context->preference("CircAutoPrintQuickSlip"), - activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), + activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), + SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'), + AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'), ); # save stickyduedate to session @@ -724,11 +731,9 @@ $template->param( SpecifyDueDate => $duedatespec_allow, CircAutocompl => C4::Context->preference("CircAutocompl"), AllowRenewalLimitOverride => C4::Context->preference("AllowRenewalLimitOverride"), - dateformat => C4::Context->preference("dateformat"), - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + export_remove_fields => C4::Context->preference("ExportRemoveFields"), + export_with_csv_profile => C4::Context->preference("ExportWithCsvProfile"), canned_bor_notes_loop => $canned_notes, ); -$template->param( AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') ); - output_html_with_http_headers $query, $cookie, $template->output;