From 7f4aff45cd6ef2f630d538294fa9d9c4db4ac4aa Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 18 May 2010 03:25:31 +0000 Subject: [PATCH] add more info to (customer-specific) service report, RT#6180 --- FS/FS/AccessRight.pm | 1 + FS/FS/Conf.pm | 7 ++++ httemplate/search/report_svc_acct.html | 12 +++++++ httemplate/search/svc_acct.cgi | 62 +++++++++++++++++++++++++++++----- 4 files changed, 73 insertions(+), 9 deletions(-) diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm index 1528ed42c..01b9b5819 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -243,6 +243,7 @@ tie my %rights, 'Tie::IxHash', 'List invoices', 'List packages', 'List services', + 'List service passwords', { rightname=> 'List rating data', desc=>'Usage reports', global=>1 }, 'Billing event reports', diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 3adf455b2..693d1f513 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1260,6 +1260,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'report-showpasswords', + 'section' => 'UI', + 'description' => 'This is a terrible idea. Do not enable it. STRONGLY NOT RECOMMENDED. Enables display of passwords on services reports.', + 'type' => 'checkbox', + }, + + { 'key' => 'signupurl', 'section' => 'UI', 'description' => 'if you are using customer-to-customer referrals, and you enter the URL of your signup server CGI, the customer view screen will display a customized link to the signup server with the appropriate customer as referral', diff --git a/httemplate/search/report_svc_acct.html b/httemplate/search/report_svc_acct.html index ee913c4f9..5ebf9de5c 100755 --- a/httemplate/search/report_svc_acct.html +++ b/httemplate/search/report_svc_acct.html @@ -82,6 +82,18 @@ Display options + +% #move to /elements/tr-select-cust_pkg-fields if anything else needs it... + + Package fields + + + + + <% include( '/elements/tr-select-cust-fields.html' ) %> diff --git a/httemplate/search/svc_acct.cgi b/httemplate/search/svc_acct.cgi index 74cdb9918..09d117765 100755 --- a/httemplate/search/svc_acct.cgi +++ b/httemplate/search/svc_acct.cgi @@ -52,8 +52,9 @@ sub timelast { <%init> -die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('List services'); +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" unless $curuser->access_right('List services'); my $link = [ "${p}view/svc_acct.cgi?", 'svcnum' ]; my $link_cust = sub { @@ -68,14 +69,36 @@ my $link_cust = sub { my %search_hash = (); my @extra_sql = (); -my @header = ( '#', 'Service', 'Account', 'UID', 'Last Login' ); -my @fields = ( 'svcnum', 'svc', 'email', 'uid', 'last_login_text' ); -my @links = ( $link, $link, $link, $link, $link ); -my $align = 'rlllr'; -my @color = ( '', '', '', '', '' ); -my @style = ( '', '', '', '', '' ); +my @header = ( '#', 'Service', 'Account' ); +my @fields = ( 'svcnum', 'svc', 'email' ); +my @links = ( $link, $link, $link ); +my $align = 'rll'; +my @color = ( '', '', '' ); +my @style = ( '', '', '' ); my @footer = (); +my $conf = new FS::Conf; + +if ( $conf->exists('report-showpasswords') #its a terrible idea + && $curuser->access_right('List service passwords') #but if you insist... + ) +{ + push @header, 'Password'; + push @fields, 'get_cleartext_password'; + push @links, $link; + $align .= 'l'; + push @color, ''; + push @style, ''; +} + +#maybe hide the UID if a flag isn't passed... its much less useful these days +push @header, 'Real Name', 'UID', 'Last Login'; +push @fields, 'finger', 'uid', 'last_login_text'; +push @links, $link, $link, $link; +$align .= 'llr'; +push @color, '', '', ''; +push @style, '', '', ''; + for (qw( domain domsvc agentnum custnum popnum svcpart cust_fields )) { $search_hash{$_} = $cgi->param($_) if length($cgi->param($_)); } @@ -115,7 +138,6 @@ if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) { sub { format_time($tot_time) }, #time ); - my $conf = new FS::Conf; if ( $conf->exists('svc_acct-display_paid_time_remaining') ) { my $tot_paid_time = 0; my %tot = ( '30'=>0, '60'=>0, '90'=>0 ); @@ -254,6 +276,28 @@ if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) { } +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; + +$cgi->param('cust_pkg_fields') =~ /^([\w\,]*)$/ or die "bad cust_pkg_fields"; +my @pkg_fields = split(',', $1); +foreach my $pkg_field ( @pkg_fields ) { + ( my $header = ucfirst($pkg_field) ) =~ s/_/ /; #:/ + push @header, $header; + + #not the most efficient to do it every field, but this is of niche use. so far + push @fields, sub { my $svc_acct = shift; + my $cust_pkg = $svc_acct->cust_svc->cust_pkg or return ''; + my $value = $cust_pkg->get($pkg_field);#closures help alot + $value ? time2str('%b %d %Y', $value ) : ''; + }; + + push @links, ''; + $align .= 'c'; + push @color, ''; + push @style, ''; + +} + push @header, FS::UI::Web::cust_header($cgi->param('cust_fields')); push @fields, \&FS::UI::Web::cust_fields, push @links, map { $_ ne 'Cust. Status' ? $link_cust : '' } -- 2.11.0