From: Mark Wells Date: Thu, 23 Jan 2014 22:27:40 +0000 (-0800) Subject: make census tract UI behave more like other cust_location fields, #23497 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=777a6997a004dc4ea99bccabe494f77f114db1a3 make census tract UI behave more like other cust_location fields, #23497 --- diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index 480047cae..629c8081d 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -53,6 +53,8 @@ <& /elements/location.html, object => $cust_main->bill_location, prefix => 'bill_', + enable_censustract => 1, + enable_district => 1, enable_coords => 1, &> <& cust_main/after_bill_location.html, $cust_main &> diff --git a/httemplate/edit/cust_main/bottomfixup.js b/httemplate/edit/cust_main/bottomfixup.js index ecfcb3cbc..5a8835f53 100644 --- a/httemplate/edit/cust_main/bottomfixup.js +++ b/httemplate/edit/cust_main/bottomfixup.js @@ -7,7 +7,7 @@ my $company_longitude = $conf->config('company_longitude'); my @fixups = ('copy_payby_fields', 'standardize_locations'); -push @fixups, 'confirm_censustract' +push @fixups, 'confirm_censustract_bill', 'confirm_censustract_ship' if $conf->exists('cust_main-require_censustract'); my $uniqueness = $conf->config('cust_main-check_unique'); @@ -101,14 +101,17 @@ function copyelement(from, to) { } % # the value in pre+'censustract' is the confirmed censustract; if it's set, -% # do nothing here -function confirm_censustract() { +% # and the user hasn't changed it manually, skip this +function confirm_censustract(pre) { var cf = document.CustomerForm; - var pre = cf.elements['same'].checked ? 'bill_' : 'ship_'; - if ( cf.elements[pre+'censustract'].value == '' ) { + if ( cf.elements[pre+'censustract'].value == '' || + cf.elements[pre+'enter_censustract'].value != + cf.elements[pre+'censustract'].value ) + { var address_info = form_address_info(); address_info[pre+'latitude'] = cf.elements[pre+'latitude'].value; address_info[pre+'longitude'] = cf.elements[pre+'longitude'].value; + address_info['prefix'] = pre; OLpostAJAX( '<%$p%>/misc/confirm-censustract.html', 'q=' + encodeURIComponent(JSON.stringify(address_info)), @@ -121,14 +124,22 @@ function confirm_censustract() { 0); } else submit_continue(); } +function confirm_censustract_bill() { + confirm_censustract('bill_'); +} -%# called from confirm-censustract.html -function set_censustract(tract, year) { +function confirm_censustract_ship() { var cf = document.CustomerForm; - var pre = 'ship_'; if ( cf.elements['same'].checked ) { - pre = 'bill_'; + submit_continue(); + } else { + confirm_censustract('ship_'); } +} + +%# called from confirm-censustract.html +function set_censustract(tract, year, pre) { + var cf = document.CustomerForm; cf.elements[pre + 'censustract'].value = tract; cf.elements[pre + 'censusyear'].value = year; submit_continue(); diff --git a/httemplate/elements/location.html b/httemplate/elements/location.html index a820bf2a6..799531e01 100644 --- a/httemplate/elements/location.html +++ b/httemplate/elements/location.html @@ -213,7 +213,8 @@ Example: Census tract <% '(automatic)' %> @@ -250,7 +251,8 @@ Example: var clear_coords_ids = [ '<%$pre%>latitude', '<%$pre%>longitude', - 'enter_censustract', + '<%$pre%>enter_censustract', + '<%$pre%>censustract', '<%$pre%>district' ]; function clear_coords() { diff --git a/httemplate/elements/standardize_locations.js b/httemplate/elements/standardize_locations.js index cea59b801..2d1fc7423 100644 --- a/httemplate/elements/standardize_locations.js +++ b/httemplate/elements/standardize_locations.js @@ -11,26 +11,14 @@ function form_address_info() { % if ( $billship ) { returnobj['same'] = cf.elements['same'].checked; % } -% if ( $withcensus ) { -% # "entered" censustract always goes with the ship_ address if there is one -% if ( $billship ) { - returnobj['ship_censustract'] = cf.elements['enter_censustract'].value; -% } else { # there's only a package address, so it's just "censustract" - returnobj['censustract'] = cf.elements['enter_censustract'].value; -% } -% } % for my $pre (@prefixes) { - if ( <% $pre eq 'ship_' ? 1 : 0 %> && returnobj['same'] ) { -% # special case: don't include any ship_ fields, and move the entered -% # censustract over to bill_. - returnobj['bill_censustract'] = returnobj['ship_censustract']; - delete returnobj['ship_censustract']; - } else { % # normal case % for my $field (qw(address1 address2 city state zip country)) { returnobj['<% $pre %><% $field %>'] = cf.elements['<% $pre %><% $field %>'].value; % } #for $field - } // if returnobj['same'] +% if ( $withcensus ) { + returnobj['<% $pre %>censustract'] = cf.elements['<% $pre %>enter_censustract'].value; +% } % } #foreach $pre return returnobj; @@ -181,18 +169,11 @@ function confirm_manual_address() { %# not much to do in this case, just confirm the censustract % if ( $withcensus ) { var cf = document.<% $formname %>; -% if ( $billship ) { - if ( cf.elements['same'] && cf.elements['same'].checked ) { - cf.elements['bill_censustract'].value = - cf.elements['enter_censustract'].value; - } else { - cf.elements['ship_censustract'].value = - cf.elements['enter_censustract'].value; - } -% } else { - cf.elements['censustract'].value = cf.elements['enter_censustract'].value; +% foreach my $pre (@prefixes) { + cf.elements['<% $pre %>censustract'].value = + cf.elements['<% $pre %>enter_censustract'].value; % } -% } +% } # $withcensus post_standardization(); } diff --git a/httemplate/misc/confirm-censustract.html b/httemplate/misc/confirm-censustract.html index 9e0af498f..880cade3a 100644 --- a/httemplate/misc/confirm-censustract.html +++ b/httemplate/misc/confirm-censustract.html @@ -6,6 +6,9 @@ Census tract error Confirm census tract % }
+<% $location{address1} %> <% $location{address2} %>
+<% $location{city} %>, <% $location{state} %> <% $location{zip} %>
+
% my $querystring = "census_year=$year&latitude=".$cache->get('latitude').'&longitude='.$cache->get('longitude'); Map service module location
@@ -29,13 +32,14 @@ Confirm census tract +% if ( !$error ) { @@ -47,6 +51,14 @@ Confirm census tract +% } else { # don't show a button to use the calculated value + + + + +% } <%init> @@ -61,11 +73,7 @@ warn $cgi->param('q') if $DEBUG; my $q = decode_json($cgi->param('q')) or die "bad argument '".$cgi->param('q')."'"; -my $pre = ''; -if ($q->{billship}) { - # this still isn't quite correct - $pre = $q->{'same'} ? 'bill_' : 'ship_'; -} +my $pre = $q->{prefix} || ''; my %location = ( map { $_ => $q->{$pre.$_} } qw( company address1 address2 city state zip country latitude longitude )