$conf->set($newname, 'location');
}
- # boolean enable_taxproducts is now enable_taxproducts = 'cch'
- if ( $conf->exists('enable_taxproducts') and
- $conf->config('enable_taxproducts') eq '' ) {
+ # boolean enable_taxproducts is now tax_data_vendor = 'cch'
+ if ( $conf->exists('enable_taxproducts') ) {
- $conf->set('enable_taxproducts', 'cch');
+ $conf->delete('enable_taxproducts');
+ $conf->set('tax_data_vendor', 'cch');
}
$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', '');
+ }
+
+ # switch from specifying an email address to boolean check
+ if ( $conf->exists('batch-errors_to') ) {
+ $conf->touch('batch-errors_not_fatal');
+ $conf->delete('batch-errors_to');
+ }
+
+ if ( $conf->exists('voip-cust_email_csv_cdr') ) {
+ $conf->set('voip_cdr_email_attach', 'csv');
+ $conf->delete('voip-cust_email_csv_cdr') ;
+ }
+
+ if ($conf->exists('unsuspendauto') && !$conf->config('unsuspend_balance')) {
+ $conf->set('unsuspend_balance','Zero');
+ $conf->delete('unsuspendauto');
+ }
+
enable_banned_pay_pad() unless length($conf->config('banned_pay-pad'));
}
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
# 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 );
+ my @decrypt_tables = qw( cust_payby cust_pay_void cust_pay cust_refund cust_pay_pending );
foreach my $table ( @decrypt_tables ) {
my @objects = qsearch({
'table' => $table,
tie my %hash, 'Tie::IxHash',
- #payby conditions to new ones
- 'part_event_condition' => [],
-
- #payby actions to new ones
- 'part_event' => [],
-
#cust_main (remove paycvv from history, locations, cust_payby, etc)
'cust_main' => [],
#customer credits
'cust_credit' => [],
+ # reason / void_reason migration to reasonnum / void_reasonnum
+ 'cust_credit_void' => [],
+ 'cust_bill_void' => [],
+ 'cust_bill_pkg_void' => [],
+
#duplicate history records
'h_cust_svc' => [],
#populate tax statuses
'tax_status' => [],
+
+ #mark certain taxes as system-maintained
+ 'cust_main_county' => [],
;
\%hash;