diff options
-rw-r--r-- | httemplate/misc/cancel_cust.html | 70 | ||||
-rwxr-xr-x | httemplate/misc/cust_main-cancel.cgi | 75 | ||||
-rwxr-xr-x | httemplate/view/cust_main.cgi | 34 |
3 files changed, 155 insertions, 24 deletions
diff --git a/httemplate/misc/cancel_cust.html b/httemplate/misc/cancel_cust.html new file mode 100644 index 000000000..022fc108f --- /dev/null +++ b/httemplate/misc/cancel_cust.html @@ -0,0 +1,70 @@ +<% include('/elements/header-popup.html', 'Cancel customer' ) %> + +% if ( $cgi->param('error') ) { + <FONT SIZE="+1" COLOR="#ff0000">Error: <% $cgi->param('error') %></FONT> + <BR><BR> +% } + +<FORM NAME="cust_cancel_popup" ACTION="<% popurl(1) %>cust_main-cancel.cgi" METHOD=POST> +<INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>"> + + + <P ALIGN="center"><B>Permanently delete all services and cancel this customer?</B> + + <% $ban %> + +<BR><BR> + +<% ntable("#cccccc", 2) %> + +<% include('/elements/tr-select-reason.html', 'reasonnum', 'C', '', '', '', 'document.cust_cancel_popup.submit', + ) +%> + +</TABLE> + +<BR> +<P ALIGN="CENTER"> +<INPUT TYPE="submit" NAME="submit" VALUE="Cancel customer" disabled='true'> <INPUT TYPE="BUTTON" VALUE="Don't cancel" onClick="parent.cClick();"> + +</FORM> +</BODY> +</HTML> + +<%init> + +my($custnum, $reasonnum, $submit, $cust_main, $curuser, $class); +if ( $cgi->param('error') ) { + $custnum = $cgi->param('custnum'); + $reasonnum = $cgi->param('reasonnum'); +} else { + my( $query ) = $cgi->keywords; + if ( $query =~ /^(\d+)$/ ) { + $custnum = $1; + } else { + die "illegal query ". $cgi->keywords; + } +} + +$curuser = $FS::CurrentUser::CurrentUser; + +$cust_main = qsearchs( { + 'table' => 'cust_main', + 'hashref' => { 'custnum' => $custnum }, + 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, +} ); +die "No customer # $custnum" unless $cust_main; + +my $ban = ''; +if ( $cust_main->payby =~ /^(CARD|DCRD|CHEK|DCHK)$/ ) { + $ban = '<BR><P ALIGN="center">'. + '<INPUT TYPE="checkbox" NAME="ban" VALUE="1"> Ban this customer\'s '; + if ( $cust_main->payby =~ /^(CARD|DCRD)$/ ) { + $ban .= 'credit card'; + } elsif ( $cust_main->payby =~ /^(CHEK|DCHK)$/ ) { + $ban .= 'ACH account'; + } +} + +</%init> + diff --git a/httemplate/misc/cust_main-cancel.cgi b/httemplate/misc/cust_main-cancel.cgi index 13d7d1ff1..7f6f69701 100755 --- a/httemplate/misc/cust_main-cancel.cgi +++ b/httemplate/misc/cust_main-cancel.cgi @@ -1,23 +1,54 @@ -% -% -%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; -%} -% -%my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); -% -%my @errors = $cust_main->cancel( 'ban' => $ban ); -%errorpage(join(' / ', @errors)) if scalar(@errors); -% -%#print $cgi->redirect($p. "view/cust_main.cgi?". $cust_main->custnum); -%print $cgi->redirect($p); -% -% +<% header("Customer cancelled") %> + <SCRIPT TYPE="text/javascript"> + window.top.location.reload(); + </SCRIPT> + </BODY> +</HTML> +<%init> +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> diff --git a/httemplate/view/cust_main.cgi b/httemplate/view/cust_main.cgi index 850b48b27..382bf68f6 100755 --- a/httemplate/view/cust_main.cgi +++ b/httemplate/view/cust_main.cgi @@ -37,9 +37,9 @@ var confirm_cancel = '<FORM METHOD="POST" ACTION="<% $p %>misc/cust_main-cancel. % if ( $curuser->access_right('Cancel customer') % && $cust_main->ncancelled_pkgs % ) { -% - <A HREF="javascript:void(0);" onClick="overlib(confirm_cancel, CAPTION, 'Confirm cancellation', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', MIDX, 0, MIDY, 0, DRAGGABLE, WIDTH, 576, HEIGHT, 128, TEXTSIZE, 3, BGCOLOR, '#ff0000', CGCOLOR, '#ff0000' ); return false; ">Cancel this customer</A> | + <% cust_cancel_link($cust_main) %> | + % } % if ( $conf->exists('deletecustomers') % && $curuser->access_right('Delete customer') @@ -169,3 +169,33 @@ my $cust_main = qsearchs({ die "Customer not found!" unless $cust_main; </%init> +<%once> + + +sub cust_cancel_link { cust_popup_link( 'misc/cancel_cust.html', + 'Cancel this customer', + 'Confirm Cancellation', + '#ff0000', + @_, + ); +} + +#false laziness w/view/cust_main/packages.html + +sub cust_popup_link { + my($action, $label, $actionlabel, $color, $cust_main) = @_; + $action .= '?'. $cust_main->custnum; + popup_link($action, $label, $actionlabel, $color); +} + +sub popup_link { + my($action, $label, $actionlabel, $color) = @_; + $color ||= '#333399'; + qq!<A HREF="javascript:void(0);" onClick="overlib( OLiframeContent('$p$action', 540, 336, 'pkg_or_svc_action_popup' ), CAPTION, '$actionlabel', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '$color', CGCOLOR, '$color', CLOSETEXT, '' ); return false;">$label</A>!; + +# CLOSETEXT, '', +#WIDTH, 576, HEIGHT, 128, TEXTSIZE, 3, +#BGCOLOR, '#ff0000', CGCOLOR, '#ff0000' +} + +</%once> |