show data usage report link only for customers that might have data usage, #42310
authorMark Wells <mark@freeside.biz>
Mon, 22 Aug 2016 20:41:13 +0000 (13:41 -0700)
committerMark Wells <mark@freeside.biz>
Mon, 22 Aug 2016 21:20:59 +0000 (14:20 -0700)
FS/FS/cust_main/Packages.pm
httemplate/view/cust_main/menu.html

index ee5bdda..e913402 100644 (file)
@@ -748,6 +748,28 @@ sub num_pkgs {
   $sth->fetchrow_arrayref->[0];
 }
 
+=item num_usage_pkgs
+
+Returns the number of packages for this customer that have services that
+can have RADIUS usage statistics.
+
+=cut
+
+sub num_usage_pkgs {
+  my $self = shift;
+  # have to enumerate exportnums but it's not bad
+  my @exportnums = map { $_->exportnum }
+                   grep { $_->can('usage_sessions') }
+                   qsearch('part_export');
+  return 0 if !@exportnums;
+  my $in_exportnums = join(',', @exportnums);
+  my $sql = "SELECT COUNT(DISTINCT pkgnum) FROM cust_pkg
+    JOIN cust_svc USING (pkgnum)
+    JOIN export_svc USING (svcpart)
+    WHERE exportnum IN( $in_exportnums ) AND custnum = ?";
+  FS::Record->scalar_sql($sql, $self->custnum);
+}
+
 =item display_recurring
 
 Returns an array of hash references, one for each recurring freq
index 7c7303b..695336c 100644 (file)
@@ -397,6 +397,7 @@ my @menu = (
       actionlabel => 'Data usage report',
       width   => 480,
       height  => 245,
+      condition => sub { shift->num_usage_pkgs > 0 },
     },
     {
       label => 'View CDRs',