koha-cvs
[Top][All Lists]
Advanced

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

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


From: paul poulain
Subject: [Koha-cvs] koha/C4 Bull.pm [R_2-2-7-1]
Date: Fri, 23 Feb 2007 08:25:47 +0000

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;
        }




reply via email to

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