summaryrefslogtreecommitdiff
path: root/FS/FS/cdr
diff options
context:
space:
mode:
authorJeremy Davis <jeremyd@freeside.biz>2015-08-12 14:27:02 -0400
committerJeremy Davis <jeremyd@freeside.biz>2015-08-12 14:27:02 -0400
commitb8bfc860f3439901d706dda50749968398e7e7ce (patch)
tree1d4cb0bec8e94973731882167c0a330f6795cad7 /FS/FS/cdr
parent90624ade0b89d8455917aa99b47444a8c95dd072 (diff)
#31495 Date changes for Earthlink
Diffstat (limited to 'FS/FS/cdr')
-rw-r--r--FS/FS/cdr/earthlink.pm32
1 files changed, 25 insertions, 7 deletions
diff --git a/FS/FS/cdr/earthlink.pm b/FS/FS/cdr/earthlink.pm
index 5042f6f..c6c4e15 100644
--- a/FS/FS/cdr/earthlink.pm
+++ b/FS/FS/cdr/earthlink.pm
@@ -3,11 +3,13 @@ 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,
@@ -15,14 +17,30 @@ use Date::Parse;
'import_fields' => [
skip(3), #Account number/ SERVICE LOC / BILL NUMBER
- sub { my($cdr, $date) = @_;
- $date;
- }, #date
+ 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;