Ticket 29048 add accountcodes to cx3 format
[freeside.git] / FS / FS / cdr / cx3.pm
1 package FS::cdr::cx3;
2
3 use strict;
4 use vars qw( @ISA %info);
5 use FS::cdr;
6 use Date::Parse;
7
8 @ISA = qw(FS::cdr);
9
10 %info = (
11   'name'          => '3CX',
12   'weight'        => 120,
13   'header'        => 1,
14   'import_fields' => [
15
16
17 sub {                 
18         my ($cdr, $data, $conf, $param) = @_;
19                 $param->{skiprow} = 1 unless $data =~ 'CallDetail'; # skip non-detail records
20         },              # record type
21         skip(2),        # unknown, callid ( not unique )
22         'src',          # source
23         'dst',          # destination
24 sub { my ($cdr, $calldate, $param) = @_;
25
26         if ($calldate =~ /^(\d{2})\/(\d{2})\/(\d{4})\s*(\d{2}):(\d{2}):(\d{2})$/){
27
28                 $cdr->set('calldate', $calldate);
29                 my $tmp_date = "$2/$1/$3 $4:$5:$6";
30
31                 $tmp_date = str2time($tmp_date);
32                 $cdr->set('startdate', $tmp_date);
33                 }          
34         },              #date
35 sub { my ($cdr, $duration) = @_;
36                
37         my ($hour,$min,$sec) = split(/:/,$duration);
38         $sec += $min * 60;
39         $sec += $hour * 60 * 60;
40         $sec = sprintf ("%.0f", $sec);
41         $cdr->set('billsec', $sec);
42
43 },                      #duration
44         skip(1),        # unknown
45         'disposition',  # call status
46         'accountcode',  # AccountCode
47
48   ],
49 );
50
51 sub skip { map {''} (1..$_[0]) }
52
53 1;