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<FS::contact>) 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<FS::cust_location>) 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
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)
#$cust_main->payby('BILL');
#$cust_main->paydate('12/2037');
- $cust_main->insert( {}, \@invoicing_list,
+ $cust_main->insert( {},
'prospectnum' => $self->prospectnum,
)
or $cust_main;
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
##