X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fprospect_main.pm;h=67e91cf994fc2b674bdd968736ca075496eb1882;hp=b160343de5239f2c0a261c5ca3b213688965adf3;hb=e0b6fe25cca1e2ff566cc0765f6c9fa24ed66ba8;hpb=92a327b2bc09344a7e0db93f40e34b71547bf075 diff --git a/FS/FS/prospect_main.pm b/FS/FS/prospect_main.pm index b160343de..67e91cf99 100644 --- a/FS/FS/prospect_main.pm +++ b/FS/FS/prospect_main.pm @@ -5,7 +5,7 @@ use strict; use vars qw( $DEBUG @location_fields ); use Scalar::Util qw( blessed ); use FS::Conf; -use FS::Record qw( dbh qsearch ); # qsearchs ); +use FS::Record qw( dbh qsearch qsearchs ); use FS::cust_location; use FS::cust_main; @@ -246,6 +246,7 @@ sub check { || $self->ut_foreign_key( 'agentnum', 'agent', 'agentnum' ) || $self->ut_foreign_keyn( 'refnum', 'part_referral', 'refnum' ) || $self->ut_textn('company') + || $self->ut_foreign_keyn( 'taxstatusnum', 'tax_status', 'taxstatusnum' ) ; return $error if $error; @@ -269,8 +270,11 @@ sub name { my $self = shift; return $self->company if $self->company; - my $contact = ($self->contact)[0]; #first contact? good enough for now - return $contact->line if $contact; + my $prospect_contact = ($self->prospect_contact)[0]; #first contact? good enough for now + my $contact = $prospect_contact->contact if $prospect_contact; + return $contact->line if $prospect_contact && $contact; + + #address? 'Prospect #'. $self->prospectnum; } @@ -287,8 +291,13 @@ Returns the locations (see L) associated with this prospect. sub cust_location { my $self = shift; - qsearch( 'cust_location', { 'prospectnum' => $self->prospectnum, - 'custnum' => '' } ); + qsearch({ + 'table' => 'cust_location', + 'hashref' => { 'prospectnum' => $self->prospectnum, + 'custnum' => '', + }, + 'order_by' => 'ORDER BY country, LOWER(state), LOWER(city), LOWER(county), LOWER(address1), LOWER(address2)', + }); } =item qual @@ -299,6 +308,36 @@ Returns the qualifications (see L) associated with this prospect. Returns the agent (see L) for this customer. +=item tax_status + +Returns the external tax status, as an FS::tax_status object, or the empty +string if there is no tax status. + +=cut + +sub tax_status { + my $self = shift; + if ( $self->taxstatusnum ) { + qsearchs('tax_status', { 'taxstatusnum' => $self->taxstatusnum } ); + } else { + return ''; + } +} + +=item taxstatus + +Returns the tax status code if there is one. + +=cut + +sub taxstatus { + my $self = shift; + my $tax_status = $self->tax_status; + $tax_status + ? $tax_status->taxstatus + : ''; +} + =item convert_cust_main Converts this prospect to a customer. @@ -314,10 +353,7 @@ sub convert_cust_main { my @cust_location = $self->cust_location; #the interface only allows one, so we're just gonna go with that for now - my @contact = $self->contact; - - #XXX define one contact type as "billing", then we could pick just that one - my @invoicing_list = map $_->emailaddress, map $_->contact_email, @contact; + my @contact = map $_->contact, $self->prospect_contact; #XXX i'm not compatible with cust_main-require_phone (which is kind of a # pre-contact thing anyway) @@ -325,7 +361,7 @@ sub convert_cust_main { my $cust_main = new FS::cust_main { 'bill_location' => $cust_location[0], 'ship_location' => $cust_location[0], - ( map { $_ => $self->$_ } qw( agentnum refnum company ) ), + ( map { $_ => $self->$_ } qw( agentnum refnum company taxstatusnum ) ), }; $cust_main->refnum( FS::Conf->new->config('referraldefault') || 1 ) @@ -339,11 +375,11 @@ sub convert_cust_main { $cust_main->set('last', 'Unknown'); } - #v3 payby - $cust_main->payby('BILL'); - $cust_main->paydate('12/2037'); + #v3 payby no longer allowed + #$cust_main->payby('BILL'); + #$cust_main->paydate('12/2037'); - $cust_main->insert( {}, \@invoicing_list, + $cust_main->insert( {}, 'prospectnum' => $self->prospectnum, ) or $cust_main; @@ -410,6 +446,11 @@ sub cust_bill { return; } +# XXX should have real localization here eventually +sub locale { + FS::Conf->new->config('locale'); +} + =back =head1 BUGS