summaryrefslogtreecommitdiff
path: root/FS/FS/cdr
diff options
context:
space:
mode:
authorJeremy Davis <jeremyd@freeside.biz>2015-10-31 04:05:56 -0400
committerJeremy Davis <jeremyd@freeside.biz>2015-10-31 04:05:56 -0400
commitbdc278d2271d688195fe2fa4621c3d65b72c0639 (patch)
treef9365e1a7dd2a0030e4d058e6f70d6dbc56ca8d2 /FS/FS/cdr
parente0aacf68c8c7bbd4d3609731d6a1a2fe7d7e3d1d (diff)
36503 Scalability issues with amcom CDRs
Diffstat (limited to 'FS/FS/cdr')
-rw-r--r--FS/FS/cdr/amcom.pm14
1 files changed, 9 insertions, 5 deletions
diff --git a/FS/FS/cdr/amcom.pm b/FS/FS/cdr/amcom.pm
index fee81f7df..697a6827f 100644
--- a/FS/FS/cdr/amcom.pm
+++ b/FS/FS/cdr/amcom.pm
@@ -2,9 +2,9 @@ package FS::cdr::amcom;
use strict;
use base qw( FS::cdr );
-use vars qw( %info );
+use vars qw( %info %cdrtypes);
use DateTime;
-use FS::Record qw( qsearchs );
+use FS::Record qw( qsearch );
use FS::cdr_type;
my ($tmp_mday, $tmp_mon, $tmp_year);
@@ -16,6 +16,12 @@ my ($tmp_mday, $tmp_mon, $tmp_year);
'type' => 'csv',
'sep_char' => ',',
'disabled' => 0,
+ 'header_buffer' => sub {
+
+ %cdrtypes = ( map { $_->cdrtypename => $_->cdrtypenum }
+ qsearch('cdr_type', {})
+ );
+ },
#listref of what to do with each field from the CDR, in order
'import_fields' => [
@@ -37,9 +43,7 @@ my ($tmp_mday, $tmp_mon, $tmp_year);
sub { # 5. Call Category (LOCAL, NATIONAL, FREECALL, MOBILE)
my ($cdr, $data) = @_;
$data ||= 'none';
-
- my $cdr_type = qsearchs('cdr_type', { 'cdrtypename' => $data } );
- $cdr->set('cdrtypenum', $cdr_type->cdrtypenum) if $cdr_type;
+ $cdr->cdrtypenum($cdrtypes{$data} || '');
$cdr->set('dcontext', $data);
},
sub { # 6. Start Date (DDMMYYYY