diff options
author | ivan <ivan> | 2009-10-05 02:16:46 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-10-05 02:16:46 +0000 |
commit | 0c2679eee18b3b073bc91657fcf85c5dd2e5efc0 (patch) | |
tree | b782f6f3ddbf36c549a88a77f2cda7359f1c456c /httemplate/misc | |
parent | 4c951501b14bf459fa039db9ef093cfea9e37db3 (diff) |
add manual_process-display config to subtract fee from amount instead of adding, RT#5889
Diffstat (limited to 'httemplate/misc')
-rw-r--r-- | httemplate/misc/payment.cgi | 27 | ||||
-rw-r--r-- | httemplate/misc/process/payment.cgi | 13 |
2 files changed, 30 insertions, 10 deletions
diff --git a/httemplate/misc/payment.cgi b/httemplate/misc/payment.cgi index 472763b2d..d35e73f14 100644 --- a/httemplate/misc/payment.cgi +++ b/httemplate/misc/payment.cgi @@ -10,8 +10,6 @@ % #include( '/elements/table.html', '#cccccc' ) -% my $amount = $balance > 0 ? sprintf("%.2f", $balance) : ''; - <% ntable('#cccccc') %> <TR> <TH ALIGN="right">Payment amount</TH> @@ -32,14 +30,14 @@ </TD><TD BGCOLOR="#cccccc"> % if ( $fee ) { <INPUT TYPE="hidden" NAME="fee_pkgpart" VALUE="<% $fee_pkg->pkgpart %>"> - <INPUT TYPE="hidden" NAME="fee" VALUE="<% $fee %>"> - <B><FONT SIZE='+1'>+</FONT> + <INPUT TYPE="hidden" NAME="fee" VALUE="<% $fee_display eq 'add' ? $fee : '' %>"> + <B><FONT SIZE='+1'><% $fee_op %></FONT> <% $money_char . $fee %> </B> <% $fee_pkg->pkg |h %> <B><FONT SIZE='+1'>=</FONT></B> </TD><TD ID="ajax_total_cell" BGCOLOR="#dddddd" STYLE="border:1px solid blue"> - <FONT SIZE="+1"><% length($amount) ? $money_char. sprintf('%.2f', $amount + $fee ) : '' %> TOTAL</FONT> + <FONT SIZE="+1"><% length($amount) ? $money_char. sprintf('%.2f', ($fee_display eq 'add') ? $amount + $fee : $amount - $fee ) : '' %> <% $fee_display eq 'add' ? 'TOTAL' : 'AVAILABLE' %></FONT> % } </TD></TR></TABLE> @@ -55,13 +53,13 @@ var total = ''; if ( what.value.length ) { - total = parseFloat(what.value) + <% $fee %>; + total = parseFloat(what.value) <% $fee_op %> <% $fee %>; /* total = Math.round(total*100)/100; */ total = '<% $money_char %>' + total.toFixed(2); } var total_cell = document.getElementById('ajax_total_cell'); - total_cell.innerHTML = '<FONT SIZE="+1">' + total + ' TOTAL</FONT>'; + total_cell.innerHTML = '<FONT SIZE="+1">' + total + ' <% $fee_display eq 'add' ? 'TOTAL' : 'AVAILABLE' %></FONT>'; } @@ -300,7 +298,13 @@ my @states = sort { $a cmp $b } keys %states; my $fee = ''; my $fee_pkg = ''; +my $fee_display = ''; +my $fee_op = ''; if ( $conf->config('manual_process-pkgpart') ) { + + $fee_display = $conf->config('manual_process-display') || 'add'; + $fee_op = $fee_display eq 'add' ? '+' : '-'; + $fee_pkg = qsearchs('part_pkg', { pkgpart=>$conf->config('manual_process-pkgpart') } ); @@ -308,6 +312,15 @@ if ( $conf->config('manual_process-pkgpart') ) { # (though ->unit_setup doesn't use it...) $fee = $fee_pkg->option('setup_fee') if $fee_pkg; #in case.. better than dying with a perl traceback + +} + +my $amount = ''; +if ( $balance > 0 ) { + $amount = $balance; + $amount += $fee + if $fee && $fee_display eq 'subtract'; + $amount = sprintf("%.2f", $amount); } my $payunique = "webui-payment-". time. "-$$-". rand() * 2**32; diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi index d41bc0f14..1e9501df8 100644 --- a/httemplate/misc/process/payment.cgi +++ b/httemplate/misc/process/payment.cgi @@ -150,11 +150,18 @@ if ( $cgi->param('batch') ) { #no error, so order the fee package if applicable... if ( $cgi->param('fee_pkgpart') =~ /^(\d+)$/ ) { - my $error = $cust_main->order_pkg( - 'cust_pkg' => new FS::cust_pkg { 'pkgpart' => $1 } - ); + + my $cust_pkg = new FS::cust_pkg { 'pkgpart' => $1 }; + + my $error = $cust_main->order_pkg( 'cust_pkg' => $cust_pkg ); errorpage("payment processed successfully, but error ordering fee: $error") if $error; + + #and generate an invoice for it now too + $error = $cust_main->bill( 'pkg_list' => [ $cust_pkg ] ); + errorpage("payment processed and fee ordered sucessfully, but error billing fee: $error") + if $error; + } $cust_main->apply_payments; |