diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-03-19 20:04:21 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-03-19 20:04:21 -0700 |
commit | a858c1b8461b92b6f9daaa1b508b1c2cfc1f0f23 (patch) | |
tree | be2ada6da7cf7274a6ebe994f73a03099fdfee27 | |
parent | fc7539c3b8a0ae3326df9f47e924e36de3ef2cfe (diff) |
fix quotation addresses vs RT#940, RT#21103
-rw-r--r-- | FS/FS/prospect_main.pm | 39 |
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 |