summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeff <jeff>2009-04-07 20:45:14 +0000
committerjeff <jeff>2009-04-07 20:45:14 +0000
commitaea149aa0ee7d7cae6e0c701ac6d105d615bb4e6 (patch)
treed368d6a749487031d45a3d82e8665a7052368f65
parent84cb979c86a35805cfc6c4530ad4505243b7cfd0 (diff)
quick option to allow importing gmt cdrs
-rw-r--r--FS/FS/cdr.pm10
-rw-r--r--FS/FS/cdr/taqua.pm6
2 files changed, 11 insertions, 5 deletions
diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm
index 0230adcd8..b640bc63e 100644
--- a/FS/FS/cdr.pm
+++ b/FS/FS/cdr.pm
@@ -681,10 +681,11 @@ sub _cdr_min_parse {
sub _cdr_date_parser_maker {
my $field = shift;
+ my %options = @_;
my @fields = ref($field) ? @$field : ($field);
return sub {
my( $cdr, $datestring ) = @_;
- my $unixdate = eval { _cdr_date_parse($datestring) };
+ my $unixdate = eval { _cdr_date_parse($datestring, %options) };
die "error parsing date for @fields from $datestring: $@\n" if $@;
$cdr->$_($unixdate) foreach @fields;
};
@@ -692,6 +693,7 @@ sub _cdr_date_parser_maker {
sub _cdr_date_parse {
my $date = shift;
+ my %options = @_;
return '' unless length($date); #that's okay, it becomes NULL
@@ -711,7 +713,11 @@ sub _cdr_date_parse {
return '' if $year == 1900 && $mon == 1 && $day == 1
&& $hour == 0 && $min == 0 && $sec == 0;
- timelocal($sec, $min, $hour, $day, $mon-1, $year);
+ if ($options{gmt}) {
+ timegm($sec, $min, $hour, $day, $mon-1, $year);
+ } else {
+ timelocal($sec, $min, $hour, $day, $mon-1, $year);
+ }
}
=item batch_import HASHREF
diff --git a/FS/FS/cdr/taqua.pm b/FS/FS/cdr/taqua.pm
index 44e274729..3e9840074 100644
--- a/FS/FS/cdr/taqua.pm
+++ b/FS/FS/cdr/taqua.pm
@@ -40,8 +40,8 @@ use FS::cdr qw(_cdr_date_parser_maker);
},
#10
- _cdr_date_parser_maker('startdate'), #CallArrivalTime
- _cdr_date_parser_maker('enddate'), #CallCompletionTime
+ _cdr_date_parser_maker('startdate', 'gmt' => 1), #CallArrivalTime
+ _cdr_date_parser_maker('enddate', 'gmt' => 1), #CallCompletionTime
#Disposition
#sub { my($cdr, $d ) = @_; $cdr->disposition( $disposition{$d}): },
@@ -57,7 +57,7 @@ use FS::cdr qw(_cdr_date_parser_maker);
# 201 => '',
# 203 => '',
- _cdr_date_parser_maker('answerdate'), #DispositionTime
+ _cdr_date_parser_maker('answerdate', 'gmt' => 1), #DispositionTime
sub { my($cdr, $field) = @_; }, #TCAP
sub { my($cdr, $field) = @_; }, #OutboundCarrierConnectTime
sub { my($cdr, $field) = @_; }, #OutboundCarrierDisconnectTime