projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
CDR type separation and summary formats, #15535
[freeside.git]
/
FS
/
FS
/
svc_broadband.pm
diff --git
a/FS/FS/svc_broadband.pm
b/FS/FS/svc_broadband.pm
index
576684c
..
edcb4bc
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,
+ },
},
};
}
},
};
}
@@
-334,21
+346,23
@@
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'
, $lat_lower, 90
)
- || $self->ut_coordn('longitude'
, -180, $lon_upper
)
+ || $self->ut_coordn('latitude')
+ || $self->ut_coordn('longitude')
|| $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')
@@
-381,6
+395,17
@@
sub check {
}
}
}
}
+ if ( $cust_pkg && ! $self->latitude && ! $self->longitude ) {
+ my $l = $cust_pkg->cust_location_or_main;
+ if ( $l->ship_latitude && $l->ship_longitude ) {
+ $self->latitude = $l->ship_latitude;
+ $self->longitude = $l->ship_longitude;
+ } elsif ( $l->latitude && $l->longitude ) {
+ $self->latitude = $l->latitude;
+ $self->longitude = $l->longitude;
+ }
+ }
+
$error = $self->_check_ip_addr;
return $error if $error;
$error = $self->_check_ip_addr;
return $error if $error;
@@
-463,6
+488,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.