Examples:
#cust_bill_pay
- include('elements/ApplicationCommon.html',
- 'form_action' => 'process/cust_bill_pay.cgi',
+ <& elements/ApplicationCommon.html,
+ 'form_action' => 'process/cust_bill_pay.cgi,
'src_table' => 'cust_pay',
'src_thing' => 'payment',
'dst_table' => 'cust_bill',
'dst_thing' => 'invoice',
- )
+ &>
#cust_credit_bill
- include('elements/ApplicationCommon.html',
- 'form_action' => 'process/cust_credit_bill.cgi',
+ <& elements/ApplicationCommon.html',
+ 'form_action' => 'process/cust_credit_bill.cgi,
'src_table' => 'cust_credit',
'src_thing' => 'credit',
'dst_table' => 'cust_bill',
'dst_thing' => 'invoice',
- )
+ &>
#cust_pay_refund
- include('elements/ApplicationCommon.html',
- 'form_action' => 'process/cust_pay_refund.cgi',
+ <& elements/ApplicationCommon.html',
+ 'form_action' => 'process/cust_pay_refund.cgi,
'src_table' => 'cust_pay',
'src_thing' => 'payment',
'dst_table' => 'cust_refund',
'dst_thing' => 'refund',
- )
+ &>
#cust_credit_refund
- include('elements/ApplicationCommon.html',
+ <& elements/ApplicationCommon.html,
'form_action' => 'process/cust_credit_refund.cgi',
'src_table' => 'cust_credit',
'src_thing' => 'credit',
'dst_table' => 'cust_refund',
'dst_thing' => 'refund',
- )
+ &>
</%doc>
+<& /elements/header-popup.html, "Apply $src_thing$to", '', 'onLoad="myOnLoadFunction();"' &>
-<% include('/elements/header-popup.html', "Apply $src_thing$to", '', 'onLoad="myOnLoadFunction();"') %>
-
-<% include('/elements/error.html') %>
+<& /elements/error.html &>
<P ID="ErrorMessage"></P>
<FORM ACTION="<% $p1. $opt{'form_action'} %>" NAME="ApplicationForm" ID="ApplicationForm" METHOD=POST>
<TR>
<TD ALIGN="right">Date: </TD>
- <TD><B><% time2str("%D", $src->_date) %></B></TD>
+ <TD><B><% time2str($date_format, $src->_date) %></B></TD>
</TR>
<TR>
<BR>
<SCRIPT TYPE="text/javascript">
+function clear_amounts() {
+ var rownum=0
+ var table = document.getElementById('ApplicationTable');
+ for (var row = 2; table.rows[row]; row++)
+ {
+ var inputs = table.rows[row].getElementsByTagName('input');
+ if ( !inputs.length ) {
+ break;
+ }
+ inputs.item(0).value = ''; // amount
+ }
+
+}
+
function changed(what) {
dst = what.options[what.selectedIndex].value;
if ( dst == '' ) {
what.form.submit.disabled=true;
-%if ($src_pkey eq 'crednum') {
+%if ($use_sub_dst_thing && $src_pkey eq 'crednum') {
what.form.tax_button.disabled=true;
+ what.form.clear_button.disabled=true;
%}
return true;
}
what.form.submit.disabled=false;
-%if ($src_pkey eq 'crednum') {
+%if ($use_sub_dst_thing && $src_pkey eq 'crednum') {
what.form.tax_button.disabled=false;
+ what.form.clear_button.disabled=false;
%}
% foreach my $dst ( @dst ) {
% }
% $desc .= ' (default)';
% }
+% $total_owed = sprintf('%.2f', $total_owed + 0.00000001 ); #so 1.005 rounds to 1.01
% if ( $total_owed > 0 ) {
<% &{$row_generator}($key, $cbp, $desc, $total_owed, $amount, '') %>
% }
Apply to:
% if ($use_sub_dst_thing && $src_pkey eq 'crednum') {
-<CENTER><BUTTON TYPE="button" NAME="tax_button" ID="tax_button" onClick="do_calculate_tax(this);" DISABLED>Calculate Tax</BUTTON></CENTER>
-<% include( '/elements/xmlhttp.html',
+<CENTER>
+ <TABLE>
+ <TR>
+ <TD>
+ <BUTTON TYPE="button" NAME="tax_button" ID="tax_button" onClick="do_calculate_tax(this);" DISABLED>Calculate Tax</BUTTON>
+ </TD>
+ <TD>
+ <BUTTON TYPE="button" NAME="clear_button" ID="clear_button" onClick="clear_amounts(this);" DISABLED>Clear Amounts</BUTTON>
+ </TD>
+ </TR>
+ </TABLE>
+</CENTER>
+<& /elements/xmlhttp.html,
'url' => $p.'misc/xmlhttp-calculate_taxes.html',
'subs' => [ 'calculate_taxes' ],
- )
- %>
+&>
<SCRIPT TYPE="text/javascript">
function show_taxes(arg) {
var button = document.getElementById('tax_button');
button.disabled = false;
button.innerHTML = 'Calculate Tax';
+ button = document.getElementById('clear_button');
+ button.disabled = false;
var error = argsHash['error'];
function do_calculate_tax (what) {
what.innerHTML = 'Calculating....';
what.disabled = true;
+ var button = document.getElementById('clear_button');
+ button.disabled = true;
var taxed_items = new Array();
var table = document.getElementById('ApplicationTable');
for (var row = 2; table.rows[row]; row++)
var taxed_item = new Array(
inputs.item(1).value, // billpkgnum
inputs.item(3).value, // s_or_r
- inputs.item(0).value // amount
+ inputs.item(0).value || 0 // amount
);
taxed_items.push(taxed_item);
}
var amount_cell = document.getElementById('original_amount');
var inputs = amount_cell.getElementsByTagName('input');
if (inputs.length) {
+ src_amount_changed();
amount_cell.innerHTML = '<B><% $money_char %></B>' + inputs.item(0).value;
} else {
amount_cell.innerHTML = '<% $money_char %>';
}
}
-function src_amount_changed (what) {
- what.form.src_amount.value = what.value;
- var unapplied_cell = document.getElementById('unapplied_amount');
- unapplied_cell.innerHTML = '<B><% $money_char %>' + what.value + '</B>';
- set_amount_color(what);
+function src_amount_changed () {
+ //alert('src_amount_changed called');
+ var entered_amount = document.getElementById('entered_amount');
+ if ( entered_amount ) {
+ entered_amount.form.src_amount.value = entered_amount.value;
+ var unapplied_cell = document.getElementById('unapplied_amount');
+ unapplied_cell.innerHTML = '<B><% $money_char %>' + entered_amount.value + '</B>';
+ set_amount_color(entered_amount);
+ }
+ return true;
}
</SCRIPT>
<OPTION VALUE="">Select <% $dst_thing %>
% foreach my $dst ( @dst ) {
- <OPTION<% $dst->$dst_pkey eq $dst_pkeyvalue ? ' SELECTED' : '' %> VALUE="<% $dst->$dst_pkey %>">#<% $dst->$dst_pkey %> - <% time2str("%D", $dst->_date) %> - $<% $dst->$dst_unapplied %>
+ <OPTION<% $dst->$dst_pkey eq $dst_pkeyvalue ? ' SELECTED' : '' %> VALUE="<% $dst->$dst_pkey %>">#<% $dst->$dst_pkey %> - <% time2str($date_format, $dst->_date) %> - $<% $dst->$dst_unapplied %>
% }
</SELECT>
</TABLE>
<BR>
-<CENTER><INPUT TYPE="submit" VALUE="Apply" NAME="submit" ID="submit" DISABLED></CENTER>
+<CENTER><INPUT TYPE="submit"
+ VALUE="Apply"
+ NAME="submit"
+ ID="submit"
+% if ($use_sub_dst_thing && $can_change_credit) {
+ onClick="src_amount_changed()"
+% }
+ DISABLED
+></CENTER>
</FORM>
</SCRIPT>
-<% include('/elements/footer.html') %>
-
+<& /elements/footer-popup.html &>
<%init>
my %opt = @_;
my $conf = new FS::Conf;
-my $money_char = $conf->config('money_char') || '$';
+my $money_char = $conf->config('money_char') || '$';
+my $date_format = $conf->config('date_format') || '%m/%d/%Y';
my $src_thing = ucfirst($opt{'src_thing'});
my $src_table = $opt{'src_table'};
my $to = $dst_table eq 'cust_refund' ? ' to Refund' : '';
+$m->comp('/elements/handle_uri_query');
+
my($src_pkeyvalue, $amount, $dst_pkeyvalue, $src_amount);
if ( $cgi->param('error') ) {
$src_pkeyvalue = $cgi->param($src_pkey);