X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_Tower_Mixin.pm;h=d6776791c5ef79faddf5a21e5cecc6190c60123b;hp=850805357808716a333c6cac91aa5d7bdb1e2c27;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hpb=efa799391aeba085b65145428cab1cf1074d3f6d diff --git a/FS/FS/svc_Tower_Mixin.pm b/FS/FS/svc_Tower_Mixin.pm index 850805357..d6776791c 100644 --- a/FS/FS/svc_Tower_Mixin.pm +++ b/FS/FS/svc_Tower_Mixin.pm @@ -1,19 +1,9 @@ package FS::svc_Tower_Mixin; use strict; -use FS::Record qw(qsearchs); #qsearch; -use FS::tower_sector; =item tower_sector -=cut - -sub tower_sector { - my $self = shift; - return '' unless $self->sectornum; - qsearchs('tower_sector', { sectornum => $self->sectornum }); -} - =item tower_sector_sql HASHREF Class method which returns a list of WHERE clause fragments to @@ -30,14 +20,20 @@ sub tower_sector_sql { my( $class, $params ) = @_; return () unless keys %$params; - my @where; + my @where = (); for my $field (qw(towernum sectornum)) { my $value = $params->{$field} or next; if ( ref $value and grep { $_ } @$value ) { my $in = join(',', map { /^(\d+)$/ ? $1 : () } @$value); my @orwhere; push @orwhere, "tower_sector.$field IN ($in)" if $in; - push @orwhere, "tower_sector.$field IS NULL" if grep /^none$/, @$value; + if ( grep /^none$/, @$value ) { + # then allow this field to be null + push @orwhere, "tower_sector.$field IS NULL"; + # and if this field is the sector, also allow the default sector + # on the tower + push @orwhere, "sectorname = '_default'" if $field eq 'sectornum'; + } push @where, '( '.join(' OR ', @orwhere).' )'; } elsif ( $value =~ /^(\d+)$/ ) {