[freeside-commits] branch master updated. 4e68cf76788b220cc15f2a080df5e7a1ea4962b8

Ivan ivan at 420.am
Fri Jan 16 18:54:10 PST 2015


The branch, master has been updated
       via  4e68cf76788b220cc15f2a080df5e7a1ea4962b8 (commit)
       via  82fca8a493a6490e385b40ebea690b29bf35bdbd (commit)
       via  52a223d87f3bc7068dbda03b86b10add80ec273b (commit)
      from  8227e787f6b012c3e9f2967bdf61fcd0acd4e622 (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 4e68cf76788b220cc15f2a080df5e7a1ea4962b8
Merge: 8227e78 82fca8a
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Fri Jan 16 18:53:25 2015 -0800

    Merge branch 'issue/SCT-1140' of https://github.com/Jayceh/Freeside


commit 82fca8a493a6490e385b40ebea690b29bf35bdbd
Author: Jason (Jayce^) Hall <jayce at lug-nut.com>
Date:   Thu Jan 8 15:37:52 2015 -0700

    Similar to cust_bill_suspend, create the ability to CANCEL the packages
    on an invoice. Create an invoice event that can trigger this.

diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index 92ff5f3..0b8cb02 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -641,7 +641,7 @@ sub suspend {
   my $self = shift;
 
   grep { $_->suspend(@_) } 
-  grep { $_->getfield('cancel') } 
+  grep {! $_->getfield('cancel') } 
   $self->cust_pkg;
 
 }
@@ -665,6 +665,36 @@ sub cust_suspend_if_balance_over {
   }
 }
 
+=item cancel
+
+Cancel the packages on this invoice. Largely similar to the cust_main version, but does not bother yet with banned payment options
+
+=cut
+
+sub cancel {
+  my( $self, %opt ) = @_;
+
+  warn "$me cancel called on cust_bill ". $self->invnum . " with options ".
+       join(', ', map { "$_: $opt{$_}" } keys %opt ). "\n"
+    if $DEBUG;
+
+  return ( 'access denied' )
+    unless $FS::CurrentUser::CurrentUser->access_right('Cancel customer');
+
+  my @pkgs = $self->cust_pkg;
+
+  if ( !$opt{nobill} && $conf->exists('bill_usage_on_cancel') ) {
+    $opt{nobill} = 1;
+    my $error = $self->cust_main->bill( pkg_list => [ @pkgs ], cancel => 1 );
+    warn "Error billing during cancel, custnum ". $self->custnum. ": $error"
+      if $error;
+  }
+
+  grep { $_ } map { $_->cancel(%opt) }
+  grep {! $_->getfield('cancel') } 
+  @pkgs;
+}
+
 =item cust_bill_pay
 
 Returns all payment applications (see L<FS::cust_bill_pay>) for this invoice.
diff --git a/FS/FS/part_event/Action/cust_bill_cancel.pm b/FS/FS/part_event/Action/cust_bill_cancel.pm
new file mode 100644
index 0000000..70cce46
--- /dev/null
+++ b/FS/FS/part_event/Action/cust_bill_cancel.pm
@@ -0,0 +1,35 @@
+package FS::part_event::Action::cust_bill_cancel;
+
+use strict;
+use base qw( FS::part_event::Action );
+
+sub description { 'Cancel packages on this invoice'; }
+
+sub eventtable_hashref {
+  { 'cust_bill' => 1 };
+}
+
+sub option_fields {
+  (
+    'reasonnum'    => { 'label'        => 'Reason',
+                        'type'         => 'select-reason',
+                        'reason_class' => 'C',
+                      },
+  );
+}
+
+sub default_weight { 10; }
+
+sub do_action {
+  my( $self, $cust_bill ) = @_;
+
+  my @err = $cust_bill->cancel(
+    'reason'  => $self->option('reasonnum'),
+  );
+
+  die join(' / ', @err) if scalar(@err);
+
+  return '';
+}
+
+1;

commit 52a223d87f3bc7068dbda03b86b10add80ec273b
Author: Jason (Jayce^) Hall <jayce at lug-nut.com>
Date:   Thu Jan 8 14:44:49 2015 -0700

    Creating the ability to suspend from an invoice, suspending all
    not-cancelled cust_pkg's on that invoice.  Also creates a new part_event
    Action that let's you trigger this as an invoice event.

diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index 0c07e9a..92ff5f3 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -629,6 +629,23 @@ sub num_cust_event {
 
 Returns the customer (see L<FS::cust_main>) for this invoice.
 
+=item suspend
+
+Suspends all unsuspended packages (see L<FS::cust_pkg>) for this invoice
+
+Returns a list: an empty list on success or a list of errors.
+
+=cut
+
+sub suspend {
+  my $self = shift;
+
+  grep { $_->suspend(@_) } 
+  grep { $_->getfield('cancel') } 
+  $self->cust_pkg;
+
+}
+
 =item cust_suspend_if_balance_over AMOUNT
 
 Suspends the customer associated with this invoice if the total amount owed on
diff --git a/FS/FS/part_event/Action/cust_bill_suspend.pm b/FS/FS/part_event/Action/cust_bill_suspend.pm
new file mode 100644
index 0000000..339d6b9
--- /dev/null
+++ b/FS/FS/part_event/Action/cust_bill_suspend.pm
@@ -0,0 +1,41 @@
+package FS::part_event::Action::cust_bill_suspend;
+
+use strict;
+use base qw( FS::part_event::Action );
+
+sub description { 'Suspend packages on this invoice'; }
+
+sub eventtable_hashref {
+  { 'cust_bill' => 1 };
+}
+
+sub option_fields {
+  (
+    'reasonnum'    => { 'label'        => 'Reason',
+                        'type'         => 'select-reason',
+                        'reason_class' => 'S',
+                      },
+    'suspend_bill' => { 'label' => 'Continue recurring billing while suspended',
+                        'type'  => 'checkbox',
+                        'value' => 'Y',
+                      },
+  );
+}
+
+sub default_weight { 10; }
+
+sub do_action {
+  my( $self, $cust_bill ) = @_;
+
+  my @err = $cust_bill->suspend(
+    'reason'  => $self->option('reasonnum'),
+    'options' => { 'suspend_bill' => $self->option('suspend_bill') },
+  );
+
+  die join(' / ', @err) if scalar(@err);
+
+  return '';
+
+}
+
+1;

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

Summary of changes:
 FS/FS/cust_bill.pm                                 |   47 ++++++++++++++++++++
 FS/FS/part_event/Action/cust_bill_cancel.pm        |   35 +++++++++++++++
 .../Action/{suspend.pm => cust_bill_suspend.pm}    |   18 ++++----
 3 files changed, 92 insertions(+), 8 deletions(-)
 create mode 100644 FS/FS/part_event/Action/cust_bill_cancel.pm
 copy FS/FS/part_event/Action/{suspend.pm => cust_bill_suspend.pm} (73%)




More information about the freeside-commits mailing list