self-signup with prepaid card without customer info, RT9713
authorlevinse <levinse>
Fri, 31 Dec 2010 01:23:28 +0000 (01:23 +0000)
committerlevinse <levinse>
Fri, 31 Dec 2010 01:23:28 +0000 (01:23 +0000)
FS/FS/ClientAPI/Signup.pm
FS/FS/Conf.pm
fs_selfservice/FS-SelfService/cgi/signup.cgi
fs_selfservice/FS-SelfService/cgi/signup.html

index 488692f..7087b12 100644 (file)
@@ -187,7 +187,7 @@ sub signup_info {
       'agent_ship_address' => scalar($conf->exists('agent-ship_address')),
       'require_phone'      => scalar($conf->exists('cust_main-require_phone')),
       'logo'               => scalar($conf->config_binary('logo.png')),
       'agent_ship_address' => scalar($conf->exists('agent-ship_address')),
       'require_phone'      => scalar($conf->exists('cust_main-require_phone')),
       'logo'               => scalar($conf->config_binary('logo.png')),
-
+      'prepaid_template_custnum' => $conf->exists('signup_server-prepaid-template-custnum'),
     };
 
     $cache->set('signup_info_cache', $signup_info_cache);
     };
 
     $cache->set('signup_info_cache', $signup_info_cache);
@@ -506,31 +506,64 @@ sub new_customer {
 
   #shares some stuff with htdocs/edit/process/cust_main.cgi... take any
   # common that are still here and library them.
 
   #shares some stuff with htdocs/edit/process/cust_main.cgi... take any
   # common that are still here and library them.
-  my $cust_main = new FS::cust_main ( {
-    #'custnum'          => '',
-    'agentnum'      => $agentnum,
-    'refnum'        => $packet->{refnum}
-                       || $conf->config('signup_server-default_refnum'),
+  my $template_custnum = $conf->config('signup_server-prepaid-template-custnum');
+  my $cust_main;
+  if ( $template_custnum && $packet->{prepaid_shortform} ) {
+       my $template_cust = qsearchs('cust_main', { 'custnum' => $template_custnum } );
+       return { 'error' => 'Configuration error' } unless $template_cust;
+       $cust_main = new FS::cust_main ( {
+       'agentnum'      => $agentnum,
+       'refnum'        => $packet->{refnum}
+                          || $conf->config('signup_server-default_refnum'),
+       map { $_ => $template_cust->$_ } qw( 
+               last first company address1 address2 
+               city county state zip country
+               daytime night fax 
+
+               ship_last ship_first ship_company ship_address1 ship_address2
+               ship_city ship_county ship_state ship_zip ship_country
+               ship_daytime ship_night ship_fax
+               ),
+       map { $_ => $packet->{$_} } qw(
+
+         ss stateid stateid_state
+
+         payby
+         payinfo paycvv paydate payname paystate paytype
+         paystart_month paystart_year payissue
+         payip
+
+         referral_custnum comments
+       )
+      } );
+  }
+  else {
+      $cust_main = new FS::cust_main ( {
+       #'custnum'          => '',
+       'agentnum'      => $agentnum,
+       'refnum'        => $packet->{refnum}
+                          || $conf->config('signup_server-default_refnum'),
 
 
-    map { $_ => $packet->{$_} } qw(
+       map { $_ => $packet->{$_} } qw(
 
 
-      last first ss company address1 address2
-      city county state zip country
-      daytime night fax stateid stateid_state
+         last first ss company address1 address2
+         city county state zip country
+         daytime night fax stateid stateid_state
 
 
-      ship_last ship_first ship_ss ship_company ship_address1 ship_address2
-      ship_city ship_county ship_state ship_zip ship_country
-      ship_daytime ship_night ship_fax
+         ship_last ship_first ship_ss ship_company ship_address1 ship_address2
+         ship_city ship_county ship_state ship_zip ship_country
+         ship_daytime ship_night ship_fax
 
 
-      payby
-      payinfo paycvv paydate payname paystate paytype
-      paystart_month paystart_year payissue
-      payip
+         payby
+         payinfo paycvv paydate payname paystate paytype
+         paystart_month paystart_year payissue
+         payip
 
 
-      referral_custnum comments
-    )
+         referral_custnum comments
+       )
 
 
-  } );
+      } );
+  }
 
   my $agent = qsearchs('agent', { 'agentnum' => $agentnum } );
   if ( $conf->exists('agent_ship_address') && $agent->agent_custnum ) {
 
   my $agent = qsearchs('agent', { 'agentnum' => $agentnum } );
   if ( $conf->exists('agent_ship_address') && $agent->agent_custnum ) {
index 07d5705..d3cd994 100644 (file)
@@ -1838,6 +1838,13 @@ and customer address. Include units.',
                        'svc_pbx'   => 'PBX (svc_pbx)',
                      ],
   },
                        'svc_pbx'   => 'PBX (svc_pbx)',
                      ],
   },
+  
+  {
+    'key'         => 'signup_server-prepaid-template-custnum',
+    'section'     => 'self-service',
+    'description' => 'When the signup server is used with prepaid cards and customer info is not required for signup, the contact/address info will be copied from this customer, if specified',
+    'type'        => 'text',
+  },
 
   {
     'key'         => 'selfservice_server-base_url',
 
   {
     'key'         => 'selfservice_server-base_url',
index 02acf14..2001614 100755 (executable)
@@ -232,7 +232,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) {
                 pkgpart refnum agentnum
                 username sec_phrase _password popnum
                 mac_addr
                 pkgpart refnum agentnum
                 username sec_phrase _password popnum
                 mac_addr
-                countrycode phonenum sip_password pin
+                countrycode phonenum sip_password pin prepaid_shortform
               ),
             grep { /^snarf_/ } $cgi->param
         ),
               ),
             grep { /^snarf_/ } $cgi->param
         ),
@@ -292,6 +292,8 @@ sub print_form {
   #$cgi->delete('init_popstate');
   $r->{self_url} = $cgi->self_url;
 
   #$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
   print $cgi->header( '-expires' => 'now' ),
         $signup_template->fill_in( PACKAGE => 'FS::SelfService::_signupcgi',
                                    HASH    => $r
index 7a56a31..405444c 100755 (executable)
@@ -28,6 +28,7 @@
 <FONT SIZE="+1" COLOR="#ff0000"><%= $error %></FONT>
 
 <FORM NAME="OneTrueForm" ACTION="<%= $self_url %>" METHOD=POST onSubmit="document.OneTrueForm.signup.disabled=true">
 <FONT SIZE="+1" COLOR="#ff0000"><%= $error %></FONT>
 
 <FORM NAME="OneTrueForm" ACTION="<%= $self_url %>" METHOD=POST onSubmit="document.OneTrueForm.signup.disabled=true">
+<INPUT TYPE="hidden" NAME="prepaid_shortform" VALUE="<%= $prepaid_shortform %>">
 <INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>">
 <INPUT TYPE="hidden" NAME="action" VALUE="process_signup">
 <INPUT TYPE="hidden" NAME="agentnum" VALUE="<%= $agentnum %>">
 <INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>">
 <INPUT TYPE="hidden" NAME="action" VALUE="process_signup">
 <INPUT TYPE="hidden" NAME="agentnum" VALUE="<%= $agentnum %>">
@@ -52,30 +53,35 @@ Where did you hear about our service? <SELECT NAME="refnum">
   }
 %>
 </SELECT><BR><BR>
   }
 %>
 </SELECT><BR><BR>
+
+<%= unless ( $prepaid_template_custnum && $prepaid_shortform  ) {
+
+my $bgcolor = $box_bgcolor || '#c0c0c0';
+$OUT .= qq!
 Contact Information
 Contact Information
-<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%">
+<TABLE BGCOLOR="$bgcolor" BORDER=0 CELLSPACING=0 WIDTH="100%">
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Contact name<BR>(last, first)</TH>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Contact name<BR>(last, first)</TH>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="last" VALUE="<%= $last %>">,
-                <INPUT TYPE="text" NAME="first" VALUE="<%= $first %>"></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="last" VALUE="$last">,
+                <INPUT TYPE="text" NAME="first" VALUE="$first"></TD>
 </TR>
 <TR>
   <TD ALIGN="right">Company</TD>
 </TR>
 <TR>
   <TD ALIGN="right">Company</TD>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="company" SIZE=70 VALUE="<%= $company %>"></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="company" SIZE=70 VALUE="$company"></TD>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Address</TH>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Address</TH>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="address1" SIZE=70 VALUE="<%= $address1 %>"></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="address1" SIZE=70 VALUE="$address1"></TD>
 </TR>
 <TR>
   <TD ALIGN="right">&nbsp;</TD>
 </TR>
 <TR>
   <TD ALIGN="right">&nbsp;</TD>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="address2" SIZE=70 VALUE="<%= $address2 %>"></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="address2" SIZE=70 VALUE="$address2"></TD>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>City</TH>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>City</TH>
-  <TD><INPUT TYPE="text" NAME="city" VALUE="<%= $city %>"></TD>
-    <%=
-        ($county_html, $state_html, $country_html) =
+  <TD><INPUT TYPE="text" NAME="city" VALUE="$city"></TD> !;
+
+        my ($county_html, $state_html, $country_html) =
           regionselector( {
             selected_county  => $county,
             selected_state   => $state,
           regionselector( {
             selected_county  => $county,
             selected_state   => $state,
@@ -85,32 +91,30 @@ Contact Information
             locales          => \@cust_main_county,
           } );
  
             locales          => \@cust_main_county,
           } );
  
-    %>
-  <TH ALIGN="right"><font color="#ff0000">*</font>
-    <%= ($county_html =~ /SELECT/) ? 'County/State' : 'State' %></TH>
+$county_out = ($county_html =~ /SELECT/) ? 'County/State' : 'State';
+$OUT .= qq!<TH ALIGN="right"><font color="#ff0000">*</font> $county_out </TH>
   <TD>
   <TD>
-    <%= "$county_html $state_html"; %>
+    $county_html $state_html
   </TD>
   <TH><font color="#ff0000">*</font>Zip</TH>
   </TD>
   <TH><font color="#ff0000">*</font>Zip</TH>
-  <TD><INPUT TYPE="text" NAME="zip" SIZE=10 VALUE="<%= $zip %>"></TD>
+  <TD><INPUT TYPE="text" NAME="zip" SIZE=10 VALUE="$zip"></TD>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Country</TH>
 </TR>
 <TR>
   <TH ALIGN="right"><font color="#ff0000">*</font>Country</TH>
-  <TD><%= $country_html %></TD>
+  <TD>$country_html</TD>
 <TR>
   <TD ALIGN="right">Day Phone</TD>
 <TR>
   <TD ALIGN="right">Day Phone</TD>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="daytime" VALUE="<%= $daytime %>" SIZE=18></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="daytime" VALUE="$daytime" SIZE=18></TD>
 </TR>
 <TR>
   <TD ALIGN="right">Night Phone</TD>
 </TR>
 <TR>
   <TD ALIGN="right">Night Phone</TD>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="night" VALUE="<%= $night %>" SIZE=18></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="night" VALUE="$night" SIZE=18></TD>
 </TR>
 <TR>
   <TD ALIGN="right">Fax</TD>
 </TR>
 <TR>
   <TD ALIGN="right">Fax</TD>
-  <TD COLSPAN=5><INPUT TYPE="text" NAME="fax" VALUE="<%= $fax %>" SIZE=12></TD>
+  <TD COLSPAN=5><INPUT TYPE="text" NAME="fax" VALUE="$fax" SIZE=12></TD>
 </TR>
 </TR>
-<%=
-  $OUT = '';
+!;
   if ( $stateid_enabled ) {
     my ($county_html, $state_html, $country_html) =
       regionselector( {
   if ( $stateid_enabled ) {
     my ($county_html, $state_html, $country_html) =
       regionselector( {
@@ -124,8 +128,16 @@ Contact Information
     $OUT .= qq!<TD ALIGN="right">!. $label{stateid_state} .'</TD>';
     $OUT .="<TD COLSPAN=3>$county_html $state_html</TD></TR>";
   }
     $OUT .= qq!<TD ALIGN="right">!. $label{stateid_state} .'</TD>';
     $OUT .="<TD COLSPAN=3>$county_html $state_html</TD></TR>";
   }
-%>
+$OUT .= qq!
 </TABLE><font color="#ff0000">*</font> required fields<BR>
 </TABLE><font color="#ff0000">*</font> required fields<BR>
+!;
+
+}
+else {
+    @payby = ('PREPAY');
+}
+%>
+
 <BR>Billing information<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%">
 <TR><TD>
 
 <BR>Billing information<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%">
 <TR><TD>