[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