import torrus 1.0.9
[freeside.git] / FS / FS / svc_dsl.pm
index da62dc6..c5557ec 100644 (file)
@@ -4,6 +4,8 @@ use strict;
 use vars qw( @ISA $conf $DEBUG $me );
 use FS::Record qw( qsearch qsearchs );
 use FS::svc_Common;
+use FS::dsl_note;
+use FS::qual;
 
 @ISA = qw( FS::svc_Common );
 $DEBUG = 0;
@@ -99,10 +101,6 @@ Ikano-specific fields, do not use otherwise
 
 =item last_pull - time of last data pull from vendor/telco
 
-=item notes
-
-DSL order notes placed by staff or vendor/telco on the vendor/telco order
-
 
 =back
 
@@ -171,7 +169,6 @@ sub table_info {
            'monitored' => {    label => 'Monitored', 
                                type => 'checkbox', %dis2 },
            'last_pull' => {    label => 'Last Pull', type => 'disabled' },
-           'notes' => {        label => 'Order Notes', %dis1 },
        },
     };
 }
@@ -186,6 +183,16 @@ sub label {
    return $self->svcnum;
 }
 
+=item notes
+
+Returns the set of FS::dsl_notes associated with this service
+
+=cut 
+sub notes {
+  my $self = shift;
+  qsearch( 'dsl_note', { 'svcnum' => $self->svcnum } );
+}
+
 =item insert
 
 Adds this record to the database.  If there is an error, returns the error,
@@ -233,7 +240,7 @@ sub check {
     || $self->ut_numbern('due_date')
     || $self->ut_textn('vendor_order_id')
     || $self->ut_textn('vendor_qual_id')
-    || $self->ut_alpha('vendor_order_type')
+    || $self->ut_alphan('vendor_order_type')
     || $self->ut_alphan('vendor_order_status')
     || $self->ut_text('first')
     || $self->ut_text('last')
@@ -250,13 +257,33 @@ sub check {
     || $self->ut_textn('staticips')
     || $self->ut_enum('monitored',    [ '', 'Y' ])
     || $self->ut_numbern('last_pull')
-    || $self->ut_textn('notes')
   ;
   return $error if $error;
 
   $self->SUPER::check;
 }
 
+sub predelete_hook_first {
+    my $self = shift;
+    my @exports = $self->part_svc->part_export_dsl_pull;
+    return 'More than one DSL-pulling export attached' if scalar(@exports) > 1;
+    if ( scalar(@exports) == 1 ) {
+       my $export = $exports[0];
+       return $export->dsl_pull($self);
+    }
+    '';
+}
+
+sub predelete_hook {
+    my $self = shift;
+    my @notes = $self->notes;
+    foreach my $note ( @notes ) {
+       my $error = $note->delete;
+       return $error if $error;
+    }
+    '';
+}
+
 =back
 
 =head1 SEE ALSO