summaryrefslogtreecommitdiff
path: root/httemplate/elements/tr-amount_fee.html
blob: e90d36459f7aff166d007af27e0b3598ecaa543c (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
  <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 || $processing_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 ( $processing_fee ) {
      <TR>
        <TH ALIGN="right"><% mt('Processing fee') |h %></TH>
        <TD>
          <TABLE><TR>
            <TD BGCOLOR="#ffffff">
             <INPUT TYPE="checkbox" NAME="processing_fee" ID="processing_fee" VALUE="<% $processing_fee %>" onclick="<% $opt{prefix} %>process_fee_changed()" checked>
            </TD>
            <TD>
             Apply a processing fee of <% $processing_fee %> .</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>

% }

% if ($processing_fee) {

    <SCRIPT TYPE="text/javascript">

      function <% $opt{prefix} %>process_fee_changed(what) {

        if (document.getElementById('processing_fee').checked == true) {
          var amount = +document.getElementById('amount').value + +document.getElementById('processing_fee').value;
          $('#amount').val(amount.toFixed(2));
        }
        else {
          var amount = +document.getElementById('amount').value - +document.getElementById('processing_fee').value;
          $('#amount').val(amount.toFixed(2));
        }

      }

    </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 = '';
my $processing_fee = 0;

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

}

$processing_fee = $opt{'processing_fee'} if $opt{'processing_fee'} > 0;

my $amount = $opt{'amount'} ? $opt{'amount'} : "0.00";
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 += $opt{'surcharge_flatfee'}
    if $opt{'surcharge_flatfee'} > 0;

  $amount += $processing_fee; ## needed if processing fee is checked on default.

  $amount = sprintf("%.2f", $amount);
}

</%init>