[freeside-commits] branch master updated. 8ea01f3b6874ee3a96441a821b422def2ceead5d

Mark Wells mark at 420.am
Sat Mar 26 21:49:52 PDT 2016


The branch, master has been updated
       via  8ea01f3b6874ee3a96441a821b422def2ceead5d (commit)
      from  db27e4da24fa49d91215bd8ef7a05895fa58c0f6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8ea01f3b6874ee3a96441a821b422def2ceead5d
Author: Mark Wells <mark at freeside.biz>
Date:   Sat Mar 26 21:45:03 2016 -0700

    improve address standardization UI, #33849

diff --git a/httemplate/elements/location.html b/httemplate/elements/location.html
index b5f0a96..3c8e973 100644
--- a/httemplate/elements/location.html
+++ b/httemplate/elements/location.html
@@ -245,13 +245,13 @@ Example:
 % }
 % if ( $opt{enable_district} and $conf->config('tax_district_method') ) {
   <TR>
-    <TD ALIGN="right">Tax district</TD>
+    <TH ALIGN="right">Tax district</TH>
     <TD COLSPAN=8>
       <INPUT TYPE="text" SIZE=15
              NAME="<%$pre%>district" 
              ID="<%$pre%>district"
              VALUE="<% $object->district |h %>">
-    <% '(automatic)' %>
+    <FONT SIZE="-1" COLOR="#333333"><% '(automatic)' %></FONT>
     </TD>
   </TR>
 % } else {
diff --git a/httemplate/elements/standardize_locations.js b/httemplate/elements/standardize_locations.js
index 0c4fb02..15d687c 100644
--- a/httemplate/elements/standardize_locations.js
+++ b/httemplate/elements/standardize_locations.js
@@ -115,7 +115,7 @@ function confirm_standardize(arg) {
     // then all entered address fields are correct
     // but we still need to set the lat/long fields and addr_clean
 
-    if ( returned['addr_clean'] ) {
+    if ( returned['all_clean'] ) {
       status_message('Verified');
     } else {
       status_message('Unverified');
diff --git a/httemplate/misc/confirm-address_standardize.html b/httemplate/misc/confirm-address_standardize.html
index 9d1a5c1..8bd43ca 100644
--- a/httemplate/misc/confirm-address_standardize.html
+++ b/httemplate/misc/confirm-address_standardize.html
@@ -7,6 +7,9 @@ th { line-height: 150%;
   vertical-align: middle;
   text-align: center;
 }
+button {
+  width: 215px;
+}
 </STYLE>
 <CENTER><BR><B>
 % if ( $is_error ) {
@@ -23,9 +26,13 @@ Confirm address standardization
 %   my $name = $pre eq 'bill_' ? 'billing' : 'service';
 %   my $rows = 5;
 %   if ( $new{$pre.'error'} ) {
+%     # Standardization returned an error, so the user can either "continue
+%     # without replacing" (replace = "") or "abort".
   <TR>
     <TD ROWSPAN=<% $rows %> CLASS="td_radio">
+%       if ( $show_radio ) {
         <INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="" CHECKED="Y">
+%       } # else confirm_manual_address will be called
     </TD>
     <TH>Entered <%$name%> address
     </TH>
@@ -51,15 +58,19 @@ Confirm address standardization
 %     $rows++ if !$new{$pre.'addr_clean'};
   <TR>
     <TD ROWSPAN=<% $rows %> CLASS="td_radio">
+%     if ( $show_radio ) {
       <INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="">
+%     }
     </TD>
     <TH>Entered <%$name%> address</TH>
     <TH>Standardized <%$name%> address</TH>
     <TD ROWSPAN=<% $rows %> CLASS="td_radio">
+%     if ( $show_radio ) {
       <INPUT TYPE="radio" NAME="<% $pre %>replace" VALUE="Y" CHECKED="Y">
+%     }
     </TD>
   </TR>
-%   if ( !$new{$pre.'addr_clean'} ) {
+%   if ( !$new{$pre.'addr_clean'} ) { # we incremented $rows to fit this in
   <TR>
     <TD></TD>
     <TH STYLE="font-size:smaller;color:#ff0000">(unverified)</TH>
@@ -88,18 +99,24 @@ Confirm address standardization
 %   } # if error
 % } # for $pre
 
-%# only do this part if address standardization provided a censustract
-% my $pre = $old{same} ? 'bill_' : 'ship_';
+% # the prefix for the censustract
+% my $pre = $old{billship} ?
+%             ( $old{same} ? 'bill_'  : 'ship_' ) :
+%             '';
 % my $censustract = $new{$pre.'censustract'};
 % if ( $censustract ) {
   <TR>
     <TD ROWSPAN=2 CLASS="td_radio">
+%     if ( $show_radio ) {
       <INPUT TYPE="radio" NAME="census_replace" VALUE="" <% $census_error ? 'CHECKED="Y"' : '' %>>
+%     }
     </TD>
     <TH>Entered census tract</TH>
     <TH>Calculated census tract</TH>
     <TD ROWSPAN=2 CLASS="td_radio">
+%     if ( $show_radio ) {
       <INPUT TYPE="radio" NAME="census_replace" VALUE="Y" <% $census_error ? '' : 'CHECKED="Y"' %>>
+%     }
     </TD>
   </TR>
   <TR>
@@ -115,17 +132,40 @@ Confirm address standardization
 % } #if censustract
 
   <TR>
+% if ( $show_radio ) {
+%   # One button: "use selected address(es)".
+    <TD ALIGN="center" COLSPAN=4>
+      <BUTTON TYPE="button" onclick="replace_address();">
+      <IMG SRC="<%$p%>images/<% $is_error ? 'error.png' : 'tick.png' %>"
+           ALT="">
+             Use selected <%$addresses%>
+      </BUTTON>
+    </TD>
+% } else {
+%   # Two buttons: "use entered address", and "use selected address"
+%   # and empty columns before and after
     <TD> </TD>
     <TD ALIGN="center">
-    <BUTTON TYPE="button" STYLE="width:205px" onclick="replace_address();">
-      <IMG SRC="<%$p%>images/<% $is_error ? 'error.png' : 'tick.png' %>"
-           ALT=""> Use selected <%$addresses%>
-    </BUTTON></TD>
+      <BUTTON TYPE="button" onclick="confirm_manual_address();">
+        <IMG SRC="<%$p%>images/error.png" ALT=""> Use entered <%$addresses%>
+      </BUTTON>
+    </TD>
+%   # disable the button if standardization completely failed
     <TD ALIGN="center">
-    <BUTTON TYPE="button" STYLE="width:205px" onclick="submit_abort();">
-      <IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission
-    </BUTTON></TD>
+      <BUTTON TYPE="button" onclick="replace_address();" <% $failed ? 'DISABLED' : '' %>>
+        <IMG SRC="<%$p%>images/tick.png" ALT=""> Use standardized <%$addresses%>
+      </BUTTON>
+    </TD>
     <TD> </TD>
+% }
+  </TR>
+% # always provide a cancel button
+  <TR>
+    <TD ALIGN="center" COLSPAN=4>
+      <BUTTON TYPE="button" onclick="submit_abort();">
+        <IMG SRC="<%$p%>images/cross.png" ALT=""> Cancel submission
+      </BUTTON>
+    </TD>
   </TR>
 </TABLE>
 </FORM>
@@ -138,15 +178,43 @@ my %old = %{ $q->{old} };
 my %new = %{ $q->{new} };
 
 my $addresses = $old{billship} ? 'addresses' : 'address';
+my $show_radio = 0;
+my $failed = 0; # true if standardization returned no addresses
 
 my @prefixes = ('');
+
 if ( $old{same} ) {
+
+  # Then there are bill and ship addresses and they're the same. Treat
+  # bill_error as a failure, and let the user accept or reject the whole
+  # standardization.
+
   @prefixes = ('bill_');
+  $failed = 1 if $new{'bill_error'};
+
 } elsif ( $old{billship} ) {
+
+  # There are separate bill and ship addresses. Treat error in both as a
+  # failure. Otherwise, at least one of them has a choice between entered
+  # and standardized address, so let the user choose.
+
   @prefixes = ('bill_', 'ship_');
+  if ( $new{'bill_error'} and $new{'ship_error'} ) {
+    $failed = 1;
+  } else {
+    $show_radio = 1;
+  }
+
+} else {
+
+  # There are no bill/ship addresses (this is used for package locations).
+  # Treat like the first case but without the bill_ prefix.
+  @prefixes = ('');
+  $failed = 1 if $new{'error'};
+
 }
 
-my $census_error = $new{'census_error'};
+my $census_error = $new{'census_error'}; # seems to be unused
 my $is_error = $census_error || grep { $new{$_.'error'} } @prefixes;
 
 </%init>
diff --git a/httemplate/misc/xmlhttp-address_standardize.html b/httemplate/misc/xmlhttp-address_standardize.html
index d0255a0..be58618 100644
--- a/httemplate/misc/xmlhttp-address_standardize.html
+++ b/httemplate/misc/xmlhttp-address_standardize.html
@@ -23,6 +23,7 @@ if ( $old{same} ) {
   @prefixes = ('bill_', 'ship_');
 }
 my $all_same = 1;
+my $all_clean = 1;
 foreach my $pre ( @prefixes ) {
 
   my $location = {
@@ -48,8 +49,13 @@ foreach my $pre ( @prefixes ) {
                      $old{$pre.'censustract'} ne $new{$pre.'censustract'} );
 
   $all_same = 0 if $new{$pre.'error'};
+
+  $all_clean = 0 if !$new{$pre.'addr_clean'};
 }
 
-my $return = { old => \%old, new => \%new, all_same => $all_same };
+my $return = { old => \%old,
+               new => \%new,
+               all_same => $all_same,
+               all_clean => $all_clean };
 warn "result:\n".encode_json($return) if $DEBUG;
 </%init>

-----------------------------------------------------------------------

Summary of changes:
 httemplate/elements/location.html                |    4 +-
 httemplate/elements/standardize_locations.js     |    2 +-
 httemplate/misc/confirm-address_standardize.html |   90 +++++++++++++++++++---
 httemplate/misc/xmlhttp-address_standardize.html |    8 +-
 4 files changed, 89 insertions(+), 15 deletions(-)




More information about the freeside-commits mailing list