[Koha-cvs] koha/circ reserve.pl [dev_week]

Ryan Higgins rch at liblime.com
Thu Jan 11 07:47:32 CET 2007


CVSROOT:	/sources/koha
Module name:	koha
Branch:		dev_week
Changes by:	Ryan Higgins <rych>	07/01/11 06:47:32

Modified files:
	circ           : reserve.pl 

Log message:
	adding 'get from stacks' and 'remove from reserveshelf' lists

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/circ/reserve.pl?cvsroot=koha&only_with_tag=dev_week&r1=1.1.2.6.2.2&r2=1.1.2.6.2.3

Patches:
Index: reserve.pl
===================================================================
RCS file: /sources/koha/koha/circ/reserve.pl,v
retrieving revision 1.1.2.6.2.2
retrieving revision 1.1.2.6.2.3
diff -u -b -r1.1.2.6.2.2 -r1.1.2.6.2.3
--- reserve.pl	15 Dec 2006 23:52:09 -0000	1.1.2.6.2.2
+++ reserve.pl	11 Jan 2007 06:47:32 -0000	1.1.2.6.2.3
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# $Id: reserve.pl,v 1.1.2.6.2.2 2006/12/15 23:52:09 rych Exp $
+# $Id: reserve.pl,v 1.1.2.6.2.3 2007/01/11 06:47:32 rych Exp $
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -22,6 +22,7 @@
 use strict;
 use C4::Context;
 use C4::Output;
+use C4::Search;
 use CGI;
 use HTML::Template;
 use C4::Auth;
@@ -32,32 +33,24 @@
 my $order=$input->param('order');
 my $startdate=$input->param('from');
 my $enddate=$input->param('to');
+my $op = $input->param('op');
+my $borrowernumber=$input->param('borrower');
+my $biblionumber=$input->param('biblionum');
 
 my $theme = $input->param('theme'); # only used if allowthemeoverride is set
 
+my $tmpl_name = ($op eq 'slip') ? "circ/reserve-slip.tmpl" : "circ/reserve.tmpl" ;
+
 my ($template, $loggedinuser, $cookie)
-      = get_template_and_user({template_name => "circ/reserve.tmpl",
+      = get_template_and_user({template_name => $tmpl_name,
 	                                 query => $input,
 	                                 type => "intranet",
 	                                 authnotrequired => 0,
 	                                 flagsrequired => {borrowers => 1},
 	                                 debug => 1,
 	                                 });
-# borrowernumber   	int(11) 
-# 	 reservedate  	date 	
-# 	 biblionumber  	int(11) 
-# 	 constrainttype  	char(1)
-# 	 branchcode  	varchar(4) 
-# 	 notificationdate  	date 	
-# 	 reminderdate  	date 	  	
-# 	 cancellationdate  	date 	
-# 	 reservenotes  	text 	
-# 	 priority  	smallint(6) 
-# 	 found  	char(1) 	
-# 	 timestamp  	timestamp 	  	ON UPDATE CURRENT_TIMESTAMP 	Oui  	CURRENT_TIMESTAMP  	  	Modifier 	Supprimer 	Primaire 	Index 	Unique 	Texte entier
-# 	 itemnumber  	int(11) 	
+my $dbh = C4::Context->dbh;
 my $duedate;
-my $bornum;
 my $itemnum;
 my $data1;
 my $data2;
@@ -65,52 +58,111 @@
 my $name;
 my $phone;
 my $email;
-my $biblionumber;
 my $title;
 my $author;
+
 my @datearr = localtime(time());
 my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
 my $twodaysago =  (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", ($datearr[3] - 2) );
+
+# TODO : 
+#   Add branch selector
+
+my @reservedata;
+
+if ($op eq 'cancelled') {
+
+######
+#get cancelled reserves. 
+#	we assume items.timestamp is updated before reserves.timestamp - this is because cancelling a 'W' reserve doesn't change the 'W', and returning such an item doesn't change reserves table.  so this ignores cancelled reserves that have already been pulled from the reserves shelf.
+
+my $sthCancel= $dbh->prepare("select reserves.borrowernumber, reserves.biblionumber, reserves.itemnumber, itemcallnumber, barcode, firstname, surname, biblio.title, reservedate  from reserves, biblio, borrowers, items where reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber && reserves.itemnumber=items.itemnumber && reserves.timestamp > items.timestamp  && found = 'W' && cancellationdate is not null");
+
+$sthCancel->execute();
+#( $bornum, $bibnum, $itemnum, $itemcallnum , $barcode, $firstname, $surname, $title )
+while ( my $cancelled =  $sthCancel->fetchrow_hashref() ) {
+	push @reservedata ,  $cancelled ;
+}
+$template->param( cancelledreserves => 1 );
+
+} elsif ($op eq 'open') {
+
+#get biblionumbers with open reserves.
+my $sthAll= $dbh->prepare("select reserves.biblionumber, count(borrowernumber), title, author, reservenotes from reserves, biblio where reserves.biblionumber=biblio.biblionumber && found is null && priority > 0 && cancellationdate is null group by reserves.biblionumber ");
+
+## Find items on shelf
+my $sthItems = $dbh->prepare("select items.biblionumber, items.itemnumber, barcode, itemcallnumber, location from items left join issues USING (itemnumber) where  ( items.notforloan = 0 || items.notforloan is null ) && ( items.itemlost = 0 || items.itemlost is null  ) && items.biblionumber = ? && ( issues.returndate is not null || issues.itemnumber is null ) && items.itemnumber not in ( select itemnumber from reserves where biblionumber= ? && found = 'W' ) ");
+
+$sthAll->execute();
+my $item_info;
+while ( my ($bibnum, $numreserves, $title, $author, $notes) = $sthAll->fetchrow_array) {
+	$sthItems->execute($bibnum,$bibnum);
+	my %reserve = ( biblionumber => $bibnum,  title => $title, author =>$author, numreserves =>$numreserves , notes => $notes );
+	my @resloop;
+	while ( my $res = $sthItems->fetchrow_hashref()) {
+		warn "Bib: ($bibnum,$numreserves) - $res->{barcode} ";
+		push  @resloop, $res ;
+	}	
+	warn scalar @resloop ;
+	if (scalar @resloop > 0) { 
+		$reserve{iteminfo} = \@resloop ;	
+		push  @reservedata, \%reserve ;
+	}
+}
+$template->param( openreserves => 1 );
+
+} else {
+
 $startdate = $twodaysago unless ($startdate);
 $enddate = $todaysdate unless ($enddate);
 
-my $dbh = C4::Context->dbh;
-my ($sqlorderby, $sqldatewhere) = ("","");
+my ($sqlorderby, $sqldatewhere, $sqlwhowhere) = ("","", "");
+
+if ($op eq 'slip') {
+	$sqlwhowhere .= " && reserves.borrowernumber = " . $dbh->quote($borrowernumber) ;
+	$sqlwhowhere .= " && reserves.biblionumber = " . $dbh->quote($biblionumber) ;
+} else {
 
-$sqldatewhere .= " && reservedate >= " . $dbh->quote($startdate)  if ($startdate) ;
-$sqldatewhere .= " && reservedate <= " . $dbh->quote($enddate)  if ($enddate) ;
+	$sqldatewhere .= " && reservedate >= " . $dbh->quote($startdate)  if ($startdate) ;
+	$sqldatewhere .= " && reservedate <= " . $dbh->quote($enddate)  if ($enddate) ;
 
-if ($order eq "borrower") {
-	$sqlorderby = " order by  borrower, reservedate";
-} elsif ($order eq "biblio") {
+	if ($order eq "borrower") {
+		$sqlorderby = " order by  surname, reservedate";
+	} elsif ($order eq "biblio") {
 	$sqlorderby = " order by biblio.title, priority,reservedate";
-} else {
-	$sqlorderby = " order by reservedate, borrower";
+	} else {
+		$sqlorderby = " order by reservedate, surname";
+	}
 }
 
-my $strsth="select reservedate,reserves.borrowernumber as bornum, concat(firstname,' ',surname) as borrower, borrowers.phone, borrowers.emailaddress,reserves.biblionumber, reserves.branchcode as branch, items.holdingbranch, items.itemcallnumber, items.itemnumber, notes, notificationdate, reminderdate, priority, reserves.found, biblio.title, biblio.author from reserves left join items on items.itemnumber=reserves.itemnumber, borrowers,biblio where isnull(cancellationdate) && reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber " . $sqldatewhere . $sqlorderby ;
+my $strsth="select reservedate,reserves.borrowernumber as bornum, firstname,surname , borrowers.phone,phoneday, borrowers.emailaddress, borrowers.streetaddress, borrowers.cardnumber, borrowers.city, borrowers.zipcode, reserves.biblionumber, reserves.branchcode as branch, items.holdingbranch, items.itemcallnumber, items.itemnumber, barcode, notes, notificationdate, reminderdate, priority, reserves.found, biblio.title, biblio.author from reserves left join items on items.itemnumber=reserves.itemnumber, borrowers,biblio where isnull(cancellationdate) && reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber  " . $sqlwhowhere . $sqldatewhere . $sqlorderby ;
 
-#my $sth=$dbh->prepare($strsth);
-warn "".$strsth;
-my $sth = $dbh->prepare($strsth) or die $dbh->errstr;
+my $sth = $dbh->prepare($strsth); # or die $dbh->errstr;
 $sth->execute();
 
-my @reservedata;
 while (my $data=$sth->fetchrow_hashref) {
   push (@reservedata, 
 			{
 				reservedate  => format_date($data->{reservedate}),
 				priority	 => $data->{priority},
-				name         => $data->{borrower},
+				name         => "$data->{firstname} $data->{surname}",
+				firstname	=>	$data->{firstname},
+				surname 	=> 	$data->{surname},
 				title        => $data->{title},
 				author       => $data->{author},
 				bornum       => $data->{bornum},
+				barcode		=> $data->{barcode},
 				itemnum      => $data->{itemnumber},
 				phone        => $data->{phone},
+				phoneday        => $data->{phoneday},
+				city		=> $data->{city},
+				zip        => $data->{zipcode},
+				streetaddress      => $data->{streetaddress},
+				cardnumber      => $data->{cardnumber},
 				email        => $data->{email},
 				biblionumber => $data->{biblionumber},
-				statusw		 => ($data->{found} eq "w"),
-				statusf		 => ($data->{found} eq "f"),
+				statusw		 => ($data->{found} eq "W"),
+				statusf		 => ($data->{found} eq "F"),
 				holdingbranch		 => $data->{holdingbranch},
 				branch		 => $data->{branch},
 				itemcallnumber => $data->{itemcallnumber},
@@ -124,6 +176,7 @@
 }
 
 $sth->finish;
+} # endif op
 
 $template->param(todaysdate        => format_date($todaysdate),
 		from		=> $startdate,





More information about the Koha-cvs mailing list