X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUpgrade.pm;h=056b80b4c8ca84e8da73cdb5ac3a6527801821f4;hb=4d81e21107622f8731a6301c3c811108840582fd;hp=40d3473278ad9edc567ade5c3ca75aed17a71b65;hpb=a07658a484990b848a88bbfe0c3251e11f3f593d;p=freeside.git diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index 40d347327..056b80b4c 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -4,9 +4,11 @@ use strict; use vars qw( @ISA @EXPORT_OK $DEBUG ); use Exporter; use Tie::IxHash; +use File::Slurp; use FS::UID qw( dbh driver_name ); use FS::Conf; use FS::Record qw(qsearchs qsearch str2time_sql); +use FS::upgrade_journal; use FS::svc_domain; $FS::svc_domain::whois_hack = 1; @@ -47,9 +49,48 @@ sub upgrade_config { if $conf->exists('payment_receipt_email') || $conf->config('payment_receipt_msgnum'); + $conf->touch('geocode-require_nw_coordinates') + if $conf->exists('svc_broadband-require-nw-coordinates'); + + unless ( $conf->config('echeck-country') ) { + if ( $conf->exists('cust_main-require-bank-branch') ) { + $conf->set('echeck-country', 'CA'); + } elsif ( $conf->exists('echeck-nonus') ) { + $conf->set('echeck-country', 'XX'); + } else { + $conf->set('echeck-country', 'US'); + } + } + upgrade_overlimit_groups($conf); map { upgrade_overlimit_groups($conf,$_->agentnum) } qsearch('agent', {}); - + + my $DIST_CONF = '/usr/local/etc/freeside/default_conf/';#DIST_CONF in Makefile + $conf->set($_, scalar(read_file( "$DIST_CONF/$_" )) ) + foreach grep { ! $conf->exists($_) && -s "$DIST_CONF/$_" } + qw( quotation_html quotation_latex quotation_latexnotes ); + + # change 'fslongtable' to 'longtable' + # in invoice and quotation main templates, and also in all secondary + # invoice templates + my @latex_confs = + qsearch('conf', { 'name' => {op=>'LIKE', value=>'%latex%'} }); + + foreach my $c (@latex_confs) { + my $value = $c->value; + if (length($value) and $value =~ /fslongtable/) { + $value =~ s/fslongtable/longtable/g; + $conf->set($c->name, $value, $c->agentnum); + } + } + + # 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'); + } + } sub upgrade_overlimit_groups { @@ -129,15 +170,25 @@ sub upgrade { } - # decrypt all payinfo where payby = BILL + 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; + + local($FS::cust_payby::ignore_expired_card) = 1; + local($FS::cust_payby::ignore_banned_card) = 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' => { 'payby' => 'BILL', }, - 'extra_sql' => 'AND LENGTH(payinfo) > 100', - }); + 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; @@ -243,6 +294,26 @@ sub upgrade_data { 'part_svc' => [], 'part_export' => [], + #insert default tower_sector if not present + 'tower' => [], + + #repair improperly deleted services + 'cust_svc' => [], + + #routernum/blocknum + 'svc_broadband' => [], + + #set up payment gateways if needed + 'pay_batch' => [], + + #flag monthly tax exemptions + 'cust_tax_exempt_pkg' => [], + + #kick off tax location history upgrade + 'cust_bill_pkg' => [], + + #fix taxable line item links + 'cust_bill_pkg_tax_location' => [], ; \%hash; @@ -303,6 +374,8 @@ sub upgrade_schema_data { #fix classnum character(1) 'cust_bill_pkg_detail' => [], + #add necessary columns to RT schema + 'TicketSystem' => [], ;