X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=reserve%2Frequest.pl;h=aea1ff8d5d59bfc44b90b0ef3f749cb1631b30ca;hb=7668e19c9593da570cffb5cd4640fe175d739328;hp=21183da4a2fb27c391f07431ded4ea60e79ff917;hpb=fcd28a664acaa4aed52604a4150f752bbe118798;p=koha.git diff --git a/reserve/request.pl b/reserve/request.pl index 21183da4a2..aea1ff8d5d 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -42,11 +42,12 @@ 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; my $input = new CGI; -my ( $template, $borrowernumber, $cookie ) = get_template_and_user( +my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( { template_name => "reserve/request.tmpl", query => $input, @@ -64,30 +65,17 @@ my $showallitems = $input->param('showallitems'); my $branches = GetBranches(); my $itemtypes = GetItemTypes(); -my $default = C4::Context->userenv->{branch}; -my @values; -my %label_of; - -foreach my $branchcode (sort keys %{$branches} ) { - push @values, $branchcode; - $label_of{$branchcode} = $branches->{$branchcode}->{branchname}; +my $userbranch = ''; +if (C4::Context->userenv && C4::Context->userenv->{'branch'}) { + $userbranch = C4::Context->userenv->{'branch'}; } -my $CGIbranch = CGI::scrolling_list( - -name => 'pickup', - -id => 'pickup', - -values => \@values, - -default => $default, - -labels => \%label_of, - -size => 1, - -multiple => 0, - ); + # Select borrowers infos my $findborrower = $input->param('findborrower'); $findborrower = '' unless defined $findborrower; $findborrower =~ s|,| |g; my $borrowernumber_hold = $input->param('borrowernumber') || ''; -my $borrowerslist; my $messageborrower; my $warnings; my $messages; @@ -109,6 +97,11 @@ 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) { @@ -119,7 +112,7 @@ if ($findborrower) { $borrowernumber_hold = $borrowers->[0]->{'borrowernumber'}; } else { - $borrowerslist = $borrowers; + $template->param( borrower_list => sort_borrowerlist($borrowers)); } } else { $messageborrower = "'$findborrower'"; @@ -185,38 +178,6 @@ if ($borrowernumber_hold && !$action) { $template->param( messageborrower => $messageborrower ); -my $CGIselectborrower; -if ($borrowerslist) { - my @values; - my %labels; - - foreach my $borrower ( - sort { - $a->{surname} - . $a->{firstname} cmp $b->{surname} - . $b->{firstname} - } @{$borrowerslist} - ) - { - push @values, $borrower->{borrowernumber}; - - $labels{ $borrower->{borrowernumber} } = sprintf( - '%s, %s ... (%s - %s) ... %s', - $borrower->{surname} ||'', $borrower->{firstname} || '', - $borrower->{cardnumber} || '', $borrower->{categorycode} || '', - $borrower->{address} || '', - ); - } - - $CGIselectborrower = CGI::scrolling_list( - -name => 'borrowernumber', - -values => \@values, - -labels => \%labels, - -size => 7, - -multiple => 0, - ); -} - # FIXME launch another time GetMember perhaps until my $borrowerinfo = GetMember( borrowernumber => $borrowernumber_hold ); @@ -238,9 +199,16 @@ foreach my $biblionumber (@biblionumbers) { my $dat = GetBiblioData($biblionumber); unless ( CanBookBeReserved($borrowerinfo->{borrowernumber}, $biblionumber) ) { - $warnings = 1; + $warnings = 1; $maxreserves = 1; } + + my $alreadypossession; + if (not C4::Context->preference('AllowHoldsOnPatronsPossessions') and CheckIfIssuedToPatron($borrowerinfo->{borrowernumber},$biblionumber)) { + $warnings = 1; + $alreadypossession = 1; + } + # get existing reserves ..... my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); my $totalcount = $count; @@ -262,7 +230,8 @@ foreach my $biblionumber (@biblionumbers) { $template->param( alreadyreserved => $alreadyreserved, messages => $messages, warnings => $warnings, - maxreserves=>$maxreserves + maxreserves=>$maxreserves, + alreadypossession => $alreadypossession, ); @@ -367,7 +336,7 @@ 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'; } @@ -424,7 +393,7 @@ foreach my $biblionumber (@biblionumbers) { # if independent branches is on we need to check if the person can reserve # for branches they arent logged in to - if ( C4::Context->preference("IndependantBranches") ) { + if ( C4::Context->preference("IndependentBranches") ) { 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; @@ -565,8 +534,15 @@ foreach my $biblionumber (@biblionumbers) { $reserve{'barcode'} = $res->{'barcode'}; $reserve{'priority'} = $res->{'priority'}; $reserve{'lowestPriority'} = $res->{'lowestPriority'}; - $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'}); $reserve{'optionloop'} = \@optionloop; + $reserve{'suspend'} = $res->{'suspend'}; + $reserve{'suspend_until'} = $res->{'suspend_until'}; + + if ( C4::Context->preference('IndependentBranches') && $flags->{'superlibrarian'} != 1 ) { + $reserve{'branchloop'} = [ GetBranchDetail($res->{'branchcode'}) ]; + } else { + $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'}); + } push( @reserveloop, \%reserve ); } @@ -575,8 +551,7 @@ foreach my $biblionumber (@biblionumbers) { my $time = time(); $template->param( - CGIbranch => $CGIbranch, - + branchloop => GetBranchesLoop($userbranch), time => $time, fixedRank => $fixedRank, ); @@ -600,7 +575,6 @@ foreach my $biblionumber (@biblionumbers) { borrower_branchcode => $borrowerinfo->{'branchcode'}, ); } - $template->param(CGIselectborrower => $CGIselectborrower) if defined $CGIselectborrower; $biblioloopiter{biblionumber} = $biblionumber; $biblioloopiter{title} = $dat->{title}; @@ -616,7 +590,6 @@ foreach my $biblionumber (@biblionumbers) { $template->param( biblioloop => \@biblioloop ); $template->param( biblionumbers => $biblionumbers ); -$template->param( DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar() ); if ($multihold) { $template->param( multi_hold => 1 ); @@ -626,5 +599,20 @@ if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { $template->param( reserve_in_future => 1 ); } +$template->param( + SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'), + AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'), +); + # printout the page output_html_with_http_headers $input, $cookie, $template->output; + +sub sort_borrowerlist { + my $borrowerslist = shift; + my $ref = []; + push @{$ref}, sort { + uc( $a->{surname} . $a->{firstname} ) cmp + uc( $b->{surname} . $b->{firstname} ) + } @{$borrowerslist}; + return $ref; +}