From 06770196a007116502dcd620afad5d34758432fe Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Mon, 11 Mar 2019 12:49:10 +0100 Subject: [PATCH] TT#54661 .ama exporter: skip malformed CDRs use export status "failed" for CDRs w/o destination Change-Id: Idcd411124d96b12df6f82da005f1a7238e71d9a0 (cherry picked from commit 8750c0fd163876536dd6414a64ab0cc0b58015ba) --- .../Dao/Trunk/accounting/cdr_export_status_data.pm | 6 ++++-- .../BulkProcessor/Projects/Export/Ama/Ccs/CDR.pm | 14 +++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_export_status_data.pm b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_export_status_data.pm index e7c669f..c0e9df8 100644 --- a/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_export_status_data.pm +++ b/lib/NGCP/BulkProcessor/Dao/Trunk/accounting/cdr_export_status_data.pm @@ -38,12 +38,14 @@ our @EXPORT_OK = qw( update_export_status $UNEXPORTED - $EXPORTED + $OK + $FAILED $SKIPPED ); our $UNEXPORTED = 'unexported'; -our $EXPORTED = 'exported'; +our $OK = 'ok'; +our $FAILED = 'failed'; our $SKIPPED = 'skipped'; my $tablename = 'cdr_export_status_data'; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/CDR.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/CDR.pm index 24f844d..4d8498a 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/CDR.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/CDR.pm @@ -296,20 +296,28 @@ sub _export_cdrs_init_context { $call_id,$export_cdr_joins,$export_cdr_conditions); #already sorted my $cdrs_in_block = delete $context->{block_call_id_map}->{$call_id_prefix}; if ((scalar @{$context->{cdrs}}) == $cdrs_in_block) { + my $malformed = 0; if ((scalar @{$context->{cdrs}}) == 2 and not $context->{cdrs}->[0]->is_xfer() and $context->{cdrs}->[1]->is_xfer() and ($scenario->{ccs_subscriber} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_subscribers::findby_uuid(undef,$context->{cdrs}->[0]->{destination_user_id})) and ($scenario->{ccs_subscriber}->{primary_alias} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_dbaliases::findby_subscriberidisprimary($scenario->{ccs_subscriber}->{id},1)->[0]) ) { - $scenario->{code} = $DIRECT_FORWARDER_SCENARIO; - $result = 1; + if (not $context->{cdrs}->[0]->{$ama_originating_digits_cdr_field} + or not $context->{cdrs}->[1]->{$ama_terminating_digits_cdr_field}) { + $malformed = 1; + } else { + $scenario->{code} = $DIRECT_FORWARDER_SCENARIO; + $result = 1; + } #} else { # print "blah"; } foreach my $cdr (@{$context->{cdrs}}) { if ($result) { - $cdr->{_extended_export_status} = $NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_export_status_data::EXPORTED; + $cdr->{_extended_export_status} = $NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_export_status_data::OK; + } elsif ($malformed) { + $cdr->{_extended_export_status} = $NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_export_status_data::FAILED; } else { $cdr->{_extended_export_status} = $NGCP::BulkProcessor::Dao::Trunk::accounting::cdr_export_status_data::SKIPPED; }