[freeside-commits] branch FREESIDE_3_BRANCH updated. b9b18c46a93720ba3f635d71d32d13f355861c51
Mark Wells
mark at 420.am
Sun Jan 31 21:18:24 PST 2016
The branch, FREESIDE_3_BRANCH has been updated
via b9b18c46a93720ba3f635d71d32d13f355861c51 (commit)
from 90ad6d3446bec1bf5031a665e735015ccf2ca4de (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 b9b18c46a93720ba3f635d71d32d13f355861c51
Author: Mark Wells <mark at freeside.biz>
Date: Sun Jan 31 21:07:08 2016 -0800
unused_credit flag for cancellation reasons, #27911
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 6a5580a..daa3353 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -919,13 +919,28 @@ sub cancel {
}
}
+ # if a reasonnum was passed, get the actual reason object so we can check
+ # unused_credit
+
+ my $reason;
+ if ($options{'reason'} =~ /^\d+$/) {
+ $reason = FS::reason->by_key($options{'reason'});
+ }
+
unless ($date) {
- # credit remaining time if appropriate
+ # credit remaining time if any of these are true:
+ # - unused_credit => 1 was passed (this happens when canceling a package
+ # for a package change when unused_credit_change is set)
+ # - no unused_credit option, and there is a cancel reason, and the cancel
+ # reason says to credit the package
+ # - no unused_credit option, and the package definition says to credit the
+ # package on cancellation
my $do_credit;
if ( exists($options{'unused_credit'}) ) {
$do_credit = $options{'unused_credit'};
- }
- else {
+ } elsif ( defined($reason) && $reason->unused_credit ) {
+ $do_credit = 1;
+ } else {
$do_credit = $self->part_pkg->option('unused_credit_cancel', 1);
}
if ( $do_credit ) {
diff --git a/FS/FS/reason.pm b/FS/FS/reason.pm
index f50af7a..95297d9 100644
--- a/FS/FS/reason.pm
+++ b/FS/FS/reason.pm
@@ -56,7 +56,7 @@ suspensions but not others. DEPRECATED.
whether to bill the unsuspend package immediately ('') or to wait until
the customer's next invoice ('Y').
-=item unused_credit - 'Y' or ''. For suspension reasons only (for now).
+=item unused_credit - 'Y' or ''. For suspension or cancellation reasons.
If enabled, the customer will be credited for their remaining time on
suspension.
@@ -125,23 +125,30 @@ sub check {
;
return $error if $error;
- if ( $self->reasontype->class eq 'S' ) {
+ my $class = $self->reasontype->class;
+
+ if ( $class eq 'S' ) {
$error = $self->ut_numbern('unsuspend_pkgpart')
|| $self->ut_foreign_keyn('unsuspend_pkgpart', 'part_pkg', 'pkgpart')
|| $self->ut_flag('unsuspend_hold')
- || $self->ut_flag('unused_credit')
|| $self->ut_foreign_keyn('feepart', 'part_fee', 'feepart')
|| $self->ut_flag('fee_on_unsuspend')
|| $self->ut_flag('fee_hold')
;
return $error if $error;
} else {
- foreach (qw(unsuspend_pkgpart unsuspend_hold unused_credit feepart
+ foreach (qw(unsuspend_pkgpart unsuspend_hold feepart
fee_on_unsuspend fee_hold)) {
$self->set($_ => '');
}
}
+ if ( $class eq 'S' or $class eq 'C' ) {
+ $error = $self->ut_flag('unused_credit');
+ } else {
+ $self->set('unused_credit', '');
+ }
+
$self->SUPER::check;
}
diff --git a/httemplate/elements/tr-select-reason.html b/httemplate/elements/tr-select-reason.html
index 47acd85..3b9bb22 100755
--- a/httemplate/elements/tr-select-reason.html
+++ b/httemplate/elements/tr-select-reason.html
@@ -120,6 +120,13 @@ Example:
&>
% } # scalar(@types)
+% if ( $class eq 'C' ) {
+ <& tr-checkbox.html,
+ label => 'Credit the unused portion of service when canceling',
+ field => $id.'_new_unused_credit',
+ value => 'Y'
+ &>
+% }
% if ( $class eq 'S' ) {
<& tr-checkbox.html,
label => 'Credit the unused portion of service when suspending',
-----------------------------------------------------------------------
Summary of changes:
FS/FS/cust_pkg.pm | 21 ++++++++++++++++++---
FS/FS/reason.pm | 15 +++++++++++----
httemplate/elements/tr-select-reason.html | 7 +++++++
3 files changed, 36 insertions(+), 7 deletions(-)
More information about the freeside-commits
mailing list