summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-07-01 17:57:44 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-07-02 00:26:27 -0500
commitf49c0a3ee7781cd1e60d3615b45cd324087add23 (patch)
tree40cebcdb6266d343b0df86df95119b8670100fbf /FS/FS
parent7a7cbbf2d1afbbfb90c409b98ffa579e61dd865b (diff)
RT#29285: State field not needed for New Zealand [bug fixes]
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/UI/Web/small_custview.pm6
-rw-r--r--FS/FS/cust_location.pm111
2 files changed, 14 insertions, 103 deletions
diff --git a/FS/FS/UI/Web/small_custview.pm b/FS/FS/UI/Web/small_custview.pm
index 329e5f7..a1173f7 100644
--- a/FS/FS/UI/Web/small_custview.pm
+++ b/FS/FS/UI/Web/small_custview.pm
@@ -130,9 +130,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>';
- $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;
}
diff --git a/FS/FS/cust_location.pm b/FS/FS/cust_location.pm
index 9ab94f2..7f4aa9a 100644
--- a/FS/FS/cust_location.pm
+++ b/FS/FS/cust_location.pm
@@ -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
@@ -149,18 +149,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
@@ -218,10 +213,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);
@@ -288,13 +284,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)) {
@@ -419,30 +410,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
@@ -766,62 +733,6 @@ sub county_state_country {
=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