X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr%2Fearthlink.pm;h=c6c4e15357df17f8cd78e60cb04b9f83e82729dd;hb=57bb423fe457ba4e13726877f53bcdf944f828f8;hp=60cba654fadc7920248506cde2a2ef7c7b564f22;hpb=c684757e24c7c64b73a6d636b2d25997b3511053;p=freeside.git diff --git a/FS/FS/cdr/earthlink.pm b/FS/FS/cdr/earthlink.pm index 60cba654f..c6c4e1535 100644 --- a/FS/FS/cdr/earthlink.pm +++ b/FS/FS/cdr/earthlink.pm @@ -3,27 +3,44 @@ package FS::cdr::earthlink; use strict; use vars qw( @ISA %info $date); use Time::Local; -use FS::cdr qw(_cdr_date_parser_maker _cdr_min_parser_maker); +use FS::cdr qw(_cdr_min_parser_maker); use Date::Parse; @ISA = qw(FS::cdr); +my ($tmp_mday, $tmp_mon, $tmp_year); + %info = ( 'name' => 'Earthlink', 'weight' => 120, 'header' => 1, 'import_fields' => [ - 'accountcode', #Account number - skip(2), #SERVICE LOC / BILL NUMBER - sub { my($cdr, $date) = @_; - $date; - }, #date + skip(3), #Account number/ SERVICE LOC / BILL NUMBER + sub { my($cdr, $date) = @_; + $date =~ /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/ + or die "unparseable date: $date"; + ($tmp_mon, $tmp_mday, $tmp_year) = ($1, $2, $3); + }, #date sub { my($cdr, $time) = @_; + $time =~ /^(\d{1,2}):(\d{1,2}):(\d{1,2}) (AM|PM)$/ + or die "unparsable time: $time"; #maybe we shouldn't die... + my $hour = $1; + $hour += 12 if $4 eq 'PM' && $hour != 12; + $hour = 0 if $4 eq 'AM' && $hour == 12; + + my $dt = DateTime->new( + year => $tmp_year, + month => $tmp_mon, + day => $tmp_mday, + hour => $hour, + minute => $2, + second => $3, + time_zone => 'local', + ); + $cdr->set('startdate', $dt->epoch); - my $datetime = $date. " ". $time; - $cdr->set('startdate', $datetime ); - }, #time + }, skip(1), #TollFreeNumber sub { my($cdr, $src) = @_; $src =~ s/\D//g; @@ -36,6 +53,10 @@ use Date::Parse; }, #TERM NUMBER skip(2), #TERM CITY / TERM STATE _cdr_min_parser_maker, #MINUTES + skip(1), #AMOUNT + 'disposition', #Call Type + skip(1), #Seq + 'accountcode', #AcctCode ], );