fix TeleAPI import (what kind of crack was Christopher smoking that he couldn't fix...
[freeside.git] / FS / FS / cdr / telapi_sms.pm
1 package FS::cdr::telapi_sms;
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_sms',
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',                               # direction
19     sub {
20       my($cdr, $cdrtypename, $conf, $param) = @_;
21       return unless length($cdrtypename);
22       _init_cdr_types();
23       die "no matching cdrtypenum for $cdrtypename"
24         unless defined $CDR_TYPES->{$cdrtypename};
25       $cdr->cdrtypenum($CDR_TYPES->{$cdrtypename});
26     },                                    # type
27     skip(1),                              # cost
28   ],
29 );
30
31 sub skip { map {''} (1..$_[0]) }
32
33 sub _init_cdr_types {
34   unless ($CDR_TYPES) {
35     $CDR_TYPES = {};
36     foreach my $cdr_type ( qsearch('cdr_type') ) {
37       die "multiple cdr_types with same cdrtypename".$cdr_type->cdrtypename
38         if defined $CDR_TYPES->{$cdr_type->cdrtypename};
39       $CDR_TYPES->{$cdr_type->cdrtypename} = $cdr_type->cdrtypenum;
40     }
41   }
42 }
43
44 1;