don't ignore the cdrtypenum rule for 0, hopefully finally fix DA for QIS, RT#4502
[freeside.git] / FS / FS / part_pkg / voip_cdr.pm
index 5648d61..cf9dd7b 100644 (file)
@@ -255,7 +255,7 @@ sub calc_recur {
       if ( $rating_method eq 'prefix' ) {
 
         my $da_rewrote = 0;
-        if ( scalar(@dirass) && $cdr->dst && grep { $cdr->dst eq $_ } @dirass ){
+        if ( length($cdr->dst) && grep { $cdr->dst eq $_ } @dirass ){
           $cdr->dst('411');
           $da_rewrote = 1;
         }
@@ -335,11 +335,11 @@ sub calc_recur {
 
           if ( $rate_detail ) {
 
+            $rate_region = $rate_detail->dest_region;
+            $regionnum = $rate_region->regionnum;
             warn "  found rate for regionnum $regionnum ".
                  "and rate detail $rate_detail\n"
               if $DEBUG;
-            $rate_region = $rate_detail->dest_region;
-            $regionnum = $rate_region->regionnum;
 
           } elsif ( $ignore_unrateable ) {
 
@@ -562,13 +562,13 @@ sub check_chargable {
     if $opt{'use_disposition_taqua'} && $cdr->disposition != 100;
 
   return "carrierid != $opt{'use_carrierid'}"
-    if $opt{'use_carrierid'}
-    && $cdr->carrierid != $opt{'use_carrierid'}
+    if length($opt{'use_carrierid'})
+    && $cdr->carrierid ne $opt{'use_carrierid'} #ne otherwise 0 matches ''
     && ! $flags{'da_rewrote'};
 
   return "cdrtypenum != $opt{'use_cdrtypenum'}"
-    if $opt{'use_cdrtypenum'}
-    && $cdr->cdrtypenum != $opt{'use_cdrtypenum'};
+    if length($opt{'use_cdrtypenum'})
+    && $cdr->cdrtypenum ne $opt{'use_cdrtypenum'}; #ne otherwise 0 matches ''
 
   #all right then, rate it
   '';