Revert "RT# 75680 - telapi_voip cdr csv import"
[freeside.git] / FS / FS / cdr / telapi_voip.pm
1 package FS::cdr::telapi_voip;
2 use base qw( FS::cdr );
3
4 use strict;
5 use vars qw( @ISA %info $CDR_TYPES );
6 use FS::Record qw( qsearch );
7 use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker );
8
9 %info = (
10   'name'          => 'telapi_voip',
11   'weight'        => 601,
12   'header'        => 1,
13   'type'          => 'csv',
14   'import_fields' => [
15     _cdr_date_parser_maker('startdate'),  #'date gmt'
16     'src',                                # source
17     'dst',                                # destination
18     'clid',                               # callerid
19     skip(1),                              # hangup code
20     skip(1),                              # sip account
21     'src_ip_addr',                        # orig ip
22     'duration',                           # duration
23     skip(1),                              # per minute
24     'upstream_price',                     # callcost
25     sub {
26       my($cdr, $cdrtypename, $conf, $param) = @_;
27       return unless length($cdrtypename);
28       _init_cdr_types();
29       unless (defined $CDR_TYPES->{$cdrtypename}) {
30         warn "Skipping Record: CDR type name $cdrtypename does not exist!";
31         $param->{skiprow} = 1;
32       }
33       $cdr->cdrtypenum($CDR_TYPES->{$cdrtypename});
34     },                                   # type 
35     _cdr_min_parser_maker('billsec'),     #PriceDurationMins
36   ],
37 );
38
39 sub skip { map {''} (1..$_[0]) }
40
41 sub _init_cdr_types {
42   unless ($CDR_TYPES) {
43     $CDR_TYPES = {};
44     foreach my $cdr_type ( qsearch('cdr_type') ) {
45       die "multiple cdr_types with same cdrtypename".$cdr_type->cdrtypename
46         if defined $CDR_TYPES->{$cdr_type->cdrtypename};
47       $CDR_TYPES->{$cdr_type->cdrtypename} = $cdr_type->cdrtypenum;
48     }
49   }
50 }
51
52 1;