X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Frate_region.pm;h=e6114c825c726a1a043974128f7cfbd9ad5151ed;hb=f120002baa4ef8d96994c3a6e2129b7e39f003ca;hp=65dfd2a25c4a08642a723c6f1b9b963690d04428;hpb=c648976f0b7975f2328ebd7ba8c711fad0ca4195;p=freeside.git diff --git a/FS/FS/rate_region.pm b/FS/FS/rate_region.pm index 65dfd2a25..e6114c825 100644 --- a/FS/FS/rate_region.pm +++ b/FS/FS/rate_region.pm @@ -36,7 +36,10 @@ inherits from FS::Record. The following fields are currently supported: =item regionnum - primary key -=item regionname +=item regionname - name of the region + +=item exact_match - 'Y' if "prefixes" in this region really represent +complete phone numbers. Null if they represent prefixes (the usual case). =back @@ -233,6 +236,7 @@ sub check { my $error = $self->ut_numbern('regionnum') || $self->ut_text('regionname') + || $self->ut_flag('exact_match') ; return $error if $error; @@ -248,6 +252,7 @@ Returns all prefixes (see L) for this region. sub rate_prefix { my $self = shift; + map { $_ } #return $self->num_rate_prefix unless wantarray; sort { $a->countrycode cmp $b->countrycode or $a->npa cmp $b->npa or $a->nxx cmp $b->nxx @@ -264,7 +269,7 @@ destionation. sub dest_detail { my $self = shift; - qsearch( 'rate_detail', { 'dest_regionnum' => $self->regionnum, } ); + qsearch( 'rate_detail', { 'dest_regionnum' => $self->regionnum } ); } =item prefixes_short @@ -287,11 +292,43 @@ sub prefixes_short { } my $npa = $rate_prefix->npa; if ( $countrycode eq '1' ) { - $out .= '('. substr( $npa, 0, 3 ). ')'; + #$out .= '('. substr( $npa, 0, 3 ). ')'; + $out .= substr( $npa, 0, 3 ); $out .= ' '. substr( $npa, 3 ) if length($npa) > 3; } else { $out .= $rate_prefix->npa; } + $out .= '-'. $rate_prefix->nxx if $rate_prefix->nxx; + $out .= ', '; + } + $out =~ s/, $//; + + $out; +} + +sub prefixes_short_sql { + my $self = shift; + + my $countrycode = ''; + my $out = ''; + + foreach my $prefix (sort split(',', $self->prefixes)) { + my($cc, $npa) = split(' ', $prefix); + + if ( $countrycode ne $cc ) { + $out =~ s/, $//; + $countrycode = $cc; + $out.= " +$countrycode "; + } + if ( $countrycode eq '1' ) { + #$out .= '('. substr( $npa, 0, 3 ). ')'; + $out .= substr( $npa, 0, 3 ); + $out .= ' '. substr( $npa, 3 ) if length($npa) > 3; + } else { + $out .= $npa; + } +#XXX have to implement this here too if we ever actually used the nxx field +# $out .= '-'. $rate_prefix->nxx if $rate_prefix->nxx; $out .= ', '; } $out =~ s/, $//;