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;
_cdr_min_parser_maker, #MINUTES
skip(1), #AMOUNT
'disposition', #Call Type
+ skip(1), #Seq
+ 'accountcode', #AcctCode
],
);