summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-06-29 23:57:56 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-06-30 00:18:06 -0500
commita0143763528c659487d677a88a41269c1a9a2802 (patch)
tree4985aebc2ca48491576b3bdc6c19c17f4934774a
parentea4e037e3b3250815344e27e777d975f90a2f462 (diff)
RT#33790: Proper handling for aborting a suspend/cancel
-rw-r--r--FS/FS/cust_pkg.pm26
1 files changed, 22 insertions, 4 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 30156b6f3..aa7cb4e65 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -1273,14 +1273,15 @@ sub uncancel {
=item unexpire
-Cancels any pending expiration (sets the expire field to null).
+Cancels any pending expiration (sets the expire field to null)
+for this package and any supplemental packages.
If there is an error, returns the error, otherwise returns false.
=cut
sub unexpire {
- my( $self, %options ) = @_;
+ my( $self ) = @_;
my $error;
local $SIG{HUP} = 'IGNORE';
@@ -1317,6 +1318,14 @@ sub unexpire {
return $error;
}
+ foreach my $supp_pkg ( $self->supplemental_pkgs ) {
+ $error = $supp_pkg->unexpire;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "unexpiring supplemental pkg#".$supp_pkg->pkgnum.": $error";
+ }
+ }
+
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
''; #no errors
@@ -1918,14 +1927,15 @@ sub unsuspend {
=item unadjourn
-Cancels any pending suspension (sets the adjourn field to null).
+Cancels any pending suspension (sets the adjourn field to null)
+for this package and any supplemental packages.
If there is an error, returns the error, otherwise returns false.
=cut
sub unadjourn {
- my( $self, %options ) = @_;
+ my( $self ) = @_;
my $error;
local $SIG{HUP} = 'IGNORE';
@@ -1969,6 +1979,14 @@ sub unadjourn {
return $error;
}
+ foreach my $supp_pkg ( $self->supplemental_pkgs ) {
+ $error = $supp_pkg->unadjourn;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "unadjourning supplemental pkg#".$supp_pkg->pkgnum.": $error";
+ }
+ }
+
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
''; #no errors