X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Frate.pm;h=bdf689a10de4214487661a340b9c2d53e0006b95;hb=4137519a5a1a9380c59385536883e3e228627ee8;hp=50657ce5fa06b081a11080f5cf5e80ad2618c296;hpb=8e4a09fe86c531059bfea4b3d49599e417580198;p=freeside.git diff --git a/FS/FS/rate.pm b/FS/FS/rate.pm index 50657ce5f..bdf689a10 100644 --- a/FS/FS/rate.pm +++ b/FS/FS/rate.pm @@ -55,6 +55,8 @@ it may still be processed under a different pricing addon package), or be marked as 'skipped', or throw a fatal error, depending on the setting of the 'ignore_unrateable' package option. +Deprecated; we now find the default detail by its lack of regionnum. + =item =back @@ -348,7 +350,11 @@ sub dest_detail { }); } - return $self->default_detail unless $rate_prefix; + if ( !$rate_prefix ) { + # then this call doesn't match any known region; just return the + # appropriate anywhere rate + return $self->default_detail($cdrtypenum) || $self->default_detail(''); + } $regionnum = $rate_prefix->regionnum; @@ -366,7 +372,14 @@ sub dest_detail { %hash, 'cdrtypenum' => $cdrtypenum }); - # find all rates maching ratenum, regionnum and null cdrtypenum + # failing that, return the global default for this plan with the correct + # cdrtypenum (skips weektime processing) + if ( !@details and $cdrtypenum ) { + my $detail = $self->default_detail($cdrtypenum); + return $detail if $detail; + } + # failing that, find all rates maching ratenum, regionnum and null cdrtypenum + # (these can have weektime stuff) if ( !@details and $cdrtypenum ) { @details = qsearch( 'rate_detail', { %hash, @@ -392,7 +405,7 @@ sub dest_detail { return $_ if $_->ratetimenum eq ''; } # if still nothing, return the global default rate for this plan - return $self->default_detail; + return $self->default_detail(''); } =item rate_detail @@ -419,16 +432,24 @@ sub agent { =back -=item default_detail +=item default_detail [ CDRTYPENUM ] -Returns the default rate detail, if there is one. +Returns the default rate detail for CDRTYPENUM (or for null CDR type, if not +specified). =cut sub default_detail { my $self = shift; - $self->default_detailnum ? - FS::rate_detail->by_key($self->default_detailnum) : '' + my $cdrtypenum = shift || ''; +# $self->default_detailnum ? +# FS::rate_detail->by_key($self->default_detailnum) : '' + qsearchs( 'rate_detail', { + ratenum => $self->ratenum, + cdrtypenum => $cdrtypenum, + dest_regionnum => '', + orig_regionnum => '', + }) || ''; } =head1 SUBROUTINES