diff options
Diffstat (limited to 'httemplate/misc/cust_main-cancel.cgi')
| -rwxr-xr-x | httemplate/misc/cust_main-cancel.cgi | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/httemplate/misc/cust_main-cancel.cgi b/httemplate/misc/cust_main-cancel.cgi new file mode 100755 index 000000000..009a7d41b --- /dev/null +++ b/httemplate/misc/cust_main-cancel.cgi @@ -0,0 +1,57 @@ +<% header("Customer cancelled") %> +  <SCRIPT TYPE="text/javascript"> +    window.top.location.reload(); +  </SCRIPT> +  </BODY> +</HTML> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Cancel customer'); + +my $custnum; +my $ban = ''; +if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { +  $custnum = $1; +  $ban = $cgi->param('ban'); +} else { +  my($query) = $cgi->keywords; +  $query =~ /^(\d+)$/ || die "Illegal custnum"; +  $custnum = $1; +} + +#false laziness w/process/cancel_pkg.html + +#untaint reasonnum +my $reasonnum = $cgi->param('reasonnum'); +$reasonnum =~ /^(-?\d+)$/ || die "Illegal reasonnum"; +$reasonnum = $1; + +if ($reasonnum == -1) { +  $reasonnum = { +    'typenum' => scalar( $cgi->param('newreasonnumT') ), +    'reason'  => scalar( $cgi->param('newreasonnum' ) ), +  }; +} + +#eslaf + +my $cust_main = qsearchs( { +  'table'     => 'cust_main', +  'hashref'   => { 'custnum' => $custnum }, +  'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, +} ); + +warn "cancelling $cust_main"; +my @errors = $cust_main->cancel( +  'ban'    => $ban, +  'reason' => $reasonnum, +); +my $error = join(' / ', @errors) if scalar(@errors); + +if ( $error ) { +  $cgi->param('error', $error); +  print $cgi->redirect(popurl(1). "cancel_cust.html?". $cgi->query_string ); +} + +</%init> | 
