X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fmisc%2Fbatch-cust_pay.html;h=003dc86ac91b3fe933e4ce1734f79d01cbb170e5;hp=610f6e1db4b15864f6cbc3892043cd0950f9057d;hb=79c8be3bd0c5db42794b36bf5b5dd25addba67cb;hpb=5250c44bd7f282c7d782bf0e8349af12376929df diff --git a/httemplate/misc/batch-cust_pay.html b/httemplate/misc/batch-cust_pay.html index 610f6e1db..003dc86ac 100644 --- a/httemplate/misc/batch-cust_pay.html +++ b/httemplate/misc/batch-cust_pay.html @@ -1,11 +1,23 @@ -<% include('/elements/header.html', 'Quick payment entry') %> +<& /elements/header.html, { + title => 'Quick payment entry', + etc => 'onload="preload()"' +} &> -<% include('/elements/error.html') %> +<& /elements/error.html &> + <% include('/elements/xmlhttp.html', @@ -54,40 +421,43 @@ function select_discount_term(row, prefix) { ) %> -
+ +<& /elements/xmlhttp.html, + url => $p.'misc/xmlhttp-cust_bill-search.html', + subs => ['custnum_search_open'] +&> -<% include( "/elements/customer-table.html", - name_singular => 'payment', - header => \@header, - fields => \@fields, - types => \@types, - align => \@align, - sizes => \@sizes, - colors => \@colors, - param => \%param, - footer => \@footer, - footer_align => \@footer_align, - custnum_update_callback => $custnum_update_callback, - ) -%> - - +<& /elements/customer-table.html, + name_singular => 'payment', + header => \@header, + fields => \@fields, + type => \@types, + align => \@align, + size => \@sizes, + color => \@colors, + param => \%param, + footer => \@footer, + footer_align => \@footer_align, + onchange => \@onchange, + custnum_update_callback => 'custnum_update_callback', + invnum_update_callback => 'invnum_update_callback', + add_row_callback => 'add_row_callback', + delete_row_callback => 'delete_row_callback', +&>
- +
-%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') %> @@ -96,18 +466,24 @@ function select_discount_term(row, prefix) { die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Post payment batch'); -my @header = ( '', 'Amount', 'Check #' ); -my @fields = ( sub {'$'}, 'paid', 'payinfo' ); -my @types = ( 'immutable', '', '' ); -my @align = ( 'c', 'r', 'r' ); -my @sizes = ( 0, 8, 10 ); +my $conf = new FS::Conf; +my $money_char = $conf->config('money_char') || '$'; + +my @header = ( 'Amount', 'Check #', 'Date override' ); +my @fields = ( 'paid', 'payinfo', '_date' ); +my @types = ( '', '', 'date', ); +my @align = ( 'r', 'r', 'r' ); +my @sizes = ( 8, 10, 8 ); my @colors = ( '', '', '' ); my %param = (); -my @footer = ( '$', '_TOTAL', '' ); -my @footer_align = ( 'c', 'r', 'r' ); -my $custnum_update_callback = ''; +my @footer = ( '_TOTAL', '', '' ); +my @footer_align = ( 'r', 'r', '' ); +my @onchange = ( '', '', '' ); +my $use_discounts = ''; -if ( FS::Record->scalar_sql('SELECT count(*) FROM part_pkg_discount') ) { +# Not entirely sure this works anymore... +if ( FS::Record->scalar_sql('SELECT COUNT(*) FROM part_pkg_discount') ) { + #push @header, 'Discount'; push @header, ''; push @fields, 'discount_term'; push @types, 'immutable'; @@ -116,9 +492,31 @@ if ( FS::Record->scalar_sql('SELECT count(*) FROM part_pkg_discount') ) { push @colors, ''; push @footer, ''; push @footer_align, ''; - $custnum_update_callback = 'select_discount_term'; + push @onchange, ''; + $use_discounts = 'Y'; } +push @header, 'Allocate'; +push @fields, 'enable_app'; +push @types, 'checkbox'; +push @align, 'c'; +push @sizes, '0'; +push @colors, ''; +push @footer, ''; +push @footer_align, ''; +push @onchange, 'toggle_application_row'; + +push @header, 'No Auto Allocate'; +push @fields, 'no_auto_apply'; +push @types, 'checkbox'; +push @align, 'c'; +push @sizes, '0'; +push @colors, ''; +push @footer, ''; +push @footer_align, ''; +push @onchange, ''; + +#push @header, 'Error'; push @header, ''; push @fields, 'error'; push @types, 'immutable'; @@ -127,5 +525,36 @@ push @sizes, '0'; push @colors, '#ff0000'; push @footer, ''; push @footer_align, ''; +push @onchange, ''; + +$m->comp('/elements/handle_uri_query'); + +# set up for preloading +my %rows; +my %row_errors; +if ( $cgi->param('error') ) { + my $param = $cgi->Vars; + my $enum = 0; #errors numbered separately + 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++; + 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; + $enum++; + } + } + foreach my $row (keys %rows) { + $param->{"error$row"} = $row_errors{$row}; + } +} +#warn Dumper {rows => \%rows, row_errors => \%row_errors };