X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=FS%2FFS%2Fcust_location.pm;h=a5250ec0552025732558485c60eef66e2bd85250;hb=9d97b3c2da538eb34c2ec609dd638241fd04d2a8;hp=7ffa5ed411263e353c19b993d92498212b55e68c;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984;p=freeside.git diff --git a/FS/FS/cust_location.pm b/FS/FS/cust_location.pm index 7ffa5ed41..a5250ec05 100644 --- a/FS/FS/cust_location.pm +++ b/FS/FS/cust_location.pm @@ -1,7 +1,8 @@ package FS::cust_location; +use base qw( FS::geocode_Mixin FS::Record ); use strict; -use base qw( FS::geocode_Mixin FS::Record ); +use vars qw( $import ); use Locale::Country; use FS::UID qw( dbh ); use FS::Record qw( qsearch ); #qsearchs ); @@ -10,6 +11,8 @@ use FS::prospect_main; use FS::cust_main; use FS::cust_main_county; +$import = 0; + =head1 NAME FS::cust_location - Object methods for cust_location records @@ -76,6 +79,10 @@ Country (see L) Geocode +=item district + +Tax district code (optional) + =item disabled Disabled flag; set to 'Y' to disable the location. @@ -102,6 +109,26 @@ sub table { 'cust_location'; } Adds this record to the database. If there is an error, returns the error, otherwise returns false. +=cut + +sub insert { + my $self = shift; + my $error = $self->SUPER::insert(@_); + + #false laziness with cust_main, will go away eventually + my $conf = new FS::Conf; + if ( !$error and $conf->config('tax_district_method') ) { + + my $queue = new FS::queue { + 'job' => 'FS::geocode_Mixin::process_district_update' + }; + $error = $queue->insert( ref($self), $self->locationnum ); + + } + + $error || ''; +} + =item delete Delete this record from the database. @@ -111,6 +138,30 @@ Delete this record from the database. Replaces the OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false. +=cut + +sub replace { + my $self = shift; + my $old = shift; + $old ||= $self->replace_old; + my $error = $self->SUPER::replace($old); + + #false laziness with cust_main, will go away eventually + my $conf = new FS::Conf; + if ( !$error and $conf->config('tax_district_method') + and $self->get('address1') ne $old->get('address1') ) { + + my $queue = new FS::queue { + 'job' => 'FS::geocode_Mixin::process_district_update' + }; + $error = $queue->insert( ref($self), $self->locationnum ); + + } + + $error || ''; +} + + =item check Checks all fields to make sure this is a valid location. If there is @@ -135,13 +186,20 @@ sub check { || $self->ut_textn('state') || $self->ut_country('country') || $self->ut_zip('zip', $self->country) + || $self->ut_coordn('latitude') + || $self->ut_coordn('longitude') + || $self->ut_enum('coord_auto', [ '', 'Y' ]) || $self->ut_alphan('location_type') || $self->ut_textn('location_number') || $self->ut_enum('location_kind', [ '', 'R', 'B' ] ) || $self->ut_alphan('geocode') + || $self->ut_alphan('district') ; return $error if $error; + $self->set_coord + unless $import || ($self->latitude && $self->longitude); + return "No prospect or customer!" unless $self->prospectnum || $self->custnum; return "Prospect and customer!" if $self->prospectnum && $self->custnum;