X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr%2Ftaqua.pm;h=3052f83e59baa172527078c0137de73d0f7121d0;hb=d130d157d6cf99c9936eef8844a03668e51dbca7;hp=587d97d01e66ddf4bfd437d40fc1159650fa5794;hpb=8a8d007453fa916bcb62223a1da620728b8df269;p=freeside.git diff --git a/FS/FS/cdr/taqua.pm b/FS/FS/cdr/taqua.pm index 587d97d01..3052f83e5 100644 --- a/FS/FS/cdr/taqua.pm +++ b/FS/FS/cdr/taqua.pm @@ -1,6 +1,7 @@ package FS::cdr::taqua; -use vars qw(@ISA %info); +use strict; +use vars qw(@ISA %info $da_rewrite); use FS::cdr qw(_cdr_date_parser_maker); @ISA = qw(FS::cdr); @@ -10,9 +11,9 @@ use FS::cdr qw(_cdr_date_parser_maker); 'weight' => 130, 'header' => 1, 'import_fields' => [ #some of these are kind arbitrary... - sub { my($cdr, $field) = @_; }, #XXX interesting RecordType - # easy to fix: Can't find cdr.cdrtypenum 1 in cdr_type.cdrtypenum + #0 + 'cdrtypenum', #RecordType sub { my($cdr, $field) = @_; }, #all10#RecordVersion sub { my($cdr, $field) = @_; }, #OrigShelfNumber sub { my($cdr, $field) = @_; }, #OrigCardNumber @@ -22,6 +23,8 @@ use FS::cdr qw(_cdr_date_parser_maker); 'accountcode', #SessionNumber 'src', #CallingPartyNumber 'dst', #CalledPartyNumber + + #10 _cdr_date_parser_maker('startdate'), #CallArrivalTime _cdr_date_parser_maker('enddate'), #CallCompletionTime @@ -52,20 +55,48 @@ use FS::cdr qw(_cdr_date_parser_maker); sub { my($cdr, $field) = @_; }, #TermShelfNumber sub { my($cdr, $field) = @_; }, #TermCardNumber + + #20 sub { my($cdr, $field) = @_; }, #TermCircuit sub { my($cdr, $field) = @_; }, #TermCircuitType - sub { my($cdr, $field) = @_; }, #OutboundCarrierId - 'charged_party', #BillingNumber + 'carrierid', #OutboundCarrierId + + #BillingNumber + #'charged_party', + sub { + my( $cdr, $field, $conf ) = @_; + + #could be more efficient for the no config case, if anyone ever needs that + $da_rewrite ||= $conf->config('cdr-taqua-da_rewrite'); + + if ( $da_rewrite && $field =~ /\d/ ) { + my $rewrite = $da_rewrite; + $rewrite =~ s/\s//g; + my @rewrite = split(',', $conf->config('cdr-taqua-da_rewrite') ); + if ( grep { $field eq $_ } @rewrite ) { + $cdr->charged_party( $cdr->src() ); + $cdr->calltypenum(12); + return; + } + } + $cdr->charged_party($field); + }, + sub { my($cdr, $field) = @_; }, #SubscriberNumber 'lastapp', #ServiceName sub { my($cdr, $field) = @_; }, #some weirdness #ChargeTime 'lastdata', #ServiceInformation sub { my($cdr, $field) = @_; }, #FacilityInfo sub { my($cdr, $field) = @_; }, #all 1900-01-01 0#CallTraceTime + + #30 sub { my($cdr, $field) = @_; }, #all-1#UniqueIndicator sub { my($cdr, $field) = @_; }, #all-1#PresentationIndicator sub { my($cdr, $field) = @_; }, #empty#Pin - sub { my($cdr, $field) = @_; }, #CallType + 'calltypenum', #CallType + + #nothing below is used by QIS... + sub { my($cdr, $field) = @_; }, #Balt/empty #OrigRateCenter sub { my($cdr, $field) = @_; }, #Balt/empty #TermRateCenter @@ -77,6 +108,8 @@ use FS::cdr qw(_cdr_date_parser_maker); 'userfield', #empty#UserDefined sub { my($cdr, $field) = @_; }, #empty#PseudoDestinationNumber sub { my($cdr, $field) = @_; }, #all-1#PseudoCarrierCode + + #40 sub { my($cdr, $field) = @_; }, #empty#PseudoANI sub { my($cdr, $field) = @_; }, #all-1#PseudoFacilityInfo sub { my($cdr, $field) = @_; }, #OrigDialedDigits @@ -87,6 +120,8 @@ use FS::cdr qw(_cdr_date_parser_maker); sub { my($cdr, $field) = @_; }, #huh?#InsertTime sub { my($cdr, $field) = @_; }, #key sub { my($cdr, $field) = @_; }, #empty#AMALineNumber + + #50 sub { my($cdr, $field) = @_; }, #empty#AMAslpID sub { my($cdr, $field) = @_; }, #empty#AMADigitsDialedWC sub { my($cdr, $field) = @_; }, #OpxOffHook