diff --git a/lib/NGCP/Panel/Role/API/CallLists.pm b/lib/NGCP/Panel/Role/API/CallLists.pm index 7e6f4fd462..0da815f0fb 100644 --- a/lib/NGCP/Panel/Role/API/CallLists.pm +++ b/lib/NGCP/Panel/Role/API/CallLists.pm @@ -130,6 +130,8 @@ sub resource_from_item { } my ($src_sub, $dst_sub); + my $billing_src_sub = $item->source_subscriber; + my $billing_dst_sub = $item->destination_subscriber; if($item->source_subscriber && $item->source_subscriber->provisioning_voip_subscriber) { $src_sub = $item->source_subscriber->provisioning_voip_subscriber; } @@ -209,13 +211,13 @@ sub resource_from_item { } my $own_sub = ($resource->{direction} eq "out") - ? $src_sub - : $dst_sub; + ? $billing_src_sub + : $billing_dst_sub; if($resource->{own_cli} !~ /^\d+$/) { $resource->{own_cli} .= '@'.$own_domain; } elsif($own_normalize) { $resource->{own_cli} = NGCP::Panel::Utils::Subscriber::apply_rewrite( - c => $c, subscriber => $sub // $own_sub->voip_subscriber, + c => $c, subscriber => $sub // $own_sub, number => $resource->{own_cli}, direction => "caller_out" ); } @@ -226,10 +228,13 @@ sub resource_from_item { $resource->{other_cli} .= '@'.$other_domain; } elsif($other_normalize) { $resource->{other_cli} = NGCP::Panel::Utils::Subscriber::apply_rewrite( - c => $c, subscriber => $sub // $own_sub->voip_subscriber, + c => $c, subscriber => $sub // $own_sub, number => $resource->{other_cli}, direction => "caller_out" ); } + if (($sub // $own_sub)->status eq "terminated") { + $resource->{own_cli} .= " (terminated)"; + } $resource->{status} = $item->call_status; $resource->{type} = $item->call_type; diff --git a/lib/NGCP/Panel/Utils/Subscriber.pm b/lib/NGCP/Panel/Utils/Subscriber.pm index 0399deab5c..b9648d41b6 100644 --- a/lib/NGCP/Panel/Utils/Subscriber.pm +++ b/lib/NGCP/Panel/Utils/Subscriber.pm @@ -1049,6 +1049,11 @@ sub apply_rewrite { my ($field, $direction) = split /_/, $dir; $dir = "rewrite_".$dir."_dpid"; + unless ($subscriber && $subscriber->provisioning_voip_subscriber) { + $c->log->warn('could not apply rewrite: subscriber might have been terminated.'); + return $callee; + } + my $rwr_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs( c => $c, attribute => $dir, prov_subscriber => $subscriber->provisioning_voip_subscriber,