X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_broadband.pm;h=38594f0dfd58d1054a53f29c64a9967d8bcd26f9;hp=002aa55ce9524fae6681af4fec11bd73e472a5a8;hb=389b6f1116c3309c2ee57a6c295ed1a793503095;hpb=f3e0ac2b009c4edd5692cb587ff709dac2223ebe diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index 002aa55ce..38594f0df 100755 --- a/FS/FS/svc_broadband.pm +++ b/FS/FS/svc_broadband.pm @@ -2,9 +2,11 @@ package FS::svc_broadband; use base qw( FS::svc_Radius_Mixin FS::svc_Tower_Mixin + FS::svc_Torrus_Mixin FS::svc_IP_Mixin + FS::MAC_Mixin FS::svc_Common - ); +); use strict; use vars qw($conf); @@ -101,6 +103,7 @@ sub table_info { 'display_weight' => 50, 'cancel_weight' => 70, 'ip_field' => 'ip_addr', + 'manual_require' => 1, 'fields' => { 'svcnum' => 'Service', 'description' => 'Descriptive label', @@ -143,6 +146,7 @@ sub table_info { type => 'search-svc_broadband', disable_inventory => 1, }, + 'serviceid' => 'Torrus serviceid', #but is should be hidden }, }; } @@ -234,10 +238,11 @@ sub search_sql { my( $class, $string ) = @_; if ( $string =~ /^(\d{1,3}\.){3}\d{1,3}$/ ) { $class->search_sql_field('ip_addr', $string ); - } elsif ( $string =~ /^([a-fA-F0-9]{12})$/ ) { + } elsif ( $string =~ /^([A-F0-9]{12})$/i ) { $class->search_sql_field('mac_addr', uc($string)); - } elsif ( $string =~ /^(([a-fA-F0-9]{1,2}:){5}([a-fA-F0-9]{1,2}))$/ ) { - $class->search_sql_field('mac_addr', uc("$2$3$4$5$6$7") ); + } elsif ( $string =~ /^(([A-F0-9]{2}:){5}([A-F0-9]{2}))$/i ) { + $string =~ s/://g; + $class->search_sql_field('mac_addr', uc($string) ); } elsif ( $string =~ /^(\d+)$/ ) { my $table = $class->table; "$table.svcnum = $1"; @@ -261,7 +266,7 @@ sub smart_search { =item label -Returns the IP address. +Returns the IP address, MAC address and description. =cut @@ -361,6 +366,7 @@ sub check { || $self->ut_snumbern('rssi') || $self->ut_numbern('suid') || $self->ut_foreign_keyn('shared_svcnum', 'svc_broadband', 'svcnum') + || $self->ut_textn('serviceid') #too lenient? ; return $error if $error; @@ -418,28 +424,17 @@ sub _check_duplicate { ''; } -=item mac_addr_formatted CASE DELIMITER - -Format the MAC address (for use by exports). If CASE starts with "l" -(for "lowercase"), it's returned in lowercase. DELIMITER is inserted -between octets. - -=cut - -sub mac_addr_formatted { - my $self = shift; - my ($case, $delim) = @_; - my $addr = $self->mac_addr; - $addr = lc($addr) if $case =~ /^l/i; - join( $delim || '', $addr =~ /../g ); -} - #class method sub _upgrade_data { my $class = shift; local($FS::svc_Common::noexport_hack) = 1; + # fix wrong-case MAC addresses + my $dbh = dbh; + $dbh->do('UPDATE svc_broadband SET mac_addr = UPPER(mac_addr);') + or die $dbh->errstr; + # set routernum to addr_block.routernum foreach my $self (qsearch('svc_broadband', { blocknum => {op => '!=', value => ''},