correct longstanding oops
[freeside.git] / FS / FS / part_svc.pm
index 7f79194..fc5258f 100644 (file)
@@ -347,7 +347,6 @@ and replace methods.
 
 sub check {
   my $self = shift;
-  my $recref = $self->hashref;
 
   my $error;
   $error=
@@ -358,8 +357,9 @@ sub check {
   ;
   return $error if $error;
 
-  my @fields = eval { fields( $recref->{svcdb} ) }; #might die
-  return "Unknown svcdb!" unless @fields;
+  my @fields = eval { fields( $self->svcdb ) }; #might die
+  return "Unknown svcdb: ". $self->svcdb. " (Error: $@)"
+    unless @fields;
 
   $self->SUPER::check;
 }
@@ -544,12 +544,20 @@ sub process {
                       $param->{ $svcdb.'__'.$_ } =
                         delete( $param->{ $svcdb.'__'.$_.'_classnum' } );
                     }
+                   if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^S$/ ) {
+                      $param->{ $svcdb.'__'.$_} =
+                        ref($param->{ $svcdb.'__'.$_})
+                          ? join(',', @{$param->{ $svcdb.'__'.$_ }} )
+                          : $param->{ $svcdb.'__'.$_ };
+                   }
                     ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' );
                   }
                   @fields;
 
             } grep defined( dbdef->table($_) ),
-                   qw( svc_acct svc_domain svc_forward svc_www svc_broadband )
+                   qw( svc_acct svc_domain svc_forward svc_www svc_broadband
+                       svc_phone svc_external
+                     )
       )
   } );