diff options
| -rw-r--r-- | FS/FS/Record.pm | 12 | ||||
| -rw-r--r-- | FS/FS/cdr.pm | 7 | ||||
| -rw-r--r-- | FS/FS/cdr/taqua_om.pm | 19 | 
3 files changed, 37 insertions, 1 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 0845cc6f3..f3dead164 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -1569,6 +1569,7 @@ sub process_batch_import {      format_headers             => $opt->{format_headers},      format_sep_chars           => $opt->{format_sep_chars},      format_fixedlength_formats => $opt->{format_fixedlength_formats}, +    format_row_callbacks       => $opt->{format_row_callbacks},      #per-import      job                        => $job,      file                       => $file, @@ -1609,6 +1610,8 @@ Class method for batch imports.  Available params:  =item format_fixedlength_formats +=item format_row_callbacks +  =item params  =item job @@ -1633,7 +1636,7 @@ sub batch_import {    my $param = shift;    warn "$me batch_import call with params: \n". Dumper($param) -    if $DEBUG; +  ;#  if $DEBUG;    my $table   = $param->{table};    my $formats = $param->{formats}; @@ -1674,6 +1677,11 @@ sub batch_import {        ? $param->{'format_fixedlength_formats'}{ $param->{'format'} }        : ''; +  my $row_callback = +    $param->{'format_row_callbacks'} +      ? $param->{'format_row_callbacks'}{ $param->{'format'} } +      : ''; +    my @fields = @{ $formats->{ $format } };    my $row = 0; @@ -1769,6 +1777,8 @@ sub batch_import {        next if $line =~ /^\s*$/; #skip empty lines +      $line = &{$row_callback}($line) if $row_callback; +        $parser->parse($line) or do {          $dbh->rollback if $oldAutoCommit;          return "can't parse: ". $parser->error_input(); diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index 34243fae9..bd0ed57e9 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -773,6 +773,9 @@ sub _cdr_date_parse {    } elsif ( $date  =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d+\.\d+)(\D|$)/ ) {      # broadsoft: 20081223201938.314      ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 ); +  } elsif ( $date  =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\d+(\D|$)/ ) { +    # Taqua OM:  20050422203450943 +    ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 );    } elsif ( $date  =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ ) {      # WIP: 20100329121420      ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 ); @@ -842,6 +845,10 @@ my %import_options = (      { map { $_ => $cdr_info{$_}->{'fixedlength_format'}; }            keys %cdr_info      }, + +  'format_row_callbacks' => { map { $_ => $cdr_info{$_}->{'row_callback'}; } +                                  keys %cdr_info +                            },  );  sub _import_options { diff --git a/FS/FS/cdr/taqua_om.pm b/FS/FS/cdr/taqua_om.pm new file mode 100644 index 000000000..c94ea5923 --- /dev/null +++ b/FS/FS/cdr/taqua_om.pm @@ -0,0 +1,19 @@ +package FS::cdr::taqua_om; + +use strict; +use vars qw( %info ); +use base qw( FS::cdr::taqua ); + +%info = ( +  %FS::cdr::taqua::info, +  'name'         => 'Taqua OM', +  'weight'       => 132, +  'header'       => 0, +  'sep_char'     => ';', +  'row_callback' => sub { my $row = shift; +                          $row =~ s/^<\d+>\|[\da-f\|]+\|(\d+;)/$1/; +                          $row; +                        }, +); + +1;  | 
