svcpart changes now trigger all necessary export actions, manual svcpart changing...
[freeside.git] / fs_signup / fs_signup_server
index 7f962e0..d6eb4a8 100755 (executable)
@@ -14,6 +14,8 @@ use FS::Conf;
 use FS::Record qw( qsearch qsearchs );
 use FS::cust_main_county;
 use FS::cust_main;
+use FS::cust_bill;
+use FS::cust_pkg;
 use FS::Msgcat qw(gettext);
 
 use vars qw( $opt $Debug );
@@ -25,6 +27,11 @@ my $user = shift or die &usage;
 
 my $conf = new FS::Conf;
 
+if ($conf->exists('signup_server-quiet')) {
+    $FS::cust_bill::quiet = 1;
+    $FS::cust_pkg::quiet = 1;
+}
+
 #my @payby = qw(CARD PREPAY);
 my @payby = $conf->config('signup_server-payby');
 my $smtpmachine = $conf->config('smtpmachine');
@@ -94,7 +101,11 @@ while (1) {
 
     'msgcat' => { map { $_=>gettext($_) } qw(
       passwords_dont_match invalid_card unknown_card_type not_a
-    ) }
+    ) },
+
+    'statedefault' => $conf->config('statedefault') || 'CA',
+
+    'countrydefault' => $conf->config('countrydefault') || 'US',
 
   };
 
@@ -132,7 +143,7 @@ while (1) {
 
       map { $_ => $signup_data->{$_} } qw(
         last first ss company address1 address2 city county state zip country
-        daytime night fax payby payinfo paydate payname referral_custnum
+        daytime night fax payby payinfo paydate payname referral_custnum comments
       ),
 
     } );
@@ -140,6 +151,9 @@ while (1) {
     $error ||= "Illegal payment type"
       unless grep { $_ eq $signup_data->{'payby'} } @payby;
 
+    $cust_main->payinfo($cust_main->daytime)
+      if $cust_main->payby eq 'LECB' && ! $cust_main->payinfo;
+
     my @invoicing_list = split( /\s*\,\s*/, $signup_data->{'invoicing_list'} );
 
     $signup_data->{'pkgpart'} =~ /^(\d+)$/ or '' =~ /^()$/;
@@ -148,7 +162,7 @@ while (1) {
     my $part_pkg =
       qsearchs( 'part_pkg', { 'pkgpart' => $pkgpart } )
         or $error ||= "WARNING: unknown pkgpart: $pkgpart";
-    my $svcpart = $part_pkg->svcpart unless $error;
+    my $svcpart = $part_pkg->svcpart('svc_acct') unless $error;
 
     my $cust_pkg = new FS::cust_pkg ( {
       #later#'custnum' => $custnum,
@@ -188,9 +202,15 @@ while (1) {
         if $bill_error;
 
       if ( $cust_main->balance > 0 ) {
+
+        #this makes sense.  credit is "un-doing" the invoice
+        $cust_main->credit( $cust_main->balance, 'signup server decline' );
+        $cust_main->apply_credits;
+
         #should check list for errors...
         #$cust_main->suspend;
         $cust_main->cancel;
+
         $error = '_decline';
       }
     }