X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2Fsqlradius_usage.html;h=b810a8bf641532e3872a6407d7f15e1639798fb4;hb=5e824e1b4862fe424ebbf0644ead3b3ba41aeb5e;hp=15118c13426cb99cf4f25fa11963e550b3b06130;hpb=27c3f67c2cc601bfc97110749b347c0fb0252f35;p=freeside.git
diff --git a/httemplate/search/sqlradius_usage.html b/httemplate/search/sqlradius_usage.html
index 15118c134..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;
@@ -271,11 +286,7 @@ my $order_by_sql = {
my $link_pkg = sub {
my $self = shift;
- my $frag = 'cust_pkg'. $self->pkgnum; #hack for IE ignoring real #fragment
- [ "${p}view/cust_main.cgi?custnum=".$self->custnum.
- "show=packages;fragment=$frag#cust_pkg",
- 'pkgnum'
- ];
+ [ "${p}view/cust_pkg.cgi?", 'real_pkgnum' ];
};
my $link_svc = sub {