payment terms localization, #71549
[freeside.git] / FS / FS / Upgrade.pm
index 0dab2f7..377a0b1 100644 (file)
@@ -46,22 +46,6 @@ sub upgrade_config {
 
   my $conf = new FS::Conf;
 
-  if ($conf->config('invoice_from') =~ /\<(.*)\>/) {
-    my $realemail = $1;
-    $realemail =~ s/^\s*//; # remove leading spaces
-    $realemail =~ s/\s*$//; # remove trailing spaces
-    my $realname = $conf->config('invoice_from');
-    $realname =~ s/\<.*\>//; # remove email address
-    $realname =~ s/^\s*//; # remove leading spaces
-    $realname =~ s/\s*$//; # remove trailing spaces
-    # properly quote names that contain punctuation
-    if (($realname =~ /[^[:alnum:][:space:]]/) && ($realname !~ /^\".*\"$/)) {
-      $realname = '"' . $realname . '"';
-    }
-    $conf->set('invoice_from_name', $realname);
-    $conf->set('invoice_from', $realemail);
-  }
-
   $conf->touch('payment_receipt')
     if $conf->exists('payment_receipt_email')
     || $conf->config('payment_receipt_msgnum');
@@ -79,8 +63,15 @@ sub upgrade_config {
     }
   }
 
+  my @agents = qsearch('agent', {});
+
   upgrade_overlimit_groups($conf);
-  map { upgrade_overlimit_groups($conf,$_->agentnum) } qsearch('agent', {});
+  map { upgrade_overlimit_groups($conf,$_->agentnum) } @agents;
+
+  upgrade_invoice_from($conf);
+  foreach my $agent (@agents) {
+    upgrade_invoice_from($conf,$agent->agentnum,1);
+  }
 
   my $DIST_CONF = '/usr/local/etc/freeside/default_conf/';#DIST_CONF in Makefile
   $conf->set($_, scalar(read_file( "$DIST_CONF/$_" )) )
@@ -147,6 +138,37 @@ If you need to continue using the old Form 477 report, turn on the
     $conf->delete('tax-cust_exempt-groups-require_individual_nums');
   }
 
+  # boolean+text previous_balance-exclude_from_total is now two separate options
+  my $total_new_charges = $conf->config('previous_balance-exclude_from_total');
+  if (length($total_new_charges) > 0) {
+    $conf->set('previous_balance-text-total_new_charges', $total_new_charges);
+    $conf->set('previous_balance-exclude_from_total', '');
+  }
+
+  if ( $conf->exists('voip-cust_email_csv_cdr') ) {
+    $conf->set('voip_cdr_email_attach', 'csv');
+    $conf->delete('voip-cust_email_csv_cdr') ;
+  }
+
+  if ( !$conf->config('password-generated-characters') ) {
+    my $pw_set = 
+      'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ23456789()#.,' ;
+    $conf->set('password-generated-characters', $pw_set);
+  }
+
+  if ($conf->exists('unsuspendauto') && !$conf->config('unsuspend_balance')) {
+    $conf->set('unsuspend_balance','Zero');
+    $conf->delete('unsuspendauto');
+  }
+
+  # if translate-auto-insert is enabled for a locale, ensure that invoice
+  # terms are in the msgcat (is there a better place for this?)
+  if (my $auto_locale = $conf->config('translate-auto-insert')) {
+    my $lh = FS::L10N->get_handle($auto_locale);
+    foreach (@FS::Conf::invoice_terms) {
+      $lh->maketext($_) if length($_);
+    }
+  }
 }
 
 sub upgrade_overlimit_groups {
@@ -175,6 +197,28 @@ sub upgrade_overlimit_groups {
     }
 }
 
+sub upgrade_invoice_from {
+  my ($conf, $agentnum, $agentonly) = @_;
+  if (
+      (!$conf->exists('invoice_from_name',$agentnum,$agentonly)) && 
+      ($conf->config('invoice_from',$agentnum,$agentonly) =~ /\<(.*)\>/)
+  ) {
+    my $realemail = $1;
+    $realemail =~ s/^\s*//; # remove leading spaces
+    $realemail =~ s/\s*$//; # remove trailing spaces
+    my $realname = $conf->config('invoice_from',$agentnum);
+    $realname =~ s/\<.*\>//; # remove email address
+    $realname =~ s/^\s*//; # remove leading spaces
+    $realname =~ s/\s*$//; # remove trailing spaces
+    # properly quote names that contain punctuation
+    if (($realname =~ /[^[:alnum:][:space:]]/) && ($realname !~ /^\".*\"$/)) {
+      $realname = '"' . $realname . '"';
+    }
+    $conf->set('invoice_from_name', $realname, $agentnum);
+    $conf->set('invoice_from', $realemail, $agentnum);
+  }
+}
+
 =item upgrade
 
 =cut
@@ -393,6 +437,12 @@ sub upgrade_data {
 
     #populate state FIPS codes if not already done
     'state' => [],
+
+    #set default locations on quoted packages
+    'quotation_pkg' => [],
+
+    #mark certain taxes as system-maintained
+    'cust_main_county' => [],
   ;
 
   \%hash;
@@ -455,7 +505,9 @@ sub upgrade_schema_data {
     'cust_bill_pkg_detail' => [],
     #add necessary columns to RT schema
     'TicketSystem' => [],
-
+    #remove possible dangling records
+    'password_history' => [],
+    'cust_pay_pending' => [],
   ;
 
   \%hash;