From: jeff Date: Tue, 7 Apr 2009 20:45:14 +0000 (+0000) Subject: quick option to allow importing gmt cdrs X-Git-Tag: root_of_svc_elec_features~1294 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=aea149aa0ee7d7cae6e0c701ac6d105d615bb4e6 quick option to allow importing gmt cdrs --- 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