diff options
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/elements/bill.html | 49 | ||||
-rw-r--r-- | httemplate/elements/progress-init.html | 6 | ||||
-rwxr-xr-x | httemplate/misc/bill.cgi | 36 | ||||
-rw-r--r-- | httemplate/view/cust_main/billing.html | 9 |
4 files changed, 62 insertions, 38 deletions
diff --git a/httemplate/elements/bill.html b/httemplate/elements/bill.html new file mode 100644 index 000000000..335779a0f --- /dev/null +++ b/httemplate/elements/bill.html @@ -0,0 +1,49 @@ +<%doc> +Clickable link to bill a customer. + +Example: +<FORM name="MyForm"> +<% include( '/elements/bill.html', + ### + # required + ### + custnum => $custnum, + label => 'Bill Now!', + formname => 'MyForm', + + ### + # recommended + ### + url => $p.'view/cust_main.cgi?'.$custnum, + + ### + # optional, can contain any FS::cust_main::bill_and_collect options + ### + bill_opts => { 'batch_card' => 'yes' }, +) %> +</FORM> +</%doc> +<% include('/elements/progress-init.html', + $formname, + [ 'custnum', @opt_keys ], + $p.'misc/bill.cgi', + $url ? { url => $url } : { message => $message }, + $key, +) %> +<A HREF="javascript:void(0);" onclick="javascript:<%$key%>process();"><%$label%></A> +<INPUT TYPE="hidden" NAME="custnum" VALUE="<%$custnum%>"> +% foreach(@opt_keys) { +<INPUT TYPE="hidden" NAME="<%$_%>" VALUE="<%$bill_opts->{$_}%>"> +% } +<%init> +my %opt = @_; +my $custnum = $opt{'custnum'}; +my $label = $opt{'label'}; +my $formname = $opt{'formname'}; +my $key = $formname.'bill'.$custnum; +my $url = $opt{'url'} || ''; +my $message = $opt{'message'} || 'Finished!'; +my $bill_opts = $opt{'bill_opts'} || {}; +my @opt_keys = keys(%$bill_opts); +my @opt_vals = values(%$bill_opts); +</%init> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 20eb9bfa6..8b8da66c8 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -11,7 +11,7 @@ In misc/something.html: $p.'misc/process_something.html', { url => $p.'where_to_go_next.html' }, #or { message => 'Finished!' }, - ); + ) %> </FORM> <SCRIPT TYPE="text/javascript>process();</SCRIPT> @@ -36,11 +36,9 @@ sub process_whatever { #class method do_phase3; $job->update_statustext(60); # etc. - return 'BLAH BLAH NOBODY WILL EVER SEE THIS RETURN VALUE'; + return 'this value will be ignored'; } -I am not responsible for errors in the above documentation. - </%doc> <% include('/elements/xmlhttp.html', 'method' => 'POST', diff --git a/httemplate/misc/bill.cgi b/httemplate/misc/bill.cgi index 6151dce51..2bc43d7b3 100755 --- a/httemplate/misc/bill.cgi +++ b/httemplate/misc/bill.cgi @@ -1,38 +1,8 @@ -%if ( $error ) { -% errorpage($error); -%} else { -<% $cgi->redirect(popurl(2). "view/cust_main.cgi?$custnum") %> -%} +<% $server->process %> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bill customer now'); - -#untaint custnum -my($query) = $cgi->keywords; -$query =~ /^(\d*)$/; -my $custnum = $1; -my $cust_main = qsearchs('cust_main',{'custnum'=>$custnum}); -die "Can't find customer!\n" unless $cust_main; - -my $conf = new FS::Conf; - -my $error = $cust_main->bill_and_collect( 'fatal' => 'return', - 'retry' => 'yes', - ); - - #'invoice-time'=>$time, - #'batch_card'=> 'yes', - #'batch_card'=> 'no', - #'report_badcard'=> 'yes', - #'retry_card' => 'yes', - - #this is used only by cust_main::batch_card - #need to pick & create an actual config - #value if we're going to turn this on - #("realtime-backend" doesn't exist, - # "backend-realtime" is for something - # entirely different) - #'realtime' => $conf->exists('realtime-backend'), - +my $server = FS::UI::Web::JSRPC->new('FS::cust_main::process_bill_and_collect', $cgi); </%init> + diff --git a/httemplate/view/cust_main/billing.html b/httemplate/view/cust_main/billing.html index c8d0c47cd..6fe6c4939 100644 --- a/httemplate/view/cust_main/billing.html +++ b/httemplate/view/cust_main/billing.html @@ -1,3 +1,4 @@ +<FORM name="billnow"> Billing information %# If we can't see the unencrypted card, then bill now is an exercise in %# frustration (without some sort of job queue magic to send it to a secure @@ -5,7 +6,13 @@ Billing information %if ( $FS::CurrentUser::CurrentUser->access_right('Bill customer now') % && ! $cust_main->is_encrypted($cust_main->payinfo) % ) { - (<A HREF="<% $p %>misc/bill.cgi?<% $cust_main->custnum %>">Bill now</A>) +%# (<A HREF="<% $p %>misc/bill.cgi?<% $cust_main->custnum %>">Bill now</A>) + (<% include('/elements/bill.html', + custnum => $cust_main->custnum, + label => 'Bill now', + formname => 'billnow', + url => $p.'view/cust_main.cgi?'.$cust_main->custnum, + ) %>) % } <% ntable("#cccccc") %><TR><TD><% ntable("#cccccc",2) %> |