really prevent separate part_pkg query, RT#5083
[freeside.git] / httemplate / view / svc_acct.cgi
index f8c73e5..e87a8ee 100755 (executable)
@@ -79,6 +79,7 @@
 
   Upload: <B><% sprintf("%.3f", $input) %></B> megabytes<BR>
   Download: <B><% sprintf("%.3f", $output) %></B> megabytes<BR>
+  Last Login: <B><% $svc_acct->last_login_text %></B><BR>
 % my $href = qq!<A HREF="${p}search/sqlradius.cgi?svcnum=$svcnum!; 
 
   View session detail:
   </TD></TR></TABLE><BR>
 % } 
 
+% my @part_svc = ();
+% if ($FS::CurrentUser::CurrentUser->access_right('Change customer service')) {
 
-<SCRIPT TYPE="text/javascript">
-function enable_change () {
-  if ( document.OneTrueForm.svcpart.selectedIndex > 1 ) {
-    document.OneTrueForm.submit.disabled = false;
-  } else {
-    document.OneTrueForm.submit.disabled = true;
-  }
-}
-</SCRIPT>
-<FORM NAME="OneTrueForm" ACTION="<%$p%>edit/process/cust_svc.cgi">
-<INPUT TYPE="hidden" NAME="svcnum" VALUE="<% $svcnum %>">
-<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
-% #print qq!<BR><A HREF="../misc/sendconfig.cgi?$svcnum">Send account information</A>!; 
+    <SCRIPT TYPE="text/javascript">
+      function enable_change () {
+        if ( document.OneTrueForm.svcpart.selectedIndex > 1 ) {
+          document.OneTrueForm.submit.disabled = false;
+        } else {
+          document.OneTrueForm.submit.disabled = true;
+        }
+      }
+    </SCRIPT>
+
+    <FORM NAME="OneTrueForm" ACTION="<%$p%>edit/process/cust_svc.cgi">
+    <INPUT TYPE="hidden" NAME="svcnum" VALUE="<% $svcnum %>">
+    <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
+
+%   #print qq!<BR><A HREF="../misc/sendconfig.cgi?$svcnum">Send account information</A>!; 
 % 
-%  my @part_svc = ();
-%  if ( $pkgnum ) { 
-%    @part_svc = grep {    $_->svcdb   eq 'svc_acct'
-%                       && $_->svcpart != $part_svc->svcpart }
-%                $cust_pkg->available_part_svc;
-%  } else {
-%    @part_svc = qsearch('part_svc', {
-%      svcdb    => 'svc_acct',
-%      disabled => '',
-%      svcpart  => { op=>'!=', value=>$part_svc->svcpart },
-%    } );
-%  }
+%   if ( $pkgnum ) { 
+%     @part_svc = grep {    $_->svcdb   eq 'svc_acct'
+%                        && $_->svcpart != $part_svc->svcpart }
+%                 $cust_pkg->available_part_svc;
+%   } else {
+%     @part_svc = qsearch('part_svc', {
+%       svcdb    => 'svc_acct',
+%       disabled => '',
+%       svcpart  => { op=>'!=', value=>$part_svc->svcpart },
+%     } );
+%   }
 %
-
+% }
 
 Service #<B><% $svcnum %></B>
 | <A HREF="<%$p%>edit/svc_acct.cgi?<%$svcnum%>">Edit this service</A>
+
 % if ( @part_svc ) { 
 
 | <SELECT NAME="svcpart" onChange="enable_change()">
@@ -133,6 +138,7 @@ Service #<B><% $svcnum %></B>
 
   </SELECT>
   <INPUT NAME="submit" TYPE="submit" VALUE="Change" disabled>
+
 % } 
 
 
@@ -253,8 +259,12 @@ Service #<B><% $svcnum %></B>
 % foreach my $uf ( keys %ulabel ) {
 %   my $tf = $uf . "_threshold";
 %   if ( $svc_acct->$uf ne '' ) {
-%   my $v = $uf eq 'seconds' ? duration_exact($svc_acct->$uf)
-%                            : FS::UI::bytecount::display_bytecount($svc_acct->$uf);
+%     my $v = $uf eq 'seconds'
+%       #? (($svc_acct->$uf < 0 ? '-' : ''). duration_exact($svc_acct->$uf) )
+%       ? ($svc_acct->$uf < 0 ? '-' : '').
+%         int(abs($svc_acct->$uf)/3600). "hr ".
+%         sprintf("%02d",(abs($svc_acct->$uf)%3600)/60). "min"
+%       : FS::UI::bytecount::display_bytecount($svc_acct->$uf);
     <TR>
       <TD ALIGN="right"><% $ulabel{$uf} %> remaining</TD>
       <TD BGCOLOR="#ffffff"><% $v %></TD>
@@ -310,7 +320,7 @@ Service #<B><% $svcnum %></B>
 %     my($label, $value) = $svc_www->cust_svc->label;
 %     my $link = $p. 'view/svc_www.cgi?'. $svc_www->svcnum;
       <TR>
-        <TD>
+        <TD BGCOLOR="#ffffff">
           <A HREF="<% $link %>"><% "$label: $value" %></A>
         </TD>
       </TR>
@@ -328,8 +338,7 @@ Service #<B><% $svcnum %></B>
 <%init>
 
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('View customer services')
-      || $FS::CurrentUser::CurrentUser->access_right('View customer'); #XXX remove me
+  unless $FS::CurrentUser::CurrentUser->access_right('View customer services');
 
 my $conf = new FS::Conf;
 
@@ -345,7 +354,9 @@ my $svc_acct = qsearchs({
   'table'     => 'svc_acct',
   'addl_from' => $addl_from,
   'hashref'   => { 'svcnum' => $svcnum },
-  'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
+  'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql(
+                            'null_right' => 'View/link unlinked services'
+                          ),
 });
 die "Unknown svcnum" unless $svc_acct;
 
@@ -382,7 +393,9 @@ my @svc_www = qsearch({
   #XXX shit outta luck if you somehow got them linked across agents
   # maybe we should show but not link to them?  kinda makes sense...
   # (maybe a specific ACL for this situation???)
-  'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
+  'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql(
+                            'null_right' => 'View/link unlinked services'
+                          ),
 });
 
 </%init>