use the AUTOLOAD that reports errors better & fix problems with ut_domain
[freeside.git] / FS / FS / part_svc.pm
index 6f66ef9..7ef996f 100644 (file)
@@ -2,8 +2,9 @@ package FS::part_svc;
 
 use strict;
 use vars qw( @ISA );
 
 use strict;
 use vars qw( @ISA );
-use FS::Record qw( qsearchs fields dbh );
+use FS::Record qw( qsearch qsearchs fields dbh );
 use FS::part_svc_column;
 use FS::part_svc_column;
+use FS::part_export;
 
 @ISA = qw(FS::Record);
 
 
 @ISA = qw(FS::Record);
 
@@ -40,6 +41,8 @@ FS::Record.  The following fields are currently supported:
 =item svcdb - table used for this service.  See L<FS::svc_acct>,
 L<FS::svc_domain>, and L<FS::svc_forward>, among others.
 
 =item svcdb - table used for this service.  See L<FS::svc_acct>,
 L<FS::svc_domain>, and L<FS::svc_forward>, among others.
 
+=item disabled - Disabled flag, empty or `Y'
+
 =back
 
 =head1 METHODS
 =back
 
 =head1 METHODS
@@ -55,19 +58,25 @@ database, see L<"insert">.
 
 sub table { 'part_svc'; }
 
 
 sub table { 'part_svc'; }
 
-=item insert
+=item insert EXTRA_FIELDS_ARRAYREF
 
 Adds this service definition to the database.  If there is an error, returns
 the error, otherwise returns false.
 
 
 Adds this service definition to the database.  If there is an error, returns
 the error, otherwise returns false.
 
+TODOC:
+
 =item I<svcdb>__I<field> - Default or fixed value for I<field> in I<svcdb>.
 
 =item I<svcdb>__I<field>_flag - defines I<svcdb>__I<field> action: null, `D' for default, or `F' for fixed
 
 =item I<svcdb>__I<field> - Default or fixed value for I<field> in I<svcdb>.
 
 =item I<svcdb>__I<field>_flag - defines I<svcdb>__I<field> action: null, `D' for default, or `F' for fixed
 
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub insert {
   my $self = shift;
 =cut
 
 sub insert {
   my $self = shift;
+  my @fields = ();
+  @fields = @{shift(@_)} if @_;
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
@@ -94,7 +103,7 @@ sub insert {
   foreach my $field (
     grep { $_ ne 'svcnum'
            && defined( $self->getfield($svcdb.'__'.$_.'_flag') )
   foreach my $field (
     grep { $_ ne 'svcnum'
            && defined( $self->getfield($svcdb.'__'.$_.'_flag') )
-         } fields($svcdb)
+         } (fields($svcdb), @fields)
   ) {
     my $part_svc_column = $self->part_svc_column($field);
     my $previous = qsearchs('part_svc_column', {
   ) {
     my $part_svc_column = $self->part_svc_column($field);
     my $previous = qsearchs('part_svc_column', {
@@ -139,11 +148,15 @@ sub delete {
 # check & make sure the svcpart isn't in cust_svc or pkg_svc (in any packages)?
 }
 
 # check & make sure the svcpart isn't in cust_svc or pkg_svc (in any packages)?
 }
 
-=item replace OLD_RECORD
+=item replace OLD_RECORD [ '1.3-COMPAT' [ , EXTRA_FIELDS_ARRAYREF ] ]
 
 Replaces OLD_RECORD with this one in the database.  If there is an error,
 returns the error, otherwise returns false.
 
 
 Replaces OLD_RECORD with this one in the database.  If there is an error,
 returns the error, otherwise returns false.
 
+TODOC: 1.3-COMPAT
+
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub replace {
 =cut
 
 sub replace {
@@ -170,11 +183,15 @@ sub replace {
   }
 
   if ( @_ && $_[0] eq '1.3-COMPAT' ) {
   }
 
   if ( @_ && $_[0] eq '1.3-COMPAT' ) {
+    shift;
+    my @fields = ();
+    @fields = @{shift(@_)} if @_;
+
     my $svcdb = $new->svcdb;
     foreach my $field (
       grep { $_ ne 'svcnum'
              && defined( $new->getfield($svcdb.'__'.$_.'_flag') )
     my $svcdb = $new->svcdb;
     foreach my $field (
       grep { $_ ne 'svcnum'
              && defined( $new->getfield($svcdb.'__'.$_.'_flag') )
-           } fields($svcdb)
+           } (fields($svcdb),@fields)
     ) {
       my $part_svc_column = $new->part_svc_column($field);
       my $previous = qsearchs('part_svc_column', {
     ) {
       my $part_svc_column = $new->part_svc_column($field);
       my $previous = qsearchs('part_svc_column', {
@@ -229,12 +246,14 @@ sub check {
     $self->ut_numbern('svcpart')
     || $self->ut_text('svc')
     || $self->ut_alpha('svcdb')
     $self->ut_numbern('svcpart')
     || $self->ut_text('svc')
     || $self->ut_alpha('svcdb')
+    || $self->ut_enum('disabled', [ '', 'Y' ] )
   ;
   return $error if $error;
 
   my @fields = eval { fields( $recref->{svcdb} ) }; #might die
   return "Unknown svcdb!" unless @fields;
 
   ;
   return $error if $error;
 
   my @fields = eval { fields( $recref->{svcdb} ) }; #might die
   return "Unknown svcdb!" unless @fields;
 
+##REPLACED BY part_svc_column
 #  my $svcdb;
 #  foreach $svcdb ( qw(
 #    svc_acct svc_acct_sm svc_domain
 #  my $svcdb;
 #  foreach $svcdb ( qw(
 #    svc_acct svc_acct_sm svc_domain
@@ -291,11 +310,21 @@ sub all_part_svc_column {
   qsearch('part_svc_column', { 'svcpart' => $self->svcpart } );
 }
 
   qsearch('part_svc_column', { 'svcpart' => $self->svcpart } );
 }
 
+=item part_export
+
+=cut
+
+sub part_export {
+  my $self = shift;
+  my %search = ( 'svcpart' => $self->svcpart );
+  qsearch('part_export', \%search);
+}
+
 =back
 
 =head1 VERSION
 
 =back
 
 =head1 VERSION
 
-$Id: part_svc.pm,v 1.5 2001-09-11 23:44:01 ivan Exp $
+$Id: part_svc.pm,v 1.12 2002-03-26 13:58:29 ivan Exp $
 
 =head1 BUGS
 
 
 =head1 BUGS
 
@@ -306,9 +335,9 @@ should be fixed.
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-L<FS::Record>, L<FS::part_pkg>, L<FS::pkg_svc>, L<FS::cust_svc>,
-L<FS::svc_acct>, L<FS::svc_forward>, L<FS::svc_domain>, schema.html from the
-base documentation.
+L<FS::Record>, L<FS::part_svc_column>, L<FS::part_pkg>, L<FS::pkg_svc>,
+L<FS::cust_svc>, L<FS::svc_acct>, L<FS::svc_forward>, L<FS::svc_domain>,
+schema.html from the base documentation.
 
 =cut
 
 
 =cut