summaryrefslogtreecommitdiff
path: root/httemplate/search/elements/cust_main_dayranges.html
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/search/elements/cust_main_dayranges.html')
-rw-r--r--httemplate/search/elements/cust_main_dayranges.html287
1 files changed, 0 insertions, 287 deletions
diff --git a/httemplate/search/elements/cust_main_dayranges.html b/httemplate/search/elements/cust_main_dayranges.html
deleted file mode 100644
index 91e039d28..000000000
--- a/httemplate/search/elements/cust_main_dayranges.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<%doc>
-
-Example:
-
- include( 'elements/cust_main_dayranges.html',
- 'title' => 'Accounts Receivable Aging Summary',
- 'range_sub' => $mysub,
- )
-
- my $mysub = sub {
- my( $start, $end ) = @_;
-
- "SQL EXPRESSION BASED ON $start AND $end";
- # where $start and $end are unix timestamps
- };
-
-</%doc>
-<% include( 'search.html',
- 'name' => 'customers',
- 'query' => $sql_query,
- 'count_query' => $count_sql,
- 'header' => [
- FS::UI::Web::cust_header(),
- '0-30',
- '30-60',
- '60-90',
- '90+',
- 'Total',
- @pay_head,
- ],
- 'footer' => [
- 'Total',
- ( map '',
- ( 1 ..
- scalar(FS::UI::Web::cust_header()-1)
- ),
- ),
-
- sprintf( $money_char.'%.2f',
- $row->{'rangecol_0_30'} ),
- sprintf( $money_char.'%.2f',
- $row->{'rangecol_30_60'} ),
- sprintf( $money_char.'%.2f',
- $row->{'rangecol_60_90'} ),
- sprintf( $money_char.'%.2f',
- $row->{'rangecol_90_0'} ),
- sprintf( '<b>'. $money_char.'%.2f'. '</b>',
- $row->{'rangecol_0_0'} ),
- ('') x @pay_labels,
- ],
- 'fields' => [
- FS::UI::Web::cust_fields_subs(),
- format_rangecol('0_30'),
- format_rangecol('30_60'),
- format_rangecol('60_90'),
- format_rangecol('90_0'),
- format_rangecol('0_0'),
- @pay_labels,
- ],
- 'links' => [
- ( map { $_ ne 'Cust. Status' ? $clink : '' }
- FS::UI::Web::cust_header()
- ),
- '',
- '',
- '',
- '',
- '',
- @pay_links,
- ],
- #'align' => 'rlccrrrrr',
- 'align' => FS::UI::Web::cust_aligns().
- 'rrrrr'.
- ('c' x @pay_labels),
- #'size' => [ '', '', '-1', '-1', '', '', '', '', '', ],
- #'style' => [ '', '', 'b', 'b', '', '', '', '', 'b', ],
- 'size' => [ ( map '', FS::UI::Web::cust_header() ),
- #'-1', '', '', '', '', '', ],
- '', '', '', '', '', '',
- ( map '', @pay_labels ),
- ],
- 'style' => [ FS::UI::Web::cust_styles(),
- #'b', '', '', '', '', 'b', ],
- '', '', '', '', 'b',
- ( map '', @pay_labels ),
- ],
- 'color' => [
- FS::UI::Web::cust_colors(),
- '',
- '',
- '',
- '',
- '',
- '',
- ( map '', @pay_labels ),
- ],
- %opt,
- )
-%>
-<%init>
-
-my %opt = @_;
-
-#actually need to auto-generate other things too for a passed-in ranges to work
-my $ranges = $opt{'ranges'} ? delete($opt{'ranges'}) : [
- [ 0, 30 ],
- [ 30, 60 ],
- [ 60, 90 ],
- [ 90, 0 ],
- [ 0, 0 ],
-];
-
-my $range_sub = delete($opt{'range_sub'}); #or die
-
-my $offset = 0;
-if($cgi->param('as_of')) {
- $offset = int((time - parse_datetime($cgi->param('as_of'))) / 86400);
- $opt{'title'} .= ' ('.$cgi->param('as_of').')' if $offset > 0;
-}
-
-#my $range_cols = join(',', map &{$range_sub}( @$_ ), @ranges );
-my $range_cols = join(',', map call_range_sub($range_sub, @$_, 'offset' => $offset ), @$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->suspended_sql;
-my $cancelled_sql = FS::cust_pkg->cancelled_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 = ();
-
-unless ( $cgi->param('all_customers') ) {
-# Exclude entire cust_main records where the balance is >0
- my $days = 0;
- if ( $cgi->param('days') =~ /^\s*(\d+)\s*$/ ) {
- $days = $1;
- }
-
- # If this is set, allow cust_main records with nonzero balances
- my $negative = $cgi->param('negative') || 0;
-
- push @where,
- call_range_sub($range_sub, $days, 0, 'offset' => $offset, 'no_as'=>1).
- ($negative ? ' != 0' : ' > 0');
-}
-
-if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
- my $agentnum = $1;
- push @where, "agentnum = $agentnum";
-}
-
-#status (false laziness w/cust_main::search_sql
-
-#prospect active inactive suspended cancelled
-if ( grep { $cgi->param('status') eq $_ } FS::cust_main->statuses() ) {
- my $method = $cgi->param('status'). '_sql';
- #push @where, $class->$method();
- push @where, FS::cust_main->$method();
-}
-
-#here is the agent virtualization
-push @where, $FS::CurrentUser::CurrentUser->agentnums_sql;
-
-my $where = join(' AND ', @where);
-$where = "WHERE $where" if $where;
-
-my $count_sql = "select count(*) from cust_main $where";
-
-my $sql_query = {
- 'table' => 'cust_main',
- 'hashref' => {},
- 'select' => join(',',
- #'cust_main.*',
- 'custnum',
- $range_cols,
- $packages_cols,
- FS::UI::Web::cust_sql_fields(),
- 'payby',
- ),
- 'extra_sql' => $where,
- 'order_by' => "order by coalesce(lower(company), ''), lower(last)",
-};
-
-my $total_sql =
- "SELECT ".
- join(',', map call_range_sub( $range_sub, @$_, 'offset' => $offset, 'sum'=>1 ), @$ranges).
- " FROM cust_main $where";
-
-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 $clink = [ "${p}view/cust_main.cgi?", 'custnum' ];
-
-my (@payby, @pay_head, @pay_labels, @pay_links);
-
-my %payby = map {$_ => 1} $conf->config('payby');
-if(%payby) {
- push @payby, 'CARD' if ($payby{'CARD'} or $payby{'DCRD'});
- push @payby, 'CHEK' if ($payby{'CHEK'} or $payby{'DCHK'});
-}
-else {
- @payby = ('CARD','CHEK')
-}
-
-if($opt{'payment_links'} && $curuser->access_right('Process payment') && @payby) {
- my %label = ( CARD => 'Card',
- CHEK => 'E-Check' );
- push @pay_head, ({nodownload => 1}) foreach @payby;
- $pay_head[0] = { label => 'Process',
- nodownload => 1,
- colspan => scalar(@payby) };
-
- @pay_labels = (map { my $payby = $_;
- my $label = $label{$payby};
- sub {($payby eq $_[0]->payby) ? "<b>$label (on file)</b>" : $label}
- } @payby );
-
- @pay_links = (map { [ "${p}misc/payment.cgi?payby=$_;custnum=", 'custnum' ] }
- @payby );
-}
-
-</%init>
-<%once>
-
-my $conf = new FS::Conf;
-my $curuser = $FS::CurrentUser::CurrentUser;
-
-my $money_char = $conf->config('money_char') || '$';
-
-#Example:
-#
-# my $balance = balance(
-# $start, $end,
-# 'no_as' => 1, #set to true when using in a WHERE clause (supress AS clause)
-# #or 0 / omit when using in a SELECT clause as a column
-# # ("AS balance_$start_$end")
-# 'sum' => 1, #set to true to get a SUM() of the values, for totals
-#
-# #obsolete? options for totals (passed to cust_main::balance_date_sql)
-# 'total' => 1, #set to true to remove all customer comparison clauses
-# 'join' => $join, #JOIN clause
-# 'where' => \@where, #WHERE clause hashref (elements "AND"ed together)
-# )
-
-sub call_range_sub {
- my($range_sub, $startdays, $enddays, %opt) = @_;
-
- my $as = $opt{'no_as'} ? '' : " AS rangecol_${startdays}_$enddays";
-
- my $offset = $opt{'offset'} || 0;
- # Always use $offset - 1day + 1sec = the last second of that day
- my $cutoff = DateTime->now->set(hour => 23, minute => 59, second => 59);
- $cutoff->subtract(days => $offset);
-
- my $start = $cutoff->clone;
- $start->subtract(days => $startdays);
-
- my $end = $cutoff->clone;
- $end->subtract(days => $enddays);
-
- #warn "offset $offset (".$cutoff->epoch."), range $startdays-$enddays (".$start->epoch . '-' . ($enddays ? $end->epoch : '').")\n";
- my $sql = &{$range_sub}( $start->epoch,
- $enddays ? $end->epoch : '',
- $cutoff->epoch ); #%opt?
-
- $sql = "SUM($sql)" if $opt{'sum'};
-
- $sql.$as;
-
-}
-
-sub format_rangecol { #closures help alot
- my $range = shift;
- sub { sprintf( $money_char.'%.2f', shift->get("rangecol_$range") ) };
-}
-
-</%once>