X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr.pm;h=e8be0805669b38cb2dc93076cb5c1608409c6bf4;hb=5250c44bd7f282c7d782bf0e8349af12376929df;hp=bf002f686ddbbbfd569980a28251a685784466ee;hpb=964843e86eba1171f3e946f021ac450348852e3a;p=freeside.git diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index bf002f686..e8be08056 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -285,6 +285,10 @@ sub check { # ; # return $error if $error; + for my $f ( grep { $self->$_ =~ /[a-z ]/i } qw( startdate enddate ) ) { + $self->$f( str2time($self->$f) ); + } + $self->calldate( $self->startdate_sql ) if !$self->calldate && $self->startdate; @@ -320,15 +324,19 @@ sub check { $self->SUPER::check; } -=item is_tollfree +=item is_tollfree [ COLUMN ] + +Returns true when the cdr represents a toll free number and false otherwise. - Returns true when the cdr represents a toll free number and false otherwise. +By default, inspects the dst field, but an optional column name can be passed +to inspect other field. =cut sub is_tollfree { my $self = shift; - ( $self->dst =~ /^(\+?1)?8(8|([02-7])\3)/ ) ? 1 : 0; + my $field = scalar(@_) ? shift : 'dst'; + ( $self->$field() =~ /^(\+?1)?8(8|([02-7])\3)/ ) ? 1 : 0; } =item set_charged_party @@ -357,6 +365,11 @@ sub set_charged_party { if $conf->exists('cdr-charged_party-accountcode-trim_leading_0s'); $self->charged_party( $charged_party ); + } elsif ( $conf->exists('cdr-charged_party-field') ) { + + my $field = $conf->config('cdr-charged_party-field'); + $self->charged_party( $self->$field() ); + } else { if ( $self->is_tollfree ) { @@ -760,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 ); @@ -829,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 { @@ -879,9 +899,14 @@ sub _upgrade_data { my %cdrbatchnum = (); while (my $row = $sth->fetchrow_arrayref) { - my $cdr_batch = new FS::cdr_batch { 'cdrbatch' => $row->[0] }; - my $error = $cdr_batch->insert; - die $error if $error; + + my $cdr_batch = qsearchs( 'cdr_batch', { 'cdrbatch' => $row->[0] } ); + unless ( $cdr_batch ) { + $cdr_batch = new FS::cdr_batch { 'cdrbatch' => $row->[0] }; + my $error = $cdr_batch->insert; + die $error if $error; + } + $cdrbatchnum{$row->[0]} = $cdr_batch->cdrbatchnum; }