From aea149aa0ee7d7cae6e0c701ac6d105d615bb4e6 Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 7 Apr 2009 20:45:14 +0000 Subject: [PATCH] quick option to allow importing gmt cdrs --- FS/FS/cdr.pm | 10 ++++++++-- FS/FS/cdr/taqua.pm | 6 +++--- 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 -- 2.11.0