- 'title' => 'Credit Card Batches',
- 'menubar' => [ 'Main Menu' => $p, ],
- 'name' => 'batches',
- 'query' => { 'table' => 'pay_batch',
- 'hashref' => $hashref,
- 'extra_sql' => "$extra_sql ORDER BY batchnum DESC",
- },
- 'count_query' => "$count_query $extra_sql",
- 'header' => [ 'Batch',
- 'First Download',
- 'Last Upload',
- 'Item Count',
- 'Amount',
- 'Status',
- ],
- 'align' => 'lllrrl',
- 'fields' => [ 'batchnum',
- sub {
- my $_date = shift->download;
- $_date ? time2str("%a %b %e %T %Y", $_date) : ''
- },
- sub {
- my $_date = shift->upload;
- $_date ? time2str("%a %b %e %T %Y", $_date) : ''
- },
- sub {
- my $st = "SELECT COUNT(*) from cust_pay_batch WHERE batchnum=" . shift->batchnum;
- my $sth = dbh->prepare($st)
- or die dbh->errstr. "doing $st";
- $sth->execute
- or die "Error executing \"$st\": ". $sth->errstr;
- $sth->fetchrow_arrayref->[0];
- },
- sub {
- my $st = "SELECT SUM(amount) from cust_pay_batch WHERE batchnum=" . shift->batchnum;
- my $sth = dbh->prepare($st)
- or die dbh->errstr. "doing $st";
- $sth->execute
- or die "Error executing \"$st\": ". $sth->errstr;
- $sth->fetchrow_arrayref->[0];
- },
- sub {
- $statusmap{shift->status};
- },
- ],
- 'links' => [ [ "${p}search/cust_pay_batch.cgi?batchnum=", 'batchnum',],
- ],
+ 'title' => 'Payment Batches',
+ 'name_singular' => 'batch',
+ 'query' => { 'table' => 'pay_batch',
+ 'hashref' => $hashref,
+ 'extra_sql' => $extra_sql,
+ 'order_by' => 'ORDER BY batchnum DESC',
+ },
+ 'count_query' => "$count_query $extra_sql",
+ 'agent_virt' => 1,
+ 'agent_null_right' => 'Process batches', #'Process global batches',
+ 'agent_pos' => 1,
+ 'header' => [ 'Batch',
+ 'Type',
+ 'First Download',
+ 'Last Upload',
+ 'Items',
+ 'Unresolved',
+ 'Amount',
+ 'Status',
+ ],
+ 'align' => 'rcllrrc',
+ 'fields' => [ 'batchnum',
+ sub {
+ FS::payby->shortname(shift->payby);
+ },
+ sub {
+ my $self = shift;
+ my $_date = $self->download;
+ if ( $_date ) {
+ time2str("%a %b %e %T %Y", $_date);
+ } elsif ( $self->status eq 'O' ) {
+ 'Download batch';
+ } else {
+ '';
+ }
+ },
+ sub {
+ my $self = shift;
+ my $_date = $self->upload;
+ if ( $_date ) {
+ time2str("%a %b %e %T %Y", $_date);
+ } elsif ( $self->status eq 'I' ) {
+ 'Upload results';
+ } else {
+ '';
+ }
+ },
+ sub {
+ FS::cust_pay_batch->count(
+ 'batchnum = '.$_[0]->batchnum
+ )
+ },
+ sub {
+ FS::cust_pay_batch->count(
+ 'status is null and batchnum = '.
+ $_[0]->batchnum
+ )
+ },
+ sub {
+ my $st = "SELECT SUM(amount) from cust_pay_batch WHERE batchnum=" . shift->batchnum;
+ my $sth = dbh->prepare($st)
+ or die dbh->errstr. "doing $st";
+ $sth->execute
+ or die "Error executing \"$st\": ". $sth->errstr;
+ $sth->fetchrow_arrayref->[0];
+ },
+ sub {
+ $statusmap{shift->status};
+ },
+ ],
+ 'links' => [
+ $link,
+ '',
+ sub { shift->status eq 'O' ? $link : '' },
+ sub { shift->status eq 'I' ? $link : '' },
+ ],
+ 'size' => [
+ '',
+ '',
+ sub { shift->status eq 'O' ? "+1" : '' },
+ sub { shift->status eq 'I' ? "+1" : '' },
+ ],
+ 'style' => [
+ '',
+ '',
+ sub { shift->status eq 'O' ? "b" : '' },
+ sub { shift->status eq 'I' ? "b" : '' },
+ ],
+ 'html_init' => $html_init,