diff options
author | jeff <jeff> | 2009-02-19 13:38:28 +0000 |
---|---|---|
committer | jeff <jeff> | 2009-02-19 13:38:28 +0000 |
commit | c2cf878f3c2c0e3fcd06f400a268d2cf9bd12eb8 (patch) | |
tree | 5471b9213296214f882721d34bb70e4a5b2453d3 /httemplate | |
parent | e832eb872042cb27881402c5c92a17ce4c0506e9 (diff) |
do not attempt to assign a geocode to non us/ca addresses (RT 4857)
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/cust_main.cgi | 11 | ||||
-rw-r--r-- | httemplate/edit/cust_main/choose_tax_location.html | 44 |
2 files changed, 34 insertions, 21 deletions
diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index 1e2ab0f6f..3fb70a5bf 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -361,9 +361,14 @@ function update_address(arg) { % if ( $conf->exists('enable_taxproducts') ) { - if ( error || ship_error ) { - - var url = "cust_main/choose_tax_location.html?data_vendor=cch-zip;city="+document.bottomform.elements['city'].value+";state="+document.bottomform.elements['state'].value+";zip="+document.bottomform.elements['zip'].value+";"; + if ( ( error || ship_error ) && + ( document.bottomform.elements['country'].value == 'CA' || + document.bottomform.elements['country'].value == 'US' + ) + ) + { + + var url = "cust_main/choose_tax_location.html?data_vendor=cch-zip;city="+document.bottomform.elements['city'].value+";state="+document.bottomform.elements['state'].value+";zip="+document.bottomform.elements['zip'].value+";country="+document.bottomform.elements['country'].value+";"; // popup a chooser OLgetAJAX( url, update_geocode, 300 ); diff --git a/httemplate/edit/cust_main/choose_tax_location.html b/httemplate/edit/cust_main/choose_tax_location.html index 045490b55..bd8b95cb6 100644 --- a/httemplate/edit/cust_main/choose_tax_location.html +++ b/httemplate/edit/cust_main/choose_tax_location.html @@ -4,17 +4,21 @@ <SELECT NAME='geocodes' ID='geocodes' STYLE="<% $style %>"> % foreach my $location (@cust_tax_location) { -% my $value = encode_entities(objToJson({ zip => $zip5, -% map { $_ => $location->$_ } -% qw ( city state geocode ) -% }) +% my %value = ( zip => $zip5, +% map { $_ => $location->$_ } +% qw ( city state geocode ) +% ); +% map { $value{$_} = $location{$_} } qw ( city state ) +% if $location{country} eq 'CA'; +% +% my $value = encode_entities(objToJson({ %value }) % ); % my $content = ''; % $content .= $location->$_. ' ' x ( $max{$_} - length($location->$_) ) % foreach qw( city county state ); % $content .= $location->cityflag eq 'I' ? 'Y' : 'N' ; % my $selected = '' ; -% if (!$have_selected && lc($location->city) eq lc($city)) { +% if (!$have_selected && lc($location->city) eq lc($location{city})) { % $selected = 'SELECTED'; % } <OPTION VALUE="<% $value %>" STYLE="<% $style %>" <% $selected %>><% $content %> @@ -34,20 +38,21 @@ my $conf = new FS::Conf; my $have_selected = 0; -my ($data_vendor) = $cgi->param('data_vendor') =~ /^([-\w]+)$/; -my ($city) = $cgi->param('city') =~ /^([\w ]+)$/; -my ($state) = $cgi->param('state') =~ /^(\w+)$/; -my ($zip) = $cgi->param('zip') =~ /^([-\w]+)$/; +my %location = (); -my($zip5, $zip4) = split('-', $zip); +($location{data_vendor}) = $cgi->param('data_vendor') =~ /^([-\w]+)$/; +($location{city}) = $cgi->param('city') =~ /^([\w ]+)$/; +($location{state}) = $cgi->param('state') =~ /^(\w+)$/; +($location{zip}) = $cgi->param('zip') =~ /^([-\w ]+)$/; +($location{country}) = $cgi->param('country') =~ /^([\w ]+)$/; -my $hashref = { data_vendor => $data_vendor, - #city => $city, - #state => $state, - zip => $zip5, - }; -#my @keys = qw ( city state zip ); -my @keys = qw ( zip ); +my($zip5, $zip4) = split('-', $location{zip}); + +#only support US & CA +my $hashref = { 'data_vendor' => $location{data_vendor} }; +$hashref->{zip} = $location{country} eq 'CA' ? substr($zip5,0,1) : $zip5, + +my @keys = keys(%$hashref); my @cust_tax_location = (); until ( @cust_tax_location ) { @cust_tax_location = qsearch({ table => 'cust_tax_location', @@ -65,7 +70,10 @@ foreach my $location (@cust_tax_location) { $max{$_} = ($length > $max{$_}) ? $length : $max{$_}; } } -$max{$_}++ foreach qw( city county state ); +foreach ( qw( city county state ) ) { + $max{$_} = $location{$_} if $location{$_} > $max{$_}; + $max{$_}++; +} my $header = ' '; $header .= $_. ' ' x ( $max{lc($_)} - length($_) ) |