From: Ivan Kohler Date: Fri, 25 Oct 2019 02:55:37 +0000 (-0700) Subject: suspend event option to skip packages with a start_date, RT#83847 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=ffc8927ad1df5a565256bdb47210006afa4b2f78 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);