#1455 (placing reserve from OPAC)
[koha_fer] / reserve / request.pl
index 1beb70c..d372175 100755 (executable)
@@ -32,9 +32,8 @@ use CGI;
 use List::MoreUtils qw/uniq/;
 use Date::Calc qw/Today Date_to_Days/;
 use C4::Output;
-use C4::Interface::CGI::Output;
 use C4::Auth;
-use C4::Reserves2;
+use C4::Reserves;
 use C4::Biblio;
 use C4::Koha;
 use C4::Circulation;
@@ -69,7 +68,7 @@ my $date = sprintf( '%04d-%02d-%02d', Today() );
 
 if ($findborrower) {
     my ( $count, $borrowers ) =
-      BornameSearch($findborrower, 'cardnumber', 'web' );
+      SearchMember($findborrower, 'cardnumber', 'web' );
 
     my @borrowers = @$borrowers;
 
@@ -98,18 +97,22 @@ if ($cardnumber) {
 # FIXME At this time we have a simple count of reservs, but, later, we could improve the infos "title" ...
 
     my $number_reserves =
-      CountReservesFromBorrower( $borrowerinfo->{'borrowernumber'} );
+      GetReserveCount( $borrowerinfo->{'borrowernumber'} );
 
     if ( $number_reserves > C4::Context->preference('maxreserves') ) {
         $maxreserves = 1;
     }
 
-    # we check the date expiricy of the borrower
-    my $warning = (Date_to_Days(split /-/,$date) > Date_to_Days( split /-/,$borrowerinfo->{'dateexpiry'}));
-     
-    if ( $warning > 0 ) {
+    # we check the date expiricy of the borrower (only if there is an expiry date, otherwise, set to 1 (warn)
+    if ($borrowerinfo->{'dateexpiry'} ne '0000-00-00') {
+        my $warning = (Date_to_Days(split /-/,$date) > Date_to_Days( split /-/,$borrowerinfo->{'dateexpiry'}));
+        if ( $warning > 0 ) {
+            $expiry = 1;
+        }
+    } else {
         $expiry = 1;
     }
+     
 
     # check if the borrower make the reserv in a different branch
     if ( $borrowerinfo->{'branchcode'} ne C4::Context->userenv->{'branch'} ) {
@@ -117,12 +120,19 @@ if ($cardnumber) {
     }
 
     $template->param(
-        borrowersurname   => $borrowerinfo->{'surname'},
-        borrowerfirstname => $borrowerinfo->{'firstname'},
-        borrowerreservs   => $count_reserv,
-        maxreserves       => $maxreserves,
-        expiry            => $expiry,
-        diffbranch        => $diffbranch
+                borrowernumber => $borrowerinfo->{'borrowernumber'},
+                borrowersurname   => $borrowerinfo->{'surname'},
+                borrowerfirstname => $borrowerinfo->{'firstname'},
+                borrowerstreetaddress => $borrowerinfo->{'address'},
+                borrowercity => $borrowerinfo->{'city'},
+                borrowerphone => $borrowerinfo->{'phone'},
+                borroweremail => $borrowerinfo->{'email'},
+                borroweremailpro => $borrowerinfo->{'emailpro'},
+                borrowercategory => $borrowerinfo->{'category'},
+                borrowerreservs   => $count_reserv,
+                maxreserves       => $maxreserves,
+                expiry            => $expiry,
+                diffbranch        => $diffbranch
     );
 }
 
@@ -161,7 +171,7 @@ if ($borrowerslist) {
 }
 
 # get existing reserves .....
-my ( $count, $reserves ) = FindReserves($biblionumber);
+my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber);
 my $totalcount = $count;
 my $alreadyreserved;
 
@@ -210,7 +220,7 @@ foreach my $itemnumber (@itemnumbers) {
     push( @{ $itemnumbers_of_biblioitem{$biblioitemnumber} }, $itemnumber );
 }
 
-@branchcodes = uniq @branchcodes;
+@branchcodes = uniq @branchcodes;
 
 my @biblioitemnumbers = keys %itemnumbers_of_biblioitem;
 
@@ -260,7 +270,7 @@ foreach my $biblioitemnumber (@biblioitemnumbers) {
         }
 
         # checking reserve
-        my ($reservedate,$reservedfor,$expectedAt) = GetFirstReserveDateFromItem($itemnumber);
+        my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber);
         my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
 
         if ( defined $reservedate ) {
@@ -327,7 +337,7 @@ foreach my $biblioitemnumber (@biblioitemnumbers) {
 # existingreserves building
 my @reserveloop;
 my $branches = GetBranches();
-my ( $count, $reserves ) = FindReservesInQueue($biblionumber);
+my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber);
 foreach my $res ( sort { $a->{found} cmp $b->{found} } @$reserves ) {
     my %reserve;
     my @optionloop;
@@ -351,7 +361,7 @@ foreach my $res ( sort { $a->{found} cmp $b->{found} } @$reserves ) {
 
     if ( ( $res->{'found'} eq 'W' ) or ( $res->{'priority'} eq '0' ) ) {
         my $item = $res->{'itemnumber'};
-        $item = getiteminformation($item,undef);
+        $item = GetBiblioFromItemNumber($item,undef);
         $reserve{'wait'}= 1; 
         $reserve{'holdingbranch'}=$item->{'holdingbranch'};
         $reserve{'biblionumber'}=$item->{'biblionumber'};
@@ -362,6 +372,8 @@ foreach my $res ( sort { $a->{found} cmp $b->{found} } @$reserves ) {
         if($reserve{'holdingbranch'} eq $reserve{'wbrcode'}){
             $reserve{'atdestination'} = 1;
         }
+        # set found to 1 if reserve is waiting for patron pickup
+        $reserve{'found'} = 1 if $res->{'found'} eq 'W';
     }
     
 #     get borrowers reserve info
@@ -398,6 +410,7 @@ foreach my $branchcode ( keys %{$branches} ) {
 }
 my $CGIbranch = CGI::scrolling_list(
     -name     => 'pickup',
+       -id          => 'pickup',
     -values   => \@values,
     -default  => $default,
     -labels   => \%label_of,