service refactor!
[freeside.git] / httemplate / edit / svc_acct.cgi
index 60ca24d..f42c146 100755 (executable)
@@ -3,6 +3,8 @@
 %my $conf = new FS::Conf;
 %my @shells = $conf->config('shells');
 %
+%my $curuser = $FS::CurrentUser::CurrentUser;
+%
 %my($svcnum, $pkgnum, $svcpart, $part_svc, $svc_acct, @groups);
 %if ( $cgi->param('error') ) {
 %
 %  die "No part_svc entry for svcpart $svcpart!" unless $part_svc;
 %  @groups = $cgi->param('radius_usergroup');
 %
-%} else {
+%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding
 %
-%  my($query) = $cgi->keywords;
-%  if ( $query =~ /^(\d+)$/ ) { #editing
-%    $svcnum=$1;
-%    $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svcnum})
-%      or die "Unknown (svc_acct) svcnum!";
+%  $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum';
+%  $pkgnum = $1;
+%  $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart';
+%  $svcpart = $1;
 %
-%    my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
-%      or die "Unknown (cust_svc) svcnum!";
+%  $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
+%  die "No part_svc entry!" unless $part_svc;
 %
-%    $pkgnum=$cust_svc->pkgnum;
-%    $svcpart=$cust_svc->svcpart;
+%    $svc_acct = new FS::svc_acct({svcpart => $svcpart}); 
 %
-%    $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } );
-%    die "No part_svc entry for svcpart $svcpart!" unless $part_svc;
+%    $svcnum='';
 %
-%    @groups = $svc_acct->radius_groups;
+%} else { #editing
 %
-%  } else { #adding
+%  my($query) = $cgi->keywords;
+%  $query =~ /^(\d+)$/ or die "unparsable svcnum";
+%  $svcnum=$1;
+%  $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svcnum})
+%    or die "Unknown (svc_acct) svcnum!";
 %
-%    foreach $_ (split(/-/,$query)) {
-%      $pkgnum=$1 if /^pkgnum(\d+)$/;
-%      $svcpart=$1 if /^svcpart(\d+)$/;
-%    }
-%    $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } );
-%    die "No part_svc entry for svcpart $svcpart!" unless $part_svc;
+%  my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
+%    or die "Unknown (cust_svc) svcnum!";
 %
-%    $svc_acct = new FS::svc_acct({svcpart => $svcpart}); 
+%  $pkgnum=$cust_svc->pkgnum;
+%  $svcpart=$cust_svc->svcpart;
 %
-%    $svcnum='';
+%  $part_svc = qsearchs( 'part_svc', { 'svcpart' => $svcpart } );
+%  die "No part_svc entry for svcpart $svcpart!" unless $part_svc;
+%
+%  @groups = $svc_acct->radius_groups;
 %
-%  }
 %}
 %
 %my( $cust_pkg, $cust_main ) = ( '', '' );
@@ -216,7 +218,14 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
 %    }
 %  }
 %
-%  if ($cust_pkg && !$conf->exists('svc_acct-alldomains') ) {
+%  if ( $part_svc->part_svc_column('domsvc')->columnflag eq 'S' ) {
+%    foreach my $domain
+%              (split(',',$part_svc->part_svc_column('domsvc')->columnvalue)) {
+%      my $svc_domain =
+%        qsearchs('svc_domain', { 'svcnum' => $domain } );
+%     $svc_domain{$svc_domain->svcnum} = $svc_domain if $svc_domain;
+%    }
+%  }elsif ($cust_pkg && !$conf->exists('svc_acct-alldomains') ) {
 %    my @cust_svc =
 %      map { qsearch('cust_svc', { 'pkgnum' => $_->pkgnum } ) }
 %          qsearch('cust_pkg', { 'custnum' => $cust_pkg->custnum } );
@@ -376,6 +385,24 @@ Service # <% $svcnum ? "<B>$svcnum</B>" : " (NEW)" %><BR>
   </TR>
 % } 
 %
+% if ( $curuser->access_right('Edit usage') ) { 
+%   my %label = ( seconds => 'Seconds',
+%                 upbytes => 'Upload bytes',
+%                 downbytes => 'Download bytes',
+%                 totalbytes => 'Total bytes',
+%               );
+%   foreach my $uf (keys %label) {
+%     my $tf = $uf . "_threshold";
+%     if ( $svc_acct->$tf ne '' ) { 
+
+  <TR>
+    <TD ALIGN="right"><% $label{$uf} %> remaining</TD>
+    <TD><INPUT TYPE="text" NAME="<% $uf %>" VALUE="<% $svc_acct->$uf %>"></TD>
+  </TR>
+%     } 
+%   } 
+% } 
+%
 %foreach my $r ( grep { /^r(adius|[cr])_/ } fields('svc_acct') ) {
 %  $r =~ /^^r(adius|[cr])_(.+)$/ or next; #?
 %  my $a = $2;