show credit balance on invoices, #11564
[freeside.git] / FS / FS / svc_dsl.pm
index 2c30b00..89827e8 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;
@@ -79,6 +81,10 @@ Vendor/telco DSL order status (e.g. (N)ew, (A)ssigned, (R)ejected, (M)revised,
 
 =item circuitnum - Circuit #
 
+=item vpi
+
+=item vci
+
 =item rate_band - Rate Band
 
 =item isp_chg
@@ -154,6 +160,8 @@ sub table_info {
            'rate_band' => {    label => 'Rate Band',
                                    disable_inventory => 1,
                        },
+           'vpi' => { label => 'VPI', disable_inventory => 1 },
+           'vci' => { label => 'VCI', disable_inventory => 1 },
            'isp_chg' => {      label => 'ISP Changing?', 
                                type => 'checkbox', %dis2 },
            'isp_prev' => {     label => 'Current or Previous ISP',
@@ -234,11 +242,11 @@ sub check {
   my $error = 
     $self->ut_numbern('svcnum')
     || $self->ut_numbern('pushed')
-    || $self->ut_number('desired_due_date')
+    || $self->ut_numbern('desired_due_date')
     || $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')
@@ -248,6 +256,8 @@ sub check {
     || $self->ut_textn('local_voice_provider')
     || $self->ut_textn('circuitnum')
     || $self->ut_textn('rate_band')
+    || $self->ut_numbern('vpi')
+    || $self->ut_numbern('vci')
     || $self->ut_alphan('isp_chg')
     || $self->ut_textn('isp_prev')
     || $self->ut_textn('username')
@@ -261,6 +271,27 @@ sub check {
   $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