koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha C4/Reserves2.pm circ/circulation.pl circ/c... [rel_3_0]


From: Antoine Farnault
Subject: [Koha-cvs] koha C4/Reserves2.pm circ/circulation.pl circ/c... [rel_3_0]
Date: Wed, 20 Sep 2006 15:47:49 +0000

CVSROOT:        /sources/koha
Module name:    koha
Branch:         rel_3_0
Changes by:     Antoine Farnault <toins>        06/09/20 15:47:49

Modified files:
        C4             : Reserves2.pm 
        circ           : circulation.pl currenttransfers.pl 
        reserve        : modrequest.pl placerequest.pl request.pl 

Log message:
        some code clean on reserve. Not completely done yet.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Reserves2.pm?cvsroot=koha&only_with_tag=rel_3_0&r1=1.46.2.1&r2=1.46.2.2
http://cvs.savannah.gnu.org/viewcvs/koha/circ/circulation.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.97.2.2&r2=1.97.2.3
http://cvs.savannah.gnu.org/viewcvs/koha/circ/currenttransfers.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.3&r2=1.3.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/reserve/modrequest.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.2&r2=1.2.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/reserve/placerequest.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.3.2.1&r2=1.3.2.2
http://cvs.savannah.gnu.org/viewcvs/koha/reserve/request.pl?cvsroot=koha&only_with_tag=rel_3_0&r1=1.6.2.2&r2=1.6.2.3

Patches:
Index: C4/Reserves2.pm
===================================================================
RCS file: /sources/koha/koha/C4/Reserves2.pm,v
retrieving revision 1.46.2.1
retrieving revision 1.46.2.2
diff -u -b -r1.46.2.1 -r1.46.2.2
--- C4/Reserves2.pm     30 Aug 2006 16:38:51 -0000      1.46.2.1
+++ C4/Reserves2.pm     20 Sep 2006 15:47:49 -0000      1.46.2.2
@@ -3,8 +3,6 @@
 
 package C4::Reserves2;
 
-# $Id: Reserves2.pm,v 1.46.2.1 2006/08/30 16:38:51 toins Exp $
-
 # Copyright 2000-2002 Katipo Communications
 #
 # This file is part of Koha.
@@ -22,20 +20,21 @@
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
 
+# $Id: Reserves2.pm,v 1.46.2.2 2006/09/20 15:47:49 toins Exp $
+
 use strict;
 require Exporter;
-use DBI;
 use C4::Context;
 use C4::Biblio;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 my $library_name = C4::Context->preference("LibraryName");
 
 # set the version for version checking
-$VERSION = 0.01;
+$VERSION = do { my @v = '$Revision: 1.46.2.2 $' =~ /\d+/g; shift(@v) . "." . 
join( "_", map { sprintf "%03d", $_ } @v ); };
 
 =head1 NAME
 
-C4::Reserves2 - FIXME
+C4::Reserves2 - Koha functions for dealing with reservation.
 
 =head1 SYNOPSIS
 
@@ -43,7 +42,7 @@
 
 =head1 DESCRIPTION
 
-FIXME
+this modules provides somes functions to deal with reservations.
 
 =head1 FUNCTIONS
 
@@ -56,48 +55,56 @@
 @EXPORT = qw(
     &FindReserves
     &CheckReserves
-    &CheckWaiting
+    &GetWaitingReserves
     &CancelReserve
     &CalcReserveFee
     &FillReserve
     &ReserveWaiting
     &CreateReserve
-    &updatereserves
     &UpdateReserve
-    &getreservetitle
-    &Findgroupreserve
-    &FastFindReserves
+    &GetReserveTitle
+    &GetReservations
     &SetWaitingStatus
     &GlobalCancel
     &MinusPriority
     &OtherReserves
-    GetFirstReserveDateFromItem
-    GetNumberReservesFromBorrower
-    &fixpriority 
+    &GetFirstReserveDateFromItem
+    &CountReservesFromBorrower
 );
 
 # 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)address@hidden;
        
-#      step 1 : cancel the reservation
+    #step 1 : cancel the reservation
        my $CancelReserve = CancelReserve(0,$itemnumber,$borrowernumber);
 
-#      step 2 launch the subroutine of the others reserves
+    #step 2 launch the subroutine of the others reserves
        my ($messages,$nextreservinfo) = OtherReserves($itemnumber);
 
-return ($messages,$nextreservinfo);
+    return ($messages,$nextreservinfo);
 }
 
 =item OtherReserves
-       New op dev: check queued list of this document and check if this 
document must be  transfered
+
+($messages,$nextreservinfo)=$OtherReserves(itemnumber);
+
+Check queued list of this document and check if this document must be  
transfered
+
 =cut
+
 #'
 sub OtherReserves {
        my ($itemnumber)address@hidden;
@@ -105,18 +112,16 @@
        my $nextreservinfo;
        my ($restype,$checkreserves) = CheckReserves($itemnumber);
        if ($checkreserves){
-               my %env;
                my $iteminfo = 
C4::Circulation::Circ2::getiteminformation($itemnumber);
                if ($iteminfo->{'holdingbranch'} ne 
$checkreserves->{'branchcode'}){
                $messages->{'transfert'} = $checkreserves->{'branchcode'};
-
-#              minus priorities of others reservs
+            #minus priorities of others reservs
                
MinusPriority($itemnumber,$checkreserves->{'borrowernumber'},$iteminfo->{'biblionumber'});
-#              launch the subroutine dotransfer
+            #launch the subroutine dotransfer
                
C4::Circulation::Circ2::dotransfer($itemnumber,$iteminfo->{'holdingbranch'},$checkreserves->{'branchcode'}),
                }
 
-#      step 2b : case of a reservation on the same branch, set the waiting 
status
+        #step 2b : case of a reservation on the same branch, set the waiting 
status
                else{
                $messages->{'waiting'} = 1;
                
MinusPriority($itemnumber,$checkreserves->{'borrowernumber'},$iteminfo->{'biblionumber'});
@@ -130,94 +135,141 @@
 }
 
 =item MinusPriority
-       Reduce the values of queuded list       
+
+&MinusPriority($itemnumber,$borrowernumber,$biblionumber)
+
+Reduce the values of queuded list     
+
 =cut
+
 #'
 sub MinusPriority{
        my ($itemnumber,$borrowernumber,$biblionumber)address@hidden;
-#      first step update the value of the first person on reserv
+    #first step update the value of the first person on reserv
        my $dbh = C4::Context->dbh;
-       my $sth_upd=$dbh->prepare("UPDATE reserves SET priority = 0 , 
itemnumber = ? 
-       WHERE cancellationdate is NULL 
+    my $query = qq/
+        UPDATE reserves
+        SET    priority = 0 , itemnumber = ? 
+        WHERE  cancellationdate IS NULL 
        AND borrowernumber=?
-       AND biblionumber=?");
+          AND  biblionumber=?
+    /;
+    my $sth_upd=$dbh->prepare($query);
        $sth_upd->execute($itemnumber,$borrowernumber,$biblionumber);
        $sth_upd->finish;
 
-# second step update all others reservs
-       my $sth_oth=$dbh->prepare("SELECT 
priority,borrowernumber,biblionumber,reservedate FROM reserves WHERE priority 
!='0' AND cancellationdate is NULL");
-       $sth_oth->execute();
+    # second step update all others reservs
+    $query = qq/
+        SELECT priority,borrowernumber,biblionumber,reservedate
+        FROM   reserves
+        WHERE  priority !='0'
+          AND  cancellationdate IS NULL
+    /;
+    my $sth_oth=$dbh->prepare($query);
+    $sth_oth->execute;
        while (my 
($priority,$borrowernumber,$biblionumber,$reservedate)=$sth_oth->fetchrow_array){
                $priority--;
-                my $sth_upd_oth = $dbh->prepare("UPDATE reserves SET priority 
= ?
+         $query = qq/
+             UPDATE reserves
+             SET    priority = ?
                                WHERE biblionumber     = ?
                                  AND borrowernumber   = ?
-                                        AND reservedate      = ?");
+               AND  reservedate      = ?
+               /;
+         my $sth_upd_oth = $dbh->prepare($query);
                
$sth_upd_oth->execute($priority,$biblionumber,$borrowernumber,$reservedate);
                $sth_upd_oth->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 
 
-=item GlobalCancel
-       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
-#'
-# New op dev :
-# 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 
-sub SetWaitingStatus{
-#      first : check if we have a reservation for this item .
+
+sub SetWaitingStatus {
+    #first : check if we have a reservation for this item .
        my ($itemnumber)address@hidden;
        my $dbh = C4::Context->dbh;
-       my $sth_find=$dbh->prepare("SELECT priority,borrowernumber from 
reserves WHERE itemnumber=? and cancellationdate is NULL and found is NULL and 
priority='0'");
+    my $query = qq/
+        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;
-       if (not $borrowernumber){
-               return();
-       }
-       else{
-#              step 2 : if we have a borrowernumber, we update the value found 
to 'W' for notify the borrower
-               my $sth_set=$dbh->prepare("UPDATE reserves SET 
found='W',waitingdate = now() where borrowernumber=? AND itemnumber=? AND found 
is null");
+    return unless $borrowernumber;
+    
+    # step 2 : if we have a borrowernumber, we update the value found to 'W' 
to notify the borrower
+    $query = qq/
+       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;
-       }
-
 }
 
-sub FastFindReserves {
+=item GetReservations
+
address@hidden&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)address@hidden;
        if ($itemnumber){
                my $dbh = C4::Context->dbh;
-               my $sth_res=$dbh->prepare("SELECT reservedate,borrowernumber 
from reserves WHERE itemnumber=? and cancellationdate is NULL AND (found != 'F' 
or found is null)");
+               my $query = qq/
+                       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;
-               $sth_res->finish;
                return($reservedate,$borrowernumber);
        }
        if ($borrowernumber){
                my $dbh = C4::Context->dbh;
-               my $sth_find=$dbh->prepare("SELECT * from reserves WHERE 
borrowernumber=? and cancellationdate is NULL and (found != 'F' or found is 
null) order by reservedate");
+               my $query = qq/
+                       SELECT * 
+                       FROM   reserves
+                       WHERE  borrowernumber=?
+                         AND  cancellationdate IS NULL
+                         AND (found != 'F' or found is null)
+                       ORDER BY reservedate
+               /;
+               
+        my $sth_find=$dbh->prepare($query);
                $sth_find->execute($borrowernumber);    
                my @borrowerreserv;
-               my $i=0;
                while (my $data=$sth_find->fetchrow_hashref){
-                       $borrowerreserv[$i]=$data;
-                       $i++;
+            push @borrowerreserv,$data;
                }
-               $sth_find->finish;
-               return (@borrowerreserv);
+        return @borrowerreserv;
        }
-
 }
 
-
-
 =item FindReserves
 
-  ($count, $results) = &FindReserves($biblionumber, $borrowernumber);
+  $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
@@ -236,12 +288,11 @@
 
 C<&FindReserves> returns a two-element array:
 
-C<$count> is the number of elements in C<$results>.
-
 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 FindReserves {
     my ($bib, $bor) = @_;
@@ -249,8 +300,8 @@
     my @bind;
 
     # Find the desired items in the reserves
-    my $query = '
-SELECT branchcode,
+    my $query = qq/
+               SELECT  branchcode,
        timestamp AS rtimestamp,
        priority,
        biblionumber,
@@ -261,25 +312,25 @@
   FROM reserves
   WHERE cancellationdate IS NULL
     AND        (found <> \'F\' OR found IS NULL)
-';
+       /;
 
     if ($bib ne '') {
         $query.= '
     AND biblionumber = ?
-';
+               ';
         push @bind, $bib;
     }
 
     if ($bor ne '') {
         $query.= '
     AND borrowernumber = ?
-';
+               ';
         push @bind, $bor;
     }
 
     $query.= '
   ORDER BY priority
-';
+       ';
     my $sth=$dbh->prepare($query);
     $sth->execute(@bind);
     my @results;
@@ -288,12 +339,12 @@
         # FIXME - What is this if-statement doing? How do constraints work?
         if ($data->{constrainttype} eq 'o') {
             $query = '
-SELECT biblioitemnumber
+                               SELECT biblioitemnumber
   FROM reserveconstraints
   WHERE biblionumber   = ?
     AND borrowernumber = ?
     AND reservedate    = ?
-';
+                       ';
             my $csth=$dbh->prepare($query);
             $csth->execute(
                 $data->{biblionumber},
@@ -333,18 +384,28 @@
     return($#results+1,address@hidden);
 }
 
-sub GetNumberReservesFromBorrower {
+#-------------------------------------------------------------------------------------
+
+=item CountReservesFromBorrower
+
+$number = &CountReservesFromBorrower($borrowernumber);
+
+this function returns the number of reservation for a borrower given on input 
arg.
+
+=cut
+
+sub CountReservesFromBorrower {
     my ($borrowernumber) = @_;
 
     my $dbh = C4::Context->dbh;
 
     my $query = '
-SELECT COUNT(*) AS counter
+               SELECT COUNT(*) AS counter
   FROM reserves
   WHERE borrowernumber = ?
     AND cancellationdate IS NULL
     AND (found != \'F\' OR found IS NULL)
-';
+       ';
     my $sth = $dbh->prepare($query);
     $sth->execute($borrowernumber);
     my $row = $sth->fetchrow_hashref;
@@ -353,26 +414,37 @@
     return $row->{counter};
 }
 
+#-------------------------------------------------------------------------------------
+
+=item GetFirstReserveDateFromItem
+
+$date = GetFirstReserveDateFromItem($itemnumber)
+
+this function returns the first date a item has been reserved.
+
+=cut
+
 sub GetFirstReserveDateFromItem {
     my ($itemnumber) = @_;
 
     my $dbh = C4::Context->dbh;
 
     my $query = '
-SELECT reservedate
+               SELECT reservedate
   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;
-    $sth->finish;
 
     return $row->{reservedate};
 }
 
+#-------------------------------------------------------------------------------------
+
 =item CheckReserves
 
   ($status, $reserve) = &CheckReserves($itemnumber, $barcode);
@@ -403,38 +475,46 @@
 table in the Koha database.
 
 =cut
+
 #'
 sub CheckReserves {
     my ($item, $barcode) = @_;
-#    warn "In CheckReserves: itemnumber = $item";
+       # warn "In CheckReserves: itemnumber = $item";
     my $dbh = C4::Context->dbh;
     my $sth;
     if ($item) {
        my $qitem=$dbh->quote($item);
        # Look up the item by itemnumber
-       $sth=$dbh->prepare("SELECT items.biblionumber, items.biblioitemnumber, 
itemtypes.notforloan
+               my $query =qq/
+                       SELECT items.biblionumber, items.biblioitemnumber, 
itemtypes.notforloan
                              FROM items, biblioitems, itemtypes
                             WHERE items.biblioitemnumber = 
biblioitems.biblioitemnumber
                               AND biblioitems.itemtype = itemtypes.itemtype
-                              AND itemnumber=$qitem");
+                AND itemnumber=$qitem
+               /;
+       $sth=$dbh->prepare($query);
     } else {
        my $qbc=$dbh->quote($barcode);
        # Look up the item by barcode
-       $sth=$dbh->prepare("SELECT items.biblionumber, items.biblioitemnumber, 
itemtypes.notforloan
+               my $query = qq(
+                       SELECT items.biblionumber, items.biblioitemnumber, 
itemtypes.notforloan
                              FROM items, biblioitems, itemtypes
                             WHERE items.biblioitemnumber = 
biblioitems.biblioitemnumber
                               AND biblioitems.itemtype = itemtypes.itemtype
-                              AND barcode=$qbc");
+              AND barcode=$qbc
+               );
+       $sth=$dbh->prepare($query);
        # FIXME - This function uses $item later on. Ought to set it here.
     }
     $sth->execute;
     my ($biblio, $bibitem, $notforloan) = $sth->fetchrow_array;
     $sth->finish;
-# if item is not for loan it cannot be reserved either.....
-    return (0, 0) if ($notforloan);
-# get the reserves...
+       # if item is not for loan it cannot be reserved either.....
+    return (0,0) if $notforloan;
+       # get the reserves...
     # Find this item in the reserves
-    my ($count, @reserves) = Findgroupreserve($bibitem, $biblio);
+    my @reserves = Findgroupreserve($bibitem, $biblio);
+       my $count = scalar @reserves;
     # $priority and $highest are used to find the most important item
     # in the list returned by &Findgroupreserve. (The lower $priority,
     # the more important the item.)
@@ -470,6 +550,8 @@
     }
 }
 
+#-------------------------------------------------------------------------------------
+
 =item CancelReserve
 
   &CancelReserve($biblionumber, $itemnumber, $borrowernumber);
@@ -487,19 +569,24 @@
 priorities of the other people who are waiting on the book.
 
 =cut
+
 #'
 sub CancelReserve {
     my ($biblio, $item, $borr) = @_;
     my $dbh = C4::Context->dbh;
-    #warn "In CancelReserve";
+       
     if (($item and $borr) and (not $biblio)) {
                # removing a waiting reserve record....
                # update the database...
-               my $sth = $dbh->prepare("update reserves set cancellationdate = 
now(),
+               my $query = qq/
+                       UPDATE reserves
+                       SET    cancellationdate = now(),
                                                                                
        found            = Null,
                                                                                
        priority         = 0
-                                                                       where 
itemnumber       = ?
-                                                                               
and borrowernumber   = ?");
+            WHERE  itemnumber       = ?
+             AND   borrowernumber   = ?
+               /;
+        my $sth = $dbh->prepare($query);
                $sth->execute($item,$borr);
                $sth->finish;
     }
@@ -507,23 +594,29 @@
                # removing a reserve record....
                # get the prioritiy on this record....
                my $priority;
-               my $sth=$dbh->prepare("SELECT priority FROM reserves
+               my $query = qq/
+                       SELECT priority FROM reserves
                                                                                
WHERE biblionumber   = ?
                                                                                
AND borrowernumber = ?
-                                                                               
AND cancellationdate is NULL
-                                                                               
AND (found <> 'F' or found is NULL)");
+              AND cancellationdate IS NULL
+              AND (found <> 'F' OR found IS NULL)
+               /;
+        my $sth=$dbh->prepare($query);
                $sth->execute($biblio,$borr);
                ($priority) = $sth->fetchrow_array;
                $sth->finish;
-
-               # update the database, removing the record...
-               $sth = $dbh->prepare("update reserves set cancellationdate = 
now(),
+               $query = qq/
+                       UPDATE reserves
+                       SET    cancellationdate = now(),
                                                                                
        found            = Null,
                                                                                
        priority         = 0
-                                                                       where 
biblionumber     = ?
-                                                                               
and borrowernumber   = ?
-                                                                               
and cancellationdate is NULL
-                                                                               
and (found <> 'F' or found is NULL)");
+            WHERE  biblionumber     = ?
+              AND  borrowernumber   = ?
+              AND cancellationdate IS NULL
+              AND (found <> 'F' or found IS NULL)
+               /;
+        # update the database, removing the record...
+        $sth = $dbh->prepare($query);
                $sth->execute($biblio,$borr);
                $sth->finish;
                # now fix the priority on the others....
@@ -531,6 +624,8 @@
     }
 }
 
+#-------------------------------------------------------------------------------------
+
 =item FillReserve
 
   &FillReserve($reserve);
@@ -542,21 +637,21 @@
 whose keys are fields from the reserves table in the Koha database.
 
 =cut
+
 #'
 sub FillReserve {
     my ($res) = @_;
     my $dbh = C4::Context->dbh;
 
     # fill in a reserve record....
-    # FIXME - Remove some of the redundancy here
-    my $biblio = $res->{'biblionumber'}; my $qbiblio =$biblio;
+       my $qbiblio = $res->{'biblionumber'};
     my $borr = $res->{'borrowernumber'}; 
     my $resdate = $res->{'reservedate'}; 
 
     # get the priority on this record....
     my $priority;
-    {
-    my $query = "SELECT priority FROM reserves
+    my $query = "SELECT priority
+                                FROM   reserves
                                 WHERE biblionumber   = ?
                                   AND borrowernumber = ?
                                   AND reservedate    = ?";
@@ -564,58 +659,73 @@
     $sth->execute($qbiblio,$borr,$resdate);
     ($priority) = $sth->fetchrow_array;
     $sth->finish;
-    }
 
     # update the database...
-    {
-    my $query = "UPDATE reserves SET found            = 'F',
+    my $query = "UPDATE reserves
+                                SET    found            = 'F',
                                      priority         = 0
                                WHERE biblionumber     = ?
                                  AND reservedate      = ?
-                                 AND borrowernumber   = ?";
+                    AND borrowernumber   = ?
+                               ";
     my $sth = $dbh->prepare($query);
     $sth->execute($qbiblio,$resdate,$borr);
     $sth->finish;
-    }
 
     # now fix the priority on the others (if the priority wasn't
     # already sorted!)....
     unless ($priority == 0) {
-       fixpriority($priority, $biblio);
+       FixPriority($priority, $qbiblio);
     }
 }
 
-# Only used internally + reorder_reserve.pl
-# 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
-sub fixpriority {
+#-------------------------------------------------------------------------------------
+
+=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;
 
-    warn "BIB: $biblio, BORR: $borrowernumber, RANK: $rank";
     if($rank eq "del"){
-        warn "Cancel";
         CancelReserve($biblio,undef,$borrowernumber);
     }
     if($rank eq "W" || $rank eq "0"){
         # make sure priority for waiting items is 0
-        my $sth=$dbh->prepare("UPDATE reserves SET priority = 0
+               my $query = qq/
+                       UPDATE reserves
+                       SET    priority = 0
                          WHERE biblionumber = ?
                          AND borrowernumber = ?
-                         AND cancellationdate is NULL
-                         AND found ='W'");
+              AND cancellationdate IS NULL
+              AND found ='W'
+               /;
+        my $sth=$dbh->prepare($query);
     $sth->execute($biblio,$borrowernumber);
     }
     my @priority;
     my @reservedates;
     # get whats left
-    my $sth=$dbh->prepare("SELECT borrowernumber, reservedate, constrainttype 
FROM reserves
+       my $query = qq/
+               SELECT borrowernumber, reservedate, constrainttype
+               FROM   reserves
                          WHERE biblionumber   = ?
-                         AND cancellationdate is NULL
-                         AND ((found <> 'F' and found <> 'W') or found is 
NULL) ORDER BY priority ASC");
+          AND  cancellationdate 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);
@@ -630,7 +740,6 @@
                last;
             }
     }
-    warn "key: $key";
     # 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
@@ -638,24 +747,36 @@
           splice(@priority, $new_rank, 0, $moving_item);
     }
     # now fix the priority on those that are left....
-    for(my $j=0;$j<@priority;$j++){
- # warn "update reserves set priority = ".($j+1)." where biblionumber = 
$biblio and borrowernumber = $priority[$j]->{'borrowernumber'} ";
- # warn "and reservedate =$priority[$j]->{'reservedate'}";
-         my $sth = $dbh->prepare("UPDATE reserves SET priority = " . ($j+1 ) . 
"
+       my $query = qq/
+               UPDATE reserves
+               SET    priority = ?
                            WHERE biblionumber     = ?
                            AND borrowernumber   = ?
-                           AND reservedate = ? and found is null");
-        
$sth->execute($biblio,$priority[$j]->{'borrowernumber'},$priority[$j]->{'reservedate'});
+          AND reservedate = ?
+                 AND found IS NULL
+       /;
+       my $sth = $dbh->prepare($query);
+    for(my $j=0;$j<@priority;$j++){
+        
$sth->execute($j+1,$biblio,$priority[$j]->{'borrowernumber'},$priority[$j]->{'reservedate'});
         $sth->finish;
     }
 }
 
-# XXX - POD
+#-------------------------------------------------------------------------------------
+
+=item ReserveWaiting
+
+branchcode = &ReserveWaiting($item,$borr);
+this function set FOUND to 'W' for Waiting into the database.
+
+=cut
+
 sub ReserveWaiting {
     my ($item, $borr) = @_;
     my $dbh = C4::Context->dbh;
-# get priority and biblionumber....
-    my $sth = $dbh->prepare("SELECT reserves.priority     as priority,
+       # get priority and biblionumber....
+       my $query = qq/
+               SELECT reserves.priority as priority,
                         reserves.biblionumber as biblionumber,
                         reserves.branchcode   as branchcode,
                         reserves.timestamp     as timestamp
@@ -663,67 +784,90 @@
                      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)");
+          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....
-    $sth = $dbh->prepare("UPDATE reserves SET priority = 0, found = 'W', 
itemnumber = ?
+       # update reserves record....
+       $query = qq/
+               UPDATE reserves
+               SET    priority = 0,
+                      found = 'W',
+                          itemnumber = ?
                             WHERE borrowernumber = ?
                               AND biblionumber = ?
-                              AND timestamp = ?");
+          AND timestamp = ?
+       /;
+    $sth = $dbh->prepare($query);
     $sth->execute($item,$borr,$biblio,$timestamp);
     $sth->finish;
-# now fix up the remaining priorities....
-    fixpriority($data->{'priority'}, $biblio);
+       # now fix up the remaining priorities....
+    FixPriority($data->{'priority'}, $biblio);
     my $branchcode = $data->{'branchcode'};
     return $branchcode;
 }
 
-# XXX - POD
-sub CheckWaiting {
+#-------------------------------------------------------------------------------------
+
+=item GetWaitingReserves
+
address@hidden($borr);
+
+this funtion fetch the list of waiting reserves from database.
+
+=cut
+
+sub GetWaitingReserves {
     my ($borr)address@hidden;
     my $dbh = C4::Context->dbh;
     my @itemswaiting;
-    my $sth = $dbh->prepare("SELECT * FROM reserves
+       my $query = qq/
+               SELECT * 
+               FROM reserves
                          WHERE borrowernumber = ?
                            AND reserves.found = 'W'
-                           AND cancellationdate is NULL");
+          AND cancellationdate IS NULL
+       /;
+    my $sth = $dbh->prepare($query);
     $sth->execute($borr);
     while (my $data=$sth->fetchrow_hashref) {
          push(@itemswaiting,$data);
     }
     $sth->finish;
-    return (scalar(@itemswaiting),address@hidden);
+    return address@hidden;
 }
 
+#-------------------------------------------------------------------------------------
+
 =item Findgroupreserve
 
-  ($count, @results) = &Findgroupreserve($biblioitemnumber, $biblionumber);
+  @results = &Findgroupreserve($biblioitemnumber, $biblionumber);
 
+****** FIXME ******
 I don't know what this does, because I don't understand how reserve
 constraints work. I think the idea is that you reserve a particular
 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).
 
-C<&Findgroupreserve> returns a two-element array:
-
-C<$count> is the number of elements in C<@results>.
-
+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
+
 #'
 sub Findgroupreserve {
   my ($bibitem,$biblio)address@hidden;
   my $dbh = C4::Context->dbh;
-  my $sth=$dbh->prepare("SELECT reserves.biblionumber               AS 
biblionumber,
+       my $query = qq/
+               SELECT reserves.biblionumber AS biblionumber,
                       reserves.borrowernumber             AS borrowernumber,
                       reserves.reservedate                AS reservedate,
                       reserves.branchcode                 AS branchcode,
@@ -734,27 +878,36 @@
                       reserves.timestamp                  AS timestamp,
                       reserveconstraints.biblioitemnumber AS biblioitemnumber,
                       reserves.itemnumber                 AS itemnumber
-                 FROM reserves LEFT JOIN reserveconstraints
-                   ON reserves.biblionumber = reserveconstraints.biblionumber
+        FROM reserves
+                 LEFT JOIN reserveconstraints ON reserves.biblionumber = 
reserveconstraints.biblionumber
                 WHERE reserves.biblionumber = ?
                   AND ( ( reserveconstraints.biblioitemnumber = ?
                       AND reserves.borrowernumber = 
reserveconstraints.borrowernumber
                       AND reserves.reservedate    
=reserveconstraints.reservedate )
                    OR reserves.constrainttype='a' )
                   AND reserves.cancellationdate is NULL
-                  AND (reserves.found <> 'F' or reserves.found is NULL)");
+          AND (reserves.found <> 'F' or reserves.found is NULL)
+       /;
+       my $sth=$dbh->prepare($query);
   $sth->execute($biblio, $bibitem);
   my @results;
   while (my $data=$sth->fetchrow_hashref){
     push(@results,$data);
   }
   $sth->finish;
-  return(scalar(@results),@results);
+       return @results;
 }
 
-# FIXME - A somewhat different version of this function appears in
-# C4::Reserves. Pick one and stick with it.
-# XXX - POD
+
+=item CreateReserve
+
+CreateReserve($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)
+
+FIXME - A somewhat different version of this function appears in
+C4::Reserves. Pick one and stick with it.
+
+=cut
+
 sub CreateReserve {
   my 
($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)=
 @_;
   my $fee;
@@ -775,19 +928,27 @@
   #eval {
   # updates take place here
   if ($fee > 0) {
-#    print $fee;
     my $nextacctno = &getnextacctno($env,$borrnum,$dbh);
-    my $usth = $dbh->prepare("insert into accountlines
+       my $query =qq/
+               INSERT INTO accountlines
     
(borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding)
-                                                         values
-    (?,?,now(),?,?,'Res',?)");
+        VALUES
+               (?,?,now(),?,?,'Res',?)
+       /;
+    my $usth = $dbh->prepare($query);
     $usth->execute($borrnum,$nextacctno,$fee,"Reserve Charge - $title",$fee);
     $usth->finish;
   }
   #if ($const eq 'a'){
-    my $sth = $dbh->prepare("insert into reserves
-   
(borrowernumber,biblionumber,reservedate,branchcode,constrainttype,priority,reservenotes,itemnumber,found,waitingdate)
-    values (?,?,?,?,?,?,?,?,?,?)");
+       my $query = qq/
+               INSERT INTO reserves
+                       
(borrowernumber,biblionumber,reservedate,branchcode,constrainttype,
+                       priority,reservenotes,itemnumber,found,waitingdate)
+       VALUES
+                        (?,?,?,?,?,
+                        ?,?,?,?,?)
+       /;
+    my $sth = $dbh->prepare($query);
     
$sth->execute($borrnum,$biblionumber,$resdate,$branch,$const,$priority,$notes,$checkitem,$found,$waitingdate);
     $sth->finish;
   #}
@@ -796,31 +957,37 @@
     my $i = 0;
     while ($i < $numitems) {
       my $biblioitem = @$bibitems[$i];
-      my $sth = $dbh->prepare("insert into
-      reserveconstraints
+         my $query = qq/
+               INSERT INTO reserveconstraints
       (borrowernumber,biblionumber,reservedate,biblioitemnumber)
-      values (?,?,?,?)");
+       VALUES
+                       (?,?,?,?)
+         /;
+      my $sth = $dbh->prepare("");
       $sth->execute($borrnum,$biblionumber,$resdate,$biblioitem);
       $sth->finish;
       $i++;
     }
   }
-#  print $query;
-  return();
+  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 ($env,$borrnum,$biblionumber,$constraint,$bibitems) = @_;
   #check for issues;
   my $dbh = C4::Context->dbh;
   my $const = lc substr($constraint,0,1);
-  my $sth = $dbh->prepare("SELECT * FROM borrowers,categories
-                WHERE (borrowernumber = ?)
-                  AND (borrowers.categorycode = categories.categorycode)");
+  my $query = qq/
+       SELECT * FROM borrowers,categories
+    WHERE borrowernumber = ?
+      AND borrowers.categorycode = categories.categorycode
+       /;
+  my $sth = $dbh->prepare($query);
   $sth->execute($borrnum);
   my $data = $sth->fetchrow_hashref;
   $sth->finish();
@@ -934,10 +1101,12 @@
   return $fee;
 }
 
+=item GetNextAccountNumber
 
+GetNextAccountNumber()
 
-# XXX - Internal use
-sub getnextacctno {
+=cut
+sub GetNextAccountNumber {
   my ($env,$bornumber,$dbh)address@hidden;
   my $nextaccntno = 1;
   my $sth = $dbh->prepare("select * from accountlines
@@ -951,42 +1120,14 @@
   return($nextaccntno);
 }
 
-# XXX - POD
-sub updatereserves{
-  #subroutine to update a reserve
-  my ($rank,$biblio,$borrower,$del,$branch)address@hidden;
-  my $dbh = C4::Context->dbh;
-  if ($del == 0){
-    my $sth = $dbh->prepare("Update reserves set priority=?,branchcode=? where
-    biblionumber=? and borrowernumber=?");
-    $sth->execute($rank,$branch,$biblio,$borrower);
-    $sth->finish();
-  } else {
-    my $sth=$dbh->prepare("Select * from reserves where biblionumber=? and
-    borrowernumber=?");
-    $sth->execute($biblio,$borrower);
-    my $data=$sth->fetchrow_hashref;
-    $sth->finish();
-    $sth=$dbh->prepare("Select * from reserves where biblionumber=? and
-    priority > ? and cancellationdate is NULL
-    order by priority") || die $dbh->errstr;
-    $sth->execute($biblio,$data->{'priority'}) || die $sth->errstr;
-    while (my $data=$sth->fetchrow_hashref){
-      $data->{'priority'}--;
-      my $sth3=$dbh->prepare("Update reserves set priority=?
-      where biblionumber=? and borrowernumber=?");
-      
$sth3->execute($data->{'priority'},$data->{'biblionumber'},$data->{'borrowernumber'})
 || die $sth3->errstr;
-      $sth3->finish();
-    }
-    $sth->finish();
-    $sth=$dbh->prepare("update reserves set cancellationdate=now() where 
biblionumber=?
-    and borrowernumber=?");
-    $sth->execute($biblio,$borrower);
-    $sth->finish;
-  }
-}
+#-------------------------------------------------------------------------------------
+
+=item UpdateReserve
+
+&UpdateReserve($rank,$biblio,$borrower,$branch)
+
+=cut
 
-# XXX - POD
 sub UpdateReserve {
     #subroutine to update a reserve
     my ($rank,$biblio,$borrower,$branch)address@hidden;
@@ -994,35 +1135,61 @@
     return if $rank eq "n";
     my $dbh = C4::Context->dbh;
     if ($rank eq "del") {
-       my $sth=$dbh->prepare("UPDATE reserves SET cancellationdate=now()
+               my $query = qq/
+                       UPDATE reserves
+                       SET    cancellationdate=now()
                                    WHERE biblionumber   = ?
                                      AND borrowernumber = ?
                                     AND cancellationdate is NULL
-                                     AND (found <> 'F' or found is NULL)");
+             AND   (found <> 'F' or found is NULL)
+               /;
+       my $sth=$dbh->prepare($query);
        $sth->execute($biblio, $borrower);
        $sth->finish;
     } else {
-       my $sth=$dbh->prepare("UPDATE reserves SET priority = ? ,branchcode = 
?, itemnumber = NULL, found = NULL
+               my $query = qq/
+                       UPDATE reserves SET priority = ? ,branchcode = ?, 
itemnumber = NULL, found = NULL
                                    WHERE biblionumber   = ?
                                      AND borrowernumber = ?
                                     AND cancellationdate is NULL
-                                     AND (found <> 'F' or found is NULL)");
+             AND (found <> 'F' or found is NULL)
+               /;
+       my $sth=$dbh->prepare($query);
        $sth->execute($rank, $branch, $biblio, $borrower);
        $sth->finish;
     }
 }
 
-# XXX - POD
-sub getreservetitle {
+=item GetReserveTitle
+
+$data = GetReserveTitle($biblio,$bor,$date,$timestamp);
+
+=cut
+
+sub GetReserveTitle {
  my ($biblio,$bor,$date,$timestamp)address@hidden;
  my $dbh = C4::Context->dbh;
- my $sth=$dbh->prepare("Select * from reserveconstraints,biblioitems where
- reserveconstraints.biblioitemnumber=biblioitems.biblioitemnumber
- and reserveconstraints.biblionumber=? and reserveconstraints.borrowernumber
- = ? and reserveconstraints.reservedate=? and
- reserveconstraints.timestamp=?");
+       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);
+       return $data;
 }
+
+=back
+
+=head1 AUTHOR
+
+Koha Developement team <address@hidden>
+
+=cut
+

Index: circ/circulation.pl
===================================================================
RCS file: /sources/koha/koha/circ/circulation.pl,v
retrieving revision 1.97.2.2
retrieving revision 1.97.2.3
diff -u -b -r1.97.2.2 -r1.97.2.3
--- circ/circulation.pl 13 Sep 2006 08:21:23 -0000      1.97.2.2
+++ circ/circulation.pl 20 Sep 2006 15:47:49 -0000      1.97.2.3
@@ -161,7 +161,8 @@
         #borrowercard expired
         $template->param( warndeparture => $warning );
     }
-    my ($reserved_num,$reserved_waiting) = CheckWaiting($borrowernumber);
+    my $reserved_waiting = GetWaitingReserves($borrowernumber);
+       my $reserved_num = scalar @$reserved_waiting;
     if ($reserved_num > 0) {
            for (my $i = 0; $i < $reserved_num; $i++) {
                      my ($count,$line) = 
getbiblio($reserved_waiting->[$i]->{'biblionumber'});
@@ -237,7 +238,7 @@
 if ($borrowernumber) {
 # new op dev
 # now we show the status of the borrower's reservations
-       my @borrowerreserv = FastFindReserves(0,$borrowernumber);
+       my @borrowerreserv = GetReservations(0,$borrowernumber);
        my @reservloop;
        foreach my $num_res (@borrowerreserv) {
                my %getreserv;

Index: circ/currenttransfers.pl
===================================================================
RCS file: /sources/koha/koha/circ/currenttransfers.pl,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -b -r1.3 -r1.3.2.1
--- circ/currenttransfers.pl    21 Jul 2006 10:10:29 -0000      1.3
+++ circ/currenttransfers.pl    20 Sep 2006 15:47:49 -0000      1.3.2.1
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: currenttransfers.pl,v 1.3 2006/07/21 10:10:29 toins Exp $
+# $Id: currenttransfers.pl,v 1.3.2.1 2006/09/20 15:47:49 toins Exp $
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -91,7 +91,7 @@
                                $getransf{'itemcallnumber'} = 
$gettitle->{'itemcallnumber'};
 
 #                              we check if we have a reserv for this transfer
-                               my @checkreserv = 
FastFindReserves($num->{'itemnumber'});
+                               my @checkreserv = 
GetReservations($num->{'itemnumber'});
                                if (@checkreserv[0]){
                                        my $getborrower = getpatroninformation 
(\%env,$checkreserv[1]);
                                        $getransf{'borrowernum'} = 
$getborrower->{'borrowernumber'};

Index: reserve/modrequest.pl
===================================================================
RCS file: /sources/koha/koha/reserve/modrequest.pl,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -b -r1.2 -r1.2.2.1
--- reserve/modrequest.pl       19 May 2006 17:05:11 -0000      1.2
+++ reserve/modrequest.pl       20 Sep 2006 15:47:49 -0000      1.2.2.1
@@ -23,7 +23,6 @@
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
-#use DBI;
 use C4::Search;
 use CGI;
 use C4::Output;

Index: reserve/placerequest.pl
===================================================================
RCS file: /sources/koha/koha/reserve/placerequest.pl,v
retrieving revision 1.3.2.1
retrieving revision 1.3.2.2
diff -u -b -r1.3.2.1 -r1.3.2.2
--- reserve/placerequest.pl     30 Aug 2006 16:38:51 -0000      1.3.2.1
+++ reserve/placerequest.pl     20 Sep 2006 15:47:49 -0000      1.3.2.2
@@ -22,7 +22,6 @@
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
-#use DBI;
 use C4::Search;
 use C4::Biblio;
 use CGI;

Index: reserve/request.pl
===================================================================
RCS file: /sources/koha/koha/reserve/request.pl,v
retrieving revision 1.6.2.2
retrieving revision 1.6.2.3
diff -u -b -r1.6.2.2 -r1.6.2.3
--- reserve/request.pl  31 Aug 2006 13:28:52 -0000      1.6.2.2
+++ reserve/request.pl  20 Sep 2006 15:47:49 -0000      1.6.2.3
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: request.pl,v 1.6.2.2 2006/08/31 13:28:52 alaurin Exp $
+# $Id: request.pl,v 1.6.2.3 2006/09/20 15:47:49 toins Exp $
 
 #script to place reserves/requests
 #writen 2/1/00 by address@hidden
@@ -101,7 +101,7 @@
 # FIXME At this time we have a simple count of reservs, but, later, we could 
improve the infos "title" ...
 
         my $number_reserves =
-            GetNumberReservesFromBorrower($borrowerinfo->{'borrowernumber'});
+            CountReservesFromBorrower($borrowerinfo->{'borrowernumber'});
 
         if ($number_reserves > C4::Context->preference('maxreserves')) {
             $maxreserves = 1;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]