export popselector and expselect
[freeside.git] / fs_signup / FS-SignupClient / SignupClient.pm
index d311846..284fddd 100644 (file)
@@ -1,27 +1,18 @@
 package FS::SignupClient;
 
 use strict;
-use vars qw($VERSION @ISA @EXPORT_OK $fs_signupd_socket);
+use vars qw($VERSION @ISA @EXPORT_OK $init_data); # $fs_signupd_socket);
 use Exporter;
-use Socket;
-use IO::Handle;
+#use Socket;
+#use FileHandle;
+#use IO::Handle;
+#use Storable qw(nstore_fd fd_retrieve);
+use FS::SelfService; # qw( new_customer signup_info );
 
-$VERSION = '0.01';
+$VERSION = '0.04';
 
 @ISA = qw( Exporter );
-@EXPORT_OK = qw( signup_info new_customer );
-
-$fs_signupd_socket = "/usr/local/freeside/fs_signupd_socket";
-
-$ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin';
-$ENV{'SHELL'} = '/bin/sh';
-$ENV{'IFS'} = " \t\n";
-$ENV{'CDPATH'} = '';
-$ENV{'ENV'} = '';
-$ENV{'BASH_ENV'} = '';
-
-my $freeside_uid = scalar(getpwnam('freeside'));
-die "not running as the freeside user\n" if $> != $freeside_uid;
+@EXPORT_OK = qw( signup_info new_customer regionselector expselect popselector);
 
 =head1 NAME
 
@@ -31,32 +22,39 @@ FS::SignupClient - Freeside signup client API
 
   use FS::SignupClient qw( signup_info new_customer );
 
-  ( $locales, $packages, $pops ) = signup_info;
+  #this is the backwards-compatibility bit
+  ( $locales, $packages, $pops, $real_signup_info ) = signup_info;
 
+  #this is compatible with FS::SelfService::new_customer
   $error = new_customer ( {
-    'first'          => $first,
-    'last'           => $last,
-    'ss'             => $ss,
-    'comapny'        => $company,
-    'address1'       => $address1,
-    'address2'       => $address2,
-    'city'           => $city,
-    'county'         => $county,
-    'state'          => $state,
-    'zip'            => $zip,
-    'country'        => $country,
-    'daytime'        => $daytime,
-    'night'          => $night,
-    'fax'            => $fax,
-    'payby'          => $payby,
-    'payinfo'        => $payinfo,
-    'paydate'        => $paydate,
-    'payname'        => $payname,
-    'invoicing_list' => $invoicing_list,
-    'pkgpart'        => $pkgpart,
-    'username'       => $username,
-    '_password'       => $password,
-    'popnum'         => $popnum,
+    'first'            => $first,
+    'last'             => $last,
+    'ss'               => $ss,
+    'comapny'          => $company,
+    'address1'         => $address1,
+    'address2'         => $address2,
+    'city'             => $city,
+    'county'           => $county,
+    'state'            => $state,
+    'zip'              => $zip,
+    'country'          => $country,
+    'daytime'          => $daytime,
+    'night'            => $night,
+    'fax'              => $fax,
+    'payby'            => $payby,
+    'payinfo'          => $payinfo,
+    'paycvv'           => $paycvv,
+    'paydate'          => $paydate,
+    'payname'          => $payname,
+    'invoicing_list'   => $invoicing_list,
+    'referral_custnum' => $referral_custnum,
+    'comments'         => $comments,
+    'pkgpart'          => $pkgpart,
+    'username'         => $username,
+    '_password'        => $password,
+    'sec_phrase'       => $sec_phrase,
+    'popnum'           => $popnum,
+    'agentnum'         => $agentnum, #optional
   } );
 
 =head1 DESCRIPTION
@@ -94,57 +92,18 @@ Each hash reference has the following keys:
   ac
   exch
 
+(Future expansion: fourth argument is the $init_data hash reference)
+
 =cut
 
+#compatibility bit
 sub signup_info {
-  socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
-  connect(SOCK, sockaddr_un($fs_signupd_socket)) or die "connect: $!";
-  print SOCK "signup_info\n";
-  SOCK->flush;
-
-  chop ( my $n_cust_main_county = <SOCK> );
-  my @cust_main_county = map {
-    chop ( my $taxnum  = <SOCK> ); 
-    chop ( my $state   = <SOCK> ); 
-    chop ( my $county  = <SOCK> ); 
-    chop ( my $country = <SOCK> );
-    {
-      'taxnum'  => $taxnum,
-      'state'   => $state,
-      'county'  => $county,
-      'country' => $country,
-    };
-  } 1 .. $n_cust_main_county;
-
-  chop ( my $n_part_pkg = <SOCK> );
-  my @part_pkg = map {
-    chop ( my $pkgpart = <SOCK> ); 
-    chop ( my $pkg     = <SOCK> ); 
-    {
-      'pkgpart' => $pkgpart,
-      'pkg'     => $pkg,
-    };
-  } 1 .. $n_part_pkg;
-
-  chop ( my $n_svc_acct_pop = <SOCK> );
-  my @svc_acct_pop = map {
-    chop ( my $popnum = <SOCK> ); 
-    chop ( my $city   = <SOCK> ); 
-    chop ( my $state  = <SOCK> ); 
-    chop ( my $ac     = <SOCK> );
-    chop ( my $exch   = <SOCK> );
-    {
-      'popnum' => $popnum,
-      'city'   => $city,
-      'state'  => $state,
-      'ac'     => $ac,
-      'exch'   => $exch,
-    };
-  } 1 .. $n_svc_acct_pop;
-
-  close SOCK;
-
-  \@cust_main_county, \@part_pkg, \@svc_acct_pop;
+
+  $init_data = FS::SelfService::signup_info();
+
+  (map { $init_data->{$_} } qw( cust_main_county part_pkg svc_acct_pop ) ),
+  $init_data;
+
 }
 
 =item new_customer HASHREF
@@ -167,47 +126,81 @@ a paramater with the following keys:
   fax
   payby
   payinfo
+  paycvv
   paydate
   payname
   invoicing_list
+  referral_custnum
+  comments
   pkgpart
   username
   _password
+  sec_phrase
   popnum
 
 Returns a scalar error message, or the empty string for success.
 
 =cut
 
-sub new_customer {
-  my $hashref = shift;
+#compatibility bit
+sub new_customer { 
+  my $hash = FS::SelfService::new_customer(@_);
+  $hash->{'error'};
+}
 
-  socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
-  connect(SOCK, sockaddr_un($fs_signupd_socket)) or die "connect: $!";
-  print SOCK "new_customer\n";
+=item regionselector SELECTED_COUNTY, SELECTED_STATE, SELECTED_COUNTRY, PREFIX, ONCHANGE
 
-  print SOCK join("\n", map { $hashref->{$_} } qw(
-    first last ss company address1 address2 city county state zip country
-    daytime night fax payby payinfo paydate payname invoicing_list
-    pkgpart username _password popnum
-  ) ), "\n";
-  SOCK->flush;
+=cut
 
-  chop( my $error = <SOCK> );
-  $error;
+sub regionselector {
+  my ( $selected_county, $selected_state, $selected_country,
+       $prefix, $onchange ) = @_;
+  signup_info() unless $init_data;
+  FS::SelfService::regionselector({
+    selected_county  => $selected_county,
+    selected_state   => $selected_state,
+    selected_country => $selected_country,
+    prefix           => $prefix,
+    onchange         => $onchange,
+    default_country  => $init_data->{countrydefault},
+    locales          => $init_data->{cust_main_county},
+  });
+    #default_state    => $init_data->{statedefault},
 }
 
-=back
+=item expselect PREFIX, DATE
 
-=head1 VERSION
+=cut
+
+sub expselect {
+  FS::SelfService::expselect(@_);
+}
+
+=item popselector 
+
+=cut
 
-$Id: SignupClient.pm,v 1.1 1999-08-24 07:56:38 ivan Exp $
+sub popselector {
+  my( $popnum ) = @_;
+  signup_info() unless $init_data;
+  FS::SelfService::popselector({
+    popnum => $popnum,
+    pops   => $init_data->{svc_acct_pop},
+  });
+    #popac =>
+    #acstate =>
+}
+
+=back
 
 =head1 BUGS
 
+This is just a wrapper around FS::SelfService functions for backwards
+compatibility and will probably be deprecated soon.
+
 =head1 SEE ALSO
 
-L<fs_signupd>, L<FS::SignupServer>, L<FS::cust_main>
+L<fs_signupd>, L<FS::cust_main>
 
 =cut