diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2012-05-10 20:30:18 -0700 |
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2012-05-10 20:30:18 -0700 |
| commit | 46571761a938080713ef03e1b61a5138f05c606e (patch) | |
| tree | 0478dbe0785bb20b09cf8006fa1f297391549763 | |
| parent | d6c36f251779288c9147275c5a6d1d1ddf795b8f (diff) | |
fix uncancellation w/services that have been re-provisioned, RT#17518
| -rw-r--r-- | FS/FS/cust_pkg.pm | 11 | ||||
| -rwxr-xr-x | httemplate/misc/cancel_pkg.html | 6 | ||||
| -rwxr-xr-x | httemplate/misc/process/cancel_pkg.html | 3 |
3 files changed, 19 insertions, 1 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 64736ba50..39a4d5c7f 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -976,7 +976,16 @@ sub uncancel { my $svc_error = $svc_x->insert; if ( $svc_error && $options{svc_fatal} ) { $dbh->rollback if $oldAutoCommit; - return $error; + return $svc_error; + } else { + my $cust_svc = qsearchs('cust_svc', { 'svcnum' => $svc_x->svcnum }); + if ( $cust_svc ) { + my $cs_error = $cust_svc->delete; + if ( $cs_error ) { + $dbh->rollback if $oldAutoCommit; + return $cs_error; + } + } } push @svc_errors, $svc_error if $svc_error; } diff --git a/httemplate/misc/cancel_pkg.html b/httemplate/misc/cancel_pkg.html index 3a6a4d14c..348f0a6cb 100755 --- a/httemplate/misc/cancel_pkg.html +++ b/httemplate/misc/cancel_pkg.html @@ -44,6 +44,12 @@ 'format' => $date_format, } &> + <& /elements/tr-checkbox.html, + 'label' => mt("Uncancel even if a service can't be re-provisioned"), + 'field' => 'svc_not_fatal', + 'value' => 'Y', + &> + % $date_init = 1; % } diff --git a/httemplate/misc/process/cancel_pkg.html b/httemplate/misc/process/cancel_pkg.html index bc3a8cd3f..b2d7bfaa4 100755 --- a/httemplate/misc/process/cancel_pkg.html +++ b/httemplate/misc/process/cancel_pkg.html @@ -80,11 +80,14 @@ my $last_bill = my $bill = $cgi->param('bill') ? parse_datetime($cgi->param('bill')) : ''; +my $svc_fatal = ( $cgi->param('svc_not_fatal') ne 'Y' ); + my $error = $cust_pkg->$method( 'reason' => $reasonnum, 'date' => $date, 'resume_date' => $resume_date, 'last_bill' => $last_bill, 'bill' => $bill, + 'svc_fatal' => $svc_fatal, ); if ($error) { |
