add spouse name to customer records, #24919
[freeside.git] / FS / FS / Upgrade.pm
index 8d4b346..bf3e2ad 100644 (file)
@@ -4,6 +4,7 @@ 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);
@@ -63,7 +64,38 @@ sub upgrade_config {
 
   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
+  $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');
+  }
 }
 
 sub upgrade_overlimit_groups {
@@ -105,6 +137,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";
@@ -148,6 +183,9 @@ sub upgrade {
   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...
@@ -267,11 +305,23 @@ sub upgrade_data {
     #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;