[freeside-commits] branch FREESIDE_4_BRANCH updated. 4d0392a07d82ee1e0002218410d47b7021d30977

Ivan Kohler ivan at freeside.biz
Thu Oct 24 19:57:37 PDT 2019


The branch, FREESIDE_4_BRANCH has been updated
       via  4d0392a07d82ee1e0002218410d47b7021d30977 (commit)
      from  23c155d0e96cd65a5e678a018254c9399eaccb9b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 4d0392a07d82ee1e0002218410d47b7021d30977
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Oct 24 19:55:40 2019 -0700

    suspend event option to skip packages with a start_date, RT#83847

diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 49760a190..801aa8cde 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -2304,8 +2304,14 @@ Returns a list: an empty list on success or a list of errors.
 =cut
 
 sub suspend {
-  my $self = shift;
-  grep { $_->suspend(@_) } $self->unsuspended_pkgs;
+  my($self, %opt) = @_;
+
+  my @pkgs = $self->unsuspended_pkgs;
+
+  @pkgs = grep { ! $_->get('start_date') } @pkgs
+    if $opt{skip_future_startdate};
+
+  grep { $_->suspend(%opt) } @pkgs;
 }
 
 =item suspend_if_pkgpart HASHREF | PKGPART [ , PKGPART ... ]
diff --git a/FS/FS/part_event/Action/suspend.pm b/FS/FS/part_event/Action/suspend.pm
index 84a710158..6a8483680 100644
--- a/FS/FS/part_event/Action/suspend.pm
+++ b/FS/FS/part_event/Action/suspend.pm
@@ -7,14 +7,21 @@ sub description { 'Suspend all of this customer\'s packages'; }
 
 sub option_fields {
   ( 
-    'reasonnum'    => { 'label'        => 'Reason',
-                        'type'         => 'select-reason',
-                        'reason_class' => 'S',
-                      },
-    'suspend_bill' => { 'label' => 'Continue recurring billing while suspended',
-                        'type'  => 'checkbox',
-                        'value' => 'Y',
-                      },
+    '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',
+    },
   );
 }
 
@@ -26,8 +33,10 @@ sub do_action {
   my $cust_main = $self->cust_main($cust_object);
 
   my @err = $cust_main->suspend(
-    'reason'  => $self->option('reasonnum'),
-    'options' => { 'suspend_bill' => $self->option('suspend_bill') },
+    '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);

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_main.pm                 | 10 ++++++++--
 FS/FS/part_event/Action/suspend.pm | 29 +++++++++++++++++++----------
 2 files changed, 27 insertions(+), 12 deletions(-)




More information about the freeside-commits mailing list