diff options
author | Christopher Burger <burgerc@freeside.biz> | 2018-02-06 10:36:31 -0500 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2018-02-06 10:58:24 -0500 |
commit | 00ca6edb07f337b3e8c8dcab087730f11ce18372 (patch) | |
tree | ebefc45cc9d60aaf807da6f494c3c7bd7820014b /FS/FS/cust_main | |
parent | 5c956ec7e0f5a2095a19e61646530873dad1bbb9 (diff) |
RT# 75095 - fixed ooma format to import all charges, and unified import process to allow new formats to be added quickly. consistant with cdr imports
Diffstat (limited to 'FS/FS/cust_main')
-rw-r--r-- | FS/FS/cust_main/Import_Charges.pm | 60 | ||||
-rw-r--r-- | FS/FS/cust_main/import_charges/gcet.pm | 26 | ||||
-rw-r--r-- | FS/FS/cust_main/import_charges/ooma.pm | 21 | ||||
-rw-r--r-- | FS/FS/cust_main/import_charges/simple.pm | 21 |
4 files changed, 114 insertions, 14 deletions
diff --git a/FS/FS/cust_main/Import_Charges.pm b/FS/FS/cust_main/Import_Charges.pm index bff2ec2..3d2031d 100644 --- a/FS/FS/cust_main/Import_Charges.pm +++ b/FS/FS/cust_main/Import_Charges.pm @@ -8,6 +8,48 @@ use FS::UID qw( dbh ); use FS::CurrentUser; use FS::Record qw( qsearchs ); use FS::cust_main; +use FS::Conf; + +my $DEBUG = ''; + +my %import_charges_info; +foreach my $INC ( @INC ) { + warn "globbing $INC/FS/cust_main/import_charges/[a-z]*.pm\n" if $DEBUG; + foreach my $file ( glob("$INC/FS/cust_main/import_charges/[a-z]*.pm") ) { + warn "attempting to load import charges format info from $file\n" if $DEBUG; + $file =~ /\/(\w+)\.pm$/ or do { + warn "unrecognized file in $INC/FS/cust_main/import_charges/: $file\n"; + next; + }; + my $mod = $1; + my $info = eval "use FS::cust_main::import_charges::$mod; ". + "\\%FS::cust_main::import_charges::$mod\::info;"; + if ( $@ ) { + die "error using FS::cust_main::import_charges::$mod (skipping): $@\n" if $@; + next; + } + unless ( keys %$info ) { + warn "no %info hash found in FS::cust_main::import_charges::$mod, skipping\n"; + next; + } + warn "got import charges format info from FS::cust_main::import_charges::$mod: $info\n" if $DEBUG; + if ( exists($info->{'disabled'}) && $info->{'disabled'} ) { + warn "skipping disabled import charges format FS::cust_main::import_charges::$mod" if $DEBUG; + next; + } + $import_charges_info{$mod} = $info; + } +} + +tie my %import_formats, 'Tie::IxHash', + map { $_ => $import_charges_info{$_}->{'name'} } + sort { $import_charges_info{$a}->{'weight'} <=> $import_charges_info{$b}->{'weight'} } + grep { exists($import_charges_info{$_}->{'fields'}) } + keys %import_charges_info; + +sub import_formats { + %import_formats; +} =head1 NAME @@ -65,20 +107,10 @@ sub batch_charge { my @fields; my %charges; - if ( $format eq 'simple' ) { - @fields = qw( custnum agent_custid amount pkg ); - } elsif ( $format eq 'ooma' ) { - #below is gcet file. - #@fields = ( 'userfield1', 'userfield2', 'userfield3', 'userfield4', 'userfield5', 'userfield6', 'userfield7', 'userfield8', 'userfield9', 'userfield10', 'amount', 'userfield12', 'userfield13', 'userfield14', 'userfield15', 'userfield16', 'userfield17', 'userfield18', 'pkg', 'userfield20', 'custnum', 'userfield22', 'userfield23', 'userfield24', 'userfield25', ); - @fields = ( 'userfield1', 'userfield2', 'userfield3', 'userfield4', 'userfield5', 'userfield6', 'userfield7', 'userfield8', 'amount', 'userfield10', 'userfield11', 'userfield12', 'userfield13', 'userfield14', 'userfield15', 'userfield16', 'pkg', 'userfield18', 'custnum', 'userfield20', 'userfield21', 'userfield22', 'userfield23', 'userfield24', 'userfield25', ); - - ##should charges to charge be a config option? - %charges = ( - 'DISABILITY ACCESS/ENHANCED 911 SERVICES SURCHARGE' => '1', - 'FEDERAL TRS FUND' => '1', - 'FEDERAL UNIVERSAL SERVICE FUND' => '1', - 'STATE SALES TAX' => '1', - ); + + if ( $import_charges_info{$format} ) { + @fields = @{$import_charges_info{$format}->{'fields'}}; + %charges = %{$import_charges_info{$format}->{'charges'}}; } else { die "unknown format $format"; } diff --git a/FS/FS/cust_main/import_charges/gcet.pm b/FS/FS/cust_main/import_charges/gcet.pm new file mode 100644 index 0000000..83f9565 --- /dev/null +++ b/FS/FS/cust_main/import_charges/gcet.pm @@ -0,0 +1,26 @@ +package FS::cust_main::import_charges::gcet; + +use strict; +use base qw( FS::cust_main::Import_Charges ); +use vars qw ( %info ); + +# gcet fields. +my @fields = ( 'userfield1', 'userfield2', 'userfield3', 'userfield4', 'userfield5', 'userfield6', 'userfield7', 'userfield8', 'userfield9', 'userfield10', 'amount', 'userfield12', 'userfield13', 'userfield14', 'userfield15', 'userfield16', 'userfield17', 'userfield18', 'pkg', 'userfield20', 'custnum', 'userfield22', 'userfield23', 'userfield24', 'userfield25', ); +# hash of charges (pkg) to charge. if empty charge them all. +# '911 services' => '1', +my $charges = { + 'DISABILITY ACCESS/ENHANCED 911 SERVICES SURCHARGE' => '1', + 'FEDERAL TRS FUND' => '1', + 'FEDERAL UNIVERSAL SERVICE FUND' => '1', + 'STATE SALES TAX' => '1', +}; + +%info = ( + 'fields' => [@fields], + 'charges' => $charges, + 'name' => 'Gcet', + 'weight' => '30', + 'disabled' => '1', +); + +1;
\ No newline at end of file diff --git a/FS/FS/cust_main/import_charges/ooma.pm b/FS/FS/cust_main/import_charges/ooma.pm new file mode 100644 index 0000000..a43def2 --- /dev/null +++ b/FS/FS/cust_main/import_charges/ooma.pm @@ -0,0 +1,21 @@ +package FS::cust_main::import_charges::ooma; + +use strict; +use base qw( FS::cust_main::Import_Charges ); +use vars qw ( %info ); + +# ooma fields +my @fields = ('userfield1', 'userfield2', 'userfield3', 'userfield4', 'userfield5', 'userfield6', 'userfield7', 'userfield8', 'amount', 'userfield10', 'userfield11', 'userfield12', 'userfield13', 'userfield14', 'userfield15', 'userfield16', 'pkg', 'userfield18', 'custnum', 'userfield20', 'userfield21', 'userfield22', 'userfield23', 'userfield24', 'userfield25', ); +# hash of charges (pkg) to charge. if empty charge them all. +# '911 services' => '1', +my $charges = {}; + +%info = ( + 'fields' => [@fields], + 'charges' => $charges, + 'name' => 'Ooma', + 'weight' => '10', + 'disabled' => '', +); + +1;
\ No newline at end of file diff --git a/FS/FS/cust_main/import_charges/simple.pm b/FS/FS/cust_main/import_charges/simple.pm new file mode 100644 index 0000000..e039328 --- /dev/null +++ b/FS/FS/cust_main/import_charges/simple.pm @@ -0,0 +1,21 @@ +package FS::cust_main::import_charges::simple; + +use strict; +use base qw( FS::cust_main::Import_Charges ); +use vars qw ( %info ); + +# simple field format +my @fields = ('custnum', 'agent_custid', 'amount', 'pkg'); +# hash of charges (pkg) to charge. if empty charge them all. +# '911 services' => '1', +my $charges = {}; + +%info = ( + 'fields' => [@fields], + 'charges' => $charges, + 'name' => 'Simple', + 'weight' => '1', + 'disabled' => '', +); + +1;
\ No newline at end of file |