X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fmisc%2Fcust_main-cancel.cgi;h=fcae671943d1dc3f11a78014f4773f084d9190a3;hp=519e6c2b2ea6e9540a8836b417ccf8a67257d40d;hb=HEAD;hpb=369cc8545df88dd4e717ccd8f6aa8719bc4308b3 diff --git a/httemplate/misc/cust_main-cancel.cgi b/httemplate/misc/cust_main-cancel.cgi index 519e6c2b2..fcae67194 100755 --- a/httemplate/misc/cust_main-cancel.cgi +++ b/httemplate/misc/cust_main-cancel.cgi @@ -1,22 +1,64 @@ -<% +<& /elements/popup-topreload.html, mt("Customer cancelled") &> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Cancel customer'); my $custnum; my $ban = ''; +my $expire = ''; if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { $custnum = $1; $ban = $cgi->param('ban'); + $expire = $cgi->param('expire'); } else { my($query) = $cgi->keywords; $query =~ /^(\d+)$/ || die "Illegal custnum"; $custnum = $1; } -my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); -my @errors = $cust_main->cancel( 'ban' => $ban ); -eidiot(join(' / ', @errors)) if scalar(@errors); +#untaint reasonnum / create new reason +my ($reasonnum, $error) = $m->comp('process/elements/reason'); +if (!$reasonnum) { + $error ||= 'Reason required' +} + +my $cust_main = qsearchs( { + 'table' => 'cust_main', + 'hashref' => { 'custnum' => $custnum }, + 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, +} ); -#print $cgi->redirect($p. "view/cust_main.cgi?". $cust_main->custnum); -print $cgi->redirect($p); +if ( $error ) { + # do nothing +} elsif ( $cgi->param('now_or_later') ) { + $expire = parse_datetime($expire); + if($expire) { + #warn "setting expire dates on custnum#$custnum\n"; + my @pkgs = $cust_main->ncancelled_pkgs; + my @errors = grep {$_} map { $_->cancel( + 'reason' => $reasonnum, + 'date' => $expire, + ) } @pkgs; + $error = join(' / ', @errors); + } + else { + $error = ("error parsing expire date: ".$cgi->param('expire')); + } +} +else { + warn "cancelling $cust_main"; + my @error = $cust_main->cancel( #returns list of errors + 'ban' => $ban, + 'reason' => $reasonnum, + ); + $error = join(', ',@error); +} + +if ( $error ) { + $cgi->param('error', $error); + print $cgi->redirect(popurl(1). "cancel_cust.html?". $cgi->query_string ); +} -%> +