From a858c1b8461b92b6f9daaa1b508b1c2cfc1f0f23 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 19 Mar 2013 20:04:21 -0700 Subject: [PATCH] fix quotation addresses vs RT#940, RT#21103 --- FS/FS/prospect_main.pm | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) 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 -- 2.11.0