import rt 2.0.14
[freeside.git] / FS / FS / part_svc.pm
index 2b3f3f3..959a3f8 100644 (file)
@@ -4,6 +4,8 @@ use strict;
 use vars qw( @ISA );
 use FS::Record qw( qsearch qsearchs fields dbh );
 use FS::part_svc_column;
+use FS::part_export;
+use FS::export_svc;
 
 @ISA = qw(FS::Record);
 
@@ -40,6 +42,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 disabled - Disabled flag, empty or `Y'
+
 =back
 
 =head1 METHODS
@@ -55,19 +59,25 @@ database, see L<"insert">.
 
 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.
 
+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
 
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub insert {
   my $self = shift;
+  my @fields = ();
+  @fields = @{shift(@_)} if @_;
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
@@ -94,7 +104,7 @@ sub insert {
   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', {
@@ -139,11 +149,15 @@ sub delete {
 # 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.
 
+TODOC: 1.3-COMPAT
+
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub replace {
@@ -170,11 +184,15 @@ sub replace {
   }
 
   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') )
-           } fields($svcdb)
+           } (fields($svcdb),@fields)
     ) {
       my $part_svc_column = $new->part_svc_column($field);
       my $previous = qsearchs('part_svc_column', {
@@ -229,12 +247,14 @@ sub check {
     $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;
 
+##REPLACED BY part_svc_column
 #  my $svcdb;
 #  foreach $svcdb ( qw(
 #    svc_acct svc_acct_sm svc_domain
@@ -291,11 +311,21 @@ sub all_part_svc_column {
   qsearch('part_svc_column', { 'svcpart' => $self->svcpart } );
 }
 
+=item part_export
+
+=cut
+
+sub part_export {
+  my $self = shift;
+  map { qsearchs('part_export', { 'exportnum' => $_->exportnum } ) }
+    qsearch('export_svc', { 'svcpart' => $self->svcpart } );
+}
+
 =back
 
 =head1 VERSION
 
-$Id: part_svc.pm,v 1.6 2001-09-12 15:45:01 ivan Exp $
+$Id: part_svc.pm,v 1.13 2002-04-11 22:05:31 ivan Exp $
 
 =head1 BUGS
 
@@ -304,11 +334,13 @@ Delete is unimplemented.
 The list of svc_* tables is hardcoded.  When svc_acct_pop is renamed, this
 should be fixed.
 
+all_part_svc_column and part_export methods should be documented
+
 =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