X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fprospect_main.pm;h=c54c569c36a51811242dcd58da55c287e61ccc0d;hp=79efa86d01d2d354bd98f7cc82bba219f8f14240;hb=bb7e827141c9ed68f30765c9ca2ddcd1d760ad2d;hpb=f2cf5c2843dcef5db0941a1673538eb922fd5a5a diff --git a/FS/FS/prospect_main.pm b/FS/FS/prospect_main.pm index 79efa86d0..c54c569c3 100644 --- a/FS/FS/prospect_main.pm +++ b/FS/FS/prospect_main.pm @@ -270,16 +270,54 @@ sub name { my $self = shift; return $self->company if $self->company; - my $contact = ($self->prospect_contact)[0]->contact; #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; } +=item contact_firstlast + +If this prospect has a company, returns the empty string. If not, returns the +first contact's first and last name. + +Primarily intended for use in quotation substitutions, like the FS::cust_main +method of the same name. + +=cut + +sub contact_firstlast { + my $self = shift; + return '' if $self->company; + my @contacts = $self->contact; + #return '' unless @contacts; + warn $contacts[0]->first; + warn $contacts[0]->get('last'); + $contacts[0]->first. ' '. $contacts[0]->get('last'); +} + =item contact Returns the contacts (see L) associated with this prospect. +=cut + +sub contact { + my $self = shift; + my $search = { + table => 'contact', + addl_from => ' JOIN prospect_contact USING (contactnum)', + extra_sql => ' WHERE prospect_contact.prospectnum = '.$self->prospectnum, + }; + + #classnum argument like FS::cust_main->contact? + + qsearch($search); +} + =item cust_location Returns the locations (see L) associated with this prospect. @@ -288,8 +326,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 @@ -347,9 +390,6 @@ sub convert_cust_main { my @contact = map $_->contact, $self->prospect_contact; - #XXX define one contact type as "billing", then we could pick just that one - my @invoicing_list = map $_->emailaddress, map $_->contact_email, @contact; - #XXX i'm not compatible with cust_main-require_phone (which is kind of a # pre-contact thing anyway) @@ -374,7 +414,7 @@ sub convert_cust_main { #$cust_main->payby('BILL'); #$cust_main->paydate('12/2037'); - $cust_main->insert( {}, \@invoicing_list, + $cust_main->insert( {}, 'prospectnum' => $self->prospectnum, ) or $cust_main; @@ -401,15 +441,18 @@ sub search { my @where = (); my $orderby; - ## - # parse agent - ## - + #agent if ( $params->{'agentnum'} =~ /^(\d+)$/ and $1 ) { push @where, "prospect_main.agentnum = $1"; } + #refnum + if ( $params->{'refnum'} =~ /^(\d+)$/ and $1 ) { + push @where, + "prospect_main.refnum = $1"; + } + ## # setup queries, subs, etc. for the search ##