diff options
author | ivan <ivan> | 2008-05-02 01:53:51 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-05-02 01:53:51 +0000 |
commit | ac1f1ed0bcd50d5bcc81d71571535cd87fc1439a (patch) | |
tree | c10323a2c9d234c6a2d9549987ea11a4cb0857ea | |
parent | e6894dad3bf41c9d2d052244da6616cca59dc13b (diff) |
backport _upgrade_data from 1.9 for very old installs, to eliminate plan-less packages
-rw-r--r-- | FS/FS/part_pkg.pm | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index fad7af2f9..26bd3bd20 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -773,6 +773,68 @@ sub calc_cancel { 0; } =back +sub _upgrade_data { # class method + my($class, %opts) = @_; + + warn "[FS::part_pkg] upgrading $class\n" if $DEBUG; + + my @part_pkg = qsearch({ + 'table' => 'part_pkg', + 'extra_sql' => "WHERE ". join(' OR ', + ( map "($_ IS NOT NULL AND $_ != '' )", + qw( plandata setup recur ) ), + 'plan IS NULL', "plan = '' ", + ), + }); + + foreach my $part_pkg (@part_pkg) { + + unless ( $part_pkg->plan ) { + + $part_pkg->plan('flat'); + + if ( $part_pkg->setup =~ /^\s*([\d\.]+)\s*$/ ) { + + my $opt = new FS::part_pkg_option { + 'pkgpart' => $part_pkg->pkgpart, + 'optionname' => 'setup_fee', + 'optionvalue' => $1, + }; + my $error = $opt->insert; + die $error if $error; + + $part_pkg->setup(''); + + } else { + die "Can't parse part_pkg.setup for fee; convert pkgnum ". + $part_pkg->pkgnum. " manually: ". $part_pkg->setup. "\n"; + } + + if ( $part_pkg->recur =~ /^\s*([\d\.]+)\s*$/ ) { + + my $opt = new FS::part_pkg_option { + 'pkgpart' => $part_pkg->pkgpart, + 'optionname' => 'recur_fee', + 'optionvalue' => $1, + }; + my $error = $opt->insert; + die $error if $error; + + $part_pkg->recur(''); + + } else { + die "Can't parse part_pkg.setup for fee; convert pkgnum ". + $part_pkg->pkgnum. " manually: ". $part_pkg->setup. "\n"; + } + + } + + $part_pkg->replace; #this should take care of plandata, right? + + } + +} + =head1 SUBROUTINES =over 4 |