From c5ceb74497f48162185959070d841a91e8bb58d9 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 12 Nov 2011 22:55:54 +0000 Subject: [PATCH] set cdrtypenum based on in_calling_type, RT#14452 --- FS/FS/cdr/enswitch.pm | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/FS/FS/cdr/enswitch.pm b/FS/FS/cdr/enswitch.pm index 1475d8dc1..a19b16641 100644 --- a/FS/FS/cdr/enswitch.pm +++ b/FS/FS/cdr/enswitch.pm @@ -1,11 +1,10 @@ package FS::cdr::enswitch; +use base qw( FS::cdr ); use strict; -use vars qw( @ISA %info $tmp_mon $tmp_mday $tmp_year ); -use Time::Local; -use FS::cdr qw(_cdr_min_parser_maker); - -@ISA = qw(FS::cdr); +use vars qw( %info $tmp_mon $tmp_mday $tmp_year ); +use FS::Record qw( qsearchs ); +use FS::cdr_type; %info = ( 'name' => 'Enswitch', @@ -26,7 +25,7 @@ use FS::cdr qw(_cdr_min_parser_maker); skip(5), #Destination customer, Destination type #Destination number #Destination group ID, Destination group name, - 'in_calling_type', #Inbound calling type, + \&in_calling_type, #Inbound calling type, \&in_calling_num, #Inbound calling number, '', #Inbound called type, \&in_called_num, #Inbound called number, @@ -49,6 +48,25 @@ use FS::cdr qw(_cdr_min_parser_maker); sub skip { map {''} (1..$_[0]) } +#create CDR types with names matching in_calling_type valuesj - 'none' +# (without the quotes) for blank +our %cdr_type = (); +sub in_calling_type { + my ($record, $data) = @_; + + $data ||= 'none'; + + my $cdr_type = exists($cdr_type{$data}) + ? $cdr_type{$data} + : qsearchs('cdr_type', { 'cdrtypename' => $data } ); + + $cdr_type{$data} = $cdr_type; + + $record->set('in_calling_type', $data); #for below + $record->set('cdrtypenum', $cdr_type->cdrtypenum) if $cdr_type; + +} + sub in_calling_num { my ($record, $data) = @_; $record->src($data) if ( ($record->in_calling_type || '') eq 'external' ); -- 2.11.0