projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
correct intrastate parsing, RT#18790
[freeside.git]
/
FS
/
FS
/
svc_broadband.pm
diff --git
a/FS/FS/svc_broadband.pm
b/FS/FS/svc_broadband.pm
index
2b6be2c
..
26659d5
100755
(executable)
--- a/
FS/FS/svc_broadband.pm
+++ b/
FS/FS/svc_broadband.pm
@@
-245,6
+245,12
@@
sub search {
push @where, "svcpart = $1";
}
push @where, "svcpart = $1";
}
+ #exportnum
+ if ( $params->{'exportnum'} =~ /^(\d+)$/ ) {
+ push @from, 'LEFT JOIN export_svc USING ( svcpart )';
+ push @where, "exportnum = $1";
+ }
+
#ip_addr
if ( $params->{'ip_addr'} =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/ ) {
push @where, "ip_addr = '$1'";
#ip_addr
if ( $params->{'ip_addr'} =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/ ) {
push @where, "ip_addr = '$1'";
@@
-428,7
+434,8
@@
sub check {
}
else {
my $addr_block = $self->addr_block;
}
else {
my $addr_block = $self->addr_block;
- unless ( $addr_block and $addr_block->manual_flag ) {
+ if ( $self->ip_addr eq ''
+ and not ( $addr_block and $addr_block->manual_flag ) ) {
my $error = $self->assign_ip_addr;
return $error if $error;
}
my $error = $self->assign_ip_addr;
return $error if $error;
}
@@
-525,6
+532,12
@@
sub _check_ip_addr {
else {
return 'Cannot parse address: '.$self->ip_addr unless $self->NetAddr;
}
else {
return 'Cannot parse address: '.$self->ip_addr unless $self->NetAddr;
}
+
+ if ( $self->addr_block
+ and not $self->addr_block->NetAddr->contains($self->NetAddr) ) {
+ return 'Address '.$self->ip_addr.' not in block '.$self->addr_block->cidr;
+ }
+
# if (my $dup = qsearchs('svc_broadband', {
# ip_addr => $self->ip_addr,
# svcnum => {op=>'!=', value => $self->svcnum}
# if (my $dup = qsearchs('svc_broadband', {
# ip_addr => $self->ip_addr,
# svcnum => {op=>'!=', value => $self->svcnum}
@@
-536,9
+549,9
@@
sub _check_ip_addr {
sub _check_duplicate {
my $self = shift;
sub _check_duplicate {
my $self = shift;
-
- $self->lock_table;
-
+ # Not a reliable check because the table isn't locked, but
+ # that's why we have a unique index. This is just to give a
+ # friendlier error message.
my @dup;
@dup = $self->find_duplicates('global', 'ip_addr');
if ( @dup ) {
my @dup;
@dup = $self->find_duplicates('global', 'ip_addr');
if ( @dup ) {