suspend event option to skip packages with a start_date, RT#83847
[freeside.git] / FS / FS / part_event / Action / suspend.pm
index ec440ff..6a84836 100644 (file)
@@ -3,29 +3,41 @@ package FS::part_event::Action::suspend;
 use strict;
 use base qw( FS::part_event::Action );
 
-sub description {
-  'Suspend';
-}
+sub description { 'Suspend all of this customer\'s packages'; }
 
 sub option_fields {
   ( 
-    'reasonnum' => { 'label'        => 'Reason',
-                     'type'         => 'select-reason',
-                     'reason_class' => 'S',
-                   },
+    'reasonnum'    => {
+      'label'        => 'Reason',
+      'type'         => 'select-reason',
+      'reason_class' => 'S',
+    },
+    'suspend_bill' => {
+      'label'        => 'Continue recurring billing while suspended',
+      'type'         => 'checkbox',
+      'value'        => 'Y',
+    },
+    'skip_future_startdate' => {
+      'label'        => "Don't suspend packages with a future start date",
+      'type'         => 'checkbox',
+      'value'        => 'Y',
+    },
   );
-};
-
-sub default_weight {
-  10;
 }
 
+sub default_weight { 10; }
+
 sub do_action {
   my( $self, $cust_object ) = @_;
 
   my $cust_main = $self->cust_main($cust_object);
 
-  my @err = $cust_main->suspend( 'reason' => $self->option('reasonnum') );
+  my @err = $cust_main->suspend(
+    'skip_future_startdate' => $self->option('skip_future_startdate'),
+    'reason'                => $self->option('reasonnum'),
+    'options'               => { 'suspend_bill' => $self->option('suspend_bill')
+                               },
+  );
 
   die join(' / ', @err) if scalar(@err);