diff options
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/cust_main/bottomfixup.js | 32 | ||||
-rw-r--r-- | httemplate/elements/location.html | 5 | ||||
-rw-r--r-- | httemplate/elements/standardize_locations.js | 62 | ||||
-rw-r--r-- | httemplate/misc/confirm-address_standardize.html | 9 | ||||
-rw-r--r-- | httemplate/misc/confirm-censustract.html | 78 | ||||
-rw-r--r-- | httemplate/misc/xmlhttp-address_standardize.html | 2 |
6 files changed, 163 insertions, 25 deletions
diff --git a/httemplate/edit/cust_main/bottomfixup.js b/httemplate/edit/cust_main/bottomfixup.js index 40bcbd521..4e1108727 100644 --- a/httemplate/edit/cust_main/bottomfixup.js +++ b/httemplate/edit/cust_main/bottomfixup.js @@ -7,8 +7,7 @@ my $company_longitude = $conf->config('company_longitude'); my @fixups = ('copy_payby_fields', 'standardize_locations'); -#push @fixups, 'fetch_censustract' -# if $conf->exists('cust_main-require_censustract'); +push @fixups, 'confirm_censustract'; push @fixups, 'check_unique' if $conf->exists('cust_main-check_unique') and !$opt{'custnum'}; @@ -95,6 +94,35 @@ function copyelement(from, to) { //alert(from + " (" + from.type + "): " + to.name + " => " + to.value); } +% # the value in 'censustract' is the confirmed censustract; if it's set, +% # do nothing here +function confirm_censustract() { + var cf = document.CustomerForm; + if ( cf.elements['censustract'].value == '' ) { + var address_info = form_address_info(); + address_info['ship_latitude'] = cf.elements['ship_latitude'].value; + address_info['ship_longitude'] = cf.elements['ship_longitude'].value; + OLpostAJAX( + '<%$p%>/misc/confirm-censustract.html', + 'q=' + encodeURIComponent(JSON.stringify(address_info)), + function() { + overlib( OLresponseAJAX, CAPTION, 'Confirm censustract', STICKY, + AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH, + 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399', + TEXTSIZE, 3 ); + }, + 0); + } else submit_continue(); +} + +%# called from confirm-censustract.html +function set_censustract(tract, year) { + var cf = document.CustomerForm; + cf.elements['censustract'].value = tract; + cf.elements['censusyear'].value = year; + submit_continue(); +} + function check_unique() { var search_hash = new Object; % foreach ($conf->config('cust_main-check_unique')) { diff --git a/httemplate/elements/location.html b/httemplate/elements/location.html index 053e0e50b..f3640510a 100644 --- a/httemplate/elements/location.html +++ b/httemplate/elements/location.html @@ -203,8 +203,9 @@ Example: % if ( $pre eq 'ship_' && $conf->exists('cust_main-require_censustract') ) { <TR><<%$th%> ALIGN="right">Census tract<BR>(automatic)</<%$th%>> <TD> - <INPUT TYPE="text" NAME="censustract" VALUE="<% $opt{censustract} %>"> + <INPUT TYPE="text" NAME="enter_censustract" VALUE="<% $opt{censustract} %>"> <INPUT TYPE="hidden" NAME="censusyear" VALUE="<% $object->get('censusyear') %>"> + <INPUT TYPE="hidden" NAME="censustract" VALUE=""> </TD> </TR> % } else { @@ -225,7 +226,7 @@ Example: %# to re-standardize % foreach (qw(address1 city state country zip latitude % longitude censustract addr_clean) ) { -<INPUT TYPE="hidden" NAME="old_<%$pre.$_%>" VALUE="<% $object->get($_) |h%>"> +<INPUT TYPE="hidden" NAME="old_<%$pre.$_%>" ID="old_<%$pre.$_%>" VALUE="<% $object->get($_) |h%>"> % } %# Placeholders <INPUT TYPE="hidden" NAME="<%$pre%>cachenum" VALUE=""> diff --git a/httemplate/elements/standardize_locations.js b/httemplate/elements/standardize_locations.js index 77683b9d3..ee4c5e7f3 100644 --- a/httemplate/elements/standardize_locations.js +++ b/httemplate/elements/standardize_locations.js @@ -1,14 +1,8 @@ -function standardize_locations() { - - var startup_msg = '<P STYLE="position:absolute; top:50%; margin-top:-1em; width:100%; text-align:center"><B><FONT SIZE="+1">Verifying address...</FONT></B></P>'; - overlib(startup_msg, WIDTH, 444, HEIGHT, 168, CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSECLICK, MIDX, 0, MIDY, 0); +function form_address_info() { var cf = document.<% $formname %>; - var state_el = cf.elements['<% $main_prefix %>state']; var ship_state_el = cf.elements['<% $ship_prefix %>state']; - - var changed = false; // have any of the address fields been changed? - var address_info = { + return { % if ( $onlyship ) { 'onlyship': 1, % } else { @@ -26,7 +20,7 @@ function standardize_locations() { 'ship_company': cf.elements['<% $ship_prefix %>company'].value, % } % if ( $withcensus ) { - 'ship_censustract': cf.elements['censustract'].value, + 'ship_censustract': cf.elements['enter_censustract'].value, % } 'ship_address1': cf.elements['<% $ship_prefix %>address1'].value, 'ship_address2': cf.elements['<% $ship_prefix %>address2'].value, @@ -35,6 +29,16 @@ function standardize_locations() { 'ship_zip': cf.elements['<% $ship_prefix %>zip'].value, 'ship_country': cf.elements['<% $ship_prefix %>country'].value, }; +} + +function standardize_locations() { + + var startup_msg = '<P STYLE="position:absolute; top:50%; margin-top:-1em; width:100%; text-align:center"><B><FONT SIZE="+1">Verifying address...</FONT></B></P>'; + overlib(startup_msg, WIDTH, 444, HEIGHT, 168, CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSECLICK, MIDX, 0, MIDY, 0); + var cf = document.<% $formname %>; + var address_info = form_address_info(); + + var changed = false; // have any of the address fields been changed? // clear coord_auto fields if the user has changed the coordinates % for my $pre ($ship_prefix, $onlyship ? () : $main_prefix) { @@ -72,16 +76,31 @@ function standardize_locations() { } } +% # If address hasn't been changed, auto-confirm the existing value of +% # censustract so that we don't ask the user to confirm it again. + + if ( !changed ) { + cf.elements['<% $main_prefix %>censustract'].value = + address_info['ship_censustract']; + } + +% if ( $conf->config('address_standardize_method') ) { if ( changed ) { address_standardize(JSON.stringify(address_info), confirm_standardize); } else { cf.elements['ship_addr_clean'].value = 'Y'; -% if ( !$onlyship ) { +% if ( !$onlyship ) { cf.elements['addr_clean'].value = 'Y'; -% } +% } post_standardization(); } + +% } else { + + post_standardization(); + +% } # if address_standardize_method } var returned; @@ -157,22 +176,33 @@ function replace_address() { setselect(cf.elements['<% $ship_prefix %>state'], newaddr['ship_state']); cf.elements['<% $ship_prefix %>zip'].value = newaddr['ship_zip']; cf.elements['<% $ship_prefix %>addr_clean'].value = 'Y'; -% if ( $withcensus ) { - cf.elements['<% $main_prefix %>censustract'].value = newaddr['ship_censustract'] -% } if ( cf.elements['<% $ship_prefix %>coord_auto'].value ) { cf.elements['<% $ship_prefix %>latitude'].value = newaddr['latitude']; cf.elements['<% $ship_prefix %>longitude'].value = newaddr['longitude']; } } +% if ( $withcensus ) { +% # then set the censustract if address_standardize provided one. + if ( ship_clean && newaddr['ship_censustract'] ) { + cf.elements['<% $main_prefix %>censustract'].value = newaddr['ship_censustract']; + } +% } post_standardization(); } -function post_standardization() { - +function confirm_manual_address() { +%# not much to do in this case, just confirm the censustract +% if ( $withcensus ) { var cf = document.<% $formname %>; + cf.elements['<% $main_prefix %>censustract'].value = + cf.elements['<% $main_prefix %>enter_censustract'].value; +% } + post_standardization(); +} + +function post_standardization() { % if ( $conf->exists('enable_taxproducts') ) { diff --git a/httemplate/misc/confirm-address_standardize.html b/httemplate/misc/confirm-address_standardize.html index 1f94dd917..24363ea4e 100644 --- a/httemplate/misc/confirm-address_standardize.html +++ b/httemplate/misc/confirm-address_standardize.html @@ -51,7 +51,7 @@ Confirm address standardization % } <TR> <TD><% $old{$pre.'address1'} %></TD> - <TD><FONT COLOR="#ff0000"><B><% $new{$pre.'error'} %></B></FONT></TD> + <TD ROWSPAN=3><FONT COLOR="#ff0000"><B><% $new{$pre.'error'} %></B></FONT></TD> </TR> <TR> <TD><% $old{$pre.'address2'} %></TD> @@ -62,7 +62,8 @@ Confirm address standardization % } #if error % } # for $pre -% if ( $old{'ship_censustract'} or $new{'ship_censustract'} ) { +%# only do this part if address standardization provided a censustract +% if ( $new{'ship_censustract'} ) { <TR> <TH>Entered census tract</TH> <TH>Calculated census tract</TH> @@ -82,7 +83,7 @@ Confirm address standardization % if ( $new{error} or $new{ship_error} ) { <TR> <TD ALIGN="center"> - <BUTTON TYPE="button" STYLE="width:205px" onclick="post_standardization();"> + <BUTTON TYPE="button" STYLE="width:205px" onclick="confirm_manual_address();"> <IMG SRC="<%$p%>images/error.png" ALT=""> Use entered <%$addresses%> </BUTTON></TD> <TD ALIGN="center"> @@ -94,7 +95,7 @@ Confirm address standardization % else { <TR> <TD ALIGN="center"> - <BUTTON TYPE="button" STYLE="width:205px" onclick="post_standardization();"> + <BUTTON TYPE="button" STYLE="width:205px" onclick="confirm_manual_address()();"> <IMG SRC="<%$p%>images/error.png" ALT=""> Use entered <%$addresses%> </BUTTON></TD> <TD ALIGN="center"> diff --git a/httemplate/misc/confirm-censustract.html b/httemplate/misc/confirm-censustract.html new file mode 100644 index 000000000..ae0ae3a6a --- /dev/null +++ b/httemplate/misc/confirm-censustract.html @@ -0,0 +1,78 @@ +<CENTER><BR><B> +% if ( $error ) { +Census tract error +% } +% else { +Confirm census tract +% } +</B><BR> +% my $querystring = "census_year=$year&latitude=".$cache->get('latitude').'&longitude='.$cache->get('longitude'); +<A HREF="http://maps.ffiec.gov/FFIECMapper/TGMapSrv.aspx?<% $querystring %>" + TARGET="_blank">Map service module location</A><BR> +% $querystring = "census_year=$year&zip_code=".$cache->get('zip'); +<A HREF="http://maps.ffiec.gov/FFIECMapper/TGMapSrv.aspx?<% $querystring %>" + TARGET="_blank">Map zip code center</A><BR> +<BR> +<TABLE> + <TR> + <TH style="width:50%">Entered census tract</TH> + <TH style="width:50%">Calculated census tract</TH> + </TR> + <TR> + <TD><% $old_tract %></TD> +% if ( $error ) { + <TD><FONT COLOR="#ff0000"><% $error %></FONT></TD> +% } else { + <TD><% $new_tract %></TD> +% } + </TR> + <TR> + <TD ALIGN="center"> + <BUTTON TYPE="button" + onclick="set_censustract('<% $old_tract %>', '<% $year %>')"> + <IMG SRC="<%$p%>images/error.png" ALT=""> Use entered census tract + </BUTTON> + </TD> + <TD ALIGN="center"> + <BUTTON TYPE="button" + onclick="set_censustract('<% $new_tract %>', '<% $year %>')"> + <IMG SRC="<%$p%>images/tick.png" ALT=""> Use calculated census tract + </BUTTON> + </TD> + </TR> + <TR> + <TD COLSPAN=2 ALIGN="center"> + <BUTTON TYPE="button" onclick="submit_abort()"> + <IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission + </BUTTON> + </TD> + </TR> +</TABLE></CENTER> +<%init> + +local $SIG{__DIE__}; #disable Mason error trap + +my $DEBUG = 0; + +my $conf = new FS::Conf; + +warn $cgi->param('q') if $DEBUG; + +my $q = decode_json($cgi->param('q')) + or die "bad argument '".$cgi->param('q')."'"; + +my %location = ( + map { $_ => $q->{'ship_'.$_} } + qw( company address1 address2 city state zip country latitude longitude ) +); + +my $old_tract = $q->{'ship_censustract'}; +my $cache = eval { FS::GeocodeCache->new(%location) }; +$cache->set_censustract; +my $year = FS::Conf->new->config('census_year'); +my $new_tract = $cache->get('censustract'); +my $error = $cache->get('censustract_error'); + +warn Dumper($cache) if $DEBUG; + +</%init> diff --git a/httemplate/misc/xmlhttp-address_standardize.html b/httemplate/misc/xmlhttp-address_standardize.html index c2d6d7a80..f53c35fca 100644 --- a/httemplate/misc/xmlhttp-address_standardize.html +++ b/httemplate/misc/xmlhttp-address_standardize.html @@ -25,8 +25,8 @@ foreach my $pre ( '', 'ship_' ) { }; my $cache = eval { FS::GeocodeCache->standardize($location) }; - $cache->set_censustract if $pre; $cache->set_coord; + # don't do set_censustract here, though censustract may be set by now foreach ( keys(%$cache) ) { $new{$pre.$_} = $cache->get($_); |