[freeside-commits] freeside/FS/FS/part_pkg voip_cdr.pm,1.48,1.49
Ivan,,,
ivan at wavetail.420.am
Mon Jan 12 17:34:18 PST 2009
Update of /home/cvs/cvsroot/freeside/FS/FS/part_pkg
In directory wavetail.420.am:/tmp/cvs-serv9025
Modified Files:
voip_cdr.pm
Log Message:
refactor out the ignoring rules into check_chargable; ignore carrierid rule w/411 rewrite, RT#4502
Index: voip_cdr.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_pkg/voip_cdr.pm,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- voip_cdr.pm 13 Jan 2009 00:17:38 -0000 1.48
+++ voip_cdr.pm 13 Jan 2009 01:34:16 -0000 1.49
@@ -117,7 +117,7 @@
'type' => 'checkbox',
},
- '411_rewrite' => { 'name' => 'Rewrite these (comma-separated) destination numbers to 411 for rating purposes: ',
+ '411_rewrite' => { 'name' => 'Rewrite these (comma-separated) destination numbers to 411 for rating purposes (also ignore any carrierid check): ',
},
'output_format' => { 'name' => 'CDR invoice display format',
@@ -236,55 +236,33 @@
my @call_details = ();
if ( $rating_method eq 'prefix' ) {
- #should have some better way of checking these options than a long
- #if-else tree...
- my $notchg = "not charging for CDR";
-
- if ( $self->option('use_amaflags') && $cdr->amaflags != 2 ) {
-
- warn "$notchg (amaflags != 2)\n" if $DEBUG;
- $charge = 0;
-
- } elsif ( $self->option('use_disposition')
- && $cdr->disposition ne 'ANSWERED' ) {
-
- warn "$notchg (disposition != ANSWERED)\n" if $DEBUG;
- $charge = 0;
-
- } elsif ( $self->option('use_disposition_taqua')
- && $cdr->disposition != 100 ) {
-
- warn "$notchg (disposition != 100)\n" if $DEBUG;
- $charge = 0;
-
- } elsif ( $self->option('use_carrierid')
- && $cdr->carrierid != $self->option('use_carrierid') ) {
+ my $da_rewrite = 0;
+ if ( $self->option('411_rewrite') ) {
+ my $dirass = $self->option('411_rewrite');
+ $dirass =~ s/\s//g;
+ my @dirass = split(',', $dirass);
+ if ( grep $cdr->dst eq $_, @dirass ) {
+ $cdr->dst('411');
+ $da_rewrite = 1;
+ }
+ }
- warn "$notchg (carrierid != ". $self->option('use_carrierid'). ")\n"
- if $DEBUG;
- $charge = 0;
+ my $reason = $self->check_chargable( $cdr,
+ '411_rewrite' => $da_rewrite,
+ );
- } elsif ( $self->option('use_cdrtypenum')
- && $cdr->cdrtypenum != $self->option('use_cdrtypenum') ) {
+ if ( $reason ) {
- warn "$notchg (cdrtypenum != ". $self->option('use_cdrtypenum'). ")\n"
- if $DEBUG;
+ warn "not charging for CDR ($reason)\n" if $DEBUG;
$charge = 0;
} else {
-
+
###
# look up rate details based on called station id
# (or calling station id for toll free calls)
###
- if ( $self->option('411_rewrite') ) {
- my $dirass = $self->option('411_rewrite');
- $dirass =~s/\s//g;
- my @dirass = split(',', $dirass);
- $cdr->dst('411') if grep $cdr->dst eq $_, @dirass;
- }
-
my( $to_or_from, $number );
if ( $cdr->dst =~ /^(\+?1)?8([02-8])\1/
&& ! $self->option('disable_tollfree')
@@ -545,6 +523,35 @@
$charges;
}
+#returns a reason why not to rate this CDR, or false if the CDR is chargeable
+sub check_chargable {
+ my( $self, $cdr, %opt ) = @_;
+
+ #should have some better way of checking these options from a hash
+ #or something
+
+ return 'amaflags != 2'
+ if $self->option('use_amaflags') && $cdr->amaflags != 2;
+
+ return 'disposition != ANSWERED'
+ if $self->option('use_disposition') && $cdr->disposition ne 'ANSWERED';
+
+ return "disposition != 100"
+ if $self->option('use_disposition_taqua') && $cdr->disposition != 100;
+
+ return 'carrierid != '. $self->option('use_carrierid')
+ if $self->option('use_carrierid')
+ && $cdr->carrierid != $self->option('use_carrierid')
+ && ! $opt{'411_rewrite'};
+
+ return 'cdrtypenum != '. $self->option('use_cdrtypenum')
+ if $self->option('use_cdrtypenum')
+ && $cdr->cdrtypenum != $self->option('use_cdrtypenum');
+
+ #all right then, rate it
+ '';
+}
+
sub is_free {
0;
}
More information about the freeside-commits
mailing list