1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package FS::cdr::earthlink;
use strict;
use vars qw( @ISA %info $date);
use Time::Local;
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' => [
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);
},
skip(1), #TollFreeNumber
sub { my($cdr, $src) = @_;
$src =~ s/\D//g;
$cdr->set('src', $src);
}, #ORIG NUMBER
skip(2), #ORIG CITY/ORIGSTATE
sub { my($cdr, $dst) = @_;
$dst =~ s/\D//g;
$cdr->set('dst', $dst);
}, #TERM NUMBER
skip(2), #TERM CITY / TERM STATE
_cdr_min_parser_maker, #MINUTES
skip(1), #AMOUNT
'disposition', #Call Type
skip(1), #Seq
'accountcode', #AcctCode
],
);
sub skip { map {''} (1..$_[0]) }
1;
|