71513: Card tokenization [upgrade implemented]
[freeside.git] / FS / FS / Upgrade.pm
index 59167a7..41349a5 100644 (file)
@@ -47,6 +47,10 @@ sub upgrade_config {
 
   my $conf = new FS::Conf;
 
+  # to simplify tokenization upgrades
+  die "Conf selfservice-payment_gateway no longer supported"
+    if $conf->config('selfservice-payment_gateway');
+
   $conf->touch('payment_receipt')
     if $conf->exists('payment_receipt_email')
     || $conf->config('payment_receipt_msgnum');
@@ -165,8 +169,29 @@ If you need to continue using the old Form 477 report, turn on the
     $conf->delete('voip-cust_email_csv_cdr') ;
   }
 
+  if ($conf->exists('unsuspendauto') && !$conf->config('unsuspend_balance')) {
+    $conf->set('unsuspend_balance','Zero');
+    $conf->delete('unsuspendauto');
+  }
+
+  if ($conf->config('cust-fields') =~ / \| Payment Type/) {
+    my $cust_fields = $conf->config('cust-fields');
+    # so we can potentially use 'Payment Types' or somesuch in the future
+    $cust_fields =~ s/ \| Payment Type( \|)/$1/;
+    $cust_fields =~ s/ \| Payment Type$//;
+    $conf->set('cust-fields',$cust_fields);
+  }
+
   enable_banned_pay_pad() unless length($conf->config('banned_pay-pad'));
 
+  # 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 {
@@ -198,8 +223,9 @@ 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) =~ /\<(.*)\>/)
+          ! $conf->exists('invoice_from_name',$agentnum,$agentonly)
+       && $conf->exists('invoice_from',$agentnum,$agentonly)
+       && $conf->config('invoice_from',$agentnum,$agentonly) =~ /\<(.*)\>/
   ) {
     my $realemail = $1;
     $realemail =~ s/^\s*//; # remove leading spaces
@@ -330,7 +356,17 @@ sub upgrade_data {
 
   tie my %hash, 'Tie::IxHash', 
 
-    #cust_main (remove paycvv from history, locations, cust_payby, etc)
+    #remap log levels
+       'log' => [],
+
+    #fix whitespace - before cust_main
+    'cust_location' => [],
+
+    # need before cust_main tokenization upgrade,
+    # blocks tokenization upgrade if deprecated features still in use
+    'agent_payment_gateway' => [],
+
+    #cust_main (tokenizes cards, remove paycvv from history, locations, cust_payby, etc)
     'cust_main' => [],
 
     #contact -> cust_contact / prospect_contact
@@ -352,6 +388,7 @@ sub upgrade_data {
     # reason / void_reason migration to reasonnum / void_reasonnum
     'cust_credit_void' => [],
     'cust_bill_void' => [],
+    # also fix some tax allocation records
     'cust_bill_pkg_void' => [],
 
     #duplicate history records
@@ -400,6 +437,9 @@ sub upgrade_data {
     'cust_refund' => [],
     'banned_pay' => [],
 
+    #paycardtype
+    'cust_payby' => [],
+
     #default namespace
     'payment_gateway' => [],
 
@@ -452,6 +492,10 @@ sub upgrade_data {
 
     #populate tax statuses
     'tax_status' => [],
+
+    #mark certain taxes as system-maintained,
+    # and fix whitespace
+    'cust_main_county' => [],
   ;
 
   \%hash;
@@ -514,7 +558,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;