[freeside-commits] branch master updated. ffc8927ad1df5a565256bdb47210006afa4b2f78

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


The branch, master has been updated
       via  ffc8927ad1df5a565256bdb47210006afa4b2f78 (commit)
      from  3d9bb75680d19cb00307e57f4df2ac1c3514cd85 (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 ffc8927ad1df5a565256bdb47210006afa4b2f78
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Oct 24 19:55:37 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 57d598a74..9e305c72a 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -2075,8 +2075,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