add selectable domain option to signup, RT#21557
[freeside.git] / fs_selfservice / FS-SelfService / cgi / signup.cgi
index 02acf14..88eab5c 100755 (executable)
@@ -201,7 +201,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) {
       my $payinfo = $cgi->param('payinfo');
       $payinfo =~ s/\D//g;
 
-      $payinfo =~ /^(\d{13,16})$/
+      $payinfo =~ /^(\d{13,16}|\d{8,9})$/
         or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo;
       $payinfo = $1;
       validate($payinfo)
@@ -229,10 +229,11 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) {
 
                 payby payinfo paycvv paydate payname paystate paytype
                 invoicing_list referral_custnum promo_code reg_code
+                override_ban_warn
                 pkgpart refnum agentnum
-                username sec_phrase _password popnum
+                username sec_phrase _password popnum domsvc
                 mac_addr
-                countrycode phonenum sip_password pin
+                countrycode phonenum sip_password pin prepaid_shortform
               ),
             grep { /^snarf_/ } $cgi->param
         ),
@@ -249,10 +250,19 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) {
         qw( popup_url reference amount );
       print_collect($rv);
     } elsif ( $error ) {
+
       #fudge the snarf info
       no strict 'refs';
       ${$_} = $cgi->param($_) foreach grep { /^snarf_/ } $cgi->param;
+
+      if ( $error =~ /^_duplicate_(card|ach)/ ) {
+        my $what = ($1 eq 'card') ? 'Credit card' : 'Electronic check';
+        $error = "Warning: $what already used to sign up recently";
+        $init_data->{'override_ban_warn'} = 1;
+      }
+
       print_form();
+
     } else {
       print_okay(
         'pkgpart' => scalar($cgi->param('pkgpart')),
@@ -277,7 +287,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) {
 
 sub print_form {
 
-  $error = "Error: $error" if $error;
+  $error = "Error: $error" if $error && $error !~ /^Warning:/i;
 
   my $r = {
     $cgi->Vars,
@@ -292,6 +302,8 @@ sub print_form {
   #$cgi->delete('init_popstate');
   $r->{self_url} = $cgi->self_url;
 
+  $r->{prepaid_shortform} = $cgi->param('prepaid_shortform');
+
   print $cgi->header( '-expires' => 'now' ),
         $signup_template->fill_in( PACKAGE => 'FS::SelfService::_signupcgi',
                                    HASH    => $r
@@ -488,5 +500,7 @@ END
 
 package FS::SelfService::_signupcgi;
 use HTML::Entities;
-use FS::SelfService qw(regionselector expselect popselector didselector);
+use FS::SelfService qw( regionselector expselect popselector domainselector
+                        didselector
+                      );