summaryrefslogtreecommitdiff
path: root/httemplate/elements/tr-amount_fee.html
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>