From f75a63a2fdf3fa154b5865f62387380bea1b134f Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Wed, 19 Apr 2017 17:16:23 -0700 Subject: [PATCH] customer links on customer class browse --- FS/FS/cust_class.pm | 28 ++++++++++++++++++++ httemplate/browse/cust_class.html | 56 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/FS/FS/cust_class.pm b/FS/FS/cust_class.pm index fdc92baf4..a71bc16bf 100644 --- a/FS/FS/cust_class.pm +++ b/FS/FS/cust_class.pm @@ -3,6 +3,7 @@ use base qw( FS::class_Common ); use strict; use FS::cust_category; +use FS::Record qw( dbh ); =head1 NAME @@ -117,8 +118,35 @@ sub cust_category { Returns the category name associated with this class, or false if there is none. +=item num_prospect + +=item num_ordered + +=item num_active + +=item num_inactive + +=item num_suspended + +=item num_cancelled + =cut +sub num_sql { + my( $self, $sql ) = @_; + my $statement = "SELECT COUNT(*) FROM cust_main WHERE classnum = ? AND $sql"; + my $sth = dbh->prepare($statement) or die dbh->errstr." preparing $statement"; + $sth->execute($self->classnum) or die $sth->errstr. " executing $statement"; + $sth->fetchrow_arrayref->[0]; +} + +sub num_prospect { shift->num_sql(FS::cust_main->prospect_sql) } +sub num_ordered { shift->num_sql(FS::cust_main->ordered_sql) } +sub num_active { shift->num_sql(FS::cust_main->active_sql) } +sub num_inactive { shift->num_sql(FS::cust_main->inactive_sql) } +sub num_suspended { shift->num_sql(FS::cust_main->susp_sql) } +sub num_cancelled { shift->num_sql(FS::cust_main->cancel_sql) } + =back =head1 BUGS diff --git a/httemplate/browse/cust_class.html b/httemplate/browse/cust_class.html index 70a279a05..a35c045cf 100644 --- a/httemplate/browse/cust_class.html +++ b/httemplate/browse/cust_class.html @@ -23,12 +23,62 @@ my $html_init = 'Customer classes define groups of customer for reporting.

'. qq!Add a customer class

!; +#cust_class-disable_counts? or just migrate this to one config probably +#my $disable_counts = $conf->exists('agent-disable_counts'); +my $disable_counts = 0; + +my $customers_sub = sub { + my $cust_class = shift; + + my $cust_main_link = $p. 'search/cust_main.html?'. + 'classnum='. $cust_class->classnum; + + #false laziness w/agent.cgi + my $OUT = ''; + + my @cust_status = + qw( prospect inactive ordered active suspended cancelled ); + my %PL = ( 'prospect' => 'prospects', ); + #my %link = ( 'cancelled' => 'showcancelledcustomers=1&cancelled' ); + my $statuscolor = FS::cust_main->statuscolors; + + foreach my $status ( @cust_status ) { + my $meth = 'num_'. $status; + #my $link = exists($link{$status}) ? $link{$status} : $status; + + $OUT .= ''; + my $num = 0; + unless ( $disable_counts ) { + $num = $cust_class->$meth(); + $OUT .= ''; + } + $OUT .= ''; + + } + + $OUT .= '
'. + ''. + $num. ' '; + + if ( $num || $disable_counts ) { + $OUT .= ''; + } + $OUT .= exists($PL{$status}) ? $PL{$status} : $status; + if ($num || $disable_counts ) { + $OUT .= ''; + } + + $OUT .= '
'; + + $OUT; + +}; + my $count_query = 'SELECT COUNT(*) FROM cust_class'; my $link = [ $p.'edit/cust_class.html?', 'classnum' ]; - -my $header = [ '#', 'Class' ]; -my $fields = [ 'classnum', 'classname' ]; +my $header = [ '#', 'Class', 'Customers' ]; +my $fields = [ 'classnum', 'classname', $customers_sub, ]; my $links = [ $link, $link ]; my $cat_query = 'SELECT COUNT(*) FROM cust_class where categorynum IS NOT NULL'; -- 2.11.0