BIG COMMIT : cleaning of Reserves.pm. See detail on koha-devel
authortipaul <tipaul>
Tue, 24 Apr 2007 16:10:36 +0000 (16:10 +0000)
committertipaul <tipaul>
Tue, 24 Apr 2007 16:10:36 +0000 (16:10 +0000)
15 files changed:
C4/Circulation.pm
C4/Members.pm
C4/Reserves.pm
circ/branchtransfers.pl
circ/circulation.pl
circ/returns.pl
circ/transferstoreceive.pl
circ/waitingreserves.pl
members/moremember.pl
opac/opac-reserve.pl
opac/opac-user.pl
reserve/modrequest.pl
reserve/placerequest.pl
reserve/request.pl
serials/routing-preview.pl

index 3c0e716..3a3f998 100755 (executable)
@@ -911,7 +911,7 @@ if ($borrower and $barcode){
             if ( $resbor eq $borrower->{'borrowernumber'} ) {
 
                 # The item is reserved by the current patron
             if ( $resbor eq $borrower->{'borrowernumber'} ) {
 
                 # The item is reserved by the current patron
-                FillReserve($res);
+                ModReserveFill($res);
             }
             elsif ( $restype eq "Waiting" ) {
 
             }
             elsif ( $restype eq "Waiting" ) {
 
@@ -929,7 +929,7 @@ if ($borrower and $barcode){
                 else {
 
        # set waiting reserve to first in reserve queue as book isn't waiting now
                 else {
 
        # set waiting reserve to first in reserve queue as book isn't waiting now
-                    UpdateReserve(
+                    ModReserve(
                         1,
                         $res->{'biblionumber'},
                         $res->{'borrowernumber'},
                         1,
                         $res->{'biblionumber'},
                         $res->{'borrowernumber'},
@@ -1235,7 +1235,7 @@ sub AddReturn {
                     $sth->execute( $iteminformation->{'itemnumber'} );
                     $sth->finish;
     #         now we check if there is a reservation with the validate of transfer if we have one, we can         set it with the status 'W'
                     $sth->execute( $iteminformation->{'itemnumber'} );
                     $sth->finish;
     #         now we check if there is a reservation with the validate of transfer if we have one, we can         set it with the status 'W'
-            SetWaitingStatus( $iteminformation->{'itemnumber'} );
+            ModReserveStatus( $iteminformation->{'itemnumber'},'W' );
             }
         else {
             $messages->{'WrongTransfer'} = $tobranch;
             }
         else {
             $messages->{'WrongTransfer'} = $tobranch;
index 4f40b08..703a6ac 100644 (file)
@@ -442,13 +442,13 @@ sub patronflags {
         }
         $flags{'ODUES'} = \%flaginfo;
     }
         }
         $flags{'ODUES'} = \%flaginfo;
     }
-    my $itemswaiting =
-      GetWaitingReserves( $patroninformation->{'borrowernumber'} );
-    my $nowaiting = scalar @$itemswaiting;
+    my @itemswaiting =
+      GetReservesFromBorrowernumber( $patroninformation->{'borrowernumber'},'W' );
+    my $nowaiting = scalar @itemswaiting;
     if ( $nowaiting > 0 ) {
         my %flaginfo;
         $flaginfo{'message'}  = "Reserved items available";
     if ( $nowaiting > 0 ) {
         my %flaginfo;
         $flaginfo{'message'}  = "Reserved items available";
-        $flaginfo{'itemlist'} = $itemswaiting;
+        $flaginfo{'itemlist'} = \@itemswaiting;
         $flags{'WAITING'}     = \%flaginfo;
     }
     return ( \%flags );
         $flags{'WAITING'}     = \%flaginfo;
     }
     return ( \%flags );
index aab6bc8..10cb366 100755 (executable)
@@ -56,273 +56,126 @@ this modules provides somes functions to deal with reservations.
 @ISA = qw(Exporter);
 
 @EXPORT = qw(
 @ISA = qw(Exporter);
 
 @EXPORT = qw(
-  &FindReserves
-  &CheckReserves
-  &GetWaitingReserves
-  &CancelReserve
-  &CalcReserveFee
-  &FillReserve
-  &ReserveWaiting
-  &CreateReserve
-  &UpdateReserve
-  &GetReserveTitle
-  &GetReservations
-  &SetWaitingStatus
-  &GlobalCancel
-  &MinusPriority
-  &OtherReserves
-  &GetFirstReserveDateFromItem
-  &CountReservesFromBorrower
-  &FixPriority
-  &FindReservesInQueue
+  &AddReserve
+  
+  &GetReservesFromItemnumber
+  &GetReservesFromBiblionumber
+  &GetReservesFromBorrowernumber
   GetReservesForBranch
   GetReservesToBranch
   GetReservesForBranch
   GetReservesToBranch
-);
-
-# make all your functions, whether exported or not;
-
-=item GlobalCancel
-
-($messages,$nextreservinfo) = &GlobalCancel($itemnumber,$borrowernumber);
-
-    New op dev for the circulation based on item, global is a function to cancel reserv,check other reserves, and transfer document if it's necessary
-
-=cut
-
-sub GlobalCancel {
-    my $messages;
-    my $nextreservinfo;
-    my ( $itemnumber, $borrowernumber ) = @_;
-
-    #step 1 : cancel the reservation
-    my $CancelReserve = CancelReserve( undef, $itemnumber, $borrowernumber );
-
-    #step 2 launch the subroutine of the others reserves
-    ( $messages, $nextreservinfo ) = OtherReserves($itemnumber);
+  &GetReserveCount
+  &GetReserveFee
+  GetReservesForBranch
+  GetReservesToBranch
+  &GetOtherReserves
+  
+  &ModReserveFill
+  &ModReserveAffect
+  &ModReserve
+  &ModReserveStatus
+  &ModReserveCancelAll
+  &ModReserveMinusPriority
 
 
-    return ( $messages, $nextreservinfo );
-}
+  &CheckReserves
+  &CancelReserve
+);
 
 
-=item OtherReserves
 
 
-($messages,$nextreservinfo)=$OtherReserves(itemnumber);
+=item AddReserve
 
 
-Check queued list of this document and check if this document must be  transfered
+AddReserve($branch,$borrowernumber,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)
 
 =cut
 
 
 =cut
 
-#'
-sub OtherReserves {
-    my ($itemnumber) = @_;
-    my $messages;
-    my $nextreservinfo;
-    my ( $restype, $checkreserves ) = CheckReserves($itemnumber);
-    if ($checkreserves) {
-        my $iteminfo = GetItem($itemnumber);
-        if ( $iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'} ) {
-            $messages->{'transfert'} = $checkreserves->{'branchcode'};
-            #minus priorities of others reservs
-            MinusPriority(
-                $itemnumber,
-                $checkreserves->{'borrowernumber'},
-                $iteminfo->{'biblionumber'}
-            );
-
-            #launch the subroutine dotransfer
-            C4::Circulation::ModItemTransfer(
-                $itemnumber,
-                $iteminfo->{'holdingbranch'},
-                $checkreserves->{'branchcode'}
-              ),
-              ;
-        }
-
-     #step 2b : case of a reservation on the same branch, set the waiting status
-        else {
-            $messages->{'waiting'} = 1;
-            MinusPriority(
-                $itemnumber,
-                $checkreserves->{'borrowernumber'},
-                $iteminfo->{'biblionumber'}
-            );
-            SetWaitingStatus($itemnumber);
-        }
+sub AddReserve {
+    my (
+        $branch,    $borrowernumber, $biblionumber,
+        $constraint, $bibitems,  $priority,       $notes,
+        $title,      $checkitem, $found
+    ) = @_;
+    my $fee =
+          GetReserveFee($borrowernumber, $biblionumber, $constraint,
+            $bibitems );
+    my $dbh     = C4::Context->dbh;
+    my $const   = lc substr( $constraint, 0, 1 );
+    my @datearr = localtime(time);
+    my $resdate =
+      ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3];
+    my $waitingdate;
 
 
-        $nextreservinfo = $checkreserves->{'borrowernumber'};
+    # If the reserv had the waiting status, we had the value of the resdate
+    if ( $found eq 'W' ) {
+        $waitingdate = $resdate;
     }
 
     }
 
-    return ( $messages, $nextreservinfo );
-}
-
-=item MinusPriority
-
-&MinusPriority($itemnumber,$borrowernumber,$biblionumber)
-
-Reduce the values of queuded list     
-
-=cut
-
-#'
-sub MinusPriority {
-    my ( $itemnumber, $borrowernumber, $biblionumber ) = @_;
-
-    #first step update the value of the first person on reserv
-    my $dbh   = C4::Context->dbh;
-    my $query = "
-        UPDATE reserves
-        SET    priority = 0 , itemnumber = ? 
-        WHERE  cancellationdate IS NULL 
-          AND  borrowernumber=?
-          AND  biblionumber=?
-    ";
-    my $sth_upd = $dbh->prepare($query);
-    $sth_upd->execute( $itemnumber, $borrowernumber, $biblionumber );
-    $sth_upd->finish;
-    # second step update all others reservs
-    $query = "
-        SELECT priority,borrowernumber,biblionumber,reservedate
-        FROM   reserves
-        WHERE  priority !='0'
-       AND biblionumber = ?
-          AND  cancellationdate IS NULL
-    ";
-    my $sth_oth = $dbh->prepare($query);
-    $sth_oth->execute($biblionumber);
-    while ( my ( $priority, $borrowernumber, $biblionumber, $reservedate ) =
-        $sth_oth->fetchrow_array )
-    {
-        $priority--;
-        $query = "
-             UPDATE reserves
-             SET    priority = ?
-             WHERE  biblionumber = ?
-               AND  borrowernumber   = ?
-               AND  reservedate      = ?
-        ";
-        my $sth_upd_oth = $dbh->prepare($query);
-        $sth_upd_oth->execute( $priority, $biblionumber, $borrowernumber,
-            $reservedate );
-        $sth_upd_oth->finish;
+    #eval {
+    # updates take place here
+    if ( $fee > 0 ) {
+        my $nextacctno = &getnextacctno( $borrowernumber );
+        my $query      = qq/
+        INSERT INTO accountlines
+            (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding)
+        VALUES
+            (?,?,now(),?,?,'Res',?)
+    /;
+        my $usth = $dbh->prepare($query);
+        $usth->execute( $borrowernumber, $nextacctno, $fee,
+            "Reserve Charge - $title", $fee );
+        $usth->finish;
     }
     }
-    $sth_oth->finish;
-}
-
-=item SetWaitingStatus
-
-&SetWaitingStatus($itemnumber);
-
-we check if we have a reserves with itemnumber (New op system of reserves), if we found one, we update the status of the reservation when we have : 'priority' = 0, and we have an itemnumber 
-
-=cut
-
-sub SetWaitingStatus {
-
-    #first : check if we have a reservation for this item .
-    my ($itemnumber) = @_;
-    my $dbh          = C4::Context->dbh;
-    my $query        = "
-        SELECT priority,borrowernumber
-        FROM   reserves
-        WHERE  itemnumber=?
-           AND cancellationdate IS NULL
-           AND found IS NULL AND priority='0'
-    ";
-    my $sth_find = $dbh->prepare($query);
-    $sth_find->execute($itemnumber);
-    my ( $priority, $borrowernumber ) = $sth_find->fetchrow_array;
-    $sth_find->finish;
-    return unless $borrowernumber;
-
-# step 2 : if we have a borrowernumber, we update the value found to 'W' to notify the borrower
-    $query = "
-    UPDATE reserves
-    SET    found='W',waitingdate = now()
-    WHERE  borrowernumber=?
-      AND itemnumber=?
-      AND found IS NULL
-    ";
-    my $sth_set = $dbh->prepare($query);
-    $sth_set->execute( $borrowernumber, $itemnumber );
-    $sth_set->finish;
-}
 
 
-=item GetReservations
-
-@borrowerreserv=&GetReservations($itemnumber,$borrowernumber);
-
-this function get the list of reservation for an C<$itemnumber> or C<$borrowernumber>
-given on input arg. You should give $itemnumber OR $borrowernumber but not both.
-
-=cut
-
-sub GetReservations {
-    my ( $itemnumber, $borrowernumber ) = @_;
-    if ($itemnumber) {
-        my $dbh   = C4::Context->dbh;
-        my $query = "
-            SELECT reservedate,borrowernumber
-            FROM   reserves
-            WHERE  itemnumber=?
-              AND  cancellationdate IS NULL
-              AND  (found <> 'F' OR found IS NULL)
-        ";
-        my $sth_res = $dbh->prepare($query);
-        $sth_res->execute($itemnumber);
-        my ( $reservedate, $borrowernumber ) = $sth_res->fetchrow_array;
-        return ( $reservedate, $borrowernumber );
-    }
-    if ($borrowernumber) {
-        my $dbh   = C4::Context->dbh;
-        my $query = "
-            SELECT *
-            FROM   reserves
-            WHERE  borrowernumber=?
-              AND  cancellationdate IS NULL
-              AND (found != 'F' or found is null)
-            ORDER BY reservedate
-        ";
+    #if ($const eq 'a'){
+    my $query = qq/
+        INSERT INTO reserves
+            (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,
+            priority,reservenotes,itemnumber,found,waitingdate)
+        VALUES
+             (?,?,?,?,?,
+             ?,?,?,?,?)
+    /;
+    my $sth = $dbh->prepare($query);
+    $sth->execute(
+        $borrowernumber, $biblionumber, $resdate, $branch,
+        $const,          $priority,     $notes,   $checkitem,
+        $found,          $waitingdate
+    );
+    $sth->finish;
 
 
-        my $sth_find = $dbh->prepare($query);
-        $sth_find->execute($borrowernumber);
-        my @borrowerreserv;
-        while ( my $data = $sth_find->fetchrow_hashref ) {
-            push @borrowerreserv, $data;
+    #}
+    if ( ( $const eq "o" ) || ( $const eq "e" ) ) {
+        my $numitems = @$bibitems;
+        my $i        = 0;
+        while ( $i < $numitems ) {
+            my $biblioitem = @$bibitems[$i];
+            my $query      = qq/
+          INSERT INTO reserveconstraints
+              (borrowernumber,biblionumber,reservedate,biblioitemnumber)
+          VALUES
+            (?,?,?,?)
+      /;
+            my $sth = $dbh->prepare("");
+            $sth->execute( $borrowernumber, $biblionumber, $resdate,
+                $biblioitem );
+            $sth->finish;
+            $i++;
         }
         }
-        return @borrowerreserv;
     }
     }
+    return;
 }
 
 }
 
-=item FindReserves
-
-  $results = &FindReserves($biblionumber, $borrowernumber);
-
-Looks books up in the reserves. C<$biblionumber> is the biblionumber
-of the book to look up. C<$borrowernumber> is the borrower number of a
-patron whose books to look up.
+=item GetReservesFromBiblionumber
 
 
-Either C<$biblionumber> or C<$borrowernumber> may be the empty string,
-but not both. If both are specified, C<&FindReserves> looks up the
-given book for the given patron. If only C<$biblionumber> is
-specified, C<&FindReserves> looks up that book for all patrons. If
-only C<$borrowernumber> is specified, C<&FindReserves> looks up all of
-that patron's reserves. If neither is specified, C<&FindReserves>
-barfs.
+@borrowerreserv=&GetReserves($biblionumber,$itemnumber,$borrowernumber);
 
 
-For each book thus found, C<&FindReserves> checks the reserve
-constraints and does something I don't understand.
-
-C<&FindReserves> returns a two-element array:
-
-C<$results> is a reference to an array of references of hashes. Each hash
-has for keys a list of column from reserves table (see details in function).
+this function get the list of reservation for an C<$biblionumber>, C<$itemnumber> or C<$borrowernumber>
+given on input arg. 
+Only 1 argument has to be passed.
 
 =cut
 
 
 =cut
 
-#'
-sub FindReserves {
-    my ( $biblionumber, $bor ) = @_;
-    my $dbh = C4::Context->dbh;
-    my @bind;
+sub GetReservesFromBiblionumber {
+    my ( $biblionumber, $itemnumber, $borrowernumber ) = @_;
+    my $dbh   = C4::Context->dbh;
 
     # Find the desired items in the reserves
     my $query = "
 
     # Find the desired items in the reserves
     my $query = "
@@ -335,30 +188,13 @@ sub FindReserves {
                 constrainttype,
                 found,
                 itemnumber
                 constrainttype,
                 found,
                 itemnumber
-          FROM     reserves
-          WHERE     cancellationdate IS NULL
-          AND    (found <> \'F\' OR found IS NULL)
-    ";
-
-    if ( $biblionumber ne '' ) {
-        $query .= '
-            AND biblionumber = ?
-        ';
-        push @bind, $biblionumber;
-    }
-
-    if ( $bor ne '' ) {
-        $query .= '
-            AND borrowernumber = ?
-        ';
-        push @bind, $bor;
-    }
-
-    $query .= '
-          ORDER BY priority
-    ';
+        FROM     reserves
+        WHERE     cancellationdate IS NULL
+        AND    (found <> \'F\' OR found IS NULL)
+        AND biblionumber = ?
+        ORDER BY priority";
     my $sth = $dbh->prepare($query);
     my $sth = $dbh->prepare($query);
-    $sth->execute(@bind);
+    $sth->execute($biblionumber);
     my @results;
     my $i = 0;
     while ( my $data = $sth->fetchrow_hashref ) {
     my @results;
     my $i = 0;
     while ( my $data = $sth->fetchrow_hashref ) {
@@ -370,7 +206,7 @@ sub FindReserves {
                 FROM reserveconstraints
                 WHERE biblionumber   = ?
                     AND borrowernumber = ?
                 FROM reserveconstraints
                 WHERE biblionumber   = ?
                     AND borrowernumber = ?
-                  AND reservedate    = ?
+                AND reservedate    = ?
             ';
             my $csth = $dbh->prepare($query);
             $csth->execute( $data->{biblionumber}, $data->{borrowernumber},
             ';
             my $csth = $dbh->prepare($query);
             $csth->execute( $data->{biblionumber}, $data->{borrowernumber},
@@ -406,21 +242,67 @@ sub FindReserves {
         push @results, $data;
     }
     $sth->finish;
         push @results, $data;
     }
     $sth->finish;
-
     return ( $#results + 1, \@results );
 }
 
     return ( $#results + 1, \@results );
 }
 
+sub GetReservesFromItemnumber {
+    my ( $itemnumber ) = @_;
+    my $dbh   = C4::Context->dbh;
+    my $query = "
+    SELECT reservedate,borrowernumber,branchcode
+    FROM   reserves
+    WHERE  itemnumber=?
+        AND  cancellationdate IS NULL
+        AND  (found <> 'F' OR found IS NULL)
+    ";
+    my $sth_res = $dbh->prepare($query);
+    $sth_res->execute($itemnumber);
+    my ( $reservedate, $borrowernumber,$branchcode ) = $sth_res->fetchrow_array;
+    return ( $reservedate, $borrowernumber, $branchcode );
+}
+
+sub GetReservesFromBorrowernumber {
+    my ( $borrowernumber, $status ) = @_;
+    my $dbh   = C4::Context->dbh;
+    my $sth;
+    if ($status) {
+        $sth = $dbh->prepare("
+            SELECT *
+            FROM   reserves
+            WHERE  borrowernumber=?
+                AND  cancellationdate IS NULL
+                AND found =?
+            ORDER BY reservedate
+        ");
+        $sth->execute($borrowernumber,$status);
+    } else {
+        $sth = $dbh->prepare("
+            SELECT *
+            FROM   reserves
+            WHERE  borrowernumber=?
+                AND  cancellationdate IS NULL
+                AND (found != 'F' or found is null)
+            ORDER BY reservedate
+        ");
+        $sth->execute($borrowernumber);
+    }
+    my @borrowerreserv;
+    while ( my $data = $sth->fetchrow_hashref ) {
+        push @borrowerreserv, $data;
+    }
+    return @borrowerreserv;
+}
 #-------------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------------
 
-=item CountReservesFromBorrower
+=item GetReserveCount
 
 
-$number = &CountReservesFromBorrower($borrowernumber);
+$number = &GetReserveCount($borrowernumber);
 
 this function returns the number of reservation for a borrower given on input arg.
 
 =cut
 
 
 this function returns the number of reservation for a borrower given on input arg.
 
 =cut
 
-sub CountReservesFromBorrower {
+sub GetReserveCount {
     my ($borrowernumber) = @_;
 
     my $dbh = C4::Context->dbh;
     my ($borrowernumber) = @_;
 
     my $dbh = C4::Context->dbh;
@@ -440,51 +322,219 @@ sub CountReservesFromBorrower {
     return $row->{counter};
 }
 
     return $row->{counter};
 }
 
-#-------------------------------------------------------------------------------------
-
-=item GetFirstReserveDateFromItem
+=item GetOtherReserves
 
 
-$date = GetFirstReserveDateFromItem($itemnumber)
+($messages,$nextreservinfo)=$GetOtherReserves(itemnumber);
 
 
-this function returns the first date a item has been reserved.
+Check queued list of this document and check if this document must be  transfered
 
 =cut
 
 
 =cut
 
-sub GetFirstReserveDateFromItem {
+sub GetOtherReserves {
     my ($itemnumber) = @_;
     my ($itemnumber) = @_;
+    my $messages;
+    my $nextreservinfo;
+    my ( $restype, $checkreserves ) = CheckReserves($itemnumber);
+    if ($checkreserves) {
+        my $iteminfo = GetItem($itemnumber);
+        if ( $iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'} ) {
+            $messages->{'transfert'} = $checkreserves->{'branchcode'};
+            #minus priorities of others reservs
+            ModReserveMinusPriority(
+                $itemnumber,
+                $checkreserves->{'borrowernumber'},
+                $iteminfo->{'biblionumber'}
+            );
 
 
-    my $dbh = C4::Context->dbh;
-
-    my $query = '
-        SELECT reservedate,
-        borrowernumber,
-        branchcode
-        FROM   reserves
-        WHERE  itemnumber = ?
-          AND  cancellationdate IS NULL
-          AND (found != \'F\' OR found IS NULL)
-    ';
-    my $sth = $dbh->prepare($query);
-    $sth->execute($itemnumber);
-    my $row = $sth->fetchrow_hashref;
-
-    return ($row->{reservedate},$row->{borrowernumber},$row->{branchcode});
-}
+            #launch the subroutine dotransfer
+            C4::Circulation::ModItemTransfer(
+                $itemnumber,
+                $iteminfo->{'holdingbranch'},
+                $checkreserves->{'branchcode'}
+              ),
+              ;
+        }
 
 
-#-------------------------------------------------------------------------------------
+     #step 2b : case of a reservation on the same branch, set the waiting status
+        else {
+            $messages->{'waiting'} = 1;
+            ModReserveMinusPriority(
+                $itemnumber,
+                $checkreserves->{'borrowernumber'},
+                $iteminfo->{'biblionumber'}
+            );
+            ModReserveStatus($itemnumber,'W');
+        }
+
+        $nextreservinfo = $checkreserves->{'borrowernumber'};
+    }
+
+    return ( $messages, $nextreservinfo );
+}
+
+sub GetReserveFee {
+    my ($borrowernumber, $biblionumber, $constraint, $bibitems ) = @_;
+
+    #check for issues;
+    my $dbh   = C4::Context->dbh;
+    my $const = lc substr( $constraint, 0, 1 );
+    my $query = qq/
+      SELECT * FROM borrowers,categories
+    WHERE borrowernumber = ?
+      AND borrowers.categorycode = categories.categorycode
+    /;
+    my $sth = $dbh->prepare($query);
+    $sth->execute($borrowernumber);
+    my $data = $sth->fetchrow_hashref;
+    $sth->finish();
+    my $fee      = $data->{'reservefee'};
+    my $cntitems = @- > $bibitems;
+
+    if ( $fee > 0 ) {
+
+        # check for items on issue
+        # first find biblioitem records
+        my @biblioitems;
+        my $sth1 = $dbh->prepare(
+            "SELECT * FROM biblio,biblioitems
+                   WHERE (biblio.biblionumber = ?)
+                     AND (biblio.biblionumber = biblioitems.biblionumber)"
+        );
+        $sth1->execute($biblionumber);
+        while ( my $data1 = $sth1->fetchrow_hashref ) {
+            if ( $const eq "a" ) {
+                push @biblioitems, $data1;
+            }
+            else {
+                my $found = 0;
+                my $x     = 0;
+                while ( $x < $cntitems ) {
+                    if ( @$bibitems->{'biblioitemnumber'} ==
+                        $data->{'biblioitemnumber'} )
+                    {
+                        $found = 1;
+                    }
+                    $x++;
+                }
+                if ( $const eq 'o' ) {
+                    if ( $found == 1 ) {
+                        push @biblioitems, $data1;
+                    }
+                }
+                else {
+                    if ( $found == 0 ) {
+                        push @biblioitems, $data1;
+                    }
+                }
+            }
+        }
+        $sth1->finish;
+        my $cntitemsfound = @biblioitems;
+        my $issues        = 0;
+        my $x             = 0;
+        my $allissued     = 1;
+        while ( $x < $cntitemsfound ) {
+            my $bitdata = $biblioitems[$x];
+            my $sth2    = $dbh->prepare(
+                "SELECT * FROM items
+                     WHERE biblioitemnumber = ?"
+            );
+            $sth2->execute( $bitdata->{'biblioitemnumber'} );
+            while ( my $itdata = $sth2->fetchrow_hashref ) {
+                my $sth3 = $dbh->prepare(
+                    "SELECT * FROM issues
+                       WHERE itemnumber = ?
+                         AND returndate IS NULL"
+                );
+                $sth3->execute( $itdata->{'itemnumber'} );
+                if ( my $isdata = $sth3->fetchrow_hashref ) {
+                }
+                else {
+                    $allissued = 0;
+                }
+            }
+            $x++;
+        }
+        if ( $allissued == 0 ) {
+            my $rsth =
+              $dbh->prepare("SELECT * FROM reserves WHERE biblionumber = ?");
+            $rsth->execute($biblionumber);
+            if ( my $rdata = $rsth->fetchrow_hashref ) {
+            }
+            else {
+                $fee = 0;
+            }
+        }
+    }
+
+    #  print "fee $fee";
+    return $fee;
+}
+
+=head2 GetReservesToBranch
+
+@transreserv = GetReservesToBranch( $frombranch );
+
+Get reserve list for a given branch
+
+=cut
+
+sub GetReservesToBranch {
+    my ( $frombranch ) = @_;
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare(
+        "SELECT borrowernumber,reservedate,itemnumber,timestamp
+         FROM reserves 
+         WHERE priority='0' AND cancellationdate is null  
+           AND branchcode=?
+           AND found IS NULL "
+    );
+    $sth->execute( $frombranch );
+    my @transreserv;
+    my $i = 0;
+    while ( my $data = $sth->fetchrow_hashref ) {
+        $transreserv[$i] = $data;
+        $i++;
+    }
+    $sth->finish;
+    return (@transreserv);
+}
+
+=head2 GetReservesForBranch
+
+@transreserv = GetReservesForBranch($frombranch);
+
+=cut
+
+sub GetReservesForBranch {
+    my ($frombranch) = @_;
+    my $dbh          = C4::Context->dbh;
+    my $sth          = $dbh->prepare( "
+        SELECT borrowernumber,reservedate,itemnumber,waitingdate
+        FROM   reserves 
+        WHERE   priority='0'
+            AND cancellationdate IS NULL 
+            AND found='W' 
+            AND branchcode=?
+        ORDER BY waitingdate" );
+    $sth->execute($frombranch);
+    my @transreserv;
+    my $i = 0;
+    while ( my $data = $sth->fetchrow_hashref ) {
+        $transreserv[$i] = $data;
+        $i++;
+    }
+    $sth->finish;
+    return (@transreserv);
+}
 
 =item CheckReserves
 
 
 =item CheckReserves
 
-  ($status, $reserve) = &CheckReserves($itemnumber, $barcode);
+  ($status, $reserve) = &CheckReserves($itemnumber);
 
 Find a book in the reserves.
 
 
 Find a book in the reserves.
 
-C<$itemnumber> is the book's item number. C<$barcode> is its barcode.
-Either one, but not both, may be false. If both are specified,
-C<&CheckReserves> uses C<$itemnumber>.
-
-$itemnubmer can be false, in which case uses the barcode. (Never uses
-both. $itemnumber gets priority).
+C<$itemnumber> is the book's item number.
 
 As I understand it, C<&CheckReserves> looks for the given item in the
 reserves. If it is found, that's a match, and C<$status> is set to
 
 As I understand it, C<&CheckReserves> looks for the given item in the
 reserves. If it is found, that's a match, and C<$status> is set to
@@ -504,7 +554,6 @@ table in the Koha database.
 
 =cut
 
 
 =cut
 
-#'
 sub CheckReserves {
     my ( $item, $barcode ) = @_;
     my $dbh = C4::Context->dbh;
 sub CheckReserves {
     my ( $item, $barcode ) = @_;
     my $dbh = C4::Context->dbh;
@@ -544,11 +593,11 @@ sub CheckReserves {
 
     # get the reserves...
     # Find this item in the reserves
 
     # get the reserves...
     # Find this item in the reserves
-    my @reserves = Findgroupreserve( $bibitem, $biblio );
+    my @reserves = _Findgroupreserve( $bibitem, $biblio );
     my $count    = scalar @reserves;
 
     # $priority and $highest are used to find the most important item
     my $count    = scalar @reserves;
 
     # $priority and $highest are used to find the most important item
-    # in the list returned by &Findgroupreserve. (The lower $priority,
+    # in the list returned by &_Findgroupreserve. (The lower $priority,
     # the more important the item.)
     # $highest is the most important item we've seen so far.
     my $priority = 10000000;
     # the more important the item.)
     # $highest is the most important item we've seen so far.
     my $priority = 10000000;
@@ -585,8 +634,6 @@ sub CheckReserves {
     }
 }
 
     }
 }
 
-#-------------------------------------------------------------------------------------
-
 =item CancelReserve
 
   &CancelReserve($biblionumber, $itemnumber, $borrowernumber);
 =item CancelReserve
 
   &CancelReserve($biblionumber, $itemnumber, $borrowernumber);
@@ -605,7 +652,6 @@ priorities of the other people who are waiting on the book.
 
 =cut
 
 
 =cut
 
-#'
 sub CancelReserve {
     my ( $biblio, $item, $borr ) = @_;
     my $dbh = C4::Context->dbh;
 sub CancelReserve {
     my ( $biblio, $item, $borr ) = @_;
     my $dbh = C4::Context->dbh;
@@ -657,15 +703,54 @@ sub CancelReserve {
         $sth->finish;
 
         # now fix the priority on the others....
         $sth->finish;
 
         # now fix the priority on the others....
-        FixPriority( $priority, $biblio );
+        _FixPriority( $priority, $biblio );
     }
 }
 
     }
 }
 
-#-------------------------------------------------------------------------------------
+=item ModReserve
+
+&ModReserve($rank,$biblio,$borrower,$branch)
+
+=cut
+
+sub ModReserve {
+    #subroutine to update a reserve
+    my ( $rank, $biblio, $borrower, $branch , $itemnumber) = @_;
+     return if $rank eq "W";
+     return if $rank eq "n";
+    my $dbh = C4::Context->dbh;
+    if ( $rank eq "del" ) {
+        my $query = qq/
+            UPDATE reserves
+            SET    cancellationdate=now()
+            WHERE  biblionumber   = ?
+             AND   borrowernumber = ?
+             AND   cancellationdate is NULL
+             AND   (found <> 'F' or found is NULL)
+        /;
+        my $sth = $dbh->prepare($query);
+        $sth->execute( $biblio, $borrower );
+        $sth->finish;
+        
+    }
+    else {
+        my $query = qq/
+        UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL
+            WHERE biblionumber   = ?
+             AND borrowernumber = ?
+             AND cancellationdate is NULL
+             AND (found <> 'F' or found is NULL)
+        /;
+        my $sth = $dbh->prepare($query);
+        $sth->execute( $rank, $branch,$itemnumber, $biblio, $borrower);
+        $sth->finish;
+        _FixPriority( $biblio, $borrower, $rank);
+    }
+}
 
 
-=item FillReserve
+=item ModReserveFill
 
 
-  &FillReserve($reserve);
+  &ModReserveFill($reserve);
 
 Fill a reserve. If I understand this correctly, this means that the
 reserved book has been found and given to the patron who reserved it.
 
 Fill a reserve. If I understand this correctly, this means that the
 reserved book has been found and given to the patron who reserved it.
@@ -675,13 +760,12 @@ whose keys are fields from the reserves table in the Koha database.
 
 =cut
 
 
 =cut
 
-#'
-sub FillReserve {
+sub ModReserveFill {
     my ($res) = @_;
     my $dbh = C4::Context->dbh;
     # fill in a reserve record....
     my ($res) = @_;
     my $dbh = C4::Context->dbh;
     # fill in a reserve record....
-    my $qbiblio = $res->{'biblionumber'};
-    my $borr    = $res->{'borrowernumber'};
+    my $biblionumber = $res->{'biblionumber'};
+    my $borrowernumber    = $res->{'borrowernumber'};
     my $resdate = $res->{'reservedate'};
 
     # get the priority on this record....
     my $resdate = $res->{'reservedate'};
 
     # get the priority on this record....
@@ -692,7 +776,7 @@ sub FillReserve {
                   AND   borrowernumber = ?
                   AND   reservedate    = ?";
     my $sth = $dbh->prepare($query);
                   AND   borrowernumber = ?
                   AND   reservedate    = ?";
     my $sth = $dbh->prepare($query);
-    $sth->execute( $qbiblio, $borr, $resdate );
+    $sth->execute( $biblionumber, $borrowernumber, $resdate );
     ($priority) = $sth->fetchrow_array;
     $sth->finish;
 
     ($priority) = $sth->fetchrow_array;
     $sth->finish;
 
@@ -705,212 +789,258 @@ sub FillReserve {
                     AND borrowernumber   = ?
                 ";
     $sth = $dbh->prepare($query);
                     AND borrowernumber   = ?
                 ";
     $sth = $dbh->prepare($query);
-    $sth->execute( $qbiblio, $resdate, $borr );
+    $sth->execute( $biblionumber, $resdate, $borrowernumber );
     $sth->finish;
 
     # now fix the priority on the others (if the priority wasn't
     # already sorted!)....
     unless ( $priority == 0 ) {
     $sth->finish;
 
     # now fix the priority on the others (if the priority wasn't
     # already sorted!)....
     unless ( $priority == 0 ) {
-        FixPriority( $priority, $qbiblio );
+        _FixPriority( $priority, $biblionumber );
     }
 }
 
     }
 }
 
-#-------------------------------------------------------------------------------------
+=item ModReserveStatus
 
 
-=item FixPriority
+&ModReserveStatus($itemnumber, $newstatus);
 
 
-&FixPriority($biblio,$borrowernumber,$rank);
+Update the reserve status for the active (priority=0) reserve.
 
 
- Only used internally (so don't export it)
- Changed how this functions works #
- Now just gets an array of reserves in the rank order and updates them with
- the array index (+1 as array starts from 0)
- and if $rank is supplied will splice item from the array and splice it back in again
- in new priority rank
+$itemnumber is the itemnumber the reserve is on
 
 
-=cut 
+$newstatus is the new status.
 
 
-sub FixPriority {
-    my ( $biblio, $borrowernumber, $rank ) = @_;
-    my $dbh = C4::Context->dbh;
-     if ( $rank eq "del" ) {
-         CancelReserve( $biblio, undef, $borrowernumber );
-     }
-    if ( $rank eq "W" || $rank eq "0" ) {
+=cut
 
 
-        # make sure priority for waiting items is 0
-        my $query = qq/
-            UPDATE reserves
-            SET    priority = 0
-            WHERE biblionumber = ?
-              AND borrowernumber = ?
-              AND cancellationdate IS NULL
-              AND found ='W'
-        /;
-        my $sth = $dbh->prepare($query);
-        $sth->execute( $biblio, $borrowernumber );
-    }
-    my @priority;
-    my @reservedates;
+sub ModReserveStatus {
 
 
-    # get whats left
-# FIXME adding a new security in returned elements for changing priority,
-# now, we don't care anymore any reservations with itemnumber linked (suppose a waiting reserve)
-    my $query = qq/
-        SELECT borrowernumber, reservedate, constrainttype
-        FROM   reserves
-        WHERE  biblionumber   = ?
-          AND  cancellationdate IS NULL
-          AND  itemnumber IS NULL
-          AND  ((found <> 'F' and found <> 'W') or found is NULL)
-        ORDER BY priority ASC
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute($biblio);
-    while ( my $line = $sth->fetchrow_hashref ) {
-        push( @reservedates, $line );
-        push( @priority,     $line );
-    }
-
-    # To find the matching index
-    my $i;
-    my $key = -1;    # to allow for 0 to be a valid result
-    for ( $i = 0 ; $i < @priority ; $i++ ) {
-        if ( $borrowernumber == $priority[$i]->{'borrowernumber'} ) {
-            $key = $i;    # save the index
-            last;
-        }
-    }
-
-    # if index exists in array then move it to new position
-    if ( $key > -1 && $rank ne 'del' && $rank > 0 ) {
-        my $new_rank = $rank -
-          1;    # $new_rank is what you want the new index to be in the array
-        my $moving_item = splice( @priority, $key, 1 );
-        splice( @priority, $new_rank, 0, $moving_item );
-    }
-
-    # now fix the priority on those that are left....
-    $query = "
-            UPDATE reserves
-            SET    priority = ?
-                WHERE  biblionumber = ?
-                 AND borrowernumber   = ?
-                 AND reservedate = ?
-         AND found IS NULL
+    #first : check if we have a reservation for this item .
+    my ($itemnumber, $newstatus) = @_;
+    my $dbh          = C4::Context->dbh;
+    my $query = " UPDATE reserves
+    SET    found=?,waitingdate = now()
+    WHERE itemnumber=?
+      AND found IS NULL
+      AND priority = 0
     ";
     ";
-    $sth = $dbh->prepare($query);
-    for ( my $j = 0 ; $j < @priority ; $j++ ) {
-        $sth->execute(
-            $j + 1, $biblio,
-            $priority[$j]->{'borrowernumber'},
-            $priority[$j]->{'reservedate'}
-        );
-        $sth->finish;
-    }
+    my $sth_set = $dbh->prepare($query);
+    $sth_set->execute( $newstatus, $itemnumber );
+    $sth_set->finish;
 }
 
 }
 
-#-------------------------------------------------------------------------------------
+=item ModReserveAffect
 
 
-=item ReserveWaiting
+&ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend);
 
 
-branchcode = &ReserveWaiting($item,$borr);
-this function set FOUND to 'W' for Waiting into the database.
+This function affect an item and a status for a given reserve
+The itemnumber parameter is used to find the biblionumber.
+with the biblionumber & the borrowernumber, we can affect the itemnumber
+to the correct reserve.
 
 
+if $transferToDo is set, then the status is set to "Waiting" as well.
+otherwise, a transfer is on the way, and the end of the transfer will 
+take care of the waiting status
 =cut
 
 =cut
 
-sub ReserveWaiting {
-    my ( $item, $borr,$diffBranchSend ) = @_;
+sub ModReserveAffect {
+    my ( $itemnumber, $borrowernumber,$transferToDo ) = @_;
     my $dbh = C4::Context->dbh;
 
     my $dbh = C4::Context->dbh;
 
-    # get priority and biblionumber....
-    my $query = qq/
-        SELECT reserves.priority as priority,
-               reserves.biblionumber as biblionumber,
-               reserves.branchcode as branchcode,
-               reserves.timestamp as timestamp
-        FROM   reserves,items
-        WHERE  reserves.biblionumber = items.biblionumber
-          AND  items.itemnumber = ?
-          AND reserves.borrowernumber = ?
-          AND reserves.cancellationdate IS NULL
-          AND (reserves.found <> 'F' OR reserves.found IS NULL)
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute( $item, $borr );
-    my $data = $sth->fetchrow_hashref;
-    $sth->finish;
-    my $biblio    = $data->{'biblionumber'};
-    my $timestamp = $data->{'timestamp'};
-
-    # update reserves record....
-    if ($diffBranchSend) {
+    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
+    # attached to $itemnumber
+    my $sth = $dbh->prepare("SELECT biblionumber FROM items WHERE itemnumber=?");
+    $sth->execute($itemnumber);
+    my ($biblionumber) = $sth->fetchrow;
+    # If we affect a reserve that has to be transfered, don't set to Waiting
+    my $query;
+    if ($transferToDo) {
     $query = "
         UPDATE reserves
         SET    priority = 0,
                itemnumber = ?
         WHERE borrowernumber = ?
           AND biblionumber = ?
     $query = "
         UPDATE reserves
         SET    priority = 0,
                itemnumber = ?
         WHERE borrowernumber = ?
           AND biblionumber = ?
-          AND timestamp = ?
+          AND reserves.cancellationdate IS NULL
+          AND (reserves.found <> 'F' OR reserves.found IS NULL)
     ";
     }
     else {
     ";
     }
     else {
+    # affect the reserve to Waiting as well.
     $query = "
         UPDATE reserves
     $query = "
         UPDATE reserves
-        SET    priority = 0,
-               found = 'W',
-            waitingdate=now(),
-               itemnumber = ?
+        SET     priority = 0,
+                found = 'W',
+                waitingdate=now(),
+                itemnumber = ?
         WHERE borrowernumber = ?
           AND biblionumber = ?
         WHERE borrowernumber = ?
           AND biblionumber = ?
-          AND timestamp = ?
+          AND reserves.cancellationdate IS NULL
+          AND (reserves.found <> 'F' OR reserves.found IS NULL)
     ";
     }
     $sth = $dbh->prepare($query);
     ";
     }
     $sth = $dbh->prepare($query);
-    $sth->execute( $item, $borr, $biblio, $timestamp );
+    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
     $sth->finish;
 
     # now fix up the remaining priorities....
     $sth->finish;
 
     # now fix up the remaining priorities....
-    FixPriority( $data->{'priority'}, $biblio );
-    my $branchcode = $data->{'branchcode'};
-    return $branchcode;
+#     _FixPriority( $data->{'priority'}, $biblio ); # can't work, 1st parameter should be $biblionumbern NOT priority. FIXME : remove this line if no problem seen once it is commented.
+    return;
 }
 
 }
 
-#-------------------------------------------------------------------------------------
+=item ModReserveCancelAll
+
+($messages,$nextreservinfo) = &ModReserveCancelAll($itemnumber,$borrowernumber);
+
+    function to cancel reserv,check other reserves, and transfer document if it's necessary
+
+=cut
 
 
-=item GetWaitingReserves
+sub ModReserveCancelAll {
+    my $messages;
+    my $nextreservinfo;
+    my ( $itemnumber, $borrowernumber ) = @_;
+
+    #step 1 : cancel the reservation
+    my $CancelReserve = CancelReserve( undef, $itemnumber, $borrowernumber );
+
+    #step 2 launch the subroutine of the others reserves
+    ( $messages, $nextreservinfo ) = GetOtherReserves($itemnumber);
 
 
-\@itemswaiting=GetWaitingReserves($borr);
+    return ( $messages, $nextreservinfo );
+}
+
+=item ModReserveMinusPriority
+
+&ModReserveMinusPriority($itemnumber,$borrowernumber,$biblionumber)
 
 
-this funtion fetch the list of waiting reserves from database.
+Reduce the values of queuded list     
 
 =cut
 
 
 =cut
 
-sub GetWaitingReserves {
-    my ($borr) = @_;
-    my $dbh = C4::Context->dbh;
-    my @itemswaiting;
+sub ModReserveMinusPriority {
+    my ( $itemnumber, $borrowernumber, $biblionumber ) = @_;
+
+    #first step update the value of the first person on reserv
+    my $dbh   = C4::Context->dbh;
     my $query = "
     my $query = "
-        SELECT *
-        FROM reserves
-        WHERE borrowernumber = ?
-          AND reserves.found = 'W'
-          AND cancellationdate IS NULL
+        UPDATE reserves
+        SET    priority = 0 , itemnumber = ? 
+        WHERE  cancellationdate IS NULL 
+          AND  borrowernumber=?
+          AND  biblionumber=?
+    ";
+    my $sth_upd = $dbh->prepare($query);
+    $sth_upd->execute( $itemnumber, $borrowernumber, $biblionumber );
+    $sth_upd->finish;
+    # second step update all others reservs
+    $query = "
+            UPDATE reserves
+            SET    priority = priority-1
+            WHERE  biblionumber = ?
+            AND priority > 0
+            AND cancellationdate IS NULL
     ";
     ";
+    my $sth_upd = $dbh->prepare($query);
+    $sth_upd->execute( $biblionumber );
+    $sth_upd->finish;
+    $sth_upd->finish;
+}
+
+=item _FixPriority
+
+&_FixPriority($biblio,$borrowernumber,$rank);
+
+ Only used internally (so don't export it)
+ Changed how this functions works #
+ Now just gets an array of reserves in the rank order and updates them with
+ the array index (+1 as array starts from 0)
+ and if $rank is supplied will splice item from the array and splice it back in again
+ in new priority rank
+
+=cut 
+
+sub _FixPriority {
+    my ( $biblio, $borrowernumber, $rank ) = @_;
+    my $dbh = C4::Context->dbh;
+     if ( $rank eq "del" ) {
+         CancelReserve( $biblio, undef, $borrowernumber );
+     }
+    if ( $rank eq "W" || $rank eq "0" ) {
+
+        # make sure priority for waiting items is 0
+        my $query = qq/
+            UPDATE reserves
+            SET    priority = 0
+            WHERE biblionumber = ?
+              AND borrowernumber = ?
+              AND cancellationdate IS NULL
+              AND found ='W'
+        /;
+        my $sth = $dbh->prepare($query);
+        $sth->execute( $biblio, $borrowernumber );
+    }
+    my @priority;
+    my @reservedates;
+
+    # get whats left
+# FIXME adding a new security in returned elements for changing priority,
+# now, we don't care anymore any reservations with itemnumber linked (suppose a waiting reserve)
+    my $query = qq/
+        SELECT borrowernumber, reservedate, constrainttype
+        FROM   reserves
+        WHERE  biblionumber   = ?
+          AND  cancellationdate IS NULL
+          AND  itemnumber IS NULL
+          AND  ((found <> 'F' and found <> 'W') or found is NULL)
+        ORDER BY priority ASC
+    /;
     my $sth = $dbh->prepare($query);
     my $sth = $dbh->prepare($query);
-    $sth->execute($borr);
-    while ( my $data = $sth->fetchrow_hashref ) {
-        push( @itemswaiting, $data );
+    $sth->execute($biblio);
+    while ( my $line = $sth->fetchrow_hashref ) {
+        push( @reservedates, $line );
+        push( @priority,     $line );
     }
     }
-    $sth->finish;
-    return \@itemswaiting;
-}
 
 
-#-------------------------------------------------------------------------------------
+    # To find the matching index
+    my $i;
+    my $key = -1;    # to allow for 0 to be a valid result
+    for ( $i = 0 ; $i < @priority ; $i++ ) {
+        if ( $borrowernumber == $priority[$i]->{'borrowernumber'} ) {
+            $key = $i;    # save the index
+            last;
+        }
+    }
+
+    # if index exists in array then move it to new position
+    if ( $key > -1 && $rank ne 'del' && $rank > 0 ) {
+        my $new_rank = $rank -
+          1;    # $new_rank is what you want the new index to be in the array
+        my $moving_item = splice( @priority, $key, 1 );
+        splice( @priority, $new_rank, 0, $moving_item );
+    }
+
+    # now fix the priority on those that are left....
+    $query = "
+            UPDATE reserves
+            SET    priority = ?
+                WHERE  biblionumber = ?
+                 AND borrowernumber   = ?
+                 AND reservedate = ?
+         AND found IS NULL
+    ";
+    $sth = $dbh->prepare($query);
+    for ( my $j = 0 ; $j < @priority ; $j++ ) {
+        $sth->execute(
+            $j + 1, $biblio,
+            $priority[$j]->{'borrowernumber'},
+            $priority[$j]->{'reservedate'}
+        );
+        $sth->finish;
+    }
+}
 
 
-=item Findgroupreserve
+=item _Findgroupreserve
 
 
-  @results = &Findgroupreserve($biblioitemnumber, $biblionumber);
+  @results = &_Findgroupreserve($biblioitemnumber, $biblionumber);
 
 ****** FIXME ******
 I don't know what this does, because I don't understand how reserve
 
 ****** FIXME ******
 I don't know what this does, because I don't understand how reserve
@@ -919,15 +1049,14 @@ biblio, and the constraint allows you to restrict it to a given
 biblioitem (e.g., if you want to borrow the audio book edition of "The
 Prophet", rather than the first available publication).
 
 biblioitem (e.g., if you want to borrow the audio book edition of "The
 Prophet", rather than the first available publication).
 
-C<&Findgroupreserve> returns :
+C<&_Findgroupreserve> returns :
 C<@results> is an array of references-to-hash whose keys are mostly
 fields from the reserves table of the Koha database, plus
 C<biblioitemnumber>.
 
 =cut
 
 C<@results> is an array of references-to-hash whose keys are mostly
 fields from the reserves table of the Koha database, plus
 C<biblioitemnumber>.
 
 =cut
 
-#'
-sub Findgroupreserve {
+sub _Findgroupreserve {
     my ( $bibitem, $biblio ) = @_;
     my $dbh   = C4::Context->dbh;
     my $query = qq/
     my ( $bibitem, $biblio ) = @_;
     my $dbh   = C4::Context->dbh;
     my $query = qq/
@@ -962,486 +1091,14 @@ sub Findgroupreserve {
     return @results;
 }
 
     return @results;
 }
 
-=item CreateReserve
+=item GetReserveFee
 
 
-CreateReserve($branch,$borrowernumber,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)
+$fee = GetReserveFee($borrowernumber,$biblionumber,$constraint,$biblionumber);
 
 
-FIXME - A somewhat different version of this function appears in
-C4::Reserves. Pick one and stick with it.
+Calculate the fee for a reserve
 
 =cut
 
 
 =cut
 
-sub CreateReserve {
-    my (
-        $branch,    $borrowernumber, $biblionumber,
-        $constraint, $bibitems,  $priority,       $notes,
-        $title,      $checkitem, $found
-    ) = @_;
-    my $fee;
-    if ( $library_name =~ /Horowhenua/ ) {
-        $fee =
-          CalcHLTReserveFee($borrowernumber, $biblionumber, $constraint,
-            $bibitems );
-    }
-    else {
-        $fee =
-          CalcReserveFee($borrowernumber, $biblionumber, $constraint,
-            $bibitems );
-    }
-    my $dbh     = C4::Context->dbh;
-    my $const   = lc substr( $constraint, 0, 1 );
-    my @datearr = localtime(time);
-    my $resdate =
-      ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3];
-    my $waitingdate;
-
-    # If the reserv had the waiting status, we had the value of the resdate
-    if ( $found eq 'W' ) {
-        $waitingdate = $resdate;
-    }
-
-    #eval {
-    # updates take place here
-    if ( $fee > 0 ) {
-        my $nextacctno = &getnextacctno( $borrowernumber );
-        my $query      = qq/
-        INSERT INTO accountlines
-            (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding)
-        VALUES
-            (?,?,now(),?,?,'Res',?)
-    /;
-        my $usth = $dbh->prepare($query);
-        $usth->execute( $borrowernumber, $nextacctno, $fee,
-            "Reserve Charge - $title", $fee );
-        $usth->finish;
-    }
-
-    #if ($const eq 'a'){
-    my $query = qq/
-        INSERT INTO reserves
-            (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,
-            priority,reservenotes,itemnumber,found,waitingdate)
-        VALUES
-             (?,?,?,?,?,
-             ?,?,?,?,?)
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute(
-        $borrowernumber, $biblionumber, $resdate, $branch,
-        $const,          $priority,     $notes,   $checkitem,
-        $found,          $waitingdate
-    );
-    $sth->finish;
-
-    #}
-    if ( ( $const eq "o" ) || ( $const eq "e" ) ) {
-        my $numitems = @$bibitems;
-        my $i        = 0;
-        while ( $i < $numitems ) {
-            my $biblioitem = @$bibitems[$i];
-            my $query      = qq/
-          INSERT INTO reserveconstraints
-              (borrowernumber,biblionumber,reservedate,biblioitemnumber)
-          VALUES
-            (?,?,?,?)
-      /;
-            my $sth = $dbh->prepare("");
-            $sth->execute( $borrowernumber, $biblionumber, $resdate,
-                $biblioitem );
-            $sth->finish;
-            $i++;
-        }
-    }
-    return;
-}
-
-# FIXME - A functionally identical version of this function appears in
-# C4::Reserves. Pick one and stick with it.
-# XXX - Internal use only
-# FIXME - opac-reserves.pl need to use it, temporarily put into @EXPORT
-
-sub CalcReserveFee {
-    my ($borrowernumber, $biblionumber, $constraint, $bibitems ) = @_;
-
-    #check for issues;
-    my $dbh   = C4::Context->dbh;
-    my $const = lc substr( $constraint, 0, 1 );
-    my $query = qq/
-      SELECT * FROM borrowers,categories
-    WHERE borrowernumber = ?
-      AND borrowers.categorycode = categories.categorycode
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute($borrowernumber);
-    my $data = $sth->fetchrow_hashref;
-    $sth->finish();
-    my $fee      = $data->{'reservefee'};
-    my $cntitems = @- > $bibitems;
-
-    if ( $fee > 0 ) {
-
-        # check for items on issue
-        # first find biblioitem records
-        my @biblioitems;
-        my $sth1 = $dbh->prepare(
-            "SELECT * FROM biblio,biblioitems
-                   WHERE (biblio.biblionumber = ?)
-                     AND (biblio.biblionumber = biblioitems.biblionumber)"
-        );
-        $sth1->execute($biblionumber);
-        while ( my $data1 = $sth1->fetchrow_hashref ) {
-            if ( $const eq "a" ) {
-                push @biblioitems, $data1;
-            }
-            else {
-                my $found = 0;
-                my $x     = 0;
-                while ( $x < $cntitems ) {
-                    if ( @$bibitems->{'biblioitemnumber'} ==
-                        $data->{'biblioitemnumber'} )
-                    {
-                        $found = 1;
-                    }
-                    $x++;
-                }
-                if ( $const eq 'o' ) {
-                    if ( $found == 1 ) {
-                        push @biblioitems, $data1;
-                    }
-                }
-                else {
-                    if ( $found == 0 ) {
-                        push @biblioitems, $data1;
-                    }
-                }
-            }
-        }
-        $sth1->finish;
-        my $cntitemsfound = @biblioitems;
-        my $issues        = 0;
-        my $x             = 0;
-        my $allissued     = 1;
-        while ( $x < $cntitemsfound ) {
-            my $bitdata = $biblioitems[$x];
-            my $sth2    = $dbh->prepare(
-                "SELECT * FROM items
-                     WHERE biblioitemnumber = ?"
-            );
-            $sth2->execute( $bitdata->{'biblioitemnumber'} );
-            while ( my $itdata = $sth2->fetchrow_hashref ) {
-                my $sth3 = $dbh->prepare(
-                    "SELECT * FROM issues
-                       WHERE itemnumber = ?
-                         AND returndate IS NULL"
-                );
-                $sth3->execute( $itdata->{'itemnumber'} );
-                if ( my $isdata = $sth3->fetchrow_hashref ) {
-                }
-                else {
-                    $allissued = 0;
-                }
-            }
-            $x++;
-        }
-        if ( $allissued == 0 ) {
-            my $rsth =
-              $dbh->prepare("SELECT * FROM reserves WHERE biblionumber = ?");
-            $rsth->execute($biblionumber);
-            if ( my $rdata = $rsth->fetchrow_hashref ) {
-            }
-            else {
-                $fee = 0;
-            }
-        }
-    }
-
-    #  print "fee $fee";
-    return $fee;
-}
-
-# The following are junior and young adult item types that should not incur a
-# reserve charge.
-#
-# Juniors: BJC, BJCN, BJF, BJK, BJM, BJN, BJP, BJSF, BJSN, DJ, DJP, FJ, JVID,
-#  VJ, VJP, PJ, TJ, TJP, VJ, VJP.
-#
-# Young adults: BYF, BYN, BYP, DY, DYP, PY, PYP, TY, TYP, VY, VYP.
-#
-# All other item types should incur a reserve charge.
-sub CalcHLTReserveFee {
-    my ($borrowernumber, $biblionumber, $constraint, $bibitems ) = @_;
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare(
-        "SELECT * FROM borrowers,categories
-                  WHERE (borrowernumber = ?)
-                    AND (borrowers.categorycode = categories.categorycode)"
-    );
-    $sth->execute($borrowernumber);
-    my $data = $sth->fetchrow_hashref;
-    $sth->finish();
-    my $fee = $data->{'reservefee'};
-
-    my $matchno;
-    my @nocharge =
-      qw/BJC BJCN BJF BJK BJM BJN BJP BJSF BJSN DJ DJP FJ NJ CJ VJ VJP PJ TJ TJP BYF BYN BYP DY DYP PY PYP TY TYP VY VYP/;
-    $sth = $dbh->prepare(
-        "SELECT * FROM biblio,biblioitems
-                     WHERE (biblio.biblionumber = ?)
-                       AND (biblio.biblionumber = biblioitems.biblionumber)"
-    );
-    $sth->execute($biblionumber);
-    $data = $sth->fetchrow_hashref;
-    my $itemtype = $data->{'itemtype'};
-    for ( my $i = 0 ; $i < @nocharge ; $i++ ) {
-        if ( $itemtype eq $nocharge[$i] ) {
-            $matchno++;
-            last;
-        }
-    }
-
-    if ( $matchno > 0 ) {
-        $fee = 0;
-    }
-    return $fee;
-}
-
-=item GetNextAccountNumber
-
-GetNextAccountNumber()
-
-=cut
-
-sub GetNextAccountNumber {
-    my ($borrowernumber, $dbh ) = @_;
-    my $nextaccntno = 1;
-    my $sth         = $dbh->prepare(
-        "select * from accountlines
-  where (borrowernumber = ?)
-  order by accountno desc"
-    );
-    $sth->execute($borrowernumber);
-    if ( my $accdata = $sth->fetchrow_hashref ) {
-        $nextaccntno = $accdata->{'accountno'} + 1;
-    }
-    $sth->finish;
-    return ($nextaccntno);
-}
-
-#-------------------------------------------------------------------------------------
-
-=item UpdateReserve
-
-&UpdateReserve($rank,$biblio,$borrower,$branch)
-
-=cut
-
-sub UpdateReserve {
-    #subroutine to update a reserve
-    my ( $rank, $biblio, $borrower, $branch , $itemnumber) = @_;
-     return if $rank eq "W";
-     return if $rank eq "n";
-    my $dbh = C4::Context->dbh;
-    if ( $rank eq "del" ) {
-        my $query = qq/
-            UPDATE reserves
-            SET    cancellationdate=now()
-            WHERE  biblionumber   = ?
-             AND   borrowernumber = ?
-             AND   cancellationdate is NULL
-             AND   (found <> 'F' or found is NULL)
-        /;
-        my $sth = $dbh->prepare($query);
-        $sth->execute( $biblio, $borrower );
-        $sth->finish;
-        
-    }
-    else {
-        my $query = qq/
-        UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL
-            WHERE biblionumber   = ?
-             AND borrowernumber = ?
-             AND cancellationdate is NULL
-             AND (found <> 'F' or found is NULL)
-        /;
-        my $sth = $dbh->prepare($query);
-        $sth->execute( $rank, $branch,$itemnumber, $biblio, $borrower);
-        $sth->finish;
-        FixPriority( $biblio, $borrower, $rank);
-    }
-}
-
-=item GetReserveTitle
-
-$data = GetReserveTitle($biblio,$bor,$date,$timestamp);
-
-=cut
-
-sub GetReserveTitle {
-    my ( $biblio, $bor, $date, $timestamp ) = @_;
-    my $dbh   = C4::Context->dbh;
-    my $query = qq/
-        SELECT *
-        FROM   reserveconstraints,biblioitems
-        WHERE  reserveconstraints.biblioitemnumber=biblioitems.biblioitemnumber
-          AND   reserveconstraints.biblionumber=?
-         AND   reserveconstraints.borrowernumber = ?
-         AND   reserveconstraints.reservedate=?
-         AND   reserveconstraints.timestamp=?
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute( $biblio, $bor, $date, $timestamp );
-    my $data = $sth->fetchrow_hashref;
-    $sth->finish;
-    return $data;
-}
-
-=item FindReservesInQueue
-
-  $results = &FindReservesInQueue($biblionumber);
-
-Simple variant of FindReserves, exept the result is now displaying only the queue list of reservations with the same biblionumber (At this time only displayed in request.pl)
-
-C<&FindReservesInQueue> returns a two-element array:
-
-C<$results> is a reference to an array of references of hashes. Each hash
-has for keys a list of column from reserves table (see details in function).
-
-=cut
-
-#'
-
-sub FindReservesInQueue {
-    my ($biblionumber) = @_;
-    my $dbh = C4::Context->dbh;
-
-    # Find the desired items in the reserves
-    my $query = qq/
-        SELECT  branchcode,
-                timestamp AS rtimestamp,
-                priority,
-                biblionumber,
-                borrowernumber,
-                reservedate,
-                constrainttype,
-                found,
-                itemnumber
-          FROM     reserves
-          WHERE     cancellationdate IS NULL
-        AND biblionumber = ?
-          AND    (found <> \'F\' OR found IS NULL)
-          AND priority <> \'0\'
-          ORDER BY priority
-    /;
-    my $sth = $dbh->prepare($query);
-    $sth->execute($biblionumber);
-    my @results;
-    my $i = 0;
-    while ( my $data = $sth->fetchrow_hashref ) {
-
-        # FIXME - What is this if-statement doing? How do constraints work?
-        if ( $data->{constrainttype} eq 'o' ) {
-            $query = '
-                SELECT biblioitemnumber
-                FROM reserveconstraints
-                WHERE biblionumber   = ?
-                    AND borrowernumber = ?
-                  AND reservedate    = ?
-            ';
-            my $csth = $dbh->prepare($query);
-            $csth->execute( $data->{biblionumber}, $data->{borrowernumber},
-                $data->{reservedate}, );
-
-            my @bibitemno;
-            while ( my $bibitemnos = $csth->fetchrow_array ) {
-                push( @bibitemno, $bibitemnos );
-            }
-            my $count = @bibitemno;
-
-            # if we have two or more different specific itemtypes
-            # reserved by same person on same day
-            my $bdata;
-            if ( $count > 1 ) {
-                $bdata = GetBiblioItemData( $bibitemno[$i] );
-                $i++;
-            }
-            else {
-                # Look up the book we just found.
-                $bdata = GetBiblioItemData( $bibitemno[0] );
-            }
-            $csth->finish;
-
-            # Add the results of this latest search to the current
-            # results.
-            # FIXME - An 'each' would probably be more efficient.
-            foreach my $key ( keys %$bdata ) {
-                $data->{$key} = $bdata->{$key};
-            }
-        }
-        push @results, $data;
-    }
-    $sth->finish;
-
-    return ( $#results + 1, \@results );
-}
-
-
-=head2 GetReservesToBranch
-
-@transreserv = GetReservesToBranch( $frombranch );
-
-Get reserve list for a given branch
-
-=cut
-
-sub GetReservesToBranch {
-    my ( $frombranch ) = @_;
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare(
-        "SELECT borrowernumber,reservedate,itemnumber,timestamp
-         FROM reserves 
-         WHERE priority='0' AND cancellationdate is null  
-           AND branchcode=?
-           AND found IS NULL "
-    );
-    $sth->execute( $frombranch );
-    my @transreserv;
-    my $i = 0;
-    while ( my $data = $sth->fetchrow_hashref ) {
-        $transreserv[$i] = $data;
-        $i++;
-    }
-    $sth->finish;
-    return (@transreserv);
-}
-
-=head2 GetReservesForBranch
-
-@transreserv = GetReservesForBranch($frombranch);
-
-=cut
-
-sub GetReservesForBranch {
-    my ($frombranch) = @_;
-    my $dbh          = C4::Context->dbh;
-    my $sth          = $dbh->prepare( "
-        SELECT borrowernumber,reservedate,itemnumber,waitingdate
-        FROM   reserves 
-        WHERE   priority='0'
-            AND cancellationdate IS NULL 
-            AND found='W' 
-            AND branchcode=?
-        ORDER BY waitingdate" );
-    $sth->execute($frombranch);
-    my @transreserv;
-    my $i = 0;
-    while ( my $data = $sth->fetchrow_hashref ) {
-        $transreserv[$i] = $data;
-        $i++;
-    }
-    $sth->finish;
-    return (@transreserv);
-}
-
 =back
 
 =head1 AUTHOR
 =back
 
 =head1 AUTHOR
index 70184dc..76b1d14 100755 (executable)
@@ -78,7 +78,7 @@ if ( $request eq "KillWaiting" ) {
 my $ignoreRs = 0;
 if ( $request eq "SetWaiting" ) {
     my $item = $query->param('itemnumber');
 my $ignoreRs = 0;
 if ( $request eq "SetWaiting" ) {
     my $item = $query->param('itemnumber');
-    $tobranchcd  = ReserveWaiting( $item, $borrowernumber );
+    ModReserveAffect( $item, $borrowernumber );
     $ignoreRs    = 1;
     $setwaiting  = 1;
     $reqmessage  = 1;
     $ignoreRs    = 1;
     $setwaiting  = 1;
     $reqmessage  = 1;
index 5782ae5..4277ae1 100755 (executable)
@@ -266,7 +266,7 @@ if ($borrowernumber) {
 
     # new op dev
     # now we show the status of the borrower's reservations
 
     # new op dev
     # now we show the status of the borrower's reservations
-    my @borrowerreserv = GetReservations( 0, $borrowernumber );
+    my @borrowerreserv = GetReservesFromBorrowernumber$borrowernumber );
     my @reservloop;
     my @WaitingReserveLoop;
     
     my @reservloop;
     my @WaitingReserveLoop;
     
index ba57d83..1c8cfa4 100755 (executable)
@@ -113,7 +113,7 @@ if ( $query->param('resbarcode') ) {
     my $iteminfo   = GetBiblioFromItemNumber($item);
     my $diffBranchSend;
     
     my $iteminfo   = GetBiblioFromItemNumber($item);
     my $diffBranchSend;
     
-#     addin in ReserveWaiting the possibility to check if the document is expected in this library or not,
+#     addin in ModReserveAffect the possibility to check if the document is expected in this library or not,
 # if not we send a value in reserve waiting for not implementting waiting status
        if ($diffBranchReturned) {
        $diffBranchSend = $diffBranchReturned;
 # if not we send a value in reserve waiting for not implementting waiting status
        if ($diffBranchReturned) {
        $diffBranchSend = $diffBranchReturned;
@@ -122,9 +122,9 @@ if ( $query->param('resbarcode') ) {
        $diffBranchSend = undef;
        }
                 
        $diffBranchSend = undef;
        }
                 
-    my $tobranchcd = ReserveWaiting( $item, $borrowernumber,$diffBranchSend);
+    ModReserveAffect( $item, $borrowernumber,$diffBranchSend);
 #   check if we have other reservs for this document, if we have a return send the message of transfer
 #   check if we have other reservs for this document, if we have a return send the message of transfer
-    my ( $messages, $nextreservinfo ) = OtherReserves($item);
+    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
 
     my $branchname = GetBranchName( $messages->{'transfert'} );
     my ($borr) = GetMemberDetails( $nextreservinfo, 0 );
 
     my $branchname = GetBranchName( $messages->{'transfert'} );
     my ($borr) = GetMemberDetails( $nextreservinfo, 0 );
index 5ec5dac..547321e 100644 (file)
@@ -106,7 +106,7 @@ foreach my $br ( keys %$branches ) {
             $getransf{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
 
             #                          we check if we have a reserv for this transfer
             $getransf{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
 
             #                          we check if we have a reserv for this transfer
-            my @checkreserv = GetReservations( $num->{'itemnumber'} );
+            my @checkreserv = GetReservesFromItemnumber($num->{'itemnumber'} );
             if ( $checkreserv[0] ) {
                 my $getborrower =
                   GetMemberDetails( $checkreserv[1] );
             if ( $checkreserv[0] ) {
                 my $getborrower =
                   GetMemberDetails( $checkreserv[1] );
index 5c85937..509a6f5 100755 (executable)
@@ -74,7 +74,7 @@ if ($item) {
     my $messages;
     my $nextreservinfo;
     my $waiting;
     my $messages;
     my $nextreservinfo;
     my $waiting;
-    ( $messages, $nextreservinfo ) = GlobalCancel( $item, $borrowernumber );
+    ( $messages, $nextreservinfo ) = ModReserveCancelAll( $item, $borrowernumber );
 
     #          if we have a result
     if ($nextreservinfo) {
 
     #          if we have a result
     if ($nextreservinfo) {
index 662ab65..0fa672a 100755 (executable)
@@ -242,24 +242,6 @@ for ( my $i = 0 ; $i < $count ; $i++ ) {
     push( @issuedata, \%row );
 }
 
     push( @issuedata, \%row );
 }
 
-#
-# find reserves
-#
-# my ($rescount,$reserves)=FindReserves('',$borrowernumber); #From C4::Reserves
-# my @reservedata;
-# $toggle = 0;
-# foreach my $reserveline (@$reserves) {
-#      $reserveline->{'reservedate2'} = format_date($reserveline->{'reservedate'});
-#      my $restitle;
-#      my %row = %$reserveline;
-#         $row{toggle} = $toggle++%2;
-#      if ($reserveline->{'constrainttype'} eq 'o'){
-#              $restitle=GetReserveTitle($reserveline->{'biblionumber'},$reserveline->{'borrowernumber'},$reserveline->{'reservedate'},$reserveline->{'rtimestamp'});
-#              %row =  (%row , %$restitle) if $restitle;
-#      }
-#      push (@reservedata, \%row);
-# }
-
 ##################################################################################
 # BUILD HTML
 # show all reserves of this borrower, and the position of the reservation ....
 ##################################################################################
 # BUILD HTML
 # show all reserves of this borrower, and the position of the reservation ....
@@ -267,7 +249,7 @@ if ($borrowernumber) {
 
     # new op dev
     # now we show the status of the borrower's reservations
 
     # new op dev
     # now we show the status of the borrower's reservations
-    my @borrowerreserv = GetReservations( 0, $borrowernumber );
+    my @borrowerreserv = GetReservesFromBorrowernumber($borrowernumber );
     my @reservloop;
     foreach my $num_res (@borrowerreserv) {
         my %getreserv;
     my @reservloop;
     foreach my $num_res (@borrowerreserv) {
         my %getreserv;
index bb79c53..3f5d9d7 100755 (executable)
@@ -53,7 +53,7 @@ $template->param($bibdata);
 $template->param( biblionumber => $biblionumber );
 
 # get the rank number....
 $template->param( biblionumber => $biblionumber );
 
 # get the rank number....
-my ( $rank, $reserves ) = FindReserves( $biblionumber, '' );
+my ( $rank, $reserves ) = GetReservesFromBiblionumber( $biblionumber);
 $template->param( reservecount => $rank );
 
 foreach my $res (@$reserves) {
 $template->param( reservecount => $rank );
 
 foreach my $res (@$reserves) {
@@ -147,8 +147,7 @@ foreach my $itm (@items) {
       if defined $itm->{'date_due'};
     $itm->{ $itm->{'publictype'} } = 1;
 
       if defined $itm->{'date_due'};
     $itm->{ $itm->{'publictype'} } = 1;
 
-    # FIXME CalcReserveFee is supposed to be internal-use-only
-    my $fee = CalcReserveFee( undef, $borrowernumber, $itm->{'biblionumber'},
+    my $fee = GetReserveFee( undef, $borrowernumber, $itm->{'biblionumber'},
         'a', ( $itm->{'biblioitemnumber'} ) );
     $fee = sprintf "%.02f", $fee;
     $itm->{'reservefee'} = $fee;
         'a', ( $itm->{'biblioitemnumber'} ) );
     $fee = sprintf "%.02f", $fee;
     $itm->{'reservefee'} = $fee;
@@ -216,7 +215,7 @@ if ( $query->param('item_types_selected') ) {
                 }
             }
             $fee +=
                 }
             }
             $fee +=
-              CalcReserveFee( undef, $borrowernumber, $biblionumber, 'o',
+              GetReserveFee( undef, $borrowernumber, $biblionumber, 'o',
                 \@reqbibs );
         }
         $proceed = 1;
                 \@reqbibs );
         }
         $proceed = 1;
@@ -254,11 +253,11 @@ elsif ( $query->param('place_reserve') ) {
                 push @reqbibs, $item->{'biblioitemnumber'};
             }
         }
                 push @reqbibs, $item->{'biblioitemnumber'};
             }
         }
-        CreateReserve( undef, $branch, $borrowernumber, $biblionumber, 'o',
+        AddReserve( $branch, $borrowernumber, $biblionumber, 'o',
             \@reqbibs, $rank, '', $title );
     }
     if ( $query->param('all') ) {
             \@reqbibs, $rank, '', $title );
     }
     if ( $query->param('all') ) {
-        CreateReserve( undef, $branch, $borrowernumber, $biblionumber, 'a',
+        AddReserve( $branch, $borrowernumber, $biblionumber, 'a',
             undef, $rank, '', $title );
     }
     print $query->redirect("/cgi-bin/koha/opac-user.pl");
             undef, $rank, '', $title );
     }
     print $query->redirect("/cgi-bin/koha/opac-user.pl");
@@ -296,7 +295,7 @@ else {
             debarred => 1
         );
     }
             debarred => 1
         );
     }
-    my ( $resnum, $reserves ) = FindReserves( '', $borrowernumber );
+    my ( $resnum, $reserves ) = GetReservesFromBorrowernumber( $borrowernumber );
     $template->param( RESERVES => $reserves );
     if ( $resnum >= $MAXIMUM_NUMBER_OF_RESERVES ) {
         $template->param( message => 1 );
     $template->param( RESERVES => $reserves );
     if ( $resnum >= $MAXIMUM_NUMBER_OF_RESERVES ) {
         $template->param( message => 1 );
index fe9bb4a..225b075 100755 (executable)
@@ -141,7 +141,7 @@ $template->param( overdues_count => $overdues_count );
 my $branches = GetBranches();
 
 # now the reserved items....
 my $branches = GetBranches();
 
 # now the reserved items....
-my ( $rcount, $reserves ) = FindReserves( undef, $borrowernumber );
+my ( $rcount, $reserves ) = GetReservesFromBorrowernumber( $borrowernumber );
 foreach my $res (@$reserves) {
     $res->{'reservedate'} = format_date( $res->{'reservedate'} );
     my $publictype = $res->{'publictype'};
 foreach my $res (@$reserves) {
     $res->{'reservedate'} = format_date( $res->{'reservedate'} );
     my $publictype = $res->{'publictype'};
index c2aa3ff..6c2aa4b 100755 (executable)
@@ -43,16 +43,16 @@ my $CancelItemnumber=$input->param('CancelItemnumber');
 
 # 2 possibilitys : cancel an item reservation, or modify or cancel the queded list
 
 
 # 2 possibilitys : cancel an item reservation, or modify or cancel the queded list
 
-# 1) cancel an item reservation by fonction GlobalCancel (in reserves.pm)
+# 1) cancel an item reservation by fonction ModReserveCancelAll (in reserves.pm)
 if ($CancelBorrowerNumber) {
 if ($CancelBorrowerNumber) {
-       GlobalCancel($CancelItemnumber, $CancelBorrowerNumber);
+       ModReserveCancelAll($CancelItemnumber, $CancelBorrowerNumber);
        $biblionumber[0] = $CancelBiblioNumber,
 }
 
 # 2) Cancel or modify the queue list of reserves (without item linked)
 else {
        for (my $i=0;$i<$count;$i++){
        $biblionumber[0] = $CancelBiblioNumber,
 }
 
 # 2) Cancel or modify the queue list of reserves (without item linked)
 else {
        for (my $i=0;$i<$count;$i++){
-               UpdateReserve($rank[$i],$biblionumber[$i],$borrower[$i],$branch[$i],$itemnumber[$i]); #from C4::Reserves
+               ModReserve($rank[$i],$biblionumber[$i],$borrower[$i],$branch[$i],$itemnumber[$i]); #from C4::Reserves
        }
 }
 my $from=$input->param('from');
        }
 }
 my $from=$input->param('from');
index 932ff67..cb1c5aa 100755 (executable)
@@ -75,12 +75,12 @@ if ($type eq 'str8' && $borrowernumber ne ''){
        my $const;
        if ($input->param('request') eq 'any'){
        $const='a';
        my $const;
        if ($input->param('request') eq 'any'){
        $const='a';
-  CreateReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,$const,\@realbi,$rank[0],$notes,$title,$checkitem,$found);
+  AddReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,$const,\@realbi,$rank[0],$notes,$title,$checkitem,$found);
        } elsif ($reqbib[0] ne ''){
        $const='o';
        } elsif ($reqbib[0] ne ''){
        $const='o';
-  CreateReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,$const,\@reqbib,$rank[0],$notes,$title,$checkitem, $found);
+  AddReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,$const,\@reqbib,$rank[0],$notes,$title,$checkitem, $found);
        } else {
        } else {
-  CreateReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$notes,$title,$checkitem, $found);
+  AddReserve($branch,$borrowernumber->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$notes,$title,$checkitem, $found);
        }
        
 print $input->redirect("request.pl?biblionumber=$biblionumber");
        }
        
 print $input->redirect("request.pl?biblionumber=$biblionumber");
index f461519..b9c08af 100755 (executable)
@@ -97,7 +97,7 @@ if ($cardnumber) {
 # FIXME At this time we have a simple count of reservs, but, later, we could improve the infos "title" ...
 
     my $number_reserves =
 # 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;
 
     if ( $number_reserves > C4::Context->preference('maxreserves') ) {
         $maxreserves = 1;
@@ -160,7 +160,7 @@ if ($borrowerslist) {
 }
 
 # get existing reserves .....
 }
 
 # get existing reserves .....
-my ( $count, $reserves ) = FindReserves($biblionumber);
+my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber);
 my $totalcount = $count;
 my $alreadyreserved;
 
 my $totalcount = $count;
 my $alreadyreserved;
 
@@ -259,7 +259,7 @@ foreach my $biblioitemnumber (@biblioitemnumbers) {
         }
 
         # checking reserve
         }
 
         # checking reserve
-        my ($reservedate,$reservedfor,$expectedAt) = GetFirstReserveDateFromItem($itemnumber);
+        my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber);
         my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
 
         if ( defined $reservedate ) {
         my $ItemBorrowerReserveInfo = GetMemberDetails( $reservedfor, 0);
 
         if ( defined $reservedate ) {
@@ -326,7 +326,7 @@ foreach my $biblioitemnumber (@biblioitemnumbers) {
 # existingreserves building
 my @reserveloop;
 my $branches = GetBranches();
 # 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;
 foreach my $res ( sort { $a->{found} cmp $b->{found} } @$reserves ) {
     my %reserve;
     my @optionloop;
@@ -350,7 +350,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'};
 
     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'};
         $reserve{'wait'}= 1; 
         $reserve{'holdingbranch'}=$item->{'holdingbranch'};
         $reserve{'biblionumber'}=$item->{'biblionumber'};
index 548b4fa..06fa34c 100755 (executable)
@@ -47,7 +47,7 @@ if($ok){
     my $biblio = $subs->{'biblionumber'};
     
     # get existing reserves .....
     my $biblio = $subs->{'biblionumber'};
     
     # get existing reserves .....
-    my ($count,$reserves) = FindReserves($biblio);
+    my ($count,$reserves) = GetReservesFromBiblionumber($biblio);
     my $totalcount = $count;
     foreach my $res (@$reserves) {
         if ($res->{'found'} eq 'W') {
     my $totalcount = $count;
     foreach my $res (@$reserves) {
         if ($res->{'found'} eq 'W') {
@@ -68,9 +68,9 @@ if($ok){
 
 #       warn "$routinglist[$i]->{'borrowernumber'} is the same as $data->{'borrowernumber'}";
        if($routinglist[$i]->{'borrowernumber'} == $data->{'borrowernumber'}){
 
 #       warn "$routinglist[$i]->{'borrowernumber'} is the same as $data->{'borrowernumber'}";
        if($routinglist[$i]->{'borrowernumber'} == $data->{'borrowernumber'}){
-           UpdateReserve($routinglist[$i]->{'ranking'},$biblio,$routinglist[$i]->{'borrowernumber'},$branch);
+           ModReserve($routinglist[$i]->{'ranking'},$biblio,$routinglist[$i]->{'borrowernumber'},$branch);
         } else {
         } else {
-        CreateReserve($branch,$routinglist[$i]->{'borrowernumber'},$biblio,$const,\@bibitems,$routinglist[$i]->{'ranking'},$notes,$title);
+        AddReserve($branch,$routinglist[$i]->{'borrowernumber'},$biblio,$const,\@bibitems,$routinglist[$i]->{'ranking'},$notes,$title);
        }
     }
     
        }
     }