diff options
author | Jeremy Davis <jeremyd@freeside.biz> | 2015-10-31 04:05:56 -0400 |
---|---|---|
committer | Jeremy Davis <jeremyd@freeside.biz> | 2015-10-31 04:05:56 -0400 |
commit | bdc278d2271d688195fe2fa4621c3d65b72c0639 (patch) | |
tree | f9365e1a7dd2a0030e4d058e6f70d6dbc56ca8d2 | |
parent | e0aacf68c8c7bbd4d3609731d6a1a2fe7d7e3d1d (diff) |
36503 Scalability issues with amcom CDRs
-rw-r--r-- | FS/FS/cdr/amcom.pm | 14 |
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 |