X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fphone_avail.pm;h=6d49507b3f500be9f7fd1c21873cbd4d25c588c2;hb=568cf104bb07789ae00f39ea3524f7e1ee32e1e3;hp=44421ff579cbd336eff5957b4799a7db9958666d;hpb=9a59cc9d51350d7eefb25697cd0d99188f686ea5;p=freeside.git diff --git a/FS/FS/phone_avail.pm b/FS/FS/phone_avail.pm index 44421ff57..6d49507b3 100644 --- a/FS/FS/phone_avail.pm +++ b/FS/FS/phone_avail.pm @@ -5,6 +5,8 @@ use vars qw( @ISA $DEBUG $me ); use FS::Record qw( qsearch qsearchs dbh ); use FS::cust_svc; use FS::Misc::DateTime qw( parse_datetime ); +use FS::msa; +use Data::Dumper; @ISA = qw(FS::cust_main_Mixin FS::Record); @@ -182,6 +184,16 @@ sub part_export { qsearchs('part_export', { 'exportnum' => $self->exportnum }); } +=item lata + +=cut + +sub lata { + my $self = shift; + return '' unless $self->latanum; + qsearchs('lata', { 'latanum' => $self->latanum }); +} + =item msa2msanum Translate free-form MSA name to a msa.msanum @@ -191,11 +203,34 @@ Translate free-form MSA name to a msa.msanum sub msa2msanum { my $self = shift; my $msa = shift; - my $res = qsearchs('msa', { 'description' => { 'op' => 'ILIKE', - 'value' => $msa, } + + if ( $msa =~ /(.+[^,])\s+(\w{2}(-\w{2})*)$/ ) { + $msa = "$1, $2"; + } + + my @msas = qsearch('msa', { 'description' => { 'op' => 'ILIKE', + 'value' => "%$msa%", } }); - return 0 unless $res; - $res->msanum; + return 0 unless scalar(@msas); + my @msa = grep { $self->msatest($msa,$_->description) } @msas; + return 0 unless scalar(@msa) == 1; + $msa[0]->msanum; +} + +sub msatest { + my $self = shift; + my ($their,$our) = (shift,shift); + + $their =~ s/^\s+//; + $their =~ s/\s+$//; + $their =~ s/\s+/ /g; + return 1 if $our eq $their; + + my $a = $our; + $a =~ s/,.*?$//; + return 1 if $a eq $their; + return 1 if ($our =~ /^([\w\s]+)-/ && $1 eq $their); + 0; } sub process_batch_import { @@ -213,6 +248,7 @@ sub process_batch_import { my $msasub = sub { my( $phone_avail, $value ) = @_; + return '' if !$value; my $msanum = $phone_avail->msa2msanum($value); die "cannot translate MSA ($value) to msanum" unless $msanum; $phone_avail->msanum($msanum);