summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorjeff <jeff>2009-02-19 13:38:28 +0000
committerjeff <jeff>2009-02-19 13:38:28 +0000
commitc2cf878f3c2c0e3fcd06f400a268d2cf9bd12eb8 (patch)
tree5471b9213296214f882721d34bb70e4a5b2453d3 /httemplate
parente832eb872042cb27881402c5c92a17ce4c0506e9 (diff)
do not attempt to assign a geocode to non us/ca addresses (RT 4857)
Diffstat (limited to 'httemplate')
-rwxr-xr-xhttemplate/edit/cust_main.cgi11
-rw-r--r--httemplate/edit/cust_main/choose_tax_location.html44
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->$_. '&nbsp;' 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 = '&nbsp;&nbsp;';
$header .= $_. '&nbsp;' x ( $max{lc($_)} - length($_) )