import torrus 1.0.9
[freeside.git] / FS / FS / part_export / soma.pm
index c57fc7f..c73d9f9 100644 (file)
@@ -140,9 +140,9 @@ sub queue_statuschange {
 
   my $queue = new FS::queue {
     'svcnum' => $svc->svcnum,
-    'job'    => 'FS::part_export::soma::$method',
+    'job'    => 'FS::part_export::soma::statuschange',
   };
-  my $error = $queue->insert( $self->option('url'), %args );
+  my $error = $queue->insert( %args );
 
   return $error if $error;
 
@@ -311,11 +311,13 @@ sub _queueable_suspend {
       next unless $application->definitionId == $appid;
 
       $instance_id = $application->instanceId;
-      $app_def = $app_catalog->getApplicationDef($appid, $cpeid);
-      @attr_def = grep { $_->internalName eq 'status' } @{$app_def->attributes};
+      my $app_def =
+        $soma_objects->{AppCatalog}->getApplicationDef($appid, $cpeid);
+      my @attr_def = grep { $_->internalName eq 'status' }
+                          @{$app_def->attributes};
 
       foreach my $attribute ( @{$application->attributes} ) {
-        next unless $attibute->definitionId == $attr_def[0]->definitionId;
+        next unless $attribute->definitionId == $attr_def[0]->definitionId;
         $attribute->{value} = 'S';  
 
         $soma_objects->{Applications}->setAppAttribute( $cpeid,
@@ -351,11 +353,13 @@ sub _queueable_unsuspend {
       next unless $application->definitionId == $appid;
 
       $instance_id = $application->instanceId;
-      $app_def = $app_catalog->getApplicationDef($appid, $cpeid);
-      @attr_def = grep { $_->internalName eq 'status' } @{$app_def->attributes};
+      my $app_def =
+        $soma_objects->{AppCatalog}->getApplicationDef($appid, $cpeid);
+      my @attr_def = grep { $_->internalName eq 'status' }
+                     @{$app_def->attributes};
 
-      foreach my $attribute ( @{$applicate->attributes} ) {
-        next unless $attibute->definitionId == $attr_def[0]->definitionId;
+      foreach my $attribute ( @{$application->attributes} ) {
+        next unless $attribute->definitionId == $attr_def[0]->definitionId;
         $attribute->{value} = 'E';  
 
         $soma_objects->{Applications}->setAppAttribute( $cpeid,
@@ -381,7 +385,11 @@ sub esn {
   my ( $self, $svc ) = @_;
   my $svcdb = $svc->cust_svc->part_svc->svcdb;
 
-  return sprintf( '%016d', $svc->id ) if $svcdb eq 'svc_external';
+  if ($svcdb eq 'svc_external') {
+    my $esn = $svc->title;
+    $esn =~ /^\s*([\da-fA-F]{1,16})\s*$/ && ($esn = $1);
+    return sprintf( '%016s', $esn );
+  }
   
   my $cust_pkg = $svc->cust_svc->cust_pkg;
   return '' unless $cust_pkg;
@@ -394,7 +402,10 @@ sub esn {
   warn "part_export::soma found multiple ESNs for cust_svc ". $svc->svcnum
     if scalar( @cust_svc ) > 1;
 
-  sprintf( '%016d', $cust_svc[0]->svc_x->id );
+  my $esn = $cust_svc[0]->svc_x->title;
+  $esn =~ /^\s*([\da-fA-F]{1,16})\s*$/ && ($esn = $1);
+  
+  sprintf( '%016s', $esn );
 }