[Koha-cvs] koha/C4 Bull.pm [dev_week]

Joshua Ferraro jmf at kados.org
Tue Jul 11 15:44:20 CEST 2006


CVSROOT:	/sources/koha
Module name:	koha
Branch:		dev_week
Changes by:	Joshua Ferraro <kados>	06/07/11 13:44:20

Modified files:
	C4             : Bull.pm 

Log message:
	sync with rel_2_2

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Bull.pm?cvsroot=koha&only_with_tag=dev_week&r1=1.6.2.22&r2=1.6.2.22.2.1

Patches:
Index: Bull.pm
===================================================================
RCS file: /sources/koha/koha/C4/Attic/Bull.pm,v
retrieving revision 1.6.2.22
retrieving revision 1.6.2.22.2.1
diff -u -b -r1.6.2.22 -r1.6.2.22.2.1
--- Bull.pm	4 Apr 2006 13:15:50 -0000	1.6.2.22
+++ Bull.pm	11 Jul 2006 13:44:20 -0000	1.6.2.22.2.1
@@ -110,33 +110,33 @@
 sub newsubscription {
 	my ($auser,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber,
 		$startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength,
-		$add1,$every1,$whenmorethan1,$setto1,$lastvalue1,
-		$add2,$every2,$whenmorethan2,$setto2,$lastvalue2,
-		$add3,$every3,$whenmorethan3,$setto3,$lastvalue3,
+		$add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1,
+		$add2,$every2,$whenmorethan2,$setto2,$lastvalue2,$innerloop2,
+		$add3,$every3,$whenmorethan3,$setto3,$lastvalue3,$innerloop3,
 		$numberingmethod, $status, $notes) = @_;
 	my $dbh = C4::Context->dbh;
 	#save subscription
 	my $sth=$dbh->prepare("insert into subscription (librarian,aqbooksellerid,cost,aqbudgetid,biblionumber,
 							startdate,periodicity,dow,numberlength,weeklength,monthlength,
-							add1,every1,whenmorethan1,setto1,lastvalue1,
-							add2,every2,whenmorethan2,setto2,lastvalue2,
-							add3,every3,whenmorethan3,setto3,lastvalue3,
+							add1,every1,whenmorethan1,setto1,lastvalue1,innerloop1,
+							add2,every2,whenmorethan2,setto2,lastvalue2,innerloop2,
+							add3,every3,whenmorethan3,setto3,lastvalue3,innerloop3,
 							numberingmethod, status, notes) values 
 							(?,?,?,?,?,?,?,?,?,
 							 ?,?,?,?,?,?,?,?,?,?,
-							 ?,?,?,?,?,?,?,?,?,?)");
+							 ?,?,?,?,?,?,?,?,?,?,?,?,?)");
 	$sth->execute($auser,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber,
 					format_date_in_iso($startdate),$periodicity,$dow,$numberlength,$weeklength,$monthlength,
-					$add1,$every1,$whenmorethan1,$setto1,$lastvalue1,
-					$add2,$every2,$whenmorethan2,$setto2,$lastvalue2,
-					$add3,$every3,$whenmorethan3,$setto3,$lastvalue3,
+					$add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1,
+					$add2,$every2,$whenmorethan2,$setto2,$lastvalue2,$innerloop2,
+					$add3,$every3,$whenmorethan3,$setto3,$lastvalue3,$innerloop3,
 	 				$numberingmethod, $status, $notes);
 	#then create the 1st waited number
 	my $subscriptionid = $dbh->{'mysql_insertid'};
 	$sth = $dbh->prepare("insert into subscriptionhistory (biblionumber, subscriptionid, histstartdate, enddate, missinglist, recievedlist, opacnote, librariannote) values (?,?,?,?,?,?,?,?)");
 	$sth->execute($biblionumber, $subscriptionid, format_date_in_iso($startdate), 0, "", "", "", $notes);
 	# reread subscription to get a hash (for calculation of the 1st issue number)
-	$sth = $dbh->prepare("select * from subscription where subscriptionid = ? ");
+	$sth = $dbh->prepare("SELECT * from subscription where subscriptionid = ? ");
 	$sth->execute($subscriptionid);
 	my $val = $sth->fetchrow_hashref;
 
@@ -150,7 +150,7 @@
 sub getsubscription {
 	my ($subscriptionid) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare('select subscription.*,subscriptionhistory.*,aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle 
+	my $sth = $dbh->prepare('SELECT subscription.*,subscriptionhistory.*,aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle 
 							from subscription 
 							left join subscriptionhistory on subscription.subscriptionid=subscriptionhistory.subscriptionid
 							left join aqbudget on subscription.aqbudgetid=aqbudget.aqbudgetid 
@@ -165,7 +165,7 @@
 sub getsubscriptionfrombiblionumber {
 	my ($biblionumber) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare('select count(*) from subscription where biblionumber=?');
+	my $sth = $dbh->prepare('SELECT count(*) from subscription where biblionumber=?');
 	$sth->execute($biblionumber);
 	my $subscriptionsnumber = $sth->fetchrow;
 	return $subscriptionsnumber;
@@ -174,7 +174,7 @@
 sub get_subscription_list_from_biblionumber {
 	my ($biblionumber) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare('select subscription.*,subscriptionhistory.*,  aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle 
+	my $sth = $dbh->prepare('SELECT subscription.*,subscriptionhistory.*,  aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle 
 							from subscription 
 							left join subscriptionhistory on subscription.subscriptionid=subscriptionhistory.subscriptionid
 							left join aqbudget on subscription.aqbudgetid=aqbudget.aqbudgetid 
@@ -204,12 +204,18 @@
 sub get_full_subscription_list_from_biblionumber {
 	my ($biblionumber) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare('select serial.serialseq, serial.planneddate, serial.status, serial.notes, year(serial.planneddate) as year, aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle 
-							from serial left join subscription on (serial.subscriptionid=subscription.subscriptionid and subscription.biblionumber=serial.biblionumber)
-							left join aqbudget on subscription.aqbudgetid=aqbudget.aqbudgetid 
-							left join aqbooksellers on subscription.aqbooksellerid=aqbooksellers.id 
-							left join biblio on biblio.biblionumber=subscription.biblionumber 
-							where subscription.biblionumber = ? order by year,serial.subscriptionid,serial.planneddate');
+  my $sth = $dbh->prepare('
+  SELECT serial.serialseq,serial.planneddate, serial.publisheddate, serial.status, serial.notes,
+    year(serial.publisheddate) as year,
+    aqbudget.bookfundid,aqbooksellers.name as aqbooksellername,biblio.title as bibliotitle
+  FROM serial 
+        LEFT JOIN subscription ON 
+          (serial.subscriptionid=subscription.subscriptionid AND subscription.biblionumber=serial.biblionumber)
+        LEFT JOIN aqbudget ON subscription.aqbudgetid=aqbudget.aqbudgetid 
+        LEFT JOIN aqbooksellers on subscription.aqbooksellerid=aqbooksellers.id 
+        LEFT JOIN biblio on biblio.biblionumber=subscription.biblionumber 
+  WHERE subscription.biblionumber = ? 
+  ORDER BY year,serial.publisheddate,serial.subscriptionid,serial.planneddate');
 	$sth->execute($biblionumber);
 	my @res;
 	my $year;
@@ -220,17 +226,14 @@
 	my $first;
 	my $previousnote="";
 	while (my $subs = $sth->fetchrow_hashref) {
-# 		my $sth2 = $dbh->prepare('select * from serial where serial.biblionumber = ? and serial.subscriptionid=? order by serial.planneddate');
-# 		$sth2->execute($biblionumber,$subs->{'subscriptionid'});
-# 		while (my $issues = $sth2->fetchrow_hashref){
-# 				warn "planneddate ".$issues->{'planneddate'};
-# 				warn "serialseq".$issues->{'serialseq'};
-# 		}
+### BUG To FIX: When there is no published date, will create many null ids!!!
+
 		if ($year and ($year==$subs->{year})){
 			if ($first eq 1){$first=0;}
 			my $temp=$res[scalar(@res)-1]->{'serials'};
 			push @$temp,
-				{'planneddate' => format_date($subs->{'planneddate'}), 
+                {'publisheddate' =>format_date($subs->{'publisheddate'}),
+                'planneddate' => format_date($subs->{'planneddate'}), 
 				'serialseq' => $subs->{'serialseq'},
 				"status".$subs->{'status'} => 1,
 				'notes' => $subs->{'notes'} eq $previousnote?"":$subs->{notes},
@@ -243,7 +246,8 @@
 			$bibliotitle= $subs->{'bibliotitle'};
 			my @temp;
 			push @temp,
-				{'planneddate' => format_date($subs->{'planneddate'}), 
+				{'publisheddate' =>format_date($subs->{'publisheddate'}),
+                'planneddate' => format_date($subs->{'planneddate'}), 
 				'serialseq' => $subs->{'serialseq'},
 				"status".$subs->{'status'} => 1,
 				'notes' => $subs->{'notes'} eq $previousnote?"":$subs->{notes},
@@ -301,24 +305,24 @@
 	my $dbh = C4::Context->dbh;
 	my $sth;
 	if ($biblionumber) {
-		$sth = $dbh->prepare("select subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and biblio.biblionumber=? order by title");
+		$sth = $dbh->prepare("SELECT subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and biblio.biblionumber=? order by title");
 		$sth->execute($biblionumber);
 	} else {
 		if ($ISSN and $title)
 		{
-			$sth = $dbh->prepare("select subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and (biblio.title like ? or biblioitems.issn = ? order by title )");
+			$sth = $dbh->prepare("SELECT subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and (biblio.title like ? or biblioitems.issn = ? order by title )");
 			$sth->execute("%$title%",$ISSN);
 		}
 		else
 		{
 			if ($ISSN)
 			{
-				$sth = $dbh->prepare("select subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and biblioitems.issn = ? order by title");
+				$sth = $dbh->prepare("SELECT subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and biblio.biblionumber=subscription.biblionumber and biblioitems.issn = ? order by title");
 				$sth->execute($ISSN);
 			}
 			else
 			{
-				$sth = $dbh->prepare("select subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and
+				$sth = $dbh->prepare("SELECT subscription.subscriptionid,biblio.title,biblioitems.issn,subscription.notes,biblio.biblionumber from subscription,biblio,biblioitems where  biblio.biblionumber = biblioitems.biblionumber and
  biblio.biblionumber=subscription.biblionumber and biblio.title like ?  order by title");
 				$sth->execute("%$title%");
 			}
@@ -345,7 +349,10 @@
 sub modsubscriptionhistory {
 	my ($subscriptionid,$histstartdate,$enddate,$recievedlist,$missinglist,$opacnote,$librariannote)=@_;
 	my $dbh=C4::Context->dbh;
-	my $sth = $dbh->prepare("update subscriptionhistory set histstartdate=?,enddate=?,recievedlist=?,missinglist=?,opacnote=?,librariannote=? where subscriptionid=?");
+	my $sth = $dbh->prepare("
+  UPDATE subscriptionhistory 
+  SET histstartdate=?,enddate=?,recievedlist=?,missinglist=?,opacnote=?,librariannote=? 
+  WHERE subscriptionid=?");
 	$recievedlist =~ s/^,//g;
 	$missinglist =~ s/^,//g;
 	$opacnote =~ s/^,//g;
@@ -358,27 +365,36 @@
 	my ($subscriptionid) = @_;
 	my $dbh = C4::Context->dbh;
 	# OK, now add the last 5 issues arrives/missing
-	my $sth=$dbh->prepare("select serialid,serialseq, status, planneddate,notes from serial where subscriptionid = ? and (status in (2,4,5)) order by serialid DESC");
+	my $sth=$dbh->prepare("
+  SELECT serialid,serialseq, status, publisheddate,planneddate,notes 
+  FROM serial 
+  WHERE subscriptionid = ? AND (status IN (2,4,5)) 
+  ORDER BY serialid DESC");
 	$sth->execute($subscriptionid);
 	my $counter=0;
 	my @serials;
 	while((my $line = $sth->fetchrow_hashref) && $counter <5) {
 		$counter++;
 		$line->{"status".$line->{status}} = 1; # fills a "statusX" value, used for template status select list
+		$line->{"publisheddate"} = format_date($line->{"publisheddate"});
 		$line->{"planneddate"} = format_date($line->{"planneddate"});
 		push @serials,$line;
 	}
 	
 	# status = 2 is "arrived"
-	my $sth=$dbh->prepare("select serialid,serialseq, status, planneddate,notes from serial where subscriptionid = ? and status <>2 and status <>4 and status <>5");
+	my $sth=$dbh->prepare("
+  SELECT serialid,serialseq, status, publisheddate, planneddate,notes 
+  FROM serial 
+  WHERE subscriptionid = ? AND status NOT IN (2,4,5)");
 	$sth->execute($subscriptionid);
 	my @serials;
 	while(my $line = $sth->fetchrow_hashref) {
 		$line->{"status".$line->{status}} = 1; # fills a "statusX" value, used for template status select list
+		$line->{"publisheddate"} = format_date($line->{"publisheddate"});
 		$line->{"planneddate"} = format_date($line->{"planneddate"});
 		push @serials,$line;
 	}
-	$sth=$dbh->prepare("select count(*) from serial where subscriptionid=?");
+	$sth=$dbh->prepare("SELECT count(*) FROM serial WHERE subscriptionid=?");
 	$sth->execute($subscriptionid);
 	my ($totalissues) = $sth->fetchrow;
 	return ($totalissues, at serials);
@@ -389,7 +405,7 @@
 	my ($subscriptionid,$limit) =@_;
 	my $dbh = C4::Context->dbh;
 	# status = 2 is "arrived"
-	my $strsth="select serialid,serialseq, status, planneddate from serial where subscriptionid = ? and (status =2 or status=4) order by planneddate DESC LIMIT 0,$limit";
+	my $strsth="SELECT serialid,serialseq, status, planneddate FROM serial WHERE subscriptionid = ? AND (status =2 or status=4) ORDER BY planneddate DESC LIMIT 0,$limit";
 	my $sth=$dbh->prepare($strsth);
 	$sth->execute($subscriptionid);
 	my @serials;
@@ -398,27 +414,27 @@
 		$line->{"planneddate"} = format_date($line->{"planneddate"});
 		push @serials,$line;
 	}
-	$sth=$dbh->prepare("select count(*) from serial where subscriptionid=?");
+	$sth=$dbh->prepare("SELECT count(*) from serial where subscriptionid=?");
 	$sth->execute($subscriptionid);
 	my ($totalissues) = $sth->fetchrow;
 	return \@serials;
 }
 
 sub serialchangestatus {
-	my ($serialid,$serialseq,$planneddate,$status,$notes)=@_;
+	my ($serialid,$serialseq, $publisheddate,$planneddate,$status,$notes)=@_;
 # 	warn "($serialid,$serialseq,$planneddate,$status)";
 	# 1st, get previous status : if we change from "waited" to something else, then we will have to create a new "waited" entry
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare("select subscriptionid,status from serial where serialid=?");
+	my $sth = $dbh->prepare("SELECT subscriptionid,status from serial where serialid=?");
 	$sth->execute($serialid);
 	my ($subscriptionid,$oldstatus) = $sth->fetchrow;
 	# change status & update subscriptionhistory
 	if ($status eq 6){
 		delissue($serialseq, $subscriptionid) 
 	}else{
-		$sth = $dbh->prepare("update serial set serialseq=?,planneddate=?,status=?,notes=? where serialid = ?");
-		$sth->execute($serialseq,$planneddate,$status,$notes,$serialid);
-		$sth = $dbh->prepare("select missinglist,recievedlist from subscriptionhistory where subscriptionid=?");
+		$sth = $dbh->prepare("update serial set serialseq=?,publisheddate=?,planneddate=?,status=?,notes=? where serialid = ?");
+		$sth->execute($serialseq,$publisheddate,$planneddate,$status,$notes,$serialid);
+		$sth = $dbh->prepare("SELECT missinglist,recievedlist from subscriptionhistory where subscriptionid=?");
 		$sth->execute($subscriptionid);
 		my ($missinglist,$recievedlist) = $sth->fetchrow;
 		if ($status eq 2) {
@@ -431,14 +447,14 @@
 	}
 	# create new waited entry if needed (ie : was a "waited" and has changed)
 	if ($oldstatus eq 1 && $status ne 1) {
-		$sth = $dbh->prepare("select * from subscription where subscriptionid = ? ");
+		$sth = $dbh->prepare("SELECT * from subscription where subscriptionid = ? ");
 		$sth->execute($subscriptionid);
 		my $val = $sth->fetchrow_hashref;
 		# next issue number
 		my ($newserialseq,$newlastvalue1,$newlastvalue2,$newlastvalue3,$newinnerloop1,$newinnerloop2,$newinnerloop3) = Get_Next_Seq($val);
 		# next date (calculated from actual date & frequency parameters)
-		my $nextplanneddate = Get_Next_Date($planneddate,$val);
-		newissue($newserialseq, $subscriptionid, $val->{'biblionumber'}, 1, $nextplanneddate);
+		my $nextpublisheddate = Get_Next_Date($publisheddate,$val);
+		newissue($newserialseq, $subscriptionid, $val->{'biblionumber'}, 1, $nextpublisheddate,0);
 		$sth = $dbh->prepare("update subscription set lastvalue1=?, lastvalue2=?,lastvalue3=?,
 														innerloop1=?,innerloop2=?,innerloop3=?
 														where subscriptionid = ?");
@@ -447,11 +463,14 @@
 }
 
 sub newissue {
-	my ($serialseq,$subscriptionid,$biblionumber,$status, $planneddate) = @_;
+	my ($serialseq,$subscriptionid,$biblionumber,$status, $publisheddate, $planneddate) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare("insert into serial (serialseq,subscriptionid,biblionumber,status, planneddate) values (?,?,?,?,?)");
-	$sth->execute($serialseq,$subscriptionid,$biblionumber,$status, $planneddate);
-	$sth = $dbh->prepare("select missinglist,recievedlist from subscriptionhistory where subscriptionid=?");
+	my $sth = $dbh->prepare("
+  INSERT INTO serial 
+    (serialseq,subscriptionid,biblionumber,status,publisheddate,planneddate) 
+  VALUES (?,?,?,?,?,?)");
+	$sth->execute($serialseq,$subscriptionid,$biblionumber,$status,$publisheddate, $planneddate);
+	$sth = $dbh->prepare("SELECT missinglist,recievedlist from subscriptionhistory where subscriptionid=?");
 	$sth->execute($subscriptionid);
 	my ($missinglist,$recievedlist) = $sth->fetchrow;
 	if ($status eq 2) {
@@ -672,7 +691,7 @@
 	my $subscription = getsubscription($subscriptionid);
 	# we don't do the same test if the subscription is based on X numbers or on X weeks/months
 	if ($subscription->{numberlength}) {
-		my $sth = $dbh->prepare("select count(*) from serial where subscriptionid=?  and planneddate>=?");
+		my $sth = $dbh->prepare("SELECT count(*) from serial where subscriptionid=?  and planneddate>=?");
 		$sth->execute($subscriptionid,$subscription->{startdate});
 		my $res = $sth->fetchrow;
 		if ($subscription->{numberlength}>=$res) {
@@ -682,7 +701,7 @@
 		}
 	} else {
 		#a little bit more tricky if based on X weeks/months : search if the latest issue waited is not after subscription startdate + duration
-		my $sth = $dbh->prepare("select max(planneddate) from serial where subscriptionid=?");
+		my $sth = $dbh->prepare("SELECT max(planneddate) from serial where subscriptionid=?");
 		$sth->execute($subscriptionid);
 		my $res = ParseDate(format_date_in_iso($sth->fetchrow));
 		my $endofsubscriptiondate;
@@ -717,12 +736,12 @@
 	my ($subscriptionid,$user,$startdate,$numberlength,$weeklength,$monthlength,$note) = @_;
 	my $dbh = C4::Context->dbh;
 	my $subscription = getsubscription($subscriptionid);
-	my $sth = $dbh->prepare("select * from biblio,biblioitems where biblio.biblionumber=biblioitems.biblionumber and biblio.biblionumber=?");
+	my $sth = $dbh->prepare("SELECT * from biblio,biblioitems where biblio.biblionumber=biblioitems.biblionumber and biblio.biblionumber=?");
 	$sth->execute($subscription->{biblionumber});
 	my $biblio = $sth->fetchrow_hashref;
-	newsuggestion($user,$subscription->{bibliotitle},$biblio->{author},$biblio->{publishercode},$biblio->{note},,,,,$subscription->{biblionumber});
+	newsuggestion($user,$subscription->{bibliotitle},$biblio->{author},$biblio->{publishercode},$biblio->{note},'','','','','',$subscription->{biblionumber});
 	# renew subscription
-	$sth=$dbh->prepare("update subscription set startdate=?,numberlength=?,weeklength=?,monthlength=?");
-	$sth->execute(format_date_in_iso($startdate),$numberlength,$weeklength,$monthlength);
+	$sth=$dbh->prepare("update subscription set startdate=?,numberlength=?,weeklength=?,monthlength=? where subscriptionid=?");
+	$sth->execute(format_date_in_iso($startdate),$numberlength,$weeklength,$monthlength, $subscriptionid);
 }
 END { }       # module clean-up code here (global destructor)





More information about the Koha-cvs mailing list