summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-03-19 20:04:21 -0700
committerIvan Kohler <ivan@freeside.biz>2013-03-19 20:04:21 -0700
commita858c1b8461b92b6f9daaa1b508b1c2cfc1f0f23 (patch)
treebe2ada6da7cf7274a6ebe994f73a03099fdfee27
parentfc7539c3b8a0ae3326df9f47e924e36de3ef2cfe (diff)
fix quotation addresses vs RT#940, RT#21103
-rw-r--r--FS/FS/prospect_main.pm39
1 files changed, 38 insertions, 1 deletions
diff --git a/FS/FS/prospect_main.pm b/FS/FS/prospect_main.pm
index a04af860d..a18c8ff67 100644
--- a/FS/FS/prospect_main.pm
+++ b/FS/FS/prospect_main.pm
@@ -2,7 +2,7 @@ package FS::prospect_main;
use strict;
use base qw( FS::Quotable_Mixin 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;
@@ -12,6 +12,43 @@ 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