X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fmisc%2Fbatch-cust_pay.html;h=fb3ec04f35b29ed9c4e5bd54afb464f63cec32a8;hb=1115b9089e9d9ecf104bc61bb22e84f5233aa44b;hp=cc1a26a0ea8568e5ac3b10e134c366143b5b7862;hpb=1660ec858b01a46737682e4db86d151bf4550455;p=freeside.git
diff --git a/httemplate/misc/batch-cust_pay.html b/httemplate/misc/batch-cust_pay.html
index cc1a26a0e..fb3ec04f3 100644
--- a/httemplate/misc/batch-cust_pay.html
+++ b/httemplate/misc/batch-cust_pay.html
@@ -26,8 +26,27 @@ function warnUnload() {
}
window.onbeforeunload = warnUnload;
-function add_row_callback(rownum, prefix) {
- document.getElementById('enable_app'+rownum).disabled = true;
+function add_row_callback(rownum, prefix, values) {
+ if (values) {
+ custnum_update_callback(rownum, prefix);
+ } else {
+ document.getElementById('enable_app'+rownum).disabled = true;
+ }
+}
+
+function delete_row_callback(rownum, prefix) {
+ var i = 0;
+ var delbutton = document.getElementById('delete'+rownum+'.'+i);
+ var delrows = [];
+ while (delbutton) {
+ delrows[i] = delbutton;
+ i++;
+ delbutton = document.getElementById('delete'+rownum+'.'+i);
+ }
+ delrows = delrows.reverse();
+ for (i = 0; i < delrows.length; i++) {
+ delrows[i].onclick();
+ }
}
function custnum_update_callback(rownum, prefix) {
@@ -313,17 +332,17 @@ function create_application_row(rownum, appnum) {
%# for error handling--ugly, but the alternative is translating the whole
%# process of creating rows into Mason
-var row_array = <% encode_json(\@rows) %>;
+var row_obj = <% encode_json(\%rows) %>;
function preload() {
var rownum;
var appnum;
- for (rownum=0; rownum < row_array.length; rownum++) {
- if ( row_array[rownum].length ) {
+ for (rownum in row_obj) {
+ if ( row_obj[rownum].length ) {
var enable = document.getElementById('enable_app'+rownum);
enable.checked = true;
var preload_row = function(r) {//continuation from toggle_application_row
- for (appnum=0; appnum < row_array[r].length; appnum++) {
- this_app = row_array[r][appnum];
+ for (appnum=0; appnum < row_obj[r].length; appnum++) {
+ this_app = row_obj[r][appnum];
var x = r + '.' + appnum;
//set invnum
var select_invnum = document.getElementById('invnum'+x);
@@ -345,7 +364,7 @@ function preload() {
} //for appnum
}; //preload_row function
toggle_application_row.call(enable, null, preload_row);
- } // if row_array[rownum].length
+ } // if (row_obj[rownum].length
} //for rownum
}
@@ -380,6 +399,7 @@ function preload() {
custnum_update_callback => 'custnum_update_callback',
invnum_update_callback => 'invnum_update_callback',
add_row_callback => 'add_row_callback',
+ delete_row_callback => 'delete_row_callback',
&>
@@ -387,13 +407,12 @@ function preload() {
-%if ( $cgi->param('error') ) {
-
-%}
+% #XXX I think this can go away completely, but need to test with $use_discount
+% ###not perl
<% include('/elements/footer.html') %>
@@ -455,29 +474,31 @@ push @onchange, '';
$m->comp('/elements/handle_uri_query');
# set up for preloading
-my @rows;
-my @row_errors;
+my %rows;
+my %row_errors;
if ( $cgi->param('error') ) {
my $param = $cgi->Vars;
my $enum = 0; #errors numbered separately
- for( my $row = 0; exists($param->{"custnum$row"}); $row++ ) {
- $rows[$row] = [];
- $row_errors[$row] = $param->{"error$enum"};
+ my @invrows = grep /^invnum\d+\.\d+$/, keys %$param; #pare down possibilities
+ foreach my $row ( sort { $a <=> $b } map /^custnum(\d+)$/, keys %$param ) {
+# for( my $row = 0; exists($param->{"custnum$row"}); $row++ ) {
+ $rows{$row} = [];
+ $row_errors{$row} = $param->{"error$enum"};
$enum++;
- for( my $app = 0; exists($param->{"invnum$row.$app"}); $app++ ) {
+ foreach my $app ( map /^invnum$row\.(\d+)$/, @invrows ) {
next if !$param->{"invnum$row.$app"};
my %this_app = map { $_ => ($param->{$_.$row.'.'.$app} || '') }
qw( invnum amount );
$this_app{'error'} = $param->{"error$enum"} || '';
$param->{"error$enum"} = ''; # don't pass this error through
- $rows[$row][$app] = \%this_app;
+ $rows{$row}[$app] = \%this_app;
$enum++;
}
}
- for( my $row = 0; $row < @row_errors; $row++ ) {
- $param->{"error$row"} = $row_errors[$row];
+ foreach my $row (keys %rows) {
+ $param->{"error$row"} = $row_errors{$row};
}
}
-#warn Dumper {rows => \@rows, row_errors => \@row_errors };
+#warn Dumper {rows => \%rows, row_errors => \%row_errors };
%init>