# 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) {
+ if ( defined $total_new_charges && length($total_new_charges) > 0 ) {
$conf->set('previous_balance-text-total_new_charges', $total_new_charges);
$conf->set('previous_balance-exclude_from_total', '');
}
$conf->delete('unsuspendauto');
}
- if ($conf->config('cust-fields') =~ / \| Payment Type/) {
- my $cust_fields = $conf->config('cust-fields');
+ my $cust_fields = $conf->config('cust-fields');
+ if ( defined $cust_fields && $cust_fields =~ / \| Payment Type/ ) {
# so we can potentially use 'Payment Types' or somesuch in the future
$cust_fields =~ s/ \| Payment Type( \|)/$1/;
$cust_fields =~ s/ \| Payment Type$//;
$lh->maketext($_) if length($_);
}
}
+
+ unless ( FS::upgrade_journal->is_done('deprecate_unmask_ss') ) {
+ if ( $conf->config_bool( 'unmask_ss' )) {
+ warn "'unmask_ssn' deprecated from global configuration\n";
+ for my $access_group ( qsearch( access_group => {} )) {
+ $access_group->grant_access_right( 'Unmask customer SSN' );
+ warn " - 'Unmask customer SSN' access right granted to '" .
+ $access_group->groupname . "' employee group\n";
+ }
+ }
+ FS::upgrade_journal->set_done('deprecate_unmask_ss');
+ }
+
}
sub upgrade_overlimit_groups {
});
foreach my $object ( @objects ) {
my $payinfo = $object->decrypt($object->payinfo);
- die "error decrypting payinfo" if $payinfo eq $object->payinfo;
+ if ( $payinfo eq $object->payinfo ) {
+ warn "error decrypting payinfo for $table: $payinfo\n";
+ next;
+ }
$object->payinfo($payinfo);
my $error = $object->replace;
die $error if $error;
tie my %hash, 'Tie::IxHash',
#remap log levels
- 'log' => [],
+ 'log' => [],
#fix whitespace - before cust_main
'cust_location' => [],
- #cust_main (remove paycvv from history, locations, cust_payby, etc)
+ # need before cust_main tokenization upgrade,
+ # blocks tokenization upgrade if deprecated features still in use
+ 'agent_payment_gateway' => [],
+
+ #remove bad source_paynum before cust_main
+ 'cust_refund' => [],
+
+ #cust_main (tokenizes cards, remove paycvv from history, locations, cust_payby, etc)
+ # (handles payinfo encryption/tokenization across all relevant tables)
'cust_main' => [],
#contact -> cust_contact / prospect_contact
#duplicate history records
'h_cust_svc' => [],
- # need before transaction tables,
- # blocks tokenization upgrade if deprecated features still in use
- 'agent_payment_gateway' => [],
-
#populate cust_pay.otaker
'cust_pay' => [],
'cust_pkg' => [],
#'cust_pkg_reason' => [],
'cust_pkg_discount' => [],
- 'cust_refund' => [],
+ #'cust_refund' => [],
'banned_pay' => [],
#paycardtype
#mark certain taxes as system-maintained,
# and fix whitespace
'cust_main_county' => [],
+
+ #'compliance solutions' -> 'compliance_solutions'
+ 'tax_rate' => [],
+ 'tax_rate_location' => [],
+
+ #upgrade part_event_condition_option agentnum to a multiple hash value
+ 'part_event_condition_option' =>[],
+
+ #fix ip format
+ 'svc_circuit' => [],
+
+ #fix ip format
+ 'svc_hardware' => [],
+
+ #fix ip format
+ 'svc_pbx' => [],
+
+ #fix ip format
+ 'tower_sector' => [],
+
+
;
\%hash;
sub upgrade_schema_data {
my %opt = @_;
+ #auto-find tables/classes with an _update_schema method?
+
tie my %hash, 'Tie::IxHash',
#fix classnum character(1)
'cust_bill_pkg_detail' => [],
#add necessary columns to RT schema
'TicketSystem' => [],
+ #remove h_access_user_log if it exists (since our regular auto schema
+ # upgrade doesn't have the drop tables flag turned on)
+ 'access_user_log' => [],
#remove possible dangling records
'password_history' => [],
'cust_pay_pending' => [],
+ #remove records referencing removed things with their FKs
+ 'pkg_referral' => [],
+ 'cust_bill_pkg_discount' => [],
+ 'cust_msg' => [],
+ 'cust_bill_pay_batch' => [],
+ 'cust_event_fee' => [],
+ 'radius_attr' => [],
+ 'queue_depend' => [],
+ 'cust_main_invoice' => [],
+ #update records referencing removed things with their FKs
+ 'cust_pkg' => [],
;
\%hash;
=cut
1;
-