projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tower tracking, RT#15538
[freeside.git]
/
FS
/
FS
/
svc_broadband.pm
diff --git
a/FS/FS/svc_broadband.pm
b/FS/FS/svc_broadband.pm
index
2b794aa
..
35de8b3
100755
(executable)
--- a/
FS/FS/svc_broadband.pm
+++ b/
FS/FS/svc_broadband.pm
@@
-2,14
+2,15
@@
package FS::svc_broadband;
use strict;
use vars qw(@ISA $conf);
use strict;
use vars qw(@ISA $conf);
+use NetAddr::IP;
use FS::Record qw( qsearchs qsearch dbh );
use FS::svc_Common;
use FS::cust_svc;
use FS::addr_block;
use FS::part_svc_router;
use FS::Record qw( qsearchs qsearch dbh );
use FS::svc_Common;
use FS::cust_svc;
use FS::addr_block;
use FS::part_svc_router;
-use
NetAddr::IP
;
+use
FS::tower_sector
;
-@ISA = qw( FS::svc_Common );
+@ISA = qw( FS::svc_
Radius_Mixin FS::svc_
Common );
$FS::UID::callback{'FS::svc_broadband'} = sub {
$conf = new FS::Conf;
$FS::UID::callback{'FS::svc_broadband'} = sub {
$conf = new FS::Conf;
@@
-95,8
+96,10
@@
sub table_info {
'longname_plural' => 'Fixed (username-less) broadband services',
'display_weight' => 50,
'cancel_weight' => 70,
'longname_plural' => 'Fixed (username-less) broadband services',
'display_weight' => 50,
'cancel_weight' => 70,
+ 'ip_field' => 'ip_addr',
'fields' => {
'fields' => {
- 'description' => 'Descriptive label for this particular device.',
+ 'svcnum' => 'Service',
+ 'description' => 'Descriptive label for this particular device',
'speed_down' => 'Maximum download speed for this service in Kbps. 0 denotes unlimited.',
'speed_up' => 'Maximum upload speed for this service in Kbps. 0 denotes unlimited.',
'ip_addr' => 'IP address. Leave blank for automatic assignment.',
'speed_down' => 'Maximum download speed for this service in Kbps. 0 denotes unlimited.',
'speed_up' => 'Maximum upload speed for this service in Kbps. 0 denotes unlimited.',
'ip_addr' => 'IP address. Leave blank for automatic assignment.',
@@
-115,6
+118,15
@@
sub table_info {
'longitude' => 'Longitude',
'altitude' => 'Altitude',
'vlan_profile' => 'VLAN profile',
'longitude' => 'Longitude',
'altitude' => 'Altitude',
'vlan_profile' => 'VLAN profile',
+ 'usergroup' => {
+ label => 'RADIUS groups',
+ type => 'select-radius_group.html',
+ #select_table => 'radius_group',
+ #select_key => 'groupnum',
+ #select_label => 'groupname',
+ disable_inventory => 1,
+ multiple => 1,
+ },
},
};
}
},
};
}
@@
-168,7
+180,7
@@
sub search {
#agentnum
if ( $params->{'agentnum'} =~ /^(\d+)$/ and $1 ) {
#agentnum
if ( $params->{'agentnum'} =~ /^(\d+)$/ and $1 ) {
- push @where, "agentnum = $1";
+ push @where, "
cust_main.
agentnum = $1";
}
push @where, $FS::CurrentUser::CurrentUser->agentnums_sql(
'null_right' => 'View/link unlinked services',
}
push @where, $FS::CurrentUser::CurrentUser->agentnums_sql(
'null_right' => 'View/link unlinked services',
@@
-334,17
+346,27
@@
sub check {
return $x unless ref($x);
return $x unless ref($x);
+ my $nw_coords = $conf->exists('svc_broadband-require-nw-coordinates');
+ my $lat_lower = $nw_coords ? 1 : -90;
+ my $lon_upper = $nw_coords ? -1 : 180;
+
+ # remove delimiters
+ my $mac_addr = uc($self->get('mac_addr'));
+ $mac_addr =~ s/[-: ]//g;
+ $self->set('mac_addr', $mac_addr);
+
my $error =
$self->ut_numbern('svcnum')
|| $self->ut_numbern('blocknum')
my $error =
$self->ut_numbern('svcnum')
|| $self->ut_numbern('blocknum')
+ || $self->ut_foreign_keyn('sectornum', 'tower_sector', 'sectornum')
|| $self->ut_textn('description')
|| $self->ut_textn('description')
- || $self->ut_number('speed_up')
- || $self->ut_number('speed_down')
+ || $self->ut_number
n
('speed_up')
+ || $self->ut_number
n
('speed_down')
|| $self->ut_ipn('ip_addr')
|| $self->ut_hexn('mac_addr')
|| $self->ut_hexn('auth_key')
|| $self->ut_ipn('ip_addr')
|| $self->ut_hexn('mac_addr')
|| $self->ut_hexn('auth_key')
- || $self->ut_coordn('latitude',
-90
, 90)
- || $self->ut_coordn('longitude', -180,
180
)
+ || $self->ut_coordn('latitude',
$lat_lower
, 90)
+ || $self->ut_coordn('longitude', -180,
$lon_upper
)
|| $self->ut_sfloatn('altitude')
|| $self->ut_textn('vlan_profile')
|| $self->ut_textn('plan_id')
|| $self->ut_sfloatn('altitude')
|| $self->ut_textn('vlan_profile')
|| $self->ut_textn('plan_id')
@@
-459,6
+481,16
@@
sub NetAddr {
new NetAddr::IP ($self->ip_addr);
}
new NetAddr::IP ($self->ip_addr);
}
+=item tower_sector
+
+=cut
+
+sub tower_sector {
+ my $self = shift;
+ return '' unless $self->sectornum;
+ qsearchs('tower_sector', { sectornum => $self->sectornum });
+}
+
=item addr_block
Returns the FS::addr_block record (i.e. the address block) for this broadband service.
=item addr_block
Returns the FS::addr_block record (i.e. the address block) for this broadband service.