X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fsqlradius_usage.html;fp=httemplate%2Fsearch%2Fsqlradius_usage.html;h=b810a8bf641532e3872a6407d7f15e1639798fb4;hp=846b50c2c58967acc7822a66f314afad16d40365;hb=0d9ffbafedc170c79ef5587af8c836579eb1c6fc;hpb=d82acd06f8f8a431c69c3b14e3c5cb8252edb02d
diff --git a/httemplate/search/sqlradius_usage.html b/httemplate/search/sqlradius_usage.html
index 846b50c2c..b810a8bf6 100644
--- a/httemplate/search/sqlradius_usage.html
+++ b/httemplate/search/sqlradius_usage.html
@@ -5,8 +5,8 @@
% $cgi->param('agentnum', $agent->agentnum); #for download links
<% $agent->agent %>
- <& cust_pkg_sqlradius_usage.html,
- exports => @exports,
+ <& sqlradius_usage.html,
+ exports => \@exports,
agentnum => $agent->agentnum,
nohtmlheader => 1,
download_label => 'Download this section',
@@ -154,6 +154,17 @@ my %usage_param = (
my @total_usage = ('', 0, 0, 0); # username, input, output, input + output
+# remember which exports apply to which services, so we don't inappropriately
+# ask the wrong ones for usage stats
+my %export_svcparts;
+foreach my $export (@exports) {
+ my %seen;
+ foreach ($export->export_svc) {
+ $seen{ $_->svcpart } = 1;
+ }
+ $export_svcparts{ $export->exportnum } = \%seen;
+}
+
# a single sub to collect data for each package, aggregated across both
# services and exports. when we add per-service breakdown, this should also
# keep the per-service data, but not needed yet
@@ -163,16 +174,20 @@ my $cust_pkg_stats_sub = sub {
my ($upbytes, $downbytes, $totalbytes) = (0, 0, 0);
my $display_username;
foreach my $svcnum ( split(',', $cust_pkg->get('svcnums_concat')) ) {
+ my $cust_svc = FS::cust_svc->by_key($svcnum);
+ my $svc = $cust_svc->svc_x;
foreach my $export (@exports) {
- my $svc = FS::cust_svc->by_key($svcnum)->svc_x;
- my $username = $export->export_username($svc);
- my $usage = $export->usage_sessions({ %usage_param, 'svc' => $svc });
- # returns arrayref with one row
- $upbytes += $usage->[0]->{'acctinputoctets'};
- $downbytes += $usage->[0]->{'acctoutputoctets'};
- # in combined services mode with multiple users/MAC addresses per
- # package, this will just show one of them arbitrarily.
- $display_username ||= $username;
+ if ( $export_svcparts{ $export->exportnum }{ $cust_svc->svcpart } ) {
+ my $username = $export->export_username($svc);
+ my $usage = $export->usage_sessions({ %usage_param, 'svc' => $svc });
+ # returns arrayref with one row
+ $upbytes += $usage->[0]->{'acctinputoctets'};
+ $downbytes += $usage->[0]->{'acctoutputoctets'};
+ # in combined services mode with multiple users/MAC addresses per
+ # package, this will just show one of them arbitrarily.
+ $display_username ||= $username;
+ }
+ # else this export doesn't apply so skip it
}
}
$total_usage[1] += $upbytes;