<% my $sql = < extract(epoch from now())-2592000 and cust_main.custnum = cust_bill.custnum ) ,0 ) as owed_0_30, coalesce( ( select sum( charged - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) ) from cust_bill where cust_bill._date > extract(epoch from now())-5184000 and cust_bill._date <= extract(epoch from now())-2592000 and cust_main.custnum = cust_bill.custnum ) ,0 ) as owed_30_60, coalesce( ( select sum( charged - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) ) from cust_bill where cust_bill._date > extract(epoch from now())-7776000 and cust_bill._date <= extract(epoch from now())-5184000 and cust_main.custnum = cust_bill.custnum ) ,0 ) as owed_60_90, coalesce( ( select sum( charged - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) ) from cust_bill where cust_bill._date <= extract(epoch from now())-7776000 and cust_main.custnum = cust_bill.custnum ) ,0 ) as owed_90_plus, coalesce( ( select sum( charged - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) ) from cust_bill where cust_main.custnum = cust_bill.custnum ) ,0 ) as owed_total from cust_main where 0 < coalesce( ( select sum( charged - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) - coalesce( ( select sum(amount) from cust_bill_pay where cust_bill.invnum = cust_bill_pay.invnum ) ,0 ) ) from cust_bill where cust_main.custnum = cust_bill.custnum ) ,0 ) order by company, last END #order by! #the grep (and the sort ) should be pushed down to SQL #my @cust_main = sort { $a->company cmp $b->company # || $a->last cmp $b->last } # grep { $_->balance } # qsearch('cust_main', {} ); my $totals_table = table(). 'Total'. '0-30'. '30-60'. '60-90'. '90+'. 'total'. ''; $totals_table = ''; my $sth = dbh->prepare($sql) or die dbh->errstr; $sth->execute or die $sth->errstr; %> <%= header('Accounts Receivable Aging Summary', menubar( 'Main Menu'=>$p, ) ) %> <%= $totals_table %> <%= table() %> Customer 0-30 30-60 60-90 90+ Total <% while ( my $row = $sth->fetchrow_hashref() ) { %> <%= $row->{'company'} ? $row->{'company'}. ' (' : '' %> <%= $row->{'last'}. ', '. $row->{'first'} %> <%= $row->{'company'} ? ')' : '' %> $<%= sprintf("%.2f", $row->{'owed_0_30'} ) %> $<%= sprintf("%.2f", $row->{'owed_30_60'} ) %> $<%= sprintf("%.2f", $row->{'owed_60_90'} ) %> $<%= sprintf("%.2f", $row->{'owed_90_plus'} ) %> $<%= sprintf("%.2f", $row->{'owed_total'} ) %> <% } %> <%= $totals_table %>