From d135a6588851deef85924e059cea62037fbc09d0 Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 18 May 2010 03:25:41 +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 03b98763a..fbe549693 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -227,6 +227,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 4fe92c5b2..7f914901d 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1259,6 +1259,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 e2abf5625..1675cfb03 100755 --- a/httemplate/search/svc_acct.cgi +++ b/httemplate/search/svc_acct.cgi @@ -51,8 +51,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 { @@ -67,12 +68,34 @@ 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 $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($_)); @@ -105,7 +128,6 @@ if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) { push @color, ''; push @style, ''; - my $conf = new FS::Conf; if ( $conf->exists('svc_acct-display_paid_time_remaining') ) { push @header, 'Paid time', 'Last 30', 'Last 60', 'Last 90'; push @fields, @@ -235,6 +257,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