X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUpgrade.pm;h=ce0e328fda8b0805b69804688ef4f194a1731e41;hb=8fdc0ea36474cfb3d1389f41691c14598559cbe7;hp=056b80b4c8ca84e8da73cdb5ac3a6527801821f4;hpb=91dbe4c3834f38d428367d9a1e2c6cf9ea9d84a4;p=freeside.git diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index 056b80b4c..ce0e328fd 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -8,6 +8,7 @@ use File::Slurp; use FS::UID qw( dbh driver_name ); use FS::Conf; use FS::Record qw(qsearchs qsearch str2time_sql); +use FS::queue; use FS::upgrade_journal; use FS::svc_domain; @@ -86,11 +87,32 @@ sub upgrade_config { # if there's a USPS tools login, assume that's the standardization method # you want to use - if ( length($conf->config('usps_webtools-userid')) > 0 and - !$conf->exists('address_standardize_method') ) { - $conf->set('address_standardize_method', 'usps'); + $conf->set('address_standardize_method', 'usps') + if $conf->exists('usps_webtools-userid') + && length($conf->config('usps_webtools-userid')) > 0 + && ! $conf->exists('address_standardize_method'); + + # this option has been renamed/expanded + if ( $conf->exists('cust_main-enable_spouse_birthdate') ) { + $conf->touch('cust_main-enable_spouse'); + $conf->delete('cust_main-enable_spouse_birthdate'); } + # renamed/repurposed + if ( $conf->exists('cust_pkg-show_fcc_voice_grade_equivalent') ) { + $conf->touch('part_pkg-show_fcc_options'); + $conf->delete('cust_pkg-show_fcc_voice_grade_equivalent'); + warn " +You have FCC Form 477 package options enabled. + +Starting with the October 2014 filing date, the FCC has redesigned +Form 477 and introduced new service categories. See bin/convert-477-options +to update your package configuration for the new report. + +If you need to continue using the old Form 477 report, turn on the +'old_fcc_report' configuration option. +"; + } } sub upgrade_overlimit_groups { @@ -132,6 +154,9 @@ sub upgrade { local $FS::UID::AutoCommit = 0; local $FS::UID::AutoCommit = 0; + local $FS::cust_pkg::upgrade = 1; #go away after setup+start dates cleaned up for old customers + + foreach my $table ( keys %$data ) { my $class = "FS::$table"; @@ -145,6 +170,26 @@ sub upgrade { $class->_upgrade_data(%opt); + # New interface for async upgrades: a class can declare a + # "queueable_upgrade" method, which will run as part of the normal + # upgrade, but if the -j option is passed, will instead be run from + # the job queue. + if ( $class->can('queueable_upgrade') ) { + my $jobname = $class . '::queueable_upgrade'; + my $num_jobs = FS::queue->count("job = '$jobname' and status != 'failed'"); + if ($num_jobs > 0) { + warn "$class upgrade already scheduled.\n"; + } else { + if ( $opt{'queue'} ) { + warn "Scheduling $class upgrade.\n"; + my $job = FS::queue->new({ job => $jobname }); + $job->insert($class, %opt); + } else { + $class->queueable_upgrade(%opt); + } + } #$num_jobs == 0 + } + if ( $oldAutoCommit ) { warn " committing\n"; dbh->commit or die dbh->errstr; @@ -314,6 +359,9 @@ sub upgrade_data { #fix taxable line item links 'cust_bill_pkg_tax_location' => [], + + #populate state FIPS codes if not already done + 'state' => [], ; \%hash;