RT#42380: Show usage for broadband services in selfservice portal
[freeside.git] / fs_selfservice / FS-SelfService / cgi / view_usage.html
index 35d1289..07ccfed 100644 (file)
@@ -1,18 +1,27 @@
-<%= $url = "$selfurl?session=$session_id;action=";
+<%= $url = "$selfurl?action=";
     %by_pkg_label = (); # not used yet, but I'm sure it will be...
-    @svc_acct = ();
     @svc_phone = ();
     @svc_port = ();
-
-    foreach (@svcs) {
-      $by_pkg_label{ $_->{pkg_label} } ||= [];
-      push @{ $by_pkg_label{ $_->{pkg_label} } }, $_;
-      if ( $_->{svcdb} eq 'svc_acct' ) {
-        push @svc_acct, $_;
-      } elsif ( $_->{svcdb} eq 'svc_phone' ) {
-        push @svc_phone, $_;
-      } elsif ( $_->{svcdb} eq 'svc_port' ) {
-        push @svc_port, $_;
+    @svc_pbx = ();
+    @bytes_svcs = (); # contains svc_acct and svc_broadband
+    @bytes_cols = qw(seconds_used seconds upbytes_used upbytes downbytes_used downbytes totalbytes_used totalbytes);
+    %bytes_show = map { $_ => 0 } @bytes_cols;
+
+    foreach my $svc (@svcs) {
+      $by_pkg_label{ $svc->{pkg_label} } ||= [];
+      push @{ $by_pkg_label{ $svc->{pkg_label} } }, $svc;
+
+      if (( $svc->{svcdb} eq 'svc_acct' ) || ( $svc->{svcdb} eq 'svc_broadband' )) {
+        foreach my $field (@bytes_cols) {
+          $bytes_show{$field} = 1 if length($svc->{$field}) or (($field !~ /_used$/) && $svc->{'recharge_'.$field});
+        }
+        push @bytes_svcs, $svc;
+      } elsif ( $svc->{svcdb} eq 'svc_phone' ) {
+        push @svc_phone, $svc;
+      } elsif ( $svc->{svcdb} eq 'svc_port' ) {
+        push @svc_port, $svc;
+      } elsif ( $svc->{svcdb} eq 'svc_pbx' ) {
+        push @svc_pbx, $svc;
       }
     }
     '';
   $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!;
 } ''; %>
 
-<%= if ( @svc_acct ) {
-      $OUT.= '<TABLE BGCOLOR="#cccccc">
-                <TR>
-                  <TH ALIGN="left">Account</TH>
-                  <TH ALIGN="right">Time remaining</TH>
-                  <TH ALIGN="right">Upload remaining</TH>
-                  <TH ALIGN="right">Download remaining</TH>
-                  <TH ALIGN="right">Total remaining</TH>
-                </TR>';
-    } else {
-      $OUT .= '';
+<%= if ( @bytes_svcs ) {
+      $OUT .= '<TABLE BGCOLOR="#cccccc"><TR>';
+      $OUT .= '<TH ALIGN="left">Account</TH>';
+      $OUT .= '<TH ALIGN="right">Time used</TH>' if $bytes_show{'seconds_used'};
+      $OUT .= '<TH ALIGN="right">Time remaining</TH>' if $bytes_show{'seconds'};
+      $OUT .= '<TH ALIGN="right">Upload used</TH>' if $bytes_show{'upbytes_used'};
+      $OUT .= '<TH ALIGN="right">Upload remaining</TH>' if $bytes_show{'upbytes'};
+      $OUT .= '<TH ALIGN="right">Download used</TH>' if $bytes_show{'downbytes_used'};
+      $OUT .= '<TH ALIGN="right">Download remaining</TH>' if $bytes_show{'downbytes'};
+      $OUT .= '<TH ALIGN="right">Total used</TH>' if $bytes_show{'totalbytes_used'};
+      $OUT .= '<TH ALIGN="right">Total remaining</TH>' if $bytes_show{'totalbytes'};
+      $OUT .= '</TR>';
     }
 %>
 
-<%= foreach my $svc ( @svc_acct ) {
-      my $link = "${url}view_usage_details;".
-        "svcnum=$svc->{'svcnum'};beginning=0;ending=0";
+<%= foreach my $svc ( @bytes_svcs ) {
+    my $link = "${url}view_usage_details;".
+      "svcnum=$svc->{'svcnum'};beginning=0;ending=0";
     my $username = $svc->{'value'};
     $username =~ s/@.*?$//g if $view_usage_nodomain;
-  $OUT .= '<TR><TD>';
-    $OUT .= qq!<A HREF="$link">!. $svc->{'label'}. ': '. $username .'</A>';
-    $OUT .= '</TD><TD ALIGN="right">';
-    $OUT .= $svc->{'seconds'};
-    $OUT .= '</TD><TD ALIGN="right">';
-    $OUT .=  $svc->{'upbytes'};
-    $OUT .= '</TD><TD ALIGN="right">';
-    $OUT .= $svc->{'downbytes'};
-    $OUT .= '</TD><TD ALIGN="right">';
-    $OUT .= $svc->{'totalbytes'};
-  $OUT .= '</TD></TR>';
+    $OUT .= '<TR>';
+    $OUT .= '<TD>' . qq!<A HREF="$link">!. $svc->{'label'}. ': '. $username .'</A></TD>';
+    foreach my $field (@bytes_cols) {
+      $OUT .= '<TD ALIGN="right">' . $svc->{$field} . '</TD>' if $bytes_show{$field};
+    }
     if ( $svc->{'recharge_amount'} ) {
       my $link = "${url}process_order_recharge;".
                  "svcnum=$svc->{'svcnum'}";
-    $OUT .= '<TR><TD ALIGN="right">';
+      $OUT .= '<TR><TD ALIGN="right">';
       $OUT .= qq!<A HREF="$link">!.'Recharge for $';
       $OUT .= $svc->{'recharge_amount'} . '</A> with';
-      $OUT .= '</TD><TD ALIGN="right">';
-      $OUT .= $svc->{'recharge_seconds'} if $svc->{'recharge_seconds'};
-      $OUT .= '</TD><TD ALIGN="right">';
-      $OUT .=  $svc->{'recharge_upbytes'} if $svc->{'recharge_upbytes'};
-      $OUT .= '</TD><TD ALIGN="right">';
-      $OUT .= $svc->{'recharge_downbytes'} if $svc->{'recharge_downbytes'};
-      $OUT .= '</TD><TD ALIGN="right">';
-      $OUT .= $svc->{'recharge_totalbytes'} if $svc->{'recharge_totalbytes'};
-    $OUT .= '</TD></TR>';
+      $OUT .= '</TD>';
+      foreach my $field ( qw(seconds upbytes downbytes totalbytes) ) {
+        $OUT .= '<TD></TD>' if $bytes_show{$field.'_used'};
+        if ($bytes_show{$field}) {
+          $OUT .= '<TD ALIGN="right">';
+          $OUT .= $svc->{'recharge_'.$field} if $svc->{'recharge_'.$field};
+          $OUT .= '</TD>';
+        }
+      }
+      $OUT .= '</TR>';
     }
   }
 %>
 
-<%= scalar(@svc_acct) ? '</TABLE><BR><BR>' : '' %>
+<%= scalar(@bytes_svcs) ? '</TABLE><BR><BR>' : '' %>
 
-<%= if ( @svc_phone ) {
+<%= if ( @svc_phone or @svc_pbx ) {
       %any = ();
       for my $dir (qw(outbound inbound)) {
-        $any{$dir} = grep { $_->{$dir} } @svc_phone;
+        $any{$dir} = grep { $_->{$dir} } (@svc_phone, @svc_pbx);
       }
       $OUT.= '<FONT SIZE="4">Call usage</FONT><BR><BR>
               <TABLE BGCOLOR="#cccccc" STYLE="display:inline-block">
     }
 %>
 
-<%= foreach my $svc_phone ( @svc_phone ) {
-      my $link = "${url}view_cdr_details;".
-        "svcnum=$svc_phone->{'svcnum'};beginning=0;ending=0";
-  $OUT .= '<TR><TD>'. $svc_phone->{'label'}. ': '. $svc_phone->{'value'};
+<%= foreach my $svc_x ( @svc_phone, @svc_pbx ) {
+  my $link = $url . 'view_cdr_details;' .
+          'svcnum='.$svc_x->{'svcnum'}.
+          ';beginning=0;ending=0';
+  $OUT .= '<TR><TD>'. $svc_x->{'label'}. ': '. $svc_x->{'value'};
   $OUT .= '</TD>';
   # usage summary w/ links
   for my $dir (qw(outbound inbound)) {
     if ( $dir eq 'inbound' ) {
       $link .= ';inbound=1';
     }
-    if ( $svc_phone->{$dir} ) {
+    if ( $svc_x->{$dir} ) {
       $OUT .= '<TD ALIGN="right">'.qq!<A HREF="$link">! .
         sprintf('%d calls (%.0f minutes)',
-          $svc_phone->{$dir}->{'count'},
-          $svc_phone->{$dir}->{'duration'} / 60
+          $svc_x->{$dir}->{'count'},
+          $svc_x->{$dir}->{'duration'} / 60
         ) .
         '</A></TD>';
     } elsif ( $any{$dir} )  {
             '<TD COLSPAN=4>* shared among all your phone plans</TD></TR>';
   }
 }
-if ( scalar(@svc_phone) or scalar(@usage_pools) ) {
+if ( @svc_phone or @svc_pbx or @usage_pools ) {
   $OUT .= '</TABLE><BR><BR>';
 }
 '';
@@ -196,8 +202,7 @@ foreach my $svc_port ( @svc_port ) {
   $OUT .= '<TR><TD>'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'</TD>';
   $OUT .= qq! <TD><FORM ACTION="$url" METHOD="GET">
                <INPUT TYPE="hidden" name="svcnum" value="$svcnum">
-               <INPUT TYPE="hidden" name="action" value="view_port_graph">  
-               <INPUT TYPE="hidden" name="session" value="$session_id">  !;
+               <INPUT TYPE="hidden" name="action" value="view_port_graph"> !; 
   $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum)
        .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum)
        .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum)
@@ -218,3 +223,4 @@ foreach my $svc_port ( @svc_port ) {
 
 </TD></TR></TABLE>
 <%= include('footer') %>
+