signups with snarf info!
[freeside.git] / fs_signup / FS-SignupClient / cgi / signup.cgi
index b400685..5ca93d2 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -Tw
 #
-# $Id: signup.cgi,v 1.39 2003-07-04 01:37:46 ivan Exp $
+# $Id: signup.cgi,v 1.48 2003-10-25 02:05:44 ivan Exp $
 
 use strict;
 use vars qw( @payby $cgi $locales $packages
@@ -8,7 +8,7 @@ use vars qw( @payby $cgi $locales $packages
              $init_data $error
              $last $first $ss $company $address1 $address2 $city $state $county
              $country $zip $daytime $night $fax $invoicing_list $payby $payinfo
-             $paydate $payname $referral_custnum
+             $paycvv $paydate $payname $referral_custnum $init_popstate
              $pkgpart $username $password $password2 $sec_phrase $popnum
              $agentnum
              $ieak_file $ieak_template $cck_file $cck_template
@@ -178,6 +178,9 @@ if ( defined $cgi->param('magic') ) {
     $paydate =
       $cgi->param( $payby. '_month' ). '-'. $cgi->param( $payby. '_year' );
     $payname = $cgi->param( $payby. '_payname' );
+    $paycvv = defined $cgi->param( $payby. '_paycvv' )
+                ? $cgi->param( $payby. '_paycvv' )
+                : '';
 
     if ( $invoicing_list = $cgi->param('invoicing_list') ) {
       $invoicing_list .= ', POST' if $cgi->param('invoicing_list_POST');
@@ -213,6 +216,8 @@ if ( defined $cgi->param('magic') ) {
     $password         = $cgi->param('_password');
     $popnum           = $cgi->param('popnum');
     #$agentnum, #         = $cgi->param('agentnum'),
+    $agentnum         ||= $cgi->param('agentnum');
+    $init_popstate    = $cgi->param('init_popstate');
 
     if ( $cgi->param('_password') ne $cgi->param('_password2') ) {
       $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat
@@ -250,6 +255,7 @@ if ( defined $cgi->param('magic') ) {
         'fax'              => $fax,
         'payby'            => $payby,
         'payinfo'          => $payinfo,
+        'paycvv'           => $paycvv,
         'paydate'          => $paydate,
         'payname'          => $payname,
         'invoicing_list'   => $invoicing_list,
@@ -260,6 +266,7 @@ if ( defined $cgi->param('magic') ) {
         '_password'        => $password,
         'popnum'           => $popnum,
         'agentnum'         => $agentnum,
+        map { $_ => $cgi->param($_) } grep { /^snarf_/ } $cgi->param
       } );
 
     }
@@ -267,6 +274,9 @@ if ( defined $cgi->param('magic') ) {
     if ( $error eq '_decline' ) {
       print_decline();
     } elsif ( $error ) {
+      #fudge the snarf info
+      no strict 'refs';
+      ${$_} = $cgi->param($_) foreach grep { /^snarf_/ } $cgi->param;
       print_form();
     } else {
       print_okay();
@@ -303,12 +313,14 @@ if ( defined $cgi->param('magic') ) {
   $sec_phrase = '';
   $popnum = '';
   $referral_custnum = $cgi->param('ref') || '';
+  $init_popstate = $cgi->param('init_popstate') || '';
   print_form;
 }
 
 sub print_form {
 
   $cgi->delete('ref');
+  $cgi->delete('init_popstate');
   $self_url = $cgi->self_url;
 
   $error = "Error: $error" if $error;
@@ -399,15 +411,23 @@ sub popselector {
       var length = what.length;
       what.options[length] = optionName;
     }
+END
 
-    function acstate_changed(what) {
-      state = what.options[what.selectedIndex].text;
-      what.form.popac.options.length = 0
-      what.form.popac.options[0] = new Option("Area code", "-1", false, true);
+  if ( $init_popstate ) {
+    $text .= '<INPUT TYPE="hidden" NAME="init_popstate" VALUE="'.
+             $init_popstate. '">';
+  } else {
+    $text .= <<END;
+      function acstate_changed(what) {
+        state = what.options[what.selectedIndex].text;
+        what.form.popac.options.length = 0
+        what.form.popac.options[0] = new Option("Area code", "-1", false, true);
 END
+  } 
 
-  foreach my $state ( sort { $a cmp $b } keys %pop ) {
-    $text .= "\nif ( state == \"$state\" ) {\n";
+  my @states = $init_popstate ? ( $init_popstate ) : keys %pop;
+  foreach my $state ( sort { $a cmp $b } @states ) {
+    $text .= "\nif ( state == \"$state\" ) {\n" unless $init_popstate;
 
     foreach my $ac ( sort { $a cmp $b } keys %{ $pop{$state} }) {
       $text .= "opt(what.form.popac, \"$ac\", \"$ac\");\n";
@@ -415,7 +435,7 @@ END
         $text .= "what.form.popac.options[what.form.popac.length-1].selected = true;\n";
       }
     }
-    $text .= "}\n";
+    $text .= "}\n" unless $init_popstate;
   }
   $text .= "popac_changed(what.form.popac)}\n";
 
@@ -427,7 +447,7 @@ END
 
 END
 
-  foreach my $state ( keys %pop ) {
+  foreach my $state ( @states ) {
     foreach my $popac ( keys %{ $pop{$state} } ) {
       $text .= "\nif ( ac == \"$popac\" ) {\n";
 
@@ -452,7 +472,7 @@ END
     qq!<TABLE CELLPADDING="0"><TR><TD><SELECT NAME="acstate"! .
     qq!SIZE=1 onChange="acstate_changed(this)"><OPTION VALUE=-1>State!;
   $text .= "<OPTION" . ($_ eq $cgi->param('acstate') ? " SELECTED" : "") .
-           ">$_" foreach sort { $a cmp $b } keys %pop;
+           ">$_" foreach sort { $a cmp $b } @states;
   $text .= '</SELECT>'; #callback? return 3 html pieces?  #'</TD>';
 
   $text .=
@@ -463,10 +483,11 @@ END
 
 
   #comment this block to disable initial list polulation
+  my @initial_select = ();
   if ( scalar( @$pops ) > 100 ) {
-    @initial_select = ( $popnum2pop{$popnum} );
+    push @initial_select, $popnum2pop{$popnum} if $popnum2pop{$popnum};
   } else {
-    @initial_select = $@pops;
+    @initial_select = @$pops;
   }
   foreach my $pop ( sort { $a->{state} cmp $b->{state} } @initial_select ) {
     $text .= qq!<OPTION VALUE="!. $pop->{popnum}. '"'.
@@ -512,7 +533,7 @@ sub regionselector {
   my ( $selected_county, $selected_state, $selected_country,
        $prefix, $onchange ) = @_;
 
-  my $prefix = '' unless defined $prefix;
+  $prefix = '' unless defined $prefix;
 
   my $countyflag = 0;
 
@@ -634,7 +655,7 @@ Signup information for <%= $email_name %>:
 <BR><BR>
 Username: <%= $username %><BR>
 Password: <%= $password %><BR>
-Access number: (<%= $ac %>) / $exch - $local<BR>
+Access number: (<%= $ac %>) / <%= $exch %> - <%= $local %><BR>
 Package: <%= $pkg %><BR>
 </BODY></HTML>
 END