X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fprospect_main.pm;h=55b12f2412d7d9c4393b49095c0a6cd2f7dd44fd;hb=a0e00fa0547e99893c735ab3dbdacdb2bb054f5a;hp=5a4048f51c16073fb13c2ff379333d0bbe4445b9;hpb=fb4ab1073f0d15d660c6cdc4e07afebf68ef3924;p=freeside.git diff --git a/FS/FS/prospect_main.pm b/FS/FS/prospect_main.pm index 5a4048f51..55b12f241 100644 --- a/FS/FS/prospect_main.pm +++ b/FS/FS/prospect_main.pm @@ -1,17 +1,51 @@ package FS::prospect_main; +use base qw( FS::Quotable_Mixin FS::o2m_Common FS::Record ); use strict; -use base qw( FS::o2m_Common FS::Record ); -use vars qw( $DEBUG ); +use vars qw( $DEBUG @location_fields ); use Scalar::Util qw( blessed ); -use FS::Record qw( dbh qsearch ); #qsearchs ); -use FS::agent; +use FS::Record qw( dbh qsearch ); # qsearchs ); use FS::cust_location; -use FS::contact; -use FS::qual; $DEBUG = 0; +#started as false laziness w/cust_main/Location.pm + +use Carp qw(carp); + +my $init = 0; +BEGIN { + # set up accessors for location fields + if (!$init) { + no strict 'refs'; + @location_fields = + qw( address1 address2 city county state zip country district + latitude longitude coord_auto censustract censusyear geocode + addr_clean ); + + foreach my $f (@location_fields) { + *{"FS::prospect_main::$f"} = sub { + carp "WARNING: tried to set cust_main.$f with accessor" if (@_ > 1); + my @cust_location = shift->cust_location or return ''; + #arbitrarily picking the first because the UI only lets you add one + $cust_location[0]->$f + }; + } + $init++; + } +} + +#debugging shim--probably a performance hit, so remove this at some point +sub get { + my $self = shift; + my $field = shift; + if ( $DEBUG and grep { $_ eq $field } @location_fields ) { + carp "WARNING: tried to get() location field $field"; + $self->$field; + } + $self->FS::Record::get($field); +} + =head1 NAME FS::prospect_main - Object methods for prospect_main records @@ -208,11 +242,20 @@ sub check { ; return $error if $error; + my $company = $self->company; + $company =~ s/^\s+//; + $company =~ s/\s+$//; + $company =~ s/\s+/ /g; + $self->company($company); + $self->SUPER::check; } =item name +Returns a name for this prospect, as a string (company name for commercial +prospects, contact name for residential prospects). + =cut sub name { @@ -229,13 +272,6 @@ sub name { Returns the contacts (see L) associated with this prospect. -=cut - -sub contact { - my $self = shift; - qsearch( 'contact', { 'prospectnum' => $self->prospectnum } ); -} - =item cust_location Returns the locations (see L) associated with this prospect. @@ -244,20 +280,17 @@ Returns the locations (see L) associated with this prospect. sub cust_location { my $self = shift; - qsearch( 'cust_location', { 'prospectnum' => $self->prospectnum } ); + qsearch( 'cust_location', { 'prospectnum' => $self->prospectnum, + 'custnum' => '' } ); } =item qual Returns the qualifications (see L) associated with this prospect. -=cut - -sub qual { - my $self = shift; - qsearch( 'qual', { 'prospectnum' => $self->prospectnum } ); -} +=item agent +Returns the agent (see L) for this customer. =item search HASHREF