summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-xhttemplate/edit/cust_main.cgi36
-rw-r--r--httemplate/edit/cust_main/choose_tax_location.html74
-rw-r--r--httemplate/edit/cust_main/contact.html4
3 files changed, 113 insertions, 1 deletions
diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi
index 8de73c513..8336183b8 100755
--- a/httemplate/edit/cust_main.cgi
+++ b/httemplate/edit/cust_main.cgi
@@ -5,6 +5,7 @@
) %>
<% include('/elements/init_overlib.html') %>
+<SCRIPT SRC="<% $fsurl %>elements/ajaxcontentmws.js" TYPE="text/javascript"></SCRIPT>
<% include('/elements/error.html') %>
@@ -249,6 +250,8 @@ function bottomfixup(what) {
'ship_county', 'ship_state', 'ship_zip', 'ship_country',
'ship_daytime','ship_night', 'ship_fax',
+ 'geocode',
+
'select' // XXX key
);
@@ -329,6 +332,8 @@ function update_address(arg) {
var changed = argsHash['address_standardized'];
var ship_changed = argsHash['ship_address_standardized'];
+ var error = argsHash['error'];
+ var ship_error = argsHash['ship_error'];
//yay closures
standardize_address = function () {
@@ -355,7 +360,14 @@ function update_address(arg) {
}
- if ( changed || ship_changed ) {
+ 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+";";
+ // popup a chooser
+ OLgetAJAX( url, update_geocode, 300 );
+
+
+ } else if ( changed || ship_changed ) {
% if ( $conf->exists('cust_main-auto_standardize_address') ) {
@@ -448,6 +460,26 @@ function update_address(arg) {
}
+function update_geocode() {
+
+ //yay closures
+ set_geocode = function (what) {
+
+ //alert(what.options[what.selectedIndex].value);
+ var argsHash = eval('(' + what.options[what.selectedIndex].value + ')');
+ document.bottomform.elements['city'].value = argsHash['city'];
+ document.bottomform.elements['state'].value = argsHash['state'];
+ document.bottomform.elements['zip'].value = argsHash['zip'];
+ document.bottomform.elements['geocode'].value = argsHash['geocode'];
+
+ }
+
+ // popup a chooser
+
+ overlib( OLresponseAJAX, CAPTION, 'Select tax location', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH, 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399', TEXTSIZE, 3 );
+
+}
+
function copyelement(from, to) {
if ( from == undefined ) {
to.value = '';
@@ -490,6 +522,8 @@ function copyelement(from, to) {
% 'ship_county', 'ship_state', 'ship_zip', 'ship_country',
% 'ship_daytime','ship_night', 'ship_fax',
%
+% 'geocode',
+%
% 'select', #XXX key
%
% 'payauto',
diff --git a/httemplate/edit/cust_main/choose_tax_location.html b/httemplate/edit/cust_main/choose_tax_location.html
new file mode 100644
index 000000000..23fdbf282
--- /dev/null
+++ b/httemplate/edit/cust_main/choose_tax_location.html
@@ -0,0 +1,74 @@
+<FORM NAME="choosegeocodeform">
+<CENTER><BR><B>Choose tax location</B><BR><BR>
+<P STYLE="<% $style %>"><% $header %></P>
+
+<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 $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)) {
+% $selected = 'SELECTED';
+% }
+ <OPTION VALUE="<% $value %>" STYLE="<% $style %>" <% $selected %>><% $content %>
+% }
+</SELECT><BR><BR>
+
+<TABLE><TR>
+ <TD> <BUTTON TYPE="button" onClick="set_geocode(document.getElementById('geocodes')); document.bottomform.submit();"><IMG SRC="<%$p%>images/tick.png" ALT=""> Set location </BUTTON></TD>
+ <TD><BUTTON TYPE="button" onClick="document.bottomform.submitButton.disabled=false; parent.cClick();"><IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission </BUTTON></TD>
+</TR>
+</TABLE>
+
+</CENTER>
+</FORM>
+<%init>
+
+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($zip5, $zip4) = split('-', $zip);
+
+my $hashref = { data_vendor => $data_vendor,
+ #city => $city,
+ #state => $state,
+ zip => $zip5,
+ };
+#my @keys = qw ( city state zip );
+my @keys = qw ( zip );
+my @cust_tax_location = ();
+until ( @cust_tax_location ) {
+ @cust_tax_location = qsearch( 'cust_tax_location', $hashref );
+ last unless scalar(@keys);
+ delete $hashref->{ shift @keys };
+}
+
+my %max = ( city => 4, county => 6, state => 5);
+foreach my $location (@cust_tax_location) {
+ foreach ( qw( city county state ) ) {
+ my $length = length($location->$_);
+ $max{$_} = ($length > $max{$_}) ? $length : $max{$_};
+ }
+}
+$max{$_}++ foreach qw( city county state );
+
+my $header = '&nbsp;&nbsp;';
+$header .= $_. '&nbsp;' x ( $max{lc($_)} - length($_) )
+ foreach qw( City County State );
+$header .= "In city?";
+
+my $style = "font-family:monospace;";
+
+</%init>
diff --git a/httemplate/edit/cust_main/contact.html b/httemplate/edit/cust_main/contact.html
index 21c6b2990..2d37dc895 100644
--- a/httemplate/edit/cust_main/contact.html
+++ b/httemplate/edit/cust_main/contact.html
@@ -69,6 +69,10 @@
<TR>
<TH ALIGN="right"><%$r%>Country</TH>
<TD COLSPAN=5><% include('select-country.html', %select_hash ) %></TD>
+% if ( !$pre ) {
+ <TD><INPUT TYPE="hidden" NAME="geocode" VALUE="<% $opt{geocode} %>"></TD>
+% }
+
</TR>
<TR>