X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fmisc%2Fbatch-cust_pay.html;h=e20e4a4e3194dc615efaed3a1f0ea4d9ceeffa34;hb=755969fa7279b58aa965a6f488060e80ad379689;hp=d85f3b6c3cae7d3ff2b53906a4bfd6106e2f74a2;hpb=c8cccb4a92adceb943c635fe62dad0d034462ce0;p=freeside.git
diff --git a/httemplate/misc/batch-cust_pay.html b/httemplate/misc/batch-cust_pay.html
index d85f3b6c3..e20e4a4e3 100644
--- a/httemplate/misc/batch-cust_pay.html
+++ b/httemplate/misc/batch-cust_pay.html
@@ -1,395 +1,560 @@
-<% include("/elements/header.html", 'Quick payment entry',
- menubar(
- 'Main Menu' => $p, #popurl(1),
- ),
- ( $cgi->param('error') ? '' : 'onload="addRow()"' ),
- )
-%>
-% if ( $cgi->param('error') ) {
-
- <% $cgi->param('error') %>
-% }
-
-
-
-
-
-
<% include('/elements/xmlhttp.html',
- 'url' => $p. 'misc/xmlhttp-cust_main-search.cgi',
- 'subs' => [qw( custnum_search smart_search )],
+ 'url' => $p. 'misc/xmlhttp-cust_main-discount_terms.cgi',
+ 'subs' => [qw( discount_terms )],
)
%>
-
+
+<% include('/elements/footer.html') %>
+
+<%init>
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('Post payment batch');
+
+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 = ( 'r', 'r', '' );
+my @onchange = ( '', '', '' );
+my $use_discounts = '';
+
+# 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';
+ push @align, 'r';
+ push @sizes, '0';
+ push @colors, '';
+ push @footer, '';
+ push @footer_align, '';
+ 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';
+push @align, 'l';
+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 };
-
-
-