RT##29285: State field not needed for New Zealand
authorJonathan Prykop <jonathan@freeside.biz>
Wed, 1 Jul 2015 22:57:44 +0000 (17:57 -0500)
committerJonathan Prykop <jonathan@freeside.biz>
Fri, 3 Jul 2015 04:59:37 +0000 (23:59 -0500)
FS/FS/UI/Web/small_custview.pm
FS/FS/cust_location.pm

index 1e9ddb1..1210da4 100644 (file)
@@ -128,10 +128,9 @@ sub small_custview {
   $html .= encode_entities($cust_main->address2). '<BR>'
     if $cust_main->address2;
   $html .= encode_entities($cust_main->city) . ', ' if $cust_main->city;
-  $html .= $cust_main->state. '  '.
-           $cust_main->zip. '<BR>';
-           $cust_main->zip. '<BR>';
-  $html .= $cust_main->country. '<BR>'
+  $html .= encode_entities($cust_main->state). '  '.
+           encode_entities($cust_main->zip). '<BR>';
+  $html .= encode_entities($cust_main->country). '<BR>'
     if $cust_main->country && $cust_main->country ne $countrydefault;
 
   $html .= '</TD></TR><TR><TD></TD><TD BGCOLOR="#ffffff">';
index 4f0bd9b..09baff3 100644 (file)
@@ -68,7 +68,7 @@ Address line two (optional)
 
 =item city
 
-City (optional only if cust_main-no_city_in_address config is set)
+City (if cust_main-no_city_in_address config is set when inserting, this will be forced blank)
 
 =item county
 
@@ -144,18 +144,13 @@ sub find_or_insert {
 
   warn "find_or_insert:\n".Dumper($self) if $DEBUG;
 
-  my @essential = (qw(custnum address1 address2 county state zip country
+  my @essential = (qw(custnum address1 address2 city county state zip country
     location_number location_type location_kind disabled));
 
-  # Just in case this conf was accidentally/temporarily set,
-  # we'll never overwrite existing city; see city method
   if ($conf->exists('cust_main-no_city_in_address')) {
-    warn "Warning: find_or_insert specified city when cust_main-no_city_in_address was configured"
+    warn "Warning: passed city to find_or_insert when cust_main-no_city_in_address is configured, ignoring it"
       if $self->get('city');
-    $self->set('city',''); # won't end up in %nonempty, hence old value is preserved
-  } else {
-    # otherwise, of course, city is essential
-    push(@essential,'city') 
+    $self->set('city','');
   }
 
   # I don't think this is necessary
@@ -213,10 +208,11 @@ otherwise returns false.
 sub insert {
   my $self = shift;
 
-  # Ideally, this should never happen,
-  # but throw a warning and save the value anyway, to avoid data loss
-  warn "Warning: inserting city when cust_main-no_city_in_address is configured"
-    if $conf->exists('cust_main-no_city_in_address') && $self->get('city');
+  if ($conf->exists('cust_main-no_city_in_address')) {
+    warn "Warning: passed city to insert when cust_main-no_city_in_address is configured, ignoring it"
+      if $self->get('city');
+    $self->set('city','');
+  }
 
   if ( $self->censustract ) {
     $self->set('censusyear' => $conf->config('census_year') || 2012);
@@ -283,13 +279,8 @@ sub replace {
   my $old = shift;
   $old ||= $self->replace_old;
 
-  # Just in case this conf was accidentally/temporarily set,
-  # we'll never overwrite existing city; see city method
-  if ($conf->exists('cust_main-no_city_in_address')) {
-    warn "Warning: replace attempted to change city when cust_main-no_city_in_address was configured"
-      if $self->get('city') && ($old->get('city') != $self->get('city'));
-    $self->set('city',$old->get('city'));
-  }
+  warn "Warning: passed city to replace when cust_main-no_city_in_address is configured"
+    if $conf->exists('cust_main-no_city_in_address') && $self->get('city');
 
   # the following fields are immutable
   foreach (qw(address1 address2 city state zip country)) {
@@ -413,30 +404,6 @@ sub check {
   $self->SUPER::check;
 }
 
-=item city
-
-When the I<cust_main-no_city_in_address> config is set, the
-city method will return a blank string no matter the previously
-set value of the field.  You can still use the get method to
-access the contents of the field directly.
-
-Just in case this config was accidentally/temporarily set,
-we'll never overwrite existing city while the config is active.
-L</find_or_insert> will throw a warning if passed any true value for city,
-ignore the city field when finding, and preserve the existing value.
-L</replace> will only throw a warning if passed a true value that is 
-different than the existing value of city, and will preserve the existing value.
-L</insert> will throw a warning but still insert a true city value,
-to avoid unnecessary data loss.
-
-=cut
-
-sub city {
-  my $self = shift;
-  return '' if $conf->exists('cust_main-no_city_in_address');
-  return $self->get('city');
-}
-
 =item country_full
 
 Returns this locations's full country name
@@ -770,62 +737,6 @@ sub cust_main {
 
 =back
 
-=head1 CLASS METHODS
-
-=item in_county_sql OPTIONS
-
-Returns an SQL expression to test membership in a cust_main_county 
-geographic area.  By default, this requires district, city, county,
-state, and country to match exactly.  Pass "ornull => 1" to allow 
-partial matches where some fields are NULL in the cust_main_county 
-record but not in the location.
-
-Pass "param => 1" to receive a parameterized expression (rather than
-one that requires a join to cust_main_county) and a list of parameter
-names in order.
-
-=cut
-
-### Is this actually used for anything anymore?  Grep doesn't show anything...
-sub in_county_sql {
-  # replaces FS::cust_pkg::location_sql
-  my ($class, %opt) = @_;
-  my $ornull = $opt{ornull} ? ' OR ? IS NULL' : '';
-  my $x = $ornull ? 3 : 2;
-  my @fields = (('district') x 3,
-                ('county') x $x,
-                ('state') x $x,
-                'country');
-
-  unless ($conf->exists('cust_main-no_city_in_address')) {
-    push( @fields, (('city') x 3) );
-  }
-
-  my $text = (driver_name =~ /^mysql/i) ? 'char' : 'text';
-
-  my @where = (
-    "cust_location.district = ? OR ? = '' OR CAST(? AS $text) IS NULL",
-    "cust_location.county   = ? OR (? = '' AND cust_location.county IS NULL) $ornull",
-    "cust_location.state    = ? OR (? = '' AND cust_location.state IS NULL ) $ornull",
-    "cust_location.country = ?",
-    "cust_location.city     = ? OR ? = '' OR CAST(? AS $text) IS NULL"
-  );
-  my $sql = join(' AND ', map "($_)\n", @where);
-  if ( $opt{param} ) {
-    return $sql, @fields;
-  }
-  else {
-    # do the substitution here
-    foreach (@fields) {
-      $sql =~ s/\?/cust_main_county.$_/;
-      $sql =~ s/cust_main_county.$_ = ''/cust_main_county.$_ IS NULL/;
-    }
-    return $sql;
-  }
-}
-
-=back
-
 =head2 SUBROUTINES
 
 =over 4