summaryrefslogtreecommitdiff
path: root/FS/FS/cust_location.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-07-21 13:47:42 -0700
committerMark Wells <mark@freeside.biz>2016-07-21 13:47:42 -0700
commit6262584c58bdc26ee7e7958e3a96483efe88500e (patch)
tree6a9c3f9fda540603380ee5580011e0b47a37615d /FS/FS/cust_location.pm
parentfef586f5bd0b3ac4fa01485055bfef75e4e0e5f4 (diff)
fix whitespace and case correctness of city names, #71501
Diffstat (limited to 'FS/FS/cust_location.pm')
-rw-r--r--FS/FS/cust_location.pm41
1 files changed, 39 insertions, 2 deletions
diff --git a/FS/FS/cust_location.pm b/FS/FS/cust_location.pm
index 9040098..fdc2cf8 100644
--- a/FS/FS/cust_location.pm
+++ b/FS/FS/cust_location.pm
@@ -2,7 +2,7 @@ package FS::cust_location;
use base qw( FS::geocode_Mixin FS::Record );
use strict;
-use vars qw( $import $DEBUG $conf $label_prefix );
+use vars qw( $import $DEBUG $conf $label_prefix $allow_location_edit );
use Data::Dumper;
use Date::Format qw( time2str );
use FS::UID qw( dbh driver_name );
@@ -171,6 +171,10 @@ sub find_or_insert {
delete $nonempty{'locationnum'};
my %hash = map { $_ => $self->get($_) } @essential;
+ foreach (values %hash) {
+ s/^\s+//;
+ s/\s+$//;
+ }
my @matches = qsearch('cust_location', \%hash);
# we no longer reject matches for having different values in nonessential
@@ -292,7 +296,7 @@ sub replace {
# it's a prospect location, then there are no active packages, no billing
# history, no taxes, and in general no reason to keep the old location
# around.
- if ( $self->custnum ) {
+ if ( !$allow_location_edit and $self->custnum ) {
foreach (qw(address1 address2 city state zip country)) {
if ( $self->$_ ne $old->$_ ) {
return "can't change cust_location field $_";
@@ -347,6 +351,10 @@ sub check {
return '' if $self->disabled; # so that disabling locations never fails
+ # maybe should just do all fields in the table?
+ # or in every table?
+ $self->trim_whitespace(qw(district city county state country));
+
my $error =
$self->ut_numbern('locationnum')
|| $self->ut_foreign_keyn('prospectnum', 'prospect_main', 'prospectnum')
@@ -887,6 +895,35 @@ sub process_standardize {
close $log;
}
+sub _upgrade_data {
+ my $class = shift;
+
+ # are we going to need to update tax districts?
+ my $use_districts = $conf->config('tax_district_method') ? 1 : 0;
+
+ # trim whitespace on records that need it
+ local $allow_location_edit = 1;
+ foreach my $field (qw(city county state country district)) {
+ foreach my $location (qsearch({
+ table => 'cust_location',
+ extra_sql => " WHERE $field LIKE ' %' OR $field LIKE '% '"
+ })) {
+ my $error = $location->replace;
+ die "$error (fixing whitespace in $field, locationnum ".$location->locationnum.')'
+ if $error;
+
+ if ( $use_districts ) {
+ my $queue = new FS::queue {
+ 'job' => 'FS::geocode_Mixin::process_district_update'
+ };
+ $error = $queue->insert( 'FS::cust_location' => $location->locationnum );
+ die $error if $error;
+ }
+ } # foreach $location
+ } # foreach $field
+ '';
+}
+
=head1 BUGS
=head1 SEE ALSO