summaryrefslogtreecommitdiff
path: root/httemplate/search/report_receivables.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/search/report_receivables.cgi')
-rwxr-xr-xhttemplate/search/report_receivables.cgi273
1 files changed, 137 insertions, 136 deletions
diff --git a/httemplate/search/report_receivables.cgi b/httemplate/search/report_receivables.cgi
index 3052ea93c..4074f2680 100755
--- a/httemplate/search/report_receivables.cgi
+++ b/httemplate/search/report_receivables.cgi
@@ -1,139 +1,140 @@
-<%
-
- sub owed {
- my($start, $end, %opt) = @_;
-
- my @where = ();
-
- #handle start and end ranges
-
- #24h * 60m * 60s
- push @where, "cust_bill._date <= extract(epoch from now())-".
- ($start * 86400)
- if $start;
-
- push @where, "cust_bill._date > extract(epoch from now()) - ".
- ($end * 86400)
- if $end;
-
- #handle 'cust' option
-
- push @where, "cust_main.custnum = cust_bill.custnum"
- if $opt{'cust'};
-
- #handle 'agentnum' option
- my $join = '';
- if ( $opt{'agentnum'} ) {
- $join = 'LEFT JOIN cust_main USING ( custnum )';
- push @where, "agentnum = '$opt{'agentnum'}'";
- }
-
- my $where = scalar(@where) ? 'WHERE '.join(' AND ', @where) : '';
-
- my $as = $opt{'noas'} ? '' : "as owed_${start}_$end";
-
- my $charged = <<END;
- 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_credit_bill
- where cust_bill.invnum = cust_credit_bill.invnum )
- ,0
- )
-
- )
-END
-
- "coalesce( ( select $charged from cust_bill $join $where ) ,0 ) $as";
-
- }
-
- my @ranges = (
- [ 0, 30 ],
- [ 30, 60 ],
- [ 60, 90 ],
- [ 90, 0 ],
- [ 0, 0 ],
- );
-
- my $owed_cols = join(',', map owed( @$_, 'cust'=>1 ), @ranges );
-
- my $select_count_pkgs = FS::cust_main->select_count_pkgs_sql;
-
- my $active_sql = FS::cust_pkg->active_sql;
- my $inactive_sql = FS::cust_pkg->inactive_sql;
- my $suspended_sql = FS::cust_pkg->inactive_sql;
- my $cancelled_sql = FS::cust_pkg->inactive_sql;
-
- my $packages_cols = <<END;
- ( $select_count_pkgs ) AS num_pkgs_sql,
- ( $select_count_pkgs AND $active_sql ) AS active_pkgs,
- ( $select_count_pkgs AND $inactive_sql ) AS inactive_pkgs,
- ( $select_count_pkgs AND $suspended_sql ) AS suspended_pkgs,
- ( $select_count_pkgs AND $cancelled_sql ) AS cancelled_pkgs
-END
-
- my $where = "where ". owed(0, 0, 'cust'=>1, 'noas'=>1). " > 0";
-
- my $agentnum = '';
- if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
- $agentnum = $1;
- $where .= " AND agentnum = '$agentnum' ";
- }
-
- #here is the agent virtualization
- $where .= ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql;
-
- my $count_sql = "select count(*) from cust_main $where";
-
- my $sql_query = {
- 'table' => 'cust_main',
- 'hashref' => {},
- 'select' => "*, $owed_cols, $packages_cols",
- 'extra_sql' => "$where order by coalesce(lower(company), ''), lower(last)",
- };
-
- my $total_sql = "select ".
- join(',', map owed( @$_, 'agentnum'=>$agentnum ), @ranges );
-
- my $total_sth = dbh->prepare($total_sql) or die dbh->errstr;
- $total_sth->execute or die "error executing $total_sql: ". $total_sth->errstr;
- my $row = $total_sth->fetchrow_hashref();
-
- my $conf = new FS::Conf;
- my $money_char = $conf->config('money_char') || '$';
-
- my $align = join('', map { /#/ ? 'r' : 'l' } FS::UI::Web::cust_header() ).
- 'crrrrr';
-
- my $clink = [ "${p}view/cust_main.cgi?", 'custnum' ];
-
- my $status_statuscol = sub {
- #conceptual false laziness with cust_main::status...
- my $row = shift;
-
- my $status = 'unknown';
- if ( $row->num_pkgs_sql == 0 ) {
- $status = 'prospect';
- } elsif ( $row->active_pkgs > 0 ) {
- $status = 'active';
- } elsif ( $row->inactive_pkgs > 0 ) {
- $status = 'inactive';
- } elsif ( $row->suspended_pkgs > 0 ) {
- $status = 'suspended';
- } elsif ( $row->cancelled_pkgs > 0 ) {
- $status = 'cancelled'
- }
-
- ( ucfirst($status), $FS::cust_main::statuscolor{$status} );
- };
-
-
-%><%= include( 'elements/search.html',
+%
+%
+% sub owed {
+% my($start, $end, %opt) = @_;
+%
+% my @where = ();
+%
+% #handle start and end ranges
+%
+% #24h * 60m * 60s
+% push @where, "cust_bill._date <= extract(epoch from now())-".
+% ($start * 86400)
+% if $start;
+%
+% push @where, "cust_bill._date > extract(epoch from now()) - ".
+% ($end * 86400)
+% if $end;
+%
+% #handle 'cust' option
+%
+% push @where, "cust_main.custnum = cust_bill.custnum"
+% if $opt{'cust'};
+%
+% #handle 'agentnum' option
+% my $join = '';
+% if ( $opt{'agentnum'} ) {
+% $join = 'LEFT JOIN cust_main USING ( custnum )';
+% push @where, "agentnum = '$opt{'agentnum'}'";
+% }
+%
+% my $where = scalar(@where) ? 'WHERE '.join(' AND ', @where) : '';
+%
+% my $as = $opt{'noas'} ? '' : "as owed_${start}_$end";
+%
+% my $charged = <<END;
+% 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_credit_bill
+% where cust_bill.invnum = cust_credit_bill.invnum )
+% ,0
+% )
+%
+% )
+%END
+%
+% "coalesce( ( select $charged from cust_bill $join $where ) ,0 ) $as";
+%
+% }
+%
+% my @ranges = (
+% [ 0, 30 ],
+% [ 30, 60 ],
+% [ 60, 90 ],
+% [ 90, 0 ],
+% [ 0, 0 ],
+% );
+%
+% my $owed_cols = join(',', map owed( @$_, 'cust'=>1 ), @ranges );
+%
+% my $select_count_pkgs = FS::cust_main->select_count_pkgs_sql;
+%
+% my $active_sql = FS::cust_pkg->active_sql;
+% my $inactive_sql = FS::cust_pkg->inactive_sql;
+% my $suspended_sql = FS::cust_pkg->inactive_sql;
+% my $cancelled_sql = FS::cust_pkg->inactive_sql;
+%
+% my $packages_cols = <<END;
+% ( $select_count_pkgs ) AS num_pkgs_sql,
+% ( $select_count_pkgs AND $active_sql ) AS active_pkgs,
+% ( $select_count_pkgs AND $inactive_sql ) AS inactive_pkgs,
+% ( $select_count_pkgs AND $suspended_sql ) AS suspended_pkgs,
+% ( $select_count_pkgs AND $cancelled_sql ) AS cancelled_pkgs
+%END
+%
+% my $where = "where ". owed(0, 0, 'cust'=>1, 'noas'=>1). " > 0";
+%
+% my $agentnum = '';
+% if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
+% $agentnum = $1;
+% $where .= " AND agentnum = '$agentnum' ";
+% }
+%
+% #here is the agent virtualization
+% $where .= ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql;
+%
+% my $count_sql = "select count(*) from cust_main $where";
+%
+% my $sql_query = {
+% 'table' => 'cust_main',
+% 'hashref' => {},
+% 'select' => "*, $owed_cols, $packages_cols",
+% 'extra_sql' => "$where order by coalesce(lower(company), ''), lower(last)",
+% };
+%
+% my $total_sql = "select ".
+% join(',', map owed( @$_, 'agentnum'=>$agentnum ), @ranges );
+%
+% my $total_sth = dbh->prepare($total_sql) or die dbh->errstr;
+% $total_sth->execute or die "error executing $total_sql: ". $total_sth->errstr;
+% my $row = $total_sth->fetchrow_hashref();
+%
+% my $conf = new FS::Conf;
+% my $money_char = $conf->config('money_char') || '$';
+%
+% my $align = join('', map { /#/ ? 'r' : 'l' } FS::UI::Web::cust_header() ).
+% 'crrrrr';
+%
+% my $clink = [ "${p}view/cust_main.cgi?", 'custnum' ];
+%
+% my $status_statuscol = sub {
+% #conceptual false laziness with cust_main::status...
+% my $row = shift;
+%
+% my $status = 'unknown';
+% if ( $row->num_pkgs_sql == 0 ) {
+% $status = 'prospect';
+% } elsif ( $row->active_pkgs > 0 ) {
+% $status = 'active';
+% } elsif ( $row->inactive_pkgs > 0 ) {
+% $status = 'inactive';
+% } elsif ( $row->suspended_pkgs > 0 ) {
+% $status = 'suspended';
+% } elsif ( $row->cancelled_pkgs > 0 ) {
+% $status = 'cancelled'
+% }
+%
+% ( ucfirst($status), $FS::cust_main::statuscolor{$status} );
+% };
+%
+%
+%
+<% include( 'elements/search.html',
'title' => 'Accounts Receivable Aging Summary',
'name' => 'customers',
'query' => $sql_query,