koha-cvs
[Top][All Lists]
Advanced

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

[Koha-cvs] koha C4/Reserves2.pm request.pl modrequest.pl p... [rel_2_2]


From: Chris Cormack
Subject: [Koha-cvs] koha C4/Reserves2.pm request.pl modrequest.pl p... [rel_2_2]
Date: Thu, 19 Apr 2007 22:54:58 +0000

CVSROOT:        /sources/koha
Module name:    koha
Branch:         rel_2_2
Changes by:     Chris Cormack <rangi>   07/04/19 22:54:58

Modified files:
        C4             : Reserves2.pm 
        .              : request.pl modrequest.pl placerequest.pl 
        koha-tmpl/intranet-tmpl/npl/en: request.tmpl 

Log message:
        Allowing item level reserves
        You must have itemlevelreserves set to 1 in system preferences for this 
to work, otherwise the default behaviour occurs
        Currently its working in circulation and you can place and remove 
reserves in the librarian interface
        Next I have to get the opac going, plus serials

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Reserves2.pm?cvsroot=koha&only_with_tag=rel_2_2&r1=1.38.2.1&r2=1.38.2.2
http://cvs.savannah.gnu.org/viewcvs/koha/request.pl?cvsroot=koha&only_with_tag=rel_2_2&r1=1.28.2.5&r2=1.28.2.6
http://cvs.savannah.gnu.org/viewcvs/koha/modrequest.pl?cvsroot=koha&only_with_tag=rel_2_2&r1=1.6&r2=1.6.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/placerequest.pl?cvsroot=koha&only_with_tag=rel_2_2&r1=1.4&r2=1.4.4.1
http://cvs.savannah.gnu.org/viewcvs/koha/koha-tmpl/intranet-tmpl/npl/en/request.tmpl?cvsroot=koha&only_with_tag=rel_2_2&r1=1.3.2.2&r2=1.3.2.3

Patches:
Index: C4/Reserves2.pm
===================================================================
RCS file: /sources/koha/koha/C4/Reserves2.pm,v
retrieving revision 1.38.2.1
retrieving revision 1.38.2.2
diff -u -b -r1.38.2.1 -r1.38.2.2
--- C4/Reserves2.pm     3 Aug 2006 03:53:16 -0000       1.38.2.1
+++ C4/Reserves2.pm     19 Apr 2007 22:54:58 -0000      1.38.2.2
@@ -3,7 +3,7 @@
 
 package C4::Reserves2;
 
-# $Id: Reserves2.pm,v 1.38.2.1 2006/08/03 03:53:16 kados Exp $
+# $Id: Reserves2.pm,v 1.38.2.2 2007/04/19 22:54:58 rangi Exp $
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -232,7 +232,7 @@
     return (0, 0) if ($notforloan);
 # get the reserves...
     # Find this item in the reserves
-    my ($count, @reserves) = Findgroupreserve($bibitem, $biblio);
+    my ($count, @reserves) = Findgroupreserve($bibitem, $biblio,$item);
     # $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.)
@@ -245,7 +245,12 @@
            # might be searching by barcode.
            if ($res->{'itemnumber'} == $item) {
                # Found it
+               if (C4::Context->preference('itemlevelreserves') && 
$res->{'Found'} ne 'W'){
+                   return ("Reserved", $res);
+                   }
+               else {                                                          
    
                return ("Waiting", $res);
+                   }
            } else {
                # See if this item is more important than what we've got
                # so far.
@@ -473,9 +478,34 @@
 =cut
 #'
 sub Findgroupreserve {
-  my ($bibitem,$biblio)address@hidden;
+  my ($bibitem,$biblio,$itemnumber)address@hidden;
   my $dbh = C4::Context->dbh;
-  my $sth=$dbh->prepare("SELECT reserves.biblionumber               AS 
biblionumber,
+    my $sth;
+    if (C4::Context->preference('itemlevelreserves')){
+       warn "finding group reserves for $itemnumber";
+       $sth=$dbh->prepare("SELECT reserves.biblionumber               AS 
biblionumber,
+                      reserves.borrowernumber             AS borrowernumber,
+                      reserves.reservedate                AS reservedate,
+                      reserves.branchcode                 AS branchcode,
+                      reserves.cancellationdate           AS cancellationdate,
+                      reserves.found                      AS found,
+                      reserves.reservenotes               AS reservenotes,
+                      reserves.priority                   AS priority,
+                      reserves.timestamp                  AS timestamp,
+                      reserves.itemnumber                 AS itemnumber
+                 FROM reserves
+                WHERE (( reserves.biblionumber = ?
+                  AND reserves.itemnumber = ? AND reserves.constrainttype = ?)
+                  OR (reserves.biblionumber = ? AND reserves.constrainttype = 
?))
+                  AND (reserves.found <> 'F' or reserves.found is NULL)
+                  AND cancellationdate is NULL
+                  ");
+        $sth->execute($biblio,$itemnumber,'o',$biblio,'a');
+
+
+    }
+    else {
+   $sth=$dbh->prepare("SELECT reserves.biblionumber               AS 
biblionumber,
                       reserves.borrowernumber             AS borrowernumber,
                       reserves.reservedate                AS reservedate,
                       reserves.branchcode                 AS branchcode,
@@ -496,6 +526,7 @@
                   AND reserves.cancellationdate is NULL
                   AND (reserves.found <> 'F' or reserves.found is NULL)");
   $sth->execute($biblio, $bibitem);
+    }
   my @results;
   while (my $data=$sth->fetchrow_hashref){
     push(@results,$data);
@@ -509,16 +540,14 @@
 # XXX - POD
 sub CreateReserve {
   my
-($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title)=
 @_;
+($env,$branch,$borrnum,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$itemnumbers)=
 @_;
   my $fee=CalcReserveFee($env,$borrnum,$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];
-  #eval {
   # updates take place here
   if ($fee > 0) {
-#    print $fee;
     my $nextacctno = &getnextacctno($env,$borrnum,$dbh);
     my $usth = $dbh->prepare("insert into accountlines
     
(borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding)
@@ -527,13 +556,30 @@
     $usth->execute($borrnum,$nextacctno,$fee,'Reserve Charge -'.$title,$fee);
     $usth->finish;
   }
-  #if ($const eq 'a'){
+  if (C4::Context->preference('itemlevelreserves')){      
+      my $sth = $dbh->prepare("INSERT INTO reserves
+  
(borrowernumber,biblionumber,reservedate,branchcode,constrainttype,priority,reservenotes,itemnumber)
+  VALUES
+  (?,?,?,?,?,?,?,?)
+  ");
+   if ($constraint ne 'a'){  
+      foreach my $item (@$bibitems){
+         
$sth->execute($borrnum,$biblionumber,$branch,$resdate,$const,$priority,$notes,$item);
+         $priority++;
+         }
+      $sth->finish();
+   }
+   else {
+                 
$sth->execute($borrnum,$biblionumber,$branch,$resdate,$const,$priority,$notes,'');
+         $priority++;
+       }     
+  }
+  else {  
     my $sth = $dbh->prepare("insert into reserves
    
(borrowernumber,biblionumber,reservedate,branchcode,constrainttype,priority,reservenotes)
     values (?,?,?,?,?,?,?)");
     
$sth->execute($borrnum,$biblionumber,$resdate,$branch,$const,$priority,$notes);
     $sth->finish;
-  #}
   if (($const eq "o") || ($const eq "e")) {
     my $numitems = @$bibitems;
     my $i = 0;
@@ -548,6 +594,7 @@
       $i++;
     }
   }
+  }
 #  print $query;
   return();
 }
@@ -653,7 +700,7 @@
 # XXX - POD
 sub updatereserves{
   #subroutine to update a reserve
-  my ($rank,$biblio,$borrower,$del,$branch)address@hidden;
+  my ($rank,$biblio,$borrower,$del,$branch,$itemnumber)address@hidden;
   my $dbh = C4::Context->dbh;
   if ($del == 0){
     my $sth = $dbh->prepare("Update reserves set priority=?,branchcode=? where
@@ -678,21 +725,36 @@
       $sth3->finish();
     }
     $sth->finish();
+    if (C4::Context->preference('itemlevelreserves')){
+       $sth=$dbh->prepare("UPDATE reserves SET cancellationdate=now() WHERE 
itemnumber=? AND borrowernumber=?");
+       $sth->execute($itemnumber,$borrower);
+       $sth->finish();
+       } 
+    else {
     $sth=$dbh->prepare("update reserves set cancellationdate=now() where 
biblionumber=?
     and borrowernumber=?");
     $sth->execute($biblio,$borrower);
     $sth->finish;
   }
+  }
 }
 
 # XXX - POD
 sub UpdateReserve {
     #subroutine to update a reserve
-    my ($rank,$biblio,$borrower,$branch)address@hidden;
+    my ($rank,$biblio,$borrower,$branch,$itemnumber)address@hidden;
     return if $rank eq "W";
     return if $rank eq "n";
     my $dbh = C4::Context->dbh;
     if ($rank eq "del") {
+       if (C4::Context->preference('itemlevelreserves')){
+           my $sth=$dbh->prepare("UPDATE reserves SET cancellationdate=now() 
WHERE itemnumber=? AND borrowernumber=?
+            AND cancellationdate is NULL
+            AND (found <> 'F' or found is NULL)");
+           $sth->execute($itemnumber,$borrower);
+           $sth->finish();
+       }
+       else {
        my $sth=$dbh->prepare("UPDATE reserves SET cancellationdate=now()
                                    WHERE biblionumber   = ?
                                      AND borrowernumber = ?
@@ -700,7 +762,21 @@
                                      AND (found <> 'F' or found is NULL)");
        $sth->execute($biblio, $borrower);
        $sth->finish;
+        }
     } else {
+       if (C4::Context->preference('itemlevelreserves')){
+           my $sth=$dbh->prepare("UPDATE reserves SET priority = ? ,branchcode 
= ?
+                                   WHERE biblionumber   = ?
+                                     AND borrowernumber = ?
+                                    AND itemnumber= ?
+                                    AND cancellationdate is NULL
+                                     AND (found <> 'F' or found is NULL)");
+           $sth->execute($rank, $branch, $biblio, $borrower,$itemnumber);
+           $sth->finish;
+                    
+           }
+       else
+           {
        my $sth=$dbh->prepare("UPDATE reserves SET priority = ? ,branchcode = 
?, itemnumber = NULL, found = NULL
                                    WHERE biblionumber   = ?
                                      AND borrowernumber = ?
@@ -709,6 +785,7 @@
        $sth->execute($rank, $branch, $biblio, $borrower);
        $sth->finish;
     }
+    }
 }
 
 # XXX - POD

Index: request.pl
===================================================================
RCS file: /sources/koha/koha/Attic/request.pl,v
retrieving revision 1.28.2.5
retrieving revision 1.28.2.6
diff -u -b -r1.28.2.5 -r1.28.2.6
--- request.pl  20 Jun 2006 16:21:43 -0000      1.28.2.5
+++ request.pl  19 Apr 2007 22:54:58 -0000      1.28.2.6
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: request.pl,v 1.28.2.5 2006/06/20 16:21:43 oleonard Exp $
+# $Id: request.pl,v 1.28.2.6 2007/04/19 22:54:58 rangi Exp $
 
 #script to place reserves/requests
 #writen 2/1/00 by address@hidden
@@ -36,6 +36,7 @@
 use C4::Acquisition;
 use CGI;
 use C4::Date;
+use C4::Context;
 
 my $input = new CGI;
 my ($template, $borrowernumber, $cookie)
@@ -81,6 +82,8 @@
 # get biblioitem information and build rows for form
 my ($count2,@data) = bibitems($bib);
 
+
+
 my @bibitemloop;
 foreach my $dat (sort {$b->{'dateaccessioned'} cmp $a->{'dateaccessioned'}} 
@data) {
     $dat->{'dewey'}="" if ($dat->{'dewey'} == 0);
@@ -88,25 +91,49 @@
     $dat->{'dewey'}=~ s/\.0000$//;
     $dat->{'dewey'}=~ s/00$//;
 
-       my %abibitem;
-       my @barcodeloop;
+
     my @barcodes = barcodes($dat->{'biblioitemnumber'});
+    if (C4::Context->preference('itemlevelreserves')){
     foreach my $num (@barcodes) {
+           my %abibitem;
+           
$abibitem{'class'}="$dat->{'classification'}$dat->{'dewey'}$dat->{'subclass'}";
+           $abibitem{'itemlost'}=(($dat->{'notforloan'})|| ($dat->{'itemlost'} 
== 1)) ;
+           $abibitem{'biblioitemnumber'}=$dat->{'biblioitemnumber'};
+           $abibitem{'description'}=$dat->{'description'};
+           $abibitem{'volumeddesc'}=$dat->{'volumeddesc'};
+           $abibitem{'publicationyear'}=$dat->{'publicationyear'};
                my %barcode;
+           my @barcodeloop;
                $barcode{'barcode'}=$num->{'barcode'};
                $barcode{'message'}=$num->{'itemlost'} == 1 ? "(lost)" :
            $num->{'itemlost'} == 2 ? "(long overdue)" : "";
                push(@barcodeloop, \%barcode);
-    }
        $abibitem{'barcodeloop'address@hidden;
+           $abibitem{'biblioitemnumber'}=$num->{'itemnumber'};
+           push(@bibitemloop,\%abibitem);
+    
+       }
+    }
+    else {     
+       my @barcodeloop;
+       my %abibitem;
     
$abibitem{'class'}="$dat->{'classification'}$dat->{'dewey'}$dat->{'subclass'}";
-    my $select;
     $abibitem{'itemlost'}=(($dat->{'notforloan'})|| ($dat->{'itemlost'} == 1)) 
;
        $abibitem{'biblioitemnumber'}=$dat->{'biblioitemnumber'};
        $abibitem{'description'}=$dat->{'description'};
        $abibitem{'volumeddesc'}=$dat->{'volumeddesc'};
        $abibitem{'publicationyear'}=$dat->{'publicationyear'};
+
+       foreach my $num (@barcodes) {
+           my %barcode;
+           $barcode{'barcode'}=$num->{'barcode'};
+           $barcode{'message'}=$num->{'itemlost'} == 1 ? "(lost)" :
+           $num->{'itemlost'} == 2 ? "(long overdue)" : "";
+           push(@barcodeloop, \%barcode);
+       }
+       $abibitem{'barcodeloop'address@hidden;
        push(@bibitemloop,\%abibitem);
+    }
 }
 
 
@@ -163,6 +190,7 @@
        $reserve{'constrainttypeo'}=($res->{'constrainttype'} eq 'o');
        $reserve{'voldesc'}=$res->{'volumeddesc'};
        $reserve{'itemtype'}=$res->{'itemtype'};
+       $reserve{'itemnumber'}=$res->{'itemnumber'};
        $reserve{'branchloop'address@hidden;
        $reserve{'optionloop'address@hidden;
        push(@reserveloop,\%reserve);

Index: modrequest.pl
===================================================================
RCS file: /sources/koha/koha/Attic/modrequest.pl,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -b -r1.6 -r1.6.2.1
--- modrequest.pl       21 Jun 2004 21:40:33 -0000      1.6
+++ modrequest.pl       19 Apr 2007 22:54:58 -0000      1.6.2.1
@@ -38,12 +38,13 @@
 my @biblio=$input->param('biblio');
 my @borrower=$input->param('borrowernumber');
 my @branch=$input->param('pickup');
+my @itemnumber=$input->param('itemnumber');
 my address@hidden;
 
 # goes through and manually changes the reserves record....
 # no attempt is made to check consistency.
 for (my $i=0;$i<$count;$i++){
-    UpdateReserve($rank[$i],$biblio[$i],$borrower[$i],$branch[$i]); #from 
C4::Reserves2
+    
UpdateReserve($rank[$i],$biblio[$i],$borrower[$i],$branch[$i],$itemnumber[$i]); 
#from C4::Reserves2
 }
 
 my $from=$input->param('from');

Index: placerequest.pl
===================================================================
RCS file: /sources/koha/koha/Attic/placerequest.pl,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -u -b -r1.4 -r1.4.4.1

Index: koha-tmpl/intranet-tmpl/npl/en/request.tmpl
===================================================================
RCS file: /sources/koha/koha/koha-tmpl/intranet-tmpl/npl/en/Attic/request.tmpl,v
retrieving revision 1.3.2.2
retrieving revision 1.3.2.3
diff -u -b -r1.3.2.2 -r1.3.2.3
--- koha-tmpl/intranet-tmpl/npl/en/request.tmpl 17 Feb 2005 20:56:59 -0000      
1.3.2.2
+++ koha-tmpl/intranet-tmpl/npl/en/request.tmpl 19 Apr 2007 22:54:58 -0000      
1.3.2.3
@@ -33,7 +33,7 @@
 
        <div class="table"><table>
 <tr>
-       <!-- Hide from NPL --><th>Reserve</th><!-- /Hide from NPL -->
+       <th>Reserve</th>
        <th>Item Type</th>
        <th>Call Number</th>
        <!-- Hide from NPL --><th>Volume</th><!-- /Hide from NPL -->
@@ -49,6 +49,7 @@
                        <!-- TMPL_ELSE -->
                                <input type="checkbox" name="reqbib" value=<!-- 
TMPL_VAR Name="biblioitemnumber" -->>
                                <input type="hidden" name="biblioitem" 
value=<!-- TMPL_VAR Name="biblioitemnumber" -->>
+                               <input type="hidden" name="itemnumber" 
value="<!-- TMPL_VAR Name="itemnumber" -->">
                        <!-- /TMPL_IF -->
                </td><!-- /Hide from NPL -->
                <td>
@@ -93,6 +94,7 @@
                        <td>
                        <input type="hidden" name="borrowernumber" value="<!-- 
TMPL_VAR Name="borrowernumber" -->" />
                        <input type="hidden" name="biblio" value="<!-- TMPL_VAR 
Name="biblionumber" -->" />
+                       <input type="hidden" name="itemnumber" value="<!-- 
TMPL_VAR Name="itemnumber" -->" />
                        <select name="rank-request">
                                <!-- TMPL_IF Name="wait" -->
                                        <option value="W" 
selected="selected">Consigned</option>
@@ -137,10 +139,14 @@
                                                Next Available
                                        <!-- TMPL_ELSE -->
                                                <!-- TMPL_IF 
Name="constrainttypeo" -->
+                                                       <!-- TMPL_IF 
NAME="itemnumber" -->
+                                                            This Item only : 
<!-- TMPL_VAR NAME="itemnumber" -->
+                                                       <!-- TMPL_ELSE -->
                                                        This type only : <!-- 
TMPL_VAR Name="volumeddesc" --> <!-- TMPL_VAR Name="itemtype" -->
                                                <!-- /TMPL_IF -->
                                        <!-- /TMPL_IF -->
                                <!-- /TMPL_IF -->
+                               <!-- /TMPL_IF -->
 
                        </td><!-- /Hide from NPL -->
                </tr>




reply via email to

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