[freeside-commits] freeside/FS/FS/ClientAPI Signup.pm,1.52,1.53

Ivan,,, ivan at wavetail.420.am
Fri Sep 25 03:14:32 PDT 2009


Update of /home/cvs/cvsroot/freeside/FS/FS/ClientAPI
In directory wavetail.420.am:/tmp/cvs-serv18545/FS/FS/ClientAPI

Modified Files:
	Signup.pm 
Log Message:
nomadix, RT#5876

Index: Signup.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/ClientAPI/Signup.pm,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- Signup.pm	15 Sep 2009 22:58:54 -0000	1.52
+++ Signup.pm	25 Sep 2009 10:14:30 -0000	1.53
@@ -107,6 +107,8 @@
 
       'security_phrase' => $conf->exists('security_phrase'),
 
+      'nomadix' => $conf->exists('signup_server-nomadix'),
+
       'payby' => [ $conf->config('signup_server-payby') ],
 
       'card_types' => card_types(),
@@ -512,14 +514,14 @@
   #return { 'error' => $error } if $error;
 
   #should be all auto-magic and shit
-  my $svc;
+  my @svc = ();
   if ( $svc_x eq 'svc_acct' ) {
 
-    $svc = new FS::svc_acct ( {
+    my $svc = new FS::svc_acct {
       'svcpart'   => $svcpart,
       map { $_ => $packet->{$_} }
         qw( username _password sec_phrase popnum ),
-    } );
+    };
 
     my @acct_snarf;
     my $snarfnum = 1;
@@ -536,21 +538,48 @@
     }
     $svc->child_objects( \@acct_snarf );
 
+    push @svc, $svc;
+
   } elsif ( $svc_x eq 'svc_phone' ) {
 
-    $svc = new FS::svc_phone ( {
+    my $svc = new FS::svc_phone ( {
       'svcpart' => $svcpart,
        map { $_ => $packet->{$_} }
          qw( countrycode phonenum sip_password pin ),
     } );
 
+    push @svc, $svc;
+
   } else {
     die "unknown signup service $svc_x";
   }
-
-  my $y = $svc->setdefault; # arguably should be in new method
+  my $y = $svc[0]->setdefault; # arguably should be in new method
   return { 'error' => $y } if $y && !ref($y);
 
+  if ($packet->{'mac_addr'} && $conf->exists('signup_server-mac_addr_svcparts'))
+  {
+
+    my %mac_addr_svcparts = map { $_ => 1 }
+                            $conf->config('signup_server-mac_addr_svcparts');
+    my @pkg_svc = grep { $_->quantity && $mac_addr_svcparts{$_->svcpart} }
+                  $cust_pkg->part_pkg->pkg_svc;
+
+    return { 'error' => 'No service defined to assign mac address' }
+      unless @pkg_svc;
+
+    my $svc = new FS::svc_acct {
+      'svcpart'   => $pkg_svc[0]->svcpart, #multiple matches? alas..
+      'username'  => $packet->{'mac_addr'},
+      '_password' => '', #blank as requested (set passwordmin to 0)
+    };
+
+    my $y = $svc->setdefault; # arguably should be in new method
+    return { 'error' => $y } if $y && !ref($y);
+
+    push @svc, $svc;
+
+  }
+
   #$error = $svc->check;
   #return { 'error' => $error } if $error;
 
@@ -564,7 +593,7 @@
 
   use Tie::RefHash;
   tie my %hash, 'Tie::RefHash';
-  %hash = ( $cust_pkg => [ $svc ] );
+  %hash = ( $cust_pkg => \@svc );
   #msgcat
   $error = $cust_main->insert(
     \%hash,
@@ -648,9 +677,9 @@
                );
 
   if ( $svc_x eq 'svc_acct' ) {
-    $return{$_} = $svc->$_() for qw( username _password );
+    $return{$_} = $svc[0]->$_() for qw( username _password );
   } elsif ( $svc_x eq 'svc_phone' ) {
-    $return{$_} = $svc->$_() for qw( countrycode phonenum sip_password pin );
+    $return{$_} = $svc[0]->$_() for qw( countrycode phonenum sip_password pin );
   } else {
     die "unknown signup service $svc_x";
   }



More information about the freeside-commits mailing list