rel_3_0 moved to HEAD
[koha.git] / circ / branchreserves.pl
index a4b695b..f78bc40 100755 (executable)
 
 use strict;
 use C4::Context;
+use C4::Output;
 use CGI;
+use C4::Branch; # GetBranchName
 use C4::Auth;
 use C4::Date;
 use C4::Circulation::Circ2;
+
+use Date::Calc qw(
+  Today
+  Add_Delta_YM
+  Date_to_Days
+);
 use C4::Reserves2;
-use C4::Search;
 use C4::Koha;
+use C4::Interface::CGI::Output;
 
 my $input = new CGI;
 
-my $item=$input->param('itemnumber');
-my $borrowernumber=$input->param('borrowernumber');
-my $fbr=$input->param('fbr');
-my $tbr=$input->param('tbr');
+my $item           = $input->param('itemnumber');
+my $borrowernumber = $input->param('borrowernumber');
+my $fbr            = $input->param('fbr');
+my $tbr            = $input->param('tbr');
 
 my $cancel;
 
+my $theme = $input->param('theme');    # only used if allowthemeoverride is set
 
-my $theme = $input->param('theme'); # only used if allowthemeoverride is set
-
-my ($template, $loggedinuser, $cookie)
-      = get_template_and_user({template_name => "circ/branchreserves.tmpl",
-                                        query => $input,
-                                        type => "intranet",
-                                        authnotrequired => 0,
-                                        flagsrequired => {borrowers => 1},
-                                        debug => 1,
-                                        });
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "circ/branchreserves.tmpl",
+        query           => $input,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { circulate => 1 },
+        debug           => 1,
+    }
+);
 
 my $default = C4::Context->userenv->{'branch'};
-my $dbh=C4::Context->dbh;
-my $todaysdate = get_today();
 
+my @datearr    = localtime( time() );
+my $todaysdate =
+    ( 1900 + $datearr[5] ) . '-'
+  . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
+  . sprintf( "%0.2d", $datearr[3] );
 
 # if we have a return from the form we launch the subroutine CancelReserve
-       if ($item){
-               my $messages;
-               my $nextreservinfo;
-               my %env;
-               my $waiting;
-               ($messages,$nextreservinfo) = GlobalCancel($item,$borrowernumber);
-#              if we have a result 
-               if ($nextreservinfo){
-                       my $borrowerinfo = getpatroninformation(\%env,$nextreservinfo);
-                       my $iteminfo = C4::Circulation::Circ2::getiteminformation(\%env,$item);
-                       if ($messages->{'transfert'}){
-                       my $branchname = getbranchname($messages->{'transfert'});
-                               $template->param(
-                                       messagetransfert => $messages->{'transfert'},
-                                       branchname      => $branchname,
-                               );
-                       }
-                       if ($messages->{'waiting'}){
-                       $waiting = 1;
-                       }
-
-                               $template->param(
-                                       message                 => 1,
-                                       nextreservnumber  =>  $nextreservinfo,
-                                       nextreservsurname => $borrowerinfo->{'surname'},
-                                       nextreservfirstname => $borrowerinfo->{'firstname'},
-                                       nextreservitem          => $item,
-                                       nextreservtitle         => $iteminfo->{'title'},
-                                       waiting                 => $waiting
-                               );
-                       }
+if ($item) {
+    my $messages;
+    my $nextreservinfo;
+    my %env;
+    my $waiting;
+    ( $messages, $nextreservinfo ) = GlobalCancel( $item, $borrowernumber );
+
+    #          if we have a result
+    if ($nextreservinfo) {
+        my $borrowerinfo = getpatroninformation( \%env, $nextreservinfo );
+        my $iteminfo = C4::Circulation::Circ2::getiteminformation($item);
+        if ( $messages->{'transfert'} ) {
+            my $branchname = GetBranchName( $messages->{'transfert'} );
+            $template->param(
+                messagetransfert => $messages->{'transfert'},
+                branchname       => $branchname,
+            );
+        }
+        if ( $messages->{'waiting'} ) {
+            $waiting = 1;
+        }
+
+        $template->param(
+            message             => 1,
+            nextreservnumber    => $nextreservinfo,
+            nextreservsurname   => $borrowerinfo->{'surname'},
+            nextreservfirstname => $borrowerinfo->{'firstname'},
+            nextreservitem      => $item,
+            nextreservtitle     => $iteminfo->{'title'},
+            waiting             => $waiting
+        );
+    }
+
 #              if the document is not in his homebranch location and there is not reservation after, we transfer it
-               if (($fbr ne $tbr) and (not $nextreservinfo)){
-                       C4::Circulation::Circ2::dotransfer($item,$fbr,$tbr);
-                       C4::Circulation::Circ2::itemseen($dbh,$itm);
-               }
-       }
-       
+    if ( ( $fbr ne $tbr ) and ( not $nextreservinfo ) ) {
+        C4::Circulation::Circ2::dotransfer( $item, $fbr, $tbr );
+    }
+}
+
 my @reservloop;
+
 my @getreserves = GetReservesForBranch($default);
+
 foreach my $num (@getreserves) {
-       my %getreserv;
-       my %env;
-       my $gettitle = getiteminformation(\%env,$num->{'itemnumber'});
-       my $getborrower = getpatroninformation (\%env,$num->{'borrowernumber'});
-       my $itemtypeinfo = getitemtypeinfo($gettitle->{'itemtype'});
-       $getreserv{'waitingdate'} = format_date($num->{'waitingdate'});
-       my $calcDate=DateCalc($num->{'waitingdate'},"+".C4::Context->preference('ReservesMaxPickUpDelay')."  days");
-       my $warning=Date_Cmp(ParseDate("today"),$calcDate);
-       if ($warning>0){
-               $getreserv{'messcompa'} = 1;
-       }
-       $getreserv{'title'} = $gettitle->{'title'};
-       $getreserv{'itemnumber'} = $gettitle->{'itemnumber'};
-       $getreserv{'biblionumber'} = $gettitle->{'biblionumber'};
-       $getreserv{'barcode'} = $gettitle->{'barcode'};
-       $getreserv{'itemtype'} = $itemtypeinfo->{'description'};
-       $getreserv{'homebranch'} = $gettitle->{'homebranch'};
-       $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
-       if ($gettitle->{'homebranch'} ne $gettitle->{'holdingbranch'}){
-               $getreserv{'dotransfer'} = 1;
-               }
-       $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
-       $getreserv{'borrowernum'} = $getborrower->{'borrowernumber'};
-       $getreserv{'borrowername'} = $getborrower->{'surname'};
-       $getreserv{'borrowerfirstname'} =  $getborrower->{'firstname'} ;
-       if ($getborrower->{'emailaddress'}){
-               $getreserv{'borrowermail'} =  $getborrower->{'emailaddress'} ;
-       }
-       $getreserv{'borrowerphone'} = $getborrower->{'phone'};
-       push(@reservloop, \%getreserv);
+    my %getreserv;
+    my %env;
+    my $gettitle     = getiteminformation( $num->{'itemnumber'} );
+    my $getborrower  = getpatroninformation( \%env, $num->{'borrowernumber'} );
+    my $itemtypeinfo = getitemtypeinfo( $gettitle->{'itemtype'} );
+    $getreserv{'waitingdate'} = format_date( $num->{'waitingdate'} );
+
+    next unless $num->{'waitingdate'} ne '0000-00-00';
+    my ( $waiting_year, $waiting_month, $waiting_day ) = split /-/,
+      $num->{'waitingdate'};
+    ( $waiting_year, $waiting_month, $waiting_day ) =
+      Add_Delta_YM( $waiting_year, $waiting_month, $waiting_day,
+        C4::Context->preference('ReservesMaxPickUpDelay'), 0 );
+    my $calcDate = Date_to_Days( $waiting_year, $waiting_month, $waiting_day );
+    my $today    = Date_to_Days(&Today);
+    my $warning  = ( $today > $calcDate );
+
+    if ( $warning > 0 ) {
+        $getreserv{'messcompa'} = 1;
+    }
+    $getreserv{'title'}         = $gettitle->{'title'};
+    $getreserv{'itemnumber'}    = $gettitle->{'itemnumber'};
+    $getreserv{'biblionumber'}  = $gettitle->{'biblionumber'};
+    $getreserv{'barcode'}       = $gettitle->{'barcode'};
+    $getreserv{'itemtype'}      = $itemtypeinfo->{'description'};
+    $getreserv{'homebranch'}    = $gettitle->{'homebranch'};
+    $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
+    if ( $gettitle->{'homebranch'} ne $gettitle->{'holdingbranch'} ) {
+        $getreserv{'dotransfer'} = 1;
+    }
+    $getreserv{'itemcallnumber'}    = $gettitle->{'itemcallnumber'};
+    $getreserv{'borrowernum'}       = $getborrower->{'borrowernumber'};
+    $getreserv{'borrowername'}      = $getborrower->{'surname'};
+    $getreserv{'borrowerfirstname'} = $getborrower->{'firstname'};
+    if ( $getborrower->{'emailaddress'} ) {
+        $getreserv{'borrowermail'} = $getborrower->{'emailaddress'};
+    }
+    $getreserv{'borrowerphone'} = $getborrower->{'phone'};
+    push( @reservloop, \%getreserv );
 }
 
-       $template->param( reserveloop       => \@reservloop,
-                       show_date       => format_date($todaysdate),    
-                        );
-       
-output_html_with_http_headers $input, $cookie, $template->output;
\ No newline at end of file
+$template->param(
+    reserveloop => \@reservloop,
+    show_date   => format_date($todaysdate),
+);
+
+output_html_with_http_headers $input, $cookie, $template->output;