@ -24,6 +24,8 @@ use NGCP::BulkProcessor::Projects::Export::Ama::Ccs::Settings qw(
$ ama_outgoing_trunk_group_number
$ ama_originating_digits_cdr_field
$ ama_terminating_digits_cdr_field
$ offnet_anonymous_fallback
$ anonymous_originating_digits
@ ivr_u2u_headers
$ primary_alias_pattern
@ -319,6 +321,7 @@ sub _find_child_cdrs {
my ( $ context , $ id ) = @ _ ;
my @ correlated_cdrs = ( ) ;
foreach my $ correlated_group_cdr ( @ { NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_group:: findby_cdrid ( $ context - > { db } , $ id ) } ) {
next unless $ correlated_group_cdr - > { call_id } ;
foreach my $ correlated_cdr ( @ { NGCP::BulkProcessor::Dao::Trunk::accounting::cdr:: findby_callid ( $ context - > { db } , $ correlated_group_cdr - > { call_id } ) } ) {
push ( @ correlated_cdrs , $ correlated_cdr ) ;
}
@ -348,7 +351,7 @@ sub _export_cdrs_init_context {
if ( exists $ context - > { correlated_cdrs_map } - > { $ cdr - > { id } } ) {
@ correlated_cdrs = @ { $ context - > { correlated_cdrs_map } - > { $ cdr - > { id } } } ;
} else {
@ correlated_cdrs = grep { length ( $ _ - > { call_id } =~ s/^\s+|\s+$//g r ) > 0 ; } @ { _find_child_cdrs ( $ context , $ cdr - > { id } ) } ;
@ correlated_cdrs = @ { _find_child_cdrs ( $ context , $ cdr - > { id } ) } ;
}
$ cdr - > { _correlated_cdrs } = \ @ correlated_cdrs ;
push ( @ scenario_cdrs , @ correlated_cdrs ) ;
@ -461,9 +464,9 @@ sub _export_cdrs_init_context {
}
if ( $ scenario - > { code } == $ BLIND_TRANSFER_NO_IVR ) {
my $ originating = $ parent_cdrs - > [ 0 ] - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 1 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ switch_number = $ parent_cdrs - > [ 0 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ parent_cdrs - > [ 0 ] ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 1 ] ) ;
my $ switch_number = _get_terminating ( $ parent_cdrs - > [ 0 ] ) ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 1 ] - > { start_time } , #?
duration = > $ parent_cdrs - > [ 1 ] - > { duration } ,
@ -479,9 +482,9 @@ sub _export_cdrs_init_context {
} ,
} ) ;
} elsif ( $ scenario - > { code } == $ BLIND_TRANSFER ) {
my $ originating = $ parent_cdrs - > [ 0 ] - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 1 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ switch_number = $ parent_cdrs - > [ 0 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ parent_cdrs - > [ 0 ] ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 1 ] ) ;
my $ switch_number = _get_terminating ( $ parent_cdrs - > [ 0 ] ) ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 0 ] - > { start_time } , #?
duration = > abs ( $ parent_cdrs - > [ 0 ] - > { start_time } - $ parent_cdrs - > [ 1 ] - > { init_time } ) ,
@ -510,8 +513,8 @@ sub _export_cdrs_init_context {
} ,
} ) ;
} elsif ( $ scenario - > { code } == $ NO_TRANSFER_NO_IVR ) {
my $ originating = $ parent_cdrs - > [ 0 ] - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 0 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ parent_cdrs - > [ 0 ] ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 0 ] ) ;
my $ switch_number = $ terminating ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 0 ] - > { start_time } , #?
@ -528,8 +531,8 @@ sub _export_cdrs_init_context {
} ,
} ) ;
} elsif ( $ scenario - > { code } == $ NO_TRANSFER ) {
my $ originating = $ parent_cdrs - > [ 0 ] - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 0 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ parent_cdrs - > [ 0 ] ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 0 ] ) ;
my $ switch_number = $ terminating ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 0 ] - > { start_time } , #?
@ -560,9 +563,9 @@ sub _export_cdrs_init_context {
} ) ;
} elsif ( $ scenario - > { code } == $ ATTN_TRANSFER_NO_IVR ) {
my $ correlated_cdr = $ parent_cdrs - > [ 1 ] - > { _correlated_cdrs } - > [ 0 ] ;
my $ originating = $ correlated_cdr - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 1 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ switch_number = $ correlated_cdr - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ correlated_cdr ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 1 ] ) ;
my $ switch_number = _get_terminating ( $ correlated_cdr ) ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 1 ] - > { start_time } , #?
duration = > $ correlated_cdr - > { duration } - abs ( $ correlated_cdr - > { start_time } - $ parent_cdrs - > [ 1 ] - > { start_time } ) ,
@ -579,9 +582,9 @@ sub _export_cdrs_init_context {
} ) ;
} elsif ( $ scenario - > { code } == $ ATTN_TRANSFER ) {
my $ correlated_cdr = $ parent_cdrs - > [ 1 ] - > { _correlated_cdrs } - > [ 0 ] ;
my $ originating = $ correlated_cdr - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 1 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ switch_number = $ correlated_cdr - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ correlated_cdr ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 1 ] ) ;
my $ switch_number = _get_terminating ( $ correlated_cdr ) ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 1 ] - > { start_time } , #?
duration = > abs ( $ correlated_cdr - > { start_time } - $ parent_cdrs - > [ 1 ] - > { init_time } ) ,
@ -610,9 +613,9 @@ sub _export_cdrs_init_context {
} ,
} ) ;
} elsif ( $ scenario - > { code } == $ CFU ) {
my $ originating = $ parent_cdrs - > [ 0 ] - > { $ ama_originating_digits_cdr_field } ;
my $ terminating = $ parent_cdrs - > [ 1 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ switch_number = $ parent_cdrs - > [ 0 ] - > { $ ama_terminating_digits_cdr_field } ;
my $ originating = _get_originating ( $ parent_cdrs - > [ 0 ] ) ;
my $ terminating = _get_terminating ( $ parent_cdrs - > [ 1 ] ) ;
my $ switch_number = _get_terminating ( $ parent_cdrs - > [ 0 ] ) ;
push ( @ { $ scenario - > { ama } } , {
start_time = > $ parent_cdrs - > [ 1 ] - > { start_time } , #?
duration = > $ parent_cdrs - > [ 1 ] - > { duration } ,
@ -633,6 +636,28 @@ sub _export_cdrs_init_context {
}
sub _get_originating {
my $ cdr = shift ;
my $ src_user ;
if ( $ offnet_anonymous_fallback
and $ cdr - > { source_user_id } eq "0"
and $ cdr - > { $ ama_originating_digits_cdr_field } =~ /anonymous/i
and $ cdr - > { source_user } =~ /^[+ 0-9]+$/ ) {
$ src_user = $ cdr - > { source_user } ;
} else {
$ src_user = $ cdr - > { $ ama_originating_digits_cdr_field } ;
}
if ( $ src_user =~ /anonymous/i ) {
$ src_user = $ anonymous_originating_digits ;
}
return $ src_user ;
}
sub _get_terminating {
my $ cdr = shift ;
return $ cdr - > { $ ama_terminating_digits_cdr_field } ;
}
sub _rewrite_switch_number {
my ( $ switch_number ) = @ _ ;