+my $row_generator = sub {
+ my ($key, $cust_bill_pkg, $desc, $owed, $amount, $taxXnum) = @_;
+ my ($num, $s_or_r, $taxlinenum) = split(':', $key);
+ my $id = $cust_bill_pkg->pkgnum || 'Tax';
+ my $billpkgnum = $cust_bill_pkg->billpkgnum;
+ my $s_or_r = $cust_bill_pkg->setup > 0 ? 'setup' : 'recur';
+
+ $amount = sprintf("%.2f", $amount);
+ qq!
+ var tablebody = document.getElementsByTagName('tbody').item(0);
+ var row = table.insertRow(rownum+2);
+ var pkg_cell = document.createElement('TD');
+ pkg_cell.style.textAlign = 'right';
+ pkg_cell.innerHTML = "$id - $desc - $owed:";
+ var amount_cell = document.createElement('TD');
+ amount_cell.innerHTML = "$money_char";
+ var amount_input = document.createElement('INPUT');
+ amount_input.setAttribute('name', 'subamount'+rownum);
+ amount_input.setAttribute('id', 'subamount'+rownum);
+ amount_input.style.textAlign = 'right';
+ amount_input.setAttribute('size', 8);
+ amount_input.setAttribute('maxlength', 8);
+ amount_input.setAttribute('rownum', rownum);
+ amount_input.setAttribute('value', "$amount");
+ amount_input.setAttribute('onChange', "sub_changed(this);");
+ amount_cell.appendChild(amount_input);
+ var subnum_input = document.createElement('INPUT');
+ subnum_input.setAttribute('name', 'subnum'+rownum);
+ subnum_input.setAttribute('id', 'subnum'+rownum);
+ subnum_input.setAttribute('type', 'hidden');
+ subnum_input.setAttribute('rownum', rownum);
+ subnum_input.setAttribute('value', "$billpkgnum");
+ amount_cell.appendChild(subnum_input);
+ var taxnum_input = document.createElement('INPUT');
+ taxnum_input.setAttribute('name', 'taxXlocationnum'+rownum);
+ taxnum_input.setAttribute('id', 'taxXlocationnum'+rownum);
+ taxnum_input.setAttribute('type', 'hidden');
+ taxnum_input.setAttribute('rownum', rownum);
+ taxnum_input.setAttribute('value', "$taxXnum");
+ amount_cell.appendChild(taxnum_input);
+ var s_or_r_input = document.createElement('INPUT');
+ s_or_r_input.setAttribute('name', 's_or_r'+rownum);
+ s_or_r_input.setAttribute('id', 's_or_r'+rownum);
+ s_or_r_input.setAttribute('type', 'hidden');
+ s_or_r_input.setAttribute('rownum', rownum);
+ s_or_r_input.setAttribute('value', "$s_or_r");
+ amount_cell.appendChild(s_or_r_input);
+ var itemdesc_input = document.createElement('INPUT');
+ itemdesc_input.setAttribute('name', 'itemdesc'+rownum);
+ itemdesc_input.setAttribute('id', 'itemdesc'+rownum);
+ itemdesc_input.setAttribute('type', 'hidden');
+ itemdesc_input.setAttribute('rownum', rownum);
+ itemdesc_input.setAttribute('value', "$desc");
+ amount_cell.appendChild(itemdesc_input);
+ row.appendChild(pkg_cell);
+ row.appendChild(amount_cell);
+ rownum++;
+ !;
+};
+
+my $key_generator = sub {
+ my $listref = shift;
+ my ($cust_bill_pkg, $amount, $hashref) = @$listref;
+ my $setup_or_recur = $cust_bill_pkg->setup > 0 ? 'setup' : 'recur';
+ my $taxlinenum = $hashref->{billpkgtaxlocationnum} ||
+ $hashref->{billpkgtaxratelocationnum} ||
+ '';
+
+ join(':', $cust_bill_pkg->billpkgnum, $setup_or_recur, $taxlinenum);
+};
+
+my $onload = 'return true;';
+
+if ($cgi->param('error')) {
+
+ my $set_sub_amounts =
+ join(';', map { "myform.subamount$_.value = ". $cgi->param("subamount$_") }
+ grep { /.+/ }
+ map { /^subnum(\d+)$/ ? $1 : '' }
+ $cgi->param
+ );
+ $set_sub_amounts &&= "$set_sub_amounts;sub_changed(myform.subamount0)";
+
+ $onload = qq!
+ var myform = document.getElementById('ApplicationForm');
+ changed(myform.elements['$dst_pkey']);
+ $set_sub_amounts;
+ return true;
+ !;
+}
+