X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fvoip_sqlradacct.pm;h=3f044eb6b4cb084502f4f6e688c3e6600c821c54;hb=3b6e45a965df08e1ccd6989b000d24913513b764;hp=0b3250acd30be8d62ce856d39f684b33371f93ad;hpb=dd87db7f012de20494b3ff09350de92d617d723c;p=freeside.git diff --git a/FS/FS/part_pkg/voip_sqlradacct.pm b/FS/FS/part_pkg/voip_sqlradacct.pm index 0b3250acd..3f044eb6b 100644 --- a/FS/FS/part_pkg/voip_sqlradacct.pm +++ b/FS/FS/part_pkg/voip_sqlradacct.pm @@ -9,7 +9,7 @@ use FS::rate_prefix; @ISA = qw(FS::part_pkg); -$DEBUG = 0; +$DEBUG = 1; %info = ( 'name' => 'VoIP rating by plan of CDR records in an SQL RADIUS radacct table', @@ -26,8 +26,11 @@ $DEBUG = 0; 'select_key' => 'ratenum', 'select_label' => 'ratename', }, + 'ignore_unrateable' => { 'name' => 'Ignore calls for which not rate prefix can be found (otherwise they are fatal)', + 'type' => 'checkbox', + }, }, - 'fieldorder' => [qw( setup_fee recur_flat ratenum )], + 'fieldorder' => [qw( setup_fee recur_flat ratenum ignore_unrateable )], 'weight' => 40, ); @@ -87,6 +90,8 @@ sub calc_recur { $countrycode = '1'; } + warn "rating call to +$countrycode $dest" if $DEBUG; + #find a rate prefix, first look at most specific (4 digits) then 3, etc., # finally trying the country code only my $rate_prefix = ''; @@ -100,8 +105,15 @@ sub calc_recur { 'countrycode' => $countrycode, 'npa' => '', }); - die "Can't find rate for call to countrycode $countrycode number $dest\n" - unless $rate_prefix; + + unless ( $rate_prefix ) { + if ( $self->option('ignore_unrateable') ) { + warn " skipping unrateable call to +$countrycode $dest"; + next; + } else { + die "Can't find rate for call to +$countrycode $dest\n" + } + } my $regionnum = $rate_prefix->regionnum; @@ -110,6 +122,10 @@ sub calc_recur { 'dest_regionnum' => $regionnum, } ); + warn " found rate for regionnum $regionnum ". + "and rate detail $rate_detail" + if $DEBUG; + ### # find the price and add detail to the invoice ### @@ -133,6 +149,15 @@ sub calc_recur { $charges += $charge; } + warn " adding details on charge to invoice: ". + join(' - ', + "+$countrycode $dest", + $rate_prefix->rate_region->regionname, + $minutes.'m', + '$'.$charge, + ) + if $DEBUG; + push @$details, #[ join(' - ',