X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUpgrade.pm;h=eac8333f18beb18fefbc75dd61b7a2e4fcfd1d58;hb=573139dbd6c37808697bfa72a3a468bb0980d4dd;hp=185ba16fcb2123d2c827f708a85589c234620ec5;hpb=d9c554c746466a20bbbbc2eb69fc737cfe598316;p=freeside.git diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index 185ba16fc..eac8333f1 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -6,13 +6,13 @@ use Exporter; use Tie::IxHash; use FS::UID qw( dbh driver_name ); use FS::Conf; -use FS::Record qw(qsearchs str2time_sql); +use FS::Record qw(qsearchs qsearch str2time_sql); use FS::svc_domain; $FS::svc_domain::whois_hack = 1; @ISA = qw( Exporter ); -@EXPORT_OK = qw( upgrade_schema upgrade upgrade_sqlradius ); +@EXPORT_OK = qw( upgrade_schema upgrade_config upgrade upgrade_sqlradius ); $DEBUG = 1; @@ -33,6 +33,51 @@ database upgrades. =over 4 +=item upgrade_config + +=cut + +#config upgrades +sub upgrade_config { + my %opt = @_; + + my $conf = new FS::Conf; + + $conf->touch('payment_receipt') + if $conf->exists('payment_receipt_email') + || $conf->config('payment_receipt_msgnum'); + + upgrade_overlimit_groups($conf); + map { upgrade_overlimit_groups($conf,$_->agentnum) } qsearch('agent', {}); + +} + +sub upgrade_overlimit_groups { + my $conf = shift; + my $agentnum = shift; + my @groups = $conf->config('overlimit_groups',$agentnum); + if(scalar(@groups)) { + my $groups = join(',',@groups); + my @groupnums; + my $error = ''; + if ( $groups !~ /^[\d,]+$/ ) { + foreach my $groupname ( @groups ) { + my $g = qsearchs('radius_group', { 'groupname' => $groupname } ); + unless ( $g ) { + $g = new FS::radius_group { + 'groupname' => $groupname, + 'description' => $groupname, + }; + $error = $g->insert; + die $error if $error; + } + push @groupnums, $g->groupnum; + } + $conf->set('overlimit_groups',join("\n",@groupnums),$agentnum); + } + } +} + =item upgrade =cut @@ -84,6 +129,31 @@ sub upgrade { } + local($FS::cust_main::ignore_expired_card) = 1; + local($FS::cust_main::ignore_illegal_zip) = 1; + local($FS::cust_main::ignore_banned_card) = 1; + local($FS::cust_main::skip_fuzzyfiles) = 1; + + # decrypt inadvertantly-encrypted payinfo where payby != CARD,DCRD,CHEK,DCHK + # kind of a weird spot for this, but it's better than duplicating + # all this code in each class... + my @decrypt_tables = qw( cust_main cust_pay_void cust_pay cust_refund cust_pay_pending ); + foreach my $table ( @decrypt_tables ) { + my @objects = qsearch({ + 'table' => $table, + 'hashref' => {}, + 'extra_sql' => "WHERE payby NOT IN ( 'CARD', 'DCRD', 'CHEK', 'DCHK' ) ". + " AND LENGTH(payinfo) > 100", + }); + foreach my $object ( @objects ) { + my $payinfo = $object->decrypt($object->payinfo); + die "error decrypting payinfo" if $payinfo eq $object->payinfo; + $object->payinfo($payinfo); + my $error = $object->replace; + die $error if $error; + } + } + } =item upgrade_data @@ -163,6 +233,23 @@ sub upgrade_data { #migrate to templates 'msg_template' => [], + #return unprovisioned numbers to availability + 'phone_avail' => [], + + #insert scripcondition + 'TicketSystem' => [], + + #insert LATA data if not already present + 'lata' => [], + + #insert MSA data if not already present + 'msa' => [], + + # migrate to radius_group and groupnum instead of groupname + 'radius_usergroup' => [], + 'part_svc' => [], + 'part_export' => [], + ; \%hash; @@ -223,6 +310,8 @@ sub upgrade_schema_data { #fix classnum character(1) 'cust_bill_pkg_detail' => [], + #add necessary columns to RT schema + 'TicketSystem' => [], ;