adding signup_server-service config
authorivan <ivan>
Fri, 27 Jun 2008 08:53:13 +0000 (08:53 +0000)
committerivan <ivan>
Fri, 27 Jun 2008 08:53:13 +0000 (08:53 +0000)
FS/FS/ClientAPI/Signup.pm
FS/FS/Conf.pm
fs_selfservice/DEPLOY
fs_selfservice/FS-SelfService/SelfService.pm
fs_selfservice/FS-SelfService/cgi/signup.html

index 61325b9..f5efc2d 100644 (file)
@@ -16,6 +16,7 @@ use FS::svc_acct_pop;
 use FS::cust_main;
 use FS::cust_pkg;
 use FS::svc_acct;
+use FS::svc_phone;
 use FS::acct_snarf;
 use FS::queue;
 use FS::reg_code;
@@ -29,6 +30,7 @@ sub signup_info {
   warn "$me signup_info called on $packet\n" if $DEBUG;
 
   my $conf = new FS::Conf;
+  my $svc_x = $conf->config('signup_server-service') || 'svc_acct';
 
   my $cache = new FS::ClientAPI_SessionCache( {
     'namespace' => 'FS::ClientAPI::Signup',
@@ -54,7 +56,7 @@ sub signup_info {
                       'options'     => { $_->options },
                       %{$_->hashref}
                   } }
-                grep { $_->svcpart('svc_acct') && $href->{ $_->pkgpart } }
+                grep { $_->svcpart($svc_x) && $href->{ $_->pkgpart } }
                   qsearch( 'part_pkg', { 'disabled' => '' } )
             ];
         } qsearch('agent', { 'disabled' => '' })
@@ -118,6 +120,8 @@ sub signup_info {
 
       'default_pkgpart' => scalar($conf->config('signup_server-default_pkgpart')),
 
+      'signup_service' => $svc_x,
+
     };
 
     $cache->set('signup_info_cache', $signup_info_cache);
@@ -208,7 +212,7 @@ sub signup_info {
                 %{$_->hashref}
               };
             }
-          grep { $_->svcpart('svc_acct') }
+          grep { $_->svcpart($svc_x) }
           map { $_->part_pkg }
             qsearchs( 'reg_code', { 'code'     => $packet->{'reg_code'},
                                     'agentnum' => $agentnum,              } )
@@ -230,7 +234,7 @@ sub signup_info {
                 'options'     => { $_->options },
                 %{$_->hashref}
             } }
-          grep { $_->svcpart('svc_acct') }
+          grep { $_->svcpart($svc_x) }
             qsearch( 'part_pkg', { 'promo_code' => {
                                      op=>'ILIKE',
                                      value=>$packet->{'promo_code'}
@@ -317,15 +321,20 @@ sub new_customer {
   my $packet = shift;
 
   my $conf = new FS::Conf;
+  my $svc_x = $conf->config('signup_server-service') || 'svc_acct';
+
+  if ( $svc_x eq 'svc_acct' ) {
   
-  #things that aren't necessary in base class, but are for signup server
-    #return "Passwords don't match"
-    #  if $hashref->{'_password'} ne $hashref->{'_password2'}
-  return { 'error' => gettext('empty_password') }
-    unless length($packet->{'_password'});
-  # a bit inefficient for large numbers of pops
-  return { 'error' => gettext('no_access_number_selected') }
-    unless $packet->{'popnum'} || !scalar(qsearch('svc_acct_pop',{} ));
+    #things that aren't necessary in base class, but are for signup server
+      #return "Passwords don't match"
+      #  if $hashref->{'_password'} ne $hashref->{'_password2'}
+    return { 'error' => gettext('empty_password') }
+      unless length($packet->{'_password'});
+    # a bit inefficient for large numbers of pops
+    return { 'error' => gettext('no_access_number_selected') }
+      unless $packet->{'popnum'} || !scalar(qsearch('svc_acct_pop',{} ));
+
+  }
 
   my $agentnum;
   if ( exists $packet->{'session_id'} ) {
@@ -389,7 +398,7 @@ sub new_customer {
   my $part_pkg =
     qsearchs( 'part_pkg', { 'pkgpart' => $pkgpart } )
       or return { 'error' => "WARNING: unknown pkgpart: $pkgpart" };
-  my $svcpart = $part_pkg->svcpart('svc_acct');
+  my $svcpart = $part_pkg->svcpart($svc_x);
 
   my $reg_code = '';
   if ( $packet->{'reg_code'} ) {
@@ -407,31 +416,47 @@ sub new_customer {
   #my $error = $cust_pkg->check;
   #return { 'error' => $error } if $error;
 
-  my $svc_acct = new FS::svc_acct ( {
-    'svcpart'   => $svcpart,
-    map { $_ => $packet->{$_} }
-      qw( username _password sec_phrase popnum ),
-  } );
+  #should be all auto-magic and shit
+  my $svc;
+  if ( $svc_x eq 'svc_acct' ) {
+
+    my $svc = new FS::svc_acct ( {
+      'svcpart'   => $svcpart,
+      map { $_ => $packet->{$_} }
+        qw( username _password sec_phrase popnum ),
+    } );
+
+    my @acct_snarf;
+    my $snarfnum = 1;
+    while (    exists($packet->{"snarf_machine$snarfnum"})
+            && length($packet->{"snarf_machine$snarfnum"}) ) {
+      my $acct_snarf = new FS::acct_snarf ( {
+        'machine'   => $packet->{"snarf_machine$snarfnum"},
+        'protocol'  => $packet->{"snarf_protocol$snarfnum"},
+        'username'  => $packet->{"snarf_username$snarfnum"},
+        '_password' => $packet->{"snarf_password$snarfnum"},
+      } );
+      $snarfnum++;
+      push @acct_snarf, $acct_snarf;
+    }
+    $svc->child_objects( \@acct_snarf );
 
-  my @acct_snarf;
-  my $snarfnum = 1;
-  while (    exists($packet->{"snarf_machine$snarfnum"})
-          && length($packet->{"snarf_machine$snarfnum"}) ) {
-    my $acct_snarf = new FS::acct_snarf ( {
-      'machine'   => $packet->{"snarf_machine$snarfnum"},
-      'protocol'  => $packet->{"snarf_protocol$snarfnum"},
-      'username'  => $packet->{"snarf_username$snarfnum"},
-      '_password' => $packet->{"snarf_password$snarfnum"},
+  } elsif ( $svc_x eq 'svc_phone' ) {
+
+    my $svc = new FS::svc_phone ( {
+      'svcpart' => $svcpart,
+       map { $_ => $packet->{$_} }
+         qw( countrycode phonenum pin ),
     } );
-    $snarfnum++;
-    push @acct_snarf, $acct_snarf;
+
+  } else {
+    die "unknown signup service $svc_x";
   }
-  $svc_acct->child_objects( \@acct_snarf );
 
-  my $y = $svc_acct->setdefault; # arguably should be in new method
+  my $y = $svc->setdefault; # arguably should be in new method
   return { 'error' => $y } if $y && !ref($y);
 
-  #$error = $svc_acct->check;
+  #$error = $svc->check;
   #return { 'error' => $error } if $error;
 
   #setup a job dependancy to delay provisioning
@@ -444,7 +469,7 @@ sub new_customer {
 
   use Tie::RefHash;
   tie my %hash, 'Tie::RefHash';
-  %hash = ( $cust_pkg => [ $svc_acct ] );
+  %hash = ( $cust_pkg => [ $svc ] );
   #msgcat
   $error = $cust_main->insert(
     \%hash,
index 4f460d9..0fea39d 100644 (file)
@@ -1257,7 +1257,7 @@ worry that config_items is freeside-specific and icky.
   {
     'key'         => 'signup_server-default_pkgpart',
     'section'     => '',
-    'description' => 'Default pakcage for the signup server',
+    'description' => 'Default package for the signup server',
     'type'        => 'select-sub',
     'options_sub' => sub { require FS::Record;
                            require FS::part_pkg;
@@ -1278,6 +1278,17 @@ worry that config_items is freeside-specific and icky.
   },
 
   {
+    'key'         => 'signup_server-service',
+    'section'     => '',
+    'description' => 'Service for the signup server - "Account (svc_acct)" is the default setting, or "Phone number (svc_phone)" for ITSP signup',
+    'type'        => 'select',
+    'select_hash' => [
+                       'svc_acct'  => 'Account (svc_acct)',
+                       'svc_phone' => 'Phone number (svc_phone)',
+                     ],
+  },
+
+  {
     'key'         => 'show-msgcat-codes',
     'section'     => 'UI',
     'description' => 'Show msgcat codes in error messages.  Turn this option on before reporting errors to the mailing list.',
index c93ed0f..e73012f 100755 (executable)
@@ -10,7 +10,8 @@ cd FS-SelfService
 perl Makefile.PL && make && make install
 cd ..
 
-( cd ..; make deploy; cd fs_selfservice )
+#( cd ..; make deploy; cd fs_selfservice )
+( cd ..; make clean; make install-perl-modules; /etc/init.d/freeside restart; cd fs_selfservice )
 
 #cp /home/ivan/freeside/fs_selfservice/FS-SelfService/cgi/* /var/www/MyAccount
 #chown freeside /var/www/MyAccount/*.cgi
index ec4668f..cbe7b72 100644 (file)
@@ -58,7 +58,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
   'agent_info'                => 'Agent/agent_info',
   'agent_list_customers'      => 'Agent/agent_list_customers',
 );
-@EXPORT_OK = ( keys(%autoload), qw( regionselector expselect popselector domainselector) );
+@EXPORT_OK = ( keys(%autoload), qw( regionselector expselect popselector domainselector didselector) );
 
 $ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
 $ENV{'SHELL'} = '/bin/sh';
@@ -1437,6 +1437,30 @@ sub domainselector {
 
 }
 
+=item didselector HASHREF | LIST
+
+Takes as input a hashref or list of key/value pairs with the following keys:
+
+=over 4
+
+=back
+
+Returns an HTML fragment for DID selection.
+
+=cut
+
+sub didselector {
+  my $param;
+  if ( ref($_[0]) ) {
+    $param = shift;
+  } else {
+    $param = { @_ };
+  }
+
+  return "choose your DID XXX";
+
+}
+
 =back
 
 =head1 RESELLER FUNCTIONS
index 42334ea..30935f8 100755 (executable)
@@ -1,4 +1,4 @@
-<HTML><HEAD><TITLE><%= $agent || 'ISP' %> Signup form</TITLE></HEAD>
+<HTML><HEAD><TITLE><%= $agent || ( $signup_service eq 'svc_phone' ? 'ITSP' : 'ISP' ) %> Signup form</TITLE></HEAD>
 <BODY BGCOLOR="#e8e8e8" onUnload="myclose()">
 <script language="JavaScript"><!--
   var mywindow = -1;
@@ -256,32 +256,51 @@ HTML::Widgets::SelectLayers->new(
 
   </SELECT></TD>
 </TR>
+<%=
+  if ( $signup_service eq 'svc_phone' ) {
+
+    $OUT .= '<TR><TD ALIGN="right">Phone number</TD><TD>'.
+            didselector().
+            '</TD></TR>';
+
+    $OUT .= <<ENDOUT;
+<TR>
+  <TD ALIGN="right">Voicemail PIN</TD>
+  <TD><INPUT TYPE="pin" NAME="pin" VALUE="$pin"></TD>
+</TR>
+ENDOUT
+
+  } else {
+
+    $OUT .= <<ENDOUT;
 <TR>
   <TD ALIGN="right">Username</TD>
-  <TD><INPUT TYPE="text" NAME="username" VALUE="<%= $username %>"></TD>
+  <TD><INPUT TYPE="text" NAME="username" VALUE="$username"></TD>
 </TR>
 <TR>
   <TD ALIGN="right">Password</TD>
-  <TD><INPUT TYPE="password" NAME="_password" VALUE="<%= $_password %>"></TD>
+  <TD><INPUT TYPE="password" NAME="_password" VALUE="$_password"></TD>
 </TR>
 <TR>
   <TD ALIGN="right">Re-enter Password</TD>
-  <TD><INPUT TYPE="password" NAME="_password2" VALUE="<%= $_password2 %>"></TD>
+  <TD><INPUT TYPE="password" NAME="_password2" VALUE="$_password2"></TD>
 </TR>
-<%=
-  if ( $security_phrase ) {
-    $OUT .= <<ENDOUT;
+ENDOUT
+
+    if ( $security_phrase ) {
+      $OUT .= <<SECPHRASE;
 <TR>
   <TD ALIGN="right">Security Phrase</TD>
   <TD><INPUT TYPE="text" NAME="sec_phrase" VALUE="$sec_phrase">
   </TD>
 </TR>
-ENDOUT
-  } else {
-    $OUT .= '<INPUT TYPE="hidden" NAME="sec_phrase" VALUE="">';
+SECPHRASE
+    } else {
+      $OUT .= '<INPUT TYPE="hidden" NAME="sec_phrase" VALUE="">';
+    }
+
   }
-%>
-<%=
+
   if ( @svc_acct_pop ) {
     $OUT .= '<TR><TD ALIGN="right">Access number</TD><TD>'.
             popselector( 'popnum'        => $popnum,
@@ -294,7 +313,9 @@ ENDOUT
   } else {
     $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop);
   }
+
 %>
+
 </TABLE>
 
 <%=