blob: 12488521ad458419fd7dbe0ab67dc634557dae29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<TR>
<TH ALIGN="right"><% mt('Payment amount') |h %></TH>
<TD COLSPAN=7>
<TABLE><TR><TD BGCOLOR="#ffffff">
<% $money_char %><INPUT NAME = "amount"
ID = "amount"
TYPE = "text"
VALUE = "<% $amount %>"
SIZE = 8
STYLE = "text-align:right;"
% if ( $fee ) {
onChange = "amount_changed(this)"
onKeyDown = "amount_changed(this)"
onKeyUp = "amount_changed(this)"
onKeyPress = "amount_changed(this)"
% }
>
</TD><TD BGCOLOR="#cccccc">
% if ( $fee ) {
<INPUT TYPE="hidden" NAME="fee_pkgpart" VALUE="<% $fee_pkg->pkgpart %>">
<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', ($fee_display eq 'add') ? $amount + $fee : $amount - $fee ) : '' %> <% $fee_display eq 'add' ? 'TOTAL' : 'AVAILABLE' %></FONT>
% }
</TD></TR></TABLE>
</TD>
</TR>
% if ( $fee ) {
<SCRIPT TYPE="text/javascript">
function amount_changed(what) {
var total = '';
if ( what.value.length ) {
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 + ' <% $fee_display eq 'add' ? 'TOTAL' : 'AVAILABLE' %></FONT>';
}
</SCRIPT>
% }
<%init>
my %opt = @_;
my $conf = new FS::Conf;
my $money_char = $conf->config('money_char') || '$';
my $fee = '';
my $fee_pkg = '';
my $fee_display = '';
my $fee_op = '';
if ( $opt{'process-pkgpart'}
and ! $opt{'process-skip_first'} || $opt{'num_payments'}
)
{
$fee_display = $opt{'process-display'} || 'add';
$fee_op = $fee_display eq 'add' ? '+' : '-';
$fee_pkg =
qsearchs('part_pkg', { pkgpart=>$opt{'process-pkgpart'} } );
#well ->unit_setup or ->calc_setup both call for a $cust_pkg
# (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 = $opt{'amount'};
if ( $amount > 0 ) {
$amount += $fee
if $fee && $fee_display eq 'subtract';
#&{ $opt{post_fee_callback} }( \$amount ) if $opt{post_fee_callback};
$amount += $amount * $opt{'surcharge_percentage'}/100
if $opt{'surcharge_percentage'} > 0;
$amount = sprintf("%.2f", $amount);
}
</%init>
|