summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Davis <jeremyd@freeside.biz>2014-06-10 10:33:50 -0400
committerJeremy Davis <jeremyd@freeside.biz>2014-06-10 10:33:50 -0400
commit895152b70a5b827fd43b28724ae1c50943d7f83e (patch)
tree041bcb1fb0f32bc486e7321d71085ddc09b7ab62
parent672d03e59170ce51e02a7577677f5ee0ed542f39 (diff)
#29047 Avaya CDR format
-rw-r--r--FS/FS/cdr/avaya_ipo.pm66
1 files changed, 66 insertions, 0 deletions
diff --git a/FS/FS/cdr/avaya_ipo.pm b/FS/FS/cdr/avaya_ipo.pm
new file mode 100644
index 000000000..c680af86a
--- /dev/null
+++ b/FS/FS/cdr/avaya_ipo.pm
@@ -0,0 +1,66 @@
+package FS::cdr::avaya_ipo;
+
+use strict;
+use vars qw( @ISA %info $tmp_mon $tmp_mday $tmp_year );
+use Time::Local;
+use FS::cdr;
+use Date::Parse;
+
+@ISA = qw(FS::cdr);
+
+%info = (
+ 'name' => 'Avaya IPO',
+ 'weight' => 124,
+ 'header' => 0,
+ 'import_fields' => [
+
+
+ sub { my ($cdr, $info) = @_;
+ my @data = split(/\s+/, $info);
+ my $calldate = $data[4]. " ". $data[5];
+
+ $cdr->set('calldate', $calldate);
+ $calldate =~ /^(\d{4})\/(\d{2})\/(\d{2})\s*(\d{2}):(\d{2}):(\d{2})$/
+ or die "unparseable date: $calldate";
+ my $tmp_date = "$2/$3/$1 $4:$5:$6";
+ $tmp_date = str2time($tmp_date);
+ $cdr->set('startdate', $tmp_date);
+
+ }, #DateTime
+
+ sub { my ($cdr, $duration) = @_;
+ my ($hours,$min,$sec) = split(/:/, $duration);
+ my $seconds += ($min * 60)+ ($hours * 60*60) + $sec;
+ $cdr->set('billsec',$seconds);
+ } , # Duration 00:00:00
+ skip(1), # Ring time
+ sub { my ($cdr, $info) = @_;
+ my ($src,$ip) = split(/@/,$info);
+ $cdr->set('src',$src);
+
+ }, # Callers number
+ skip(2), # direction
+ # Called number
+ 'dst', # Dialed number
+ 'accountcode', # Accountcode
+ 'uniqueid', # call ID
+ skip(5), # continuation
+ 'dstchannel', # Party2Device
+ skip(9) # AuthValid
+ # User Charged
+ # call Charge
+ # Currency
+ # Amount at Last User Change
+ # Call Units
+ # Units at Last User Change
+ # Cost per Unit
+ # Markup
+
+
+],
+);
+
+sub skip { map {''} (1..$_[0]) }
+
+1;
+