[Koha-cvs] koha/C4 Bull.pm [R_2-2-7-1]

paul poulain paul at koha-fr.org
Fri Feb 23 09:25:47 CET 2007


CVSROOT:	/sources/koha
Module name:	koha
Branch:		R_2-2-7-1
Changes by:	paul poulain <tipaul>	07/02/23 08:25:47

Modified files:
	C4             : Bull.pm 

Log message:
	BUGFIX : the date calculations for subscription were wrong. Seems it is a long lasting bug, bug why nobody had it before ???
	* The DateCalc returns YYYYMMDDHH:MM:SS, and format_date_in_iso can't handle that
	* the ParseDate, when getting a nn-mm-YYYY date handle it as US by default (MM-DD-YYYY), making a big problem for franch libraries. Thus, I use the date to iso (YYYY-MM-DD) that don't have this problem
	
	HDL : please review. A last error => seems the subscription end calculation don't work.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Bull.pm?cvsroot=koha&only_with_tag=R_2-2-7-1&r1=1.6.2.34&r2=1.6.2.34.2.1

Patches:
Index: Bull.pm
===================================================================
RCS file: /sources/koha/koha/C4/Attic/Bull.pm,v
retrieving revision 1.6.2.34
retrieving revision 1.6.2.34.2.1
diff -u -b -r1.6.2.34 -r1.6.2.34.2.1
--- Bull.pm	26 Sep 2006 10:04:06 -0000	1.6.2.34
+++ Bull.pm	23 Feb 2007 08:25:47 -0000	1.6.2.34.2.1
@@ -142,8 +142,8 @@
 
 	# calculate issue number
 	my $serialseq = Get_Seq($val);
-	$sth = $dbh->prepare("insert into serial (serialseq,subscriptionid,biblionumber,status, planneddate) values (?,?,?,?,?)");
-	$sth->execute($serialseq, $subscriptionid, $val->{'biblionumber'}, 1, format_date_in_iso($startdate));
+	$sth = $dbh->prepare("insert into serial (serialseq,subscriptionid,biblionumber,status, planneddate,publisheddate) values (?,?,?,?,?,?)");
+    $sth->execute($serialseq, $subscriptionid, $val->{'biblionumber'}, 1, format_date_in_iso($startdate), format_date_in_iso($startdate));
 	return $subscriptionid;
 }
 
@@ -612,6 +612,7 @@
 sub Get_Next_Date(@) {
 	my ($planneddate,$subscription) = @_;
 	my $resultdate;
+#     $planneddate = format_date($planneddate);
 	if ($subscription->{periodicity} == 1) {
 		$resultdate=DateCalc($planneddate,"1 day");
 	}
@@ -645,7 +646,9 @@
 	if ($subscription->{periodicity} == 11) {
 		$resultdate=DateCalc($planneddate,"2 years");
 	}
-    return format_date_in_iso($resultdate);
+    $resultdate =~ /(....)(..)(..)/;
+    $resultdate="$1-$2-$3";
+    return $resultdate;
 }
 
 sub Get_Seq {
@@ -710,10 +713,12 @@
 		#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=?");
 		$sth->execute($subscriptionid);
-		my $res = ParseDate(format_date_in_iso($sth->fetchrow));
+        my ($planneddate) = $sth->fetchrow;
+		my $res = ParseDate($planneddate);
 		my $endofsubscriptiondate;
-		$endofsubscriptiondate = DateCalc(format_date_in_iso($subscription->{startdate}),$subscription->{monthlength}." months") if ($subscription->{monthlength});
-		$endofsubscriptiondate = DateCalc(format_date_in_iso($subscription->{startdate}),$subscription->{weeklength}." weeks") if ($subscription->{weeklength});
+		$endofsubscriptiondate = DateCalc($subscription->{startdate},"+".$subscription->{monthlength}." months") if ($subscription->{monthlength});
+		$endofsubscriptiondate = DateCalc($subscription->{startdate},"+".$subscription->{weeklength}." weeks") if ($subscription->{weeklength});
+#         warn "res $res ($planneddate) : end : $endofsubscriptiondate ".$subscription->{startdate}." ".$subscription->{monthlength}." months";
 		return 1 if ($res >= $endofsubscriptiondate);
 		return 0;
 	}





More information about the Koha-cvs mailing list