X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=reserve%2Frequest.pl;h=908a626b248d718c8f6c26959dd0207ed124af80;hb=599887a1855349de6bafe9c1b6ce155ed9be5fb5;hp=496962f5b43cdee14744e4a5a1a523b9efb47156;hpb=47690dbcc440612a18ca2b870b3045e308915f5c;p=srvgit diff --git a/reserve/request.pl b/reserve/request.pl index 496962f5b4..908a626b24 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -40,6 +40,7 @@ use C4::Koha; use C4::Circulation; use C4::Dates qw/format_date/; use C4::Members; +use C4::Search; # enabled_staff_search_views my $dbh = C4::Context->dbh; my $sth; @@ -81,8 +82,9 @@ my $CGIbranch = CGI::scrolling_list( # Select borrowers infos my $findborrower = $input->param('findborrower'); +$findborrower = '' unless defined $findborrower; $findborrower =~ s|,| |g; -my $cardnumber = $input->param('cardnumber'); +my $cardnumber = $input->param('cardnumber') || ''; my $borrowerslist; my $messageborrower; my $warnings; @@ -213,20 +215,25 @@ my @biblioloop = (); foreach my $biblionumber (@biblionumbers) { my %biblioloopiter = (); + my $maxreserves; my $dat = GetBiblioData($biblionumber); + if ( not CanBookBeReserved($borrowerinfo->{borrowernumber}, $biblionumber) ) { + $warnings = 1; + $maxreserves = 1; + } # get existing reserves ..... - my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber); + my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); my $totalcount = $count; my $alreadyreserved; foreach my $res (@$reserves) { - if ( ( $res->{found} eq 'W' ) ) { + if ( defined $res->{found} && $res->{found} eq 'W' ) { $count--; } - if ( $borrowerinfo->{borrowernumber} eq $res->{borrowernumber} ) { + if ( defined $borrowerinfo && ($borrowerinfo->{borrowernumber} eq $res->{borrowernumber}) ) { $warnings = 1; $alreadyreserved = 1; $biblioloopiter{warn} = 1; @@ -236,7 +243,9 @@ foreach my $biblionumber (@biblionumbers) { $template->param( alreadyreserved => $alreadyreserved, messages => $messages, - warnings => $warnings ); + warnings => $warnings, + maxreserves=>$maxreserves + ); # FIXME think @optionloop, is maybe obsolete, or must be switchable by a systeme preference fixed rank or not @@ -290,8 +299,8 @@ foreach my $biblionumber (@biblionumbers) { foreach my $biblioitemnumber (@biblioitemnumbers) { my $biblioitem = $biblioiteminfos_of->{$biblioitemnumber}; - my $num_available; - my $num_override; + my $num_available = 0; + my $num_override = 0; $biblioitem->{description} = $itemtypes->{ $biblioitem->{itemtype} }{description}; @@ -365,7 +374,7 @@ foreach my $biblionumber (@biblionumbers) { my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($itemnumber); - if ( $transfertwhen ne '' ) { + if ( defined $transfertwhen && $transfertwhen ne '' ) { $item->{transfertwhen} = format_date($transfertwhen); $item->{transfertfrom} = $branches->{$transfertfrom}{branchname}; @@ -382,13 +391,15 @@ foreach my $biblionumber (@biblionumbers) { if (! C4::Context->preference("canreservefromotherbranches")){ # cant reserve items so need to check if item homebranch and userenv branch match if not we cant reserve my $userenv = C4::Context->userenv; - if ( ($userenv) && ( $userenv->{flags} != 1 ) ) { + if ( ($userenv) && ( $userenv->{flags} % 2 != 1 ) ) { $item->{cantreserve} = 1 if ( $item->{homebranch} ne $userenv->{branch} ); } } } - my $branchitemrule = GetBranchItemRule( $item->{'homebranch'}, $item->{'itype'} ); + my $branch = C4::Circulation::_GetCircControlBranch($item, $borrowerinfo); + + my $branchitemrule = GetBranchItemRule( $branch, $item->{'itype'} ); my $policy_holdallowed = 1; $item->{'holdallowed'} = $branchitemrule->{'holdallowed'}; @@ -398,7 +409,7 @@ foreach my $biblionumber (@biblionumbers) { $policy_holdallowed = 0; } - if (IsAvailableForItemLevelRequest($itemnumber) and not $item->{cantreserve}) { + if (IsAvailableForItemLevelRequest($itemnumber) and not $item->{cantreserve} and CanItemBeReserved($borrowerinfo->{borrowernumber}, $itemnumber) ) { if ( not $policy_holdallowed and C4::Context->preference( 'AllowHoldPolicyOverride' ) ) { $item->{override} = 1; $num_override++; @@ -432,8 +443,12 @@ foreach my $biblionumber (@biblionumbers) { # existingreserves building my @reserveloop; - ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber); - foreach my $res ( sort { $a->{found} cmp $b->{found} } @$reserves ) { + ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); + foreach my $res ( sort { + my $a_found = $a->{found} || ''; + my $b_found = $a->{found} || ''; + $a_found cmp $b_found; + } @$reserves ) { my %reserve; my @optionloop; for ( my $i = 1 ; $i <= $totalcount ; $i++ ) { @@ -445,16 +460,8 @@ foreach my $biblionumber (@biblionumbers) { } ); } - my @branchloop; - foreach my $br ( keys %$branches ) { - my %abranch; - $abranch{'selected'} = ( $br eq $res->{'branchcode'} ); - $abranch{'branch'} = $br; - $abranch{'branchname'} = $branches->{$br}->{'branchname'}; - push( @branchloop, \%abranch ); - } - if ( ( $res->{'found'} eq 'W' ) ) { + if ( defined $res->{'found'} && $res->{'found'} eq 'W' ) { my $item = $res->{'itemnumber'}; $item = GetBiblioFromItemNumber($item,undef); $reserve{'wait'}= 1; @@ -480,23 +487,26 @@ foreach my $biblionumber (@biblionumbers) { # get borrowers reserve info my $reserveborrowerinfo = GetMemberDetails( $res->{'borrowernumber'}, 0); - + if (C4::Context->preference('HidePatronName')){ + $reserve{'hidename'} = 1; + $reserve{'cardnumber'} = $reserveborrowerinfo->{'cardnumber'}; + } $reserve{'date'} = format_date( $res->{'reservedate'} ); $reserve{'borrowernumber'} = $res->{'borrowernumber'}; $reserve{'biblionumber'} = $res->{'biblionumber'}; $reserve{'borrowernumber'} = $res->{'borrowernumber'}; $reserve{'firstname'} = $reserveborrowerinfo->{'firstname'}; - $reserve{'surname'} = $reserveborrowerinfo->{'surname'}; + $reserve{'surname'} = $reserveborrowerinfo->{'surname'}; $reserve{'notes'} = $res->{'reservenotes'}; $reserve{'wait'} = - ( ( $res->{'found'} eq 'W' ) or ( $res->{'priority'} eq '0' ) ); + ( ( defined $res->{'found'} and $res->{'found'} eq 'W' ) or ( $res->{'priority'} eq '0' ) ); $reserve{'constrainttypea'} = ( $res->{'constrainttype'} eq 'a' ); $reserve{'constrainttypeo'} = ( $res->{'constrainttype'} eq 'o' ); $reserve{'voldesc'} = $res->{'volumeddesc'}; $reserve{'ccode'} = $res->{'ccode'}; $reserve{'barcode'} = $res->{'barcode'}; $reserve{'priority'} = $res->{'priority'}; - $reserve{'branchloop'} = \@branchloop; + $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'}); $reserve{'optionloop'} = \@optionloop; push( @reserveloop, \%reserve ); @@ -520,13 +530,18 @@ foreach my $biblionumber (@biblionumbers) { biblionumber => $biblionumber, findborrower => $findborrower, cardnumber => $cardnumber, - CGIselectborrower => $CGIselectborrower, title => $dat->{title}, author => $dat->{author}, holdsview => 1, + C4::Search::enabled_staff_search_views, + ); + if (defined $borrowerinfo && exists $borrowerinfo->{'branchcode'}) { + $template->param( borrower_branchname => $branches->{$borrowerinfo->{'branchcode'}}->{'branchname'}, borrower_branchcode => $borrowerinfo->{'branchcode'}, - ); + ); + } + $template->param(CGIselectborrower => $CGIselectborrower) if defined $CGIselectborrower; $biblioloopiter{biblionumber} = $biblionumber; $biblioloopiter{title} = $dat->{title}; @@ -547,6 +562,13 @@ $template->param( biblionumbers => $biblionumbers ); if ($multihold) { $template->param( multi_hold => 1 ); } + +if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { + $template->param( + reserve_in_future => 1, + DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + ); +} # printout the page output_html_with_http_headers $input, $cookie, $template->output;