diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-12-10 20:58:54 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-12-10 20:58:54 -0800 |
commit | b0dcfb17045dca111b177084ecb857ae2ee6c670 (patch) | |
tree | 76499f60c9a5ef18ef149afe62f3cd05b7199656 /fs_selfservice | |
parent | a63883fa4d6944e534c2cfbea1b32ec907d53ffe (diff) |
tax-exempt numbers during signup, RT#32299
Diffstat (limited to 'fs_selfservice')
-rwxr-xr-x | fs_selfservice/FS-SelfService/cgi/signup.cgi | 27 | ||||
-rwxr-xr-x | fs_selfservice/FS-SelfService/cgi/signup.html | 107 |
2 files changed, 100 insertions, 34 deletions
diff --git a/fs_selfservice/FS-SelfService/cgi/signup.cgi b/fs_selfservice/FS-SelfService/cgi/signup.cgi index acd7a62..817fdd3 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.cgi +++ b/fs_selfservice/FS-SelfService/cgi/signup.cgi @@ -160,31 +160,31 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { my $payby = $cgi->param('payby'); if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { #$payinfo = join('@', map { $cgi->param( $payby. "_payinfo$_" ) } (1,2) ); - $cgi->param('payinfo' => $cgi->param($payby. '_payinfo1'). '@'. - $cgi->param($payby. '_payinfo2') + $cgi->param('payinfo' => scalar($cgi->param($payby. '_payinfo1')). '@'. + scalar($cgi->param($payby. '_payinfo2')) ); } else { - $cgi->param('payinfo' => $cgi->param( $payby. '_payinfo' ) ); + $cgi->param('payinfo' => scalar($cgi->param( $payby. '_payinfo' ) ) ); } - $cgi->param('paydate' => $cgi->param( $payby. '_month' ). '-'. - $cgi->param( $payby. '_year' ) + $cgi->param('paydate' => scalar($cgi->param( $payby. '_month' )). '-'. + scalar($cgi->param( $payby. '_year' )) ); - $cgi->param('payname' => $cgi->param( $payby. '_payname' ) ); + $cgi->param('payname' => scalar($cgi->param( $payby. '_payname' ) ) ); $cgi->param('paycvv' => defined $cgi->param( $payby. '_paycvv' ) - ? $cgi->param( $payby. '_paycvv' ) + ? scalar($cgi->param( $payby. '_paycvv' )) : '' ); $cgi->param('paytype' => defined $cgi->param( $payby. '_paytype' ) - ? $cgi->param( $payby. '_paytype' ) + ? scalar($cgi->param( $payby. '_paytype' )) : '' ); $cgi->param('paystate' => defined $cgi->param( $payby. '_paystate' ) - ? $cgi->param( $payby. '_paystate' ) + ? scalar($cgi->param( $payby. '_paystate' )) : '' ); if ( $cgi->param('invoicing_list') ) { - $cgi->param('invoicing_list' => $cgi->param('invoicing_list'). ', POST') + $cgi->param('invoicing_list' => scalar($cgi->param('invoicing_list')). ', POST') if $cgi->param('invoicing_list_POST'); } else { $cgi->param('invoicing_list' => 'POST' ); @@ -240,7 +240,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { mac_addr countrycode phonenum sip_password pin prepaid_shortform ), - grep { /^snarf_/ } $cgi->param + grep { /^(snarf_|tax_)/ } $cgi->param ), 'payip' => $cgi->remote_host(), } ); @@ -255,10 +255,9 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { qw( popup_url reference amount ); print_collect($rv); } elsif ( $error ) { - - #fudge the snarf info + #fudge the snarf and tax info no strict 'refs'; - ${$_} = $cgi->param($_) foreach grep { /^snarf_/ } $cgi->param; + ${$_} = $cgi->param($_) foreach grep { /^(snarf_|tax_)/ } $cgi->param; if ( $error =~ /^_duplicate_(card|ach)/ ) { my $what = ($1 eq 'card') ? 'Credit card' : 'Electronic check'; diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html index 003632a..2bc59ca 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.html +++ b/fs_selfservice/FS-SelfService/cgi/signup.html @@ -30,9 +30,13 @@ ' Signup form</FONT><BR><BR>'; %> -<FONT SIZE="+1" COLOR="#ff0000"><%= encode_entities($error) %></FONT> +<%= if ( $error ) { + $OUT .= '<FONT SIZE="+1" COLOR="#ff0000">'. encode_entities($error). + '</FONT><BR><BR>'; + } +%> -<FORM NAME="OneTrueForm" ACTION="<%= $self_url %>" METHOD=POST onSubmit="document.OneTrueForm.signup.disabled=true"> +<FORM NAME="OneTrueForm" ACTION="<%= $self_url %>" METHOD=POST onSubmit="document.OneTrueForm.signup.disabled=true" STYLE="margin:0"> <INPUT TYPE="hidden" NAME="prepaid_shortform" VALUE="<%= encode_entities($prepaid_shortform) %>"> <INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_signup"> @@ -41,11 +45,24 @@ <INPUT TYPE="hidden" NAME="ss" VALUE=""> <input type="hidden" name="payby"> <%= - $OUT = join("\n",map { my $method = $_ ; map { qq|<input type="hidden" name="${method}_$_" />| } qw / payinfo payinfo1 payinfo2 payname paystate paytype paycvv month year type / } @payby); + $OUT = join("\n", + map { + my $method = $_ ; + map { qq|<input type="hidden" name="${method}_$_" />| } + qw( payinfo payinfo1 payinfo2 payname paystate paytype paycvv + month year type ) + } @payby + ); %> <%= - $OUT = join("\n", map { qq|<input type="hidden" name="$_" />| } qw / promo_code reg_code pkgpart username _password _password2 sec_phrase popnum domsvc mac_addr countrycode phonenum sip_password pin / ); + $OUT = join("\n", + map { qq|<input type="hidden" name="$_" />| } + qw( promo_code reg_code pkgpart username _password _password2 + sec_phrase popnum domsvc mac_addr countrycode phonenum + sip_password pin ), + map { ( "tax_$_", "tax_${_}_num" ) } @exempt_groups + ); %> <%= @@ -71,7 +88,7 @@ Where did you hear about our service? <SELECT NAME="refnum"> my $bgcolor = $box_bgcolor || '#c0c0c0'; $OUT .= qq! -Contact Information +<FONT SIZE="+1"><B>Contact Information</B></FONT> <TABLE BGCOLOR="$bgcolor" BORDER=0 CELLSPACING=0 WIDTH="100%"> <TR> <TH ALIGN="right"><font color="#ff0000">*</font>Contact name<BR>(last, first)</TH> @@ -152,7 +169,8 @@ else { ''; %> -<BR>Billing information<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%"> +<BR><FONT SIZE="+1"><B>Billing information</B></FONT> +<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%"> <TR><TD> <%= @@ -182,10 +200,12 @@ else { $cardselect .= qq!<OPTION $selected VALUE="$card_types{$_}">$_</OPTION>!; } $cardselect .= '</SELECT>'; + + my $table = '<TABLE BGCOLOR="'. ( $box_bgcolor || '#c0c0c0' ). '" BORDER=0 CELLSPACING=0 WIDTH="100%">'; my %payby = ( - 'CARD' => qq!Credit card<BR><font color="#ff0000">*</font>$cardselect<INPUT TYPE="text" NAME="CARD_payinfo" VALUE="" MAXLENGTH=19><BR><font color="#ff0000">*</font>Exp !. expselect("CARD"). qq!<BR><font color="#ff0000">*</font>Name on card<BR><INPUT TYPE="text" NAME="CARD_payname" VALUE="">!, - 'DCRD' => qq!Credit card<BR><font color="#ff0000">*</font>$cardselect<INPUT TYPE="text" NAME="DCRD_payinfo" VALUE="" MAXLENGTH=19><BR><font color="#ff0000">*</font>Exp !. expselect("DCRD"). qq!<BR><font color="#ff0000">*</font>Name on card<BR><INPUT TYPE="text" NAME="DCRD_payname" VALUE="">!, + 'CARD' => qq!$table<TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("CARD"). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname"></TD></TR>!, + 'DCRD' => qq!$table<TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="DCRD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("DCRD"). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="DCRD_payname" VALUE="$payname"></TD></TR>!, 'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE="" MAXLENGTH=10><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="" SIZE=10 MAXLENGTH=9> Type <SELECT NAME="CHEK_paytype">!. join('', map {qq!<OPTION VALUE="$_">$_</OPTION>!} @paytypes). qq!</SELECT><BR>{$r}Bank State <INPUT TYPE="text" NAME="CHEK_paystate" VALUE="" SIZE=5 MAXLENGTH=4><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="">!, 'DCHK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="DCHK_payinfo1" VALUE="" MAXLENGTH=10> Type <SELECT NAME="DCHK_paytype">!. join('', map {qq!<OPTION VALUE="$_">$_</OPTION>!} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="DCHK_payinfo2" VALUE="" SIZE=10 MAXLENGTH=9><BR>{$r}Bank State <INPUT TYPE="text" NAME="DCHK_paystate" VALUE="" SIZE=5 MAXLENGTH=4><INPUT TYPE="hidden" NAME="DCHK_month" VALUE="12"><INPUT TYPE="hidden" NAME="DCHK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="DCHK_payname" VALUE="">!, 'LECB' => qq!Phone bill billing<BR>${r}Phone number <INPUT TYPE="text" NAME="LECB_payinfo" VALUE="" MAXLENGTH=15 SIZE=16><INPUT TYPE="hidden" NAME="LECB_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE="">!, @@ -215,8 +235,8 @@ else { my( $account, $aba ) = split('@', $payinfo); my %paybychecked = ( - 'CARD' => '<TABLE BGCOLOR="'. ( $box_bgcolor || '#c0c0c0' ). qq!" BORDER=0 CELLSPACING=0 WIDTH="100%"><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("CARD", $paydate). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname"></TD></TR>!, - 'DCRD' => qq!Credit card<BR><font color="#ff0000">*</font>$cardselect<INPUT TYPE="text" NAME="DCRD_payinfo" VALUE="$payinfo" MAXLENGTH=19><BR><font color="#ff0000">*</font>Exp !. expselect("DCRD", $paydate). qq!<BR><font color="#ff0000">*</font>Name on card<BR><INPUT TYPE="text" NAME="DCRD_payname" VALUE="$payname">!, + 'CARD' => qq!$table<TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("CARD", $paydate). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname"></TD></TR>!, + 'DCRD' => qq!$table<TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="DCRD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("DCRD", $paydate). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="DCRD_payname" VALUE="$payname"></TD></TR>!, 'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="CHEK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? ' SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="$payname">!, 'DCHK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="DCHK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="DCHK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? ' SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="DCHK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="DCHK_month" VALUE="12"><INPUT TYPE="hidden" NAME="DCHK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="DCHK_payname" VALUE="">!, 'LECB' => qq!Phone bill billing<BR>${r}Phone number <INPUT TYPE="text" BANE="LECB_payinfo" VALUE="$payinfo" MAXLENGTH=15 SIZE=16><INPUT TYPE="hidden" NAME="LECB_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE="">!, @@ -248,9 +268,9 @@ else { } my %payby_index = ( 'CARD' => qq/Credit Card/, - 'DCRD' => qq/Credit Card/, + 'DCRD' => qq/Credit Card (no auto-charge)/, 'CHEK' => qq/Check/, - 'DCHK' => qq/Check/, + 'DCHK' => qq/Check (no auto-charge)/, 'LECB' => qq/Phone Bill Billing/, 'BILL' => qq/Billing/, 'COMP' => qq/Complimentary/, @@ -270,7 +290,7 @@ HTML::Widgets::SelectLayers->new( options => \%options, selected_layer => $selected_layer, form_name => 'dummy', - html_between => '</td></tr></table>', + html_between => '</table>', form_action => 'dummy.cgi', layer_callback => sub { my $layer = shift; return ( shift @hide_payment_fields ? '' : $paybychecked{$layer} ) . '</TABLE>'; }, )->html; @@ -278,8 +298,42 @@ HTML::Widgets::SelectLayers->new( %> -</TR></TABLE><font color="#ff0000">*</font> required fields -<FORM name="signup_form" action="<%= $self_url %>" METHOD="POST" onsubmit="return fixup_form();"><BR><BR>First package +</TABLE> + +<FORM NAME="TaxForm" STYLE="margin:0"> + +<SCRIPT TYPE="text/javascript"> + function tax_changed(what) { + var num = document.getElementById(what.id + '_num'); + if ( what.checked ) { + num.disabled = false; + } else { + num.disabled = true; + } + } +</SCRIPT> + +<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%"> +<%= + foreach my $exempt_group ( @exempt_groups ) { + no strict 'refs'; + my $checked = ${"tax_$exempt_group"} ? 'CHECKED' : ''; + my $disabled = $checked ? '' : 'DISABLED'; + + $OUT .= qq! + <TR><TD><INPUT TYPE="checkbox" NAME="tax_$exempt_group" ID="tax_$exempt_group" VALUE="Y" $checked onChange="tax_changed(this)"> Tax Exempt ($exempt_group taxes) + - Exemption number <INPUT TYPE="text" NAME="tax_${exempt_group}_num" ID="tax_${exempt_group}_num" VALUE="${"tax_${exempt_group}_num"}" $disabled></TD> + </TR> + !; + } +%> + + +</TABLE><font color="#ff0000">*</font> required fields + +</FORM> + +<FORM name="signup_form" action="<%= $self_url %>" METHOD="POST" onsubmit="return fixup_form();"><BR><FONT SIZE="+1"><B>First package</B></FONT> <INPUT TYPE="hidden" NAME="promo_code" VALUE="<%= $promo_code %>"> <INPUT TYPE="hidden" NAME="reg_code" VALUE="<%= $reg_code %>"> <TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%"> @@ -429,10 +483,11 @@ I agree to the <a href="javascript:void(0);" onclick="show_terms();">Terms of Se <%= length($terms_of_service) ? 'agree_to_terms(false)' : '' %> function fixup_form() { - + // copy payment method data up to OneTrueForm - var payment_method_elements = new Array( 'payinfo', 'payinfo1', 'payinfo2', 'payname', 'paycvv' , 'paystate', 'paytype', 'month', 'year','type' ); + var payment_method_elements = new Array( 'payinfo', 'payinfo1', 'payinfo2', 'payname', 'paycvv' , 'paystate', 'paytype', 'month', 'year', 'type' ); + var payment_method_form_name = document.OneTrueForm.select.options[document.OneTrueForm.select.selectedIndex].value; document.OneTrueForm.elements['payby'].value = payment_method_form_name; var payment_method_form = document.forms[payment_method_form_name]; @@ -442,7 +497,20 @@ function fixup_form() { copyelement ( payment_method_form.elements[true_element_name], document.OneTrueForm.elements[true_element_name] ); } - + + + // copy tax exempt data up to OneTrueForm + + var tax_elements = new Array( + <%= join(', ', map "'tax_$_', 'tax_${_}_num'", @exempt_groups ) %> + ); + + for ( ii = 0 ; ii < tax_elements.length ; ii++ ) { + copyelement ( document.TaxForm.elements[tax_elements[ii]], + document.OneTrueForm.elements[tax_elements[ii]] ); + } + + // Copy signup details to OneTrueForm var signup_elements = new Array ( @@ -462,7 +530,6 @@ function fixup_form() { } function copyelement(from, to) { -// alert ( from + ' ' + to ); if ( from == undefined ) { to.value = ''; @@ -482,7 +549,7 @@ function copyelement(from, to) { to.value = from.value; } } -// alert(from.name + " (" + from.type + "): " + to.name + " => " + to.value); + //alert(from.name + " (" + from.type + "): " + to.name + " => " + to.value); } } |