X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=reserve%2Frequest.pl;h=d9e5904c2193221ba025159fee2d4ea3083d4be8;hb=6dda8a63795439cde4d97f97b9d09b63011ef54a;hp=b34584541f398ec071f2bd9e1f19d515493fda02;hpb=5e94de956610072d3d37bbbde1c8d48920414118;p=koha.git diff --git a/reserve/request.pl b/reserve/request.pl index b34584541f..d9e5904c21 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -28,7 +28,7 @@ script to place reserves/requests use strict; use warnings; -use C4::Branch; # GetBranches get_branchinfos_of +use C4::Branch; use CGI; use List::MoreUtils qw/uniq/; use Date::Calc qw/Date_to_Days/; @@ -42,6 +42,7 @@ use C4::Circulation; use C4::Dates qw/format_date/; use C4::Members; use C4::Search; # enabled_staff_search_views +use Koha::DateUtils; my $dbh = C4::Context->dbh; my $sth; @@ -109,29 +110,32 @@ if ( $action eq 'move' ) { my $borrowernumber = $input->param('borrowernumber'); my $biblionumber = $input->param('biblionumber'); ToggleLowestPriority( $borrowernumber, $biblionumber ); +} elsif ( $action eq 'toggleSuspend' ) { + my $borrowernumber = $input->param('borrowernumber'); + my $biblionumber = $input->param('biblionumber'); + my $suspend_until = $input->param('suspend_until'); + ToggleSuspend( $borrowernumber, $biblionumber, $suspend_until ); } if ($findborrower) { - my ( $count, $borrowers ) = - SearchMember($findborrower, 'cardnumber', 'web' ); - - my @borrowers = @$borrowers; + my $borrowers = Search($findborrower, 'cardnumber'); - if ( !@borrowers ) { + if ($borrowers && @$borrowers) { + if ( @$borrowers == 1 ) { + $borrowernumber_hold = $borrowers->[0]->{'borrowernumber'}; + } + else { + $borrowerslist = $borrowers; + } + } else { $messageborrower = "'$findborrower'"; } - elsif ( @borrowers == 1 ) { - $borrowernumber_hold = $borrowers[0]->{'borrowernumber'}; - } - else { - $borrowerslist = \@borrowers; - } } # If we have the borrowernumber because we've performed an action, then we # don't want to try to place another reserve. if ($borrowernumber_hold && !$action) { - my $borrowerinfo = GetMemberDetails( $borrowernumber_hold ); + my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold ); my $diffbranch; my @getreservloop; my $count_reserv = 0; @@ -194,9 +198,9 @@ if ($borrowerslist) { foreach my $borrower ( sort { - $a->{surname} - . $a->{firstname} cmp $b->{surname} - . $b->{firstname} + uc($a->{surname} + . $a->{firstname}) cmp uc($b->{surname} + . $b->{firstname}) } @{$borrowerslist} ) { @@ -219,8 +223,8 @@ if ($borrowerslist) { ); } -# FIXME launch another time GetMemberDetails perhaps until -my $borrowerinfo = GetMemberDetails( $borrowernumber_hold ); +# FIXME launch another time GetMember perhaps until +my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold ); my @biblionumbers = (); my $biblionumbers = $input->param('biblionumbers'); @@ -230,6 +234,7 @@ if ($multihold) { push @biblionumbers, $input->param('biblionumber'); } +my $itemdata_enumchron = 0; my @biblioloop = (); foreach my $biblionumber (@biblionumbers) { @@ -291,7 +296,13 @@ foreach my $biblionumber (@biblionumbers) { if (my $items = get_itemnumbers_of($biblionumber)->{$biblionumber}){ @itemnumbers = @$items; } - else { + my @hostitems = get_hostitemnumbers_of($biblionumber); + if (@hostitems){ + $template->param('hostitemsflag' => 1); + push(@itemnumbers, @hostitems); + } + + if (!@itemnumbers) { $template->param('noitems' => 1); $biblioloopiter{noitems} = 1; } @@ -324,6 +335,9 @@ foreach my $biblionumber (@biblionumbers) { $biblioitem->{description} = $itemtypes->{ $biblioitem->{itemtype} }{description}; + if($biblioitem->{biblioitemnumber} ne $biblionumber){ + $biblioitem->{hostitemsflag}=1; + } $biblioloopiter{description} = $biblioitem->{description}; $biblioloopiter{itypename} = $biblioitem->{description}; $biblioloopiter{imageurl} = @@ -347,6 +361,11 @@ foreach my $biblionumber (@biblionumbers) { $branches->{ $item->{holdingbranch} }{branchname}; } + if($item->{biblionumber} ne $biblionumber){ + $item->{hostitemsflag}=1; + $item->{hosttitle} = GetBiblioData($item->{biblionumber})->{title}; + } + # add information $item->{itemcallnumber} = $item->{itemcallnumber}; @@ -354,13 +373,13 @@ foreach my $biblionumber (@biblionumbers) { # change the background color my $issues= GetItemIssue($itemnumber); if ( $issues->{'date_due'} ) { - $item->{date_due} = format_date($issues->{'date_due'}); + $item->{date_due} = format_sqldatetime($issues->{date_due}); $item->{backgroundcolor} = 'onloan'; } # checking reserve my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber); - my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0); + my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor ); if ( defined $reservedate ) { $item->{backgroundcolor} = 'reserved'; @@ -433,20 +452,22 @@ foreach my $biblionumber (@biblionumbers) { $borrowerinfo->{'branchcode'} ne $item->{'homebranch'} ) ) { $policy_holdallowed = 0; } - - if (IsAvailableForItemLevelRequest($itemnumber) and - not $item->{cantreserve} and - CanItemBeReserved($borrowerinfo->{borrowernumber}, $itemnumber) ) { - if ( $policy_holdallowed ) { - $item->{available} = 1; - $num_available++; - } - } elsif (C4::Context->preference( 'AllowHoldPolicyOverride' ) ) { - $item->{override} = 1; - $num_override++; + + if ( + $policy_holdallowed + && !$item->{cantreserve} + && IsAvailableForItemLevelRequest($itemnumber) + && CanItemBeReserved( + $borrowerinfo->{borrowernumber}, $itemnumber + ) + ) + { + $item->{available} = 1; + $num_available++; } - # If AllowHoldPolicyOverride is set, it should override EVERY restriction, not just branch item rules - if (C4::Context->preference( 'AllowHoldPolicyOverride' ) && !$item->{available} ) { + elsif ( C4::Context->preference('AllowHoldPolicyOverride') ) { + +# If AllowHoldPolicyOverride is set, it should override EVERY restriction, not just branch item rules $item->{override} = 1; $num_override++; } @@ -459,6 +480,12 @@ foreach my $biblionumber (@biblionumbers) { while (my $wait_hashref = $sth2->fetchrow_hashref) { $item->{waitingdate} = format_date($wait_hashref->{waitingdate}); } + + # Show serial enumeration when needed + if ($item->{enumchron}) { + $itemdata_enumchron = 1; + } + push @{ $biblioitem->{itemloop} }, $item; } @@ -521,7 +548,7 @@ foreach my $biblionumber (@biblionumbers) { } # get borrowers reserve info - my $reserveborrowerinfo = GetMemberDetails( $res->{'borrowernumber'}, 0); + my $reserveborrowerinfo = GetMember( borrowernumber => $res->{'borrowernumber'} ); if (C4::Context->preference('HidePatronName')){ $reserve{'hidename'} = 1; $reserve{'cardnumber'} = $reserveborrowerinfo->{'cardnumber'}; @@ -546,7 +573,8 @@ foreach my $biblionumber (@biblionumbers) { $reserve{'lowestPriority'} = $res->{'lowestPriority'}; $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'}); $reserve{'optionloop'} = \@optionloop; - + $reserve{'suspend'} = $res->{'suspend'}; + $reserve{'suspend_until'} = $res->{'suspend_until'}; push( @reserveloop, \%reserve ); } @@ -564,6 +592,7 @@ foreach my $biblionumber (@biblionumbers) { $template->param( optionloop => \@optionloop, bibitemloop => \@bibitemloop, + itemdata_enumchron => $itemdata_enumchron, date => $date, biblionumber => $biblionumber, findborrower => $findborrower, @@ -604,5 +633,7 @@ if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { $template->param( reserve_in_future => 1 ); } +$template->param( AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds') ); + # printout the page output_html_with_http_headers $input, $cookie, $template->output;