correct taqua toll free handling and hasten cdr import (skip uninteresting records)
authorjeff <jeff>
Tue, 7 Apr 2009 01:20:38 +0000 (01:20 +0000)
committerjeff <jeff>
Tue, 7 Apr 2009 01:20:38 +0000 (01:20 +0000)
FS/FS/Record.pm
FS/FS/cdr.pm
FS/FS/cdr/taqua.pm
FS/FS/part_pkg/voip_cdr.pm

index 7019cb9..1689845 100644 (file)
@@ -1708,11 +1708,14 @@ sub batch_import {
 
     my $record = $class->new( \%hash );
 
+    my $param = {};
     while ( scalar(@later) ) {
       my $sub = shift @later;
       my $data = shift @later;
-      &{$sub}($record, $data, $conf);  # $record->&{$sub}($data, $conf); 
+      &{$sub}($record, $data, $conf, $param); # $record->&{$sub}($data, $conf);
+      last if exists( $param->{skiprow} );
     }
+    next if exists( $param->{skiprow} );
 
     my $error = $record->insert;
 
index 35bb71c..5f46739 100644 (file)
@@ -269,6 +269,17 @@ sub check {
   $self->SUPER::check;
 }
 
+=item is_tollfree
+
+  Returns true when the cdr represents a toll free number and false otherwise.
+
+=cut
+
+sub is_tollfree {
+  my $self = shift;
+  ( $self->dst =~ /^(\+?1)?8(8|[02-7]{2})/ ) ? 1 : 0;
+}
+
 =item set_charged_party
 
 If the charged_party field is already set, does nothing.  Otherwise:
@@ -294,7 +305,7 @@ sub set_charged_party {
 
     } else {
 
-      if ( $self->dst =~ /^(\+?1)?8[02-8]{2}/ ) {
+      if ( $self->is_tollfree ) {
         $self->charged_party($self->dst);
       } else {
         $self->charged_party($self->src);
index 5d6c694..44e2747 100644 (file)
@@ -13,7 +13,13 @@ use FS::cdr qw(_cdr_date_parser_maker);
   'import_fields' => [  #some of these are kind arbitrary...
 
     #0
-    'cdrtypenum',                         #RecordType
+    #RecordType
+    sub {
+      my($cdr, $field, $conf, $hashref) = @_;
+      $hashref->{skiprow} = 1 unless ($field == 0 && $cdr->disposition == 100);
+      $cdr->cdrtypenum($field);
+    },
+
     sub { my($cdr, $field) = @_; },             #all10#RecordVersion
     sub { my($cdr, $field) = @_; },       #OrigShelfNumber
     sub { my($cdr, $field) = @_; },       #OrigCardNumber
@@ -88,7 +94,7 @@ use FS::cdr qw(_cdr_date_parser_maker);
           return;
         }
       }
-      $cdr->charged_party($field);
+      '';
     },
 
     sub { my($cdr, $field) = @_; },       #SubscriberNumber
index 9f6dd01..e25bba5 100644 (file)
@@ -308,9 +308,7 @@ sub calc_recur {
           ###
 
           my( $to_or_from, $number );
-          if ( $cdr->dst =~ /^(\+?1)?8(8|[02-7]{2})/
-               && ! $disable_tollfree
-              )
+          if ( $cdr->is_tollfree && ! $disable_tollfree )
           { #tollfree call
             $to_or_from = 'from';
             $number = $cdr->src;