From: Ivan Kohler Date: Fri, 11 May 2012 03:30:17 +0000 (-0700) Subject: fix uncancellation w/services that have been re-provisioned, RT#17518 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=053116d325050963ada4455c83b7bd1c154ce59f fix uncancellation w/services that have been re-provisioned, RT#17518 --- diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 27c25daa9..1d4a90c56 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -972,7 +972,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) {