From: mark Date: Wed, 8 Dec 2010 00:36:18 +0000 (+0000) Subject: fix incorrect bill dates from prorate, RT#10830 X-Git-Tag: TORRUS_1_0_9~29 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=df2bf964527e0b5596af471b1b7d84d14305b2a2 fix incorrect bill dates from prorate, RT#10830 --- diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index a946de4da..e3f4777aa 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -3329,9 +3329,21 @@ sub bulk_change { sub _upgrade_data { # class method my ($class, %opts) = @_; $class->_upgrade_otaker(%opts); - my $sql =('UPDATE cust_pkg SET contract_end = NULL WHERE contract_end = -1'); - my $sth = dbh->prepare($sql); - $sth->execute or die $sth->errstr; + my @statements = ( + # RT#10139, bug resulting in contract_end being set when it shouldn't + 'UPDATE cust_pkg SET contract_end = NULL WHERE contract_end = -1', + # RT#10830, bad calculation of prorate date near end of year + # the date range for bill is December 2009, and we move it forward + # one year if it's before the previous bill date (which it should + # never be) + 'UPDATE cust_pkg SET bill = bill + (365*24*60*60) WHERE bill < last_bill + AND bill > 1259654400 AND bill < 1262332800 AND (SELECT plan FROM part_pkg + WHERE part_pkg.pkgpart = cust_pkg.pkgpart) = \'prorate\'', + ); + foreach my $sql (@statements) { + my $sth = dbh->prepare($sql); + $sth->execute or die $sth->errstr; + } } =back