From 3baa02c55101a3ad6c18d294c67a009e33ae6930 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 11 Apr 2011 05:00:45 +0000 Subject: [PATCH] taqua accountcodes, RT#12181 --- FS/FS/Schema.pm | 2 +- FS/FS/cdr/taqua.pm | 4 ++-- FS/bin/freeside-cdrrewrited | 36 +++++++++++++++++++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index c0687cd91..803cb47ad 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -2850,7 +2850,7 @@ sub tables_hashref { 'index' => [ [ 'calldate' ], [ 'src' ], [ 'dst' ], [ 'dcontext' ], [ 'charged_party' ], [ 'accountcode' ], [ 'carrierid' ], [ 'cdrid' ], - [ 'sessionnum' ], + [ 'sessionnum' ], [ 'subscriber' ], [ 'freesidestatus' ], [ 'freesiderewritestatus' ], [ 'cdrbatch' ], [ 'cdrbatchnum' ], ], diff --git a/FS/FS/cdr/taqua.pm b/FS/FS/cdr/taqua.pm index 26c0bda62..99e077483 100644 --- a/FS/FS/cdr/taqua.pm +++ b/FS/FS/cdr/taqua.pm @@ -26,7 +26,7 @@ use FS::cdr qw(_cdr_date_parser_maker); sub { my($cdr, $field) = @_; }, #OrigCircuit sub { my($cdr, $field) = @_; }, #OrigCircuitType 'uniqueid', #SequenceNumber - 'accountcode', #SessionNumber + 'sessionnum', #SessionNumber 'src', #CallingPartyNumber #'dst', #CalledPartyNumber #CalledPartyNumber @@ -101,7 +101,7 @@ use FS::cdr qw(_cdr_date_parser_maker); } }, - sub { my($cdr, $field) = @_; }, #SubscriberNumber + 'subscriber', #SubscriberNumber 'lastapp', #ServiceName sub { my($cdr, $field) = @_; }, #some weirdness #ChargeTime 'lastdata', #ServiceInformation diff --git a/FS/bin/freeside-cdrrewrited b/FS/bin/freeside-cdrrewrited index 0b7f6883f..809c8c9c4 100644 --- a/FS/bin/freeside-cdrrewrited +++ b/FS/bin/freeside-cdrrewrited @@ -24,8 +24,8 @@ daemonize2(); $conf = new FS::Conf; -die "not running; cdr-asterisk_forward_rewrite and cdr-charged_party_rewrite ". - " conf options are both off\n" +die "not running; cdr-asterisk_forward_rewrite, cdr-charged_party_rewrite ". + " and cdr-taqua-accountcode_rewrite conf options are all off\n" unless _shouldrun(); #-- @@ -77,6 +77,35 @@ while (1) { } + if ( $conf->exists('cdr-taqua-accountcode_rewrite') + && $cdr->lastapp eq 'acctcode' && $cdr->cdrtypenum == 1 + ) + { + + #find the matching CDR + my $primary = qsearchs('cdr', { + 'sessionnum' => $cdr->sessionnum, + 'src' => $cdr->subscriber, + #'accountcode' => '', + }); + + unless ( $primary ) { + warn "WARNING: can't find primary CDR with session ". $cdr->sessionnum. + ", src ". $cdr->subscriber. "; will keep trying\n"; + next; + } + + $primary->accountcode( $cdr->lastdata ); + #$primary->freesiderewritestatus( 'taqua-accountcode-primary' ); + my $error = $primary->replace; + if ( $error ) { + warn "WARNING: error rewriting primary CDR (will retry): $error\n" + next; + } + + push @status, 'taqua-accountcode'; + } + $cdr->freesiderewritestatus( scalar(@status) ? join('/', @status) : 'skipped' ); @@ -101,7 +130,8 @@ while (1) { sub _shouldrun { $conf->exists('cdr-asterisk_forward_rewrite') - || $conf->exists('cdr-charged_party_rewrite'); + || $conf->exists('cdr-charged_party_rewrite') + || $conf->exists('cdr-taqua-accountcode_rewrite'); } sub usage { -- 2.11.0