diff options
Diffstat (limited to 'httemplate/edit/cust_main/bottomfixup.js')
-rw-r--r-- | httemplate/edit/cust_main/bottomfixup.js | 139 |
1 files changed, 36 insertions, 103 deletions
diff --git a/httemplate/edit/cust_main/bottomfixup.js b/httemplate/edit/cust_main/bottomfixup.js index 77d4294a6..4f3b7da42 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'}; @@ -18,15 +17,19 @@ push @fixups, 'do_submit'; # always last var fixups = <% encode_json(\@fixups) %>; var fixup_position; +var running = false; %# state machine to deal with all the asynchronous stuff we're doing %# call this after each fixup on success: function submit_continue() { - window[ fixups[fixup_position++] ].call(); + if ( running ) { + window[ fixups[fixup_position++] ].call(); + } } %# or on failure: function submit_abort() { + running = false; fixup_position = 0; document.CustomerForm.submitButton.disabled = false; cClick(); @@ -35,6 +38,7 @@ function submit_abort() { function bottomfixup(what) { fixup_position = 0; document.CustomerForm.submitButton.disabled = true; + running = true; submit_continue(); } @@ -63,8 +67,6 @@ function copy_payby_fields() { submit_continue(); } -%# call submit_continue() on completion... -%# otherwise not touching standardize_locations for now <% include( '/elements/standardize_locations.js', 'callback' => 'submit_continue();', 'main_prefix' => 'bill_', @@ -72,104 +74,6 @@ function copy_payby_fields() { ) %> -var prefix; -function fetch_censustract() { - - //alert('fetch census tract data'); - prefix = document.getElementById('same').checked ? 'bill_' : 'ship_'; - var cf = document.CustomerForm; - var state_el = cf.elements[prefix + 'state']; - var census_data = new Array( - 'year', <% $conf->config('census_year') || '2012' %>, - 'address1', cf.elements[prefix + 'address1'].value, - 'city', cf.elements[prefix + 'city'].value, - 'state', state_el.options[ state_el.selectedIndex ].value, - 'zip', cf.elements[prefix + 'zip'].value - ); - - censustract( census_data, update_censustract ); - -} - -var set_censustract; - -function update_censustract(arg) { - - var argsHash = eval('(' + arg + ')'); - - var cf = document.CustomerForm; - -/* var msacode = argsHash['msacode']; - var statecode = argsHash['statecode']; - var countycode = argsHash['countycode']; - var tractcode = argsHash['tractcode']; - - var newcensus = - new String(statecode) + - new String(countycode) + - new String(tractcode).replace(/\s$/, ''); // JSON 1 workaround */ - var error = argsHash['error']; - var newcensus = argsHash['censustract']; - - set_censustract = function () { - - cf.elements[prefix + 'censustract'].value = newcensus; - submit_continue(); - - } - - if (error || cf.elements[prefix + 'censustract'].value != newcensus) { - // popup an entry dialog - - if (error) { newcensus = error; } - newcensus.replace(/.*ndefined.*/, 'Not found'); - - var latitude = cf.elements[prefix + 'latitude'].value - || '<% $company_latitude %>'; - var longitude= cf.elements[prefix + 'longitude'].value - || '<% $company_longitude %>'; - - var choose_censustract = - '<CENTER><BR><B>Confirm censustract</B><BR>' + - '<A href="http://maps.ffiec.gov/FFIECMapper/TGMapSrv.aspx?' + - 'census_year=<% $conf->config('census_year') || '2012' %>' + - '&latitude=' + latitude + - '&longitude=' + longitude + - '" target="_blank">Map service module location</A><BR>' + - '<A href="http://maps.ffiec.gov/FFIECMapper/TGMapSrv.aspx?' + - 'census_year=<% $conf->config('census_year') || '2012' %>' + - '&zip_code=' + cf.elements[prefix + 'zip'].value + - '" target="_blank">Map zip code center</A><BR><BR>' + - '<TABLE>'; - - choose_censustract = choose_censustract + - '<TR><TH style="width:50%">Entered census tract</TH>' + - '<TH style="width:50%">Calculated census tract</TH></TR>' + - '<TR><TD>' + cf.elements[prefix + 'censustract'].value + - '</TD><TD>' + newcensus + '</TD></TR>' + - '<TR><TD> </TD><TD> </TD></TR>'; - - choose_censustract = choose_censustract + - '<TR><TD ALIGN="center">' + - '<BUTTON TYPE="button" onClick="submit_continue();"><IMG SRC="<%$p%>images/error.png" ALT=""> Use entered census tract </BUTTON>' + - '</TD><TD ALIGN="center">' + - '<BUTTON TYPE="button" onClick="set_censustract();"><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>'; - - overlib( choose_censustract, CAPTION, 'Confirm censustract', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH, 576, HEIGHT, 268, BGCOLOR, '#333399', CGCOLOR, '#333399', TEXTSIZE, 3 ); - - } else { - - submit_continue(); - - } - -} - function copyelement(from, to) { if ( from == undefined ) { to.value = ''; @@ -192,6 +96,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')) { |