add selfservice_access selection to part_svc, RT#15628
authorivan <ivan>
Thu, 5 Jan 2012 06:03:59 +0000 (06:03 +0000)
committerivan <ivan>
Thu, 5 Jan 2012 06:03:59 +0000 (06:03 +0000)
FS/FS/ClientAPI/MyAccount.pm
FS/FS/Schema.pm
FS/FS/part_svc.pm
httemplate/browse/part_svc.cgi
httemplate/edit/part_svc.cgi

index 2e60eda..c2c295e 100644 (file)
@@ -1422,6 +1422,9 @@ sub list_svcs {
     next if $pkgnum && $cust_pkg->pkgnum != $pkgnum;
     push @cust_svc, @{[ $cust_pkg->cust_svc ]}; #@{[ ]} to force array context
   }
+
+  @cust_svc = grep { $_->part_svc->selfservice_access ne 'hidden' } @cust_svc;
+
   if ( $p->{'svcdb'} ) {
     my $svcdb = ref($p->{'svcdb'}) eq 'HASH'
                   ? $p->{'svcdb'}
@@ -1445,7 +1448,8 @@ sub list_svcs {
       map { 
             my $svc_x = $_->svc_x;
             my($label, $value) = $_->label;
-            my $svcdb = $_->part_svc->svcdb;
+            my $part_svc = $_->part_svc;
+            my $svcdb = $part_svc->svcdb;
             my $cust_pkg = $_->cust_pkg;
             my $part_pkg = $cust_pkg->part_pkg;
 
@@ -1455,6 +1459,7 @@ sub list_svcs {
               'label'      => $label,
               'value'      => $value,
               'pkg_status' => $cust_pkg->status,
+              'readonly'   => ( $part_svc->selfservice_access eq 'readonly' ),
             );
 
             if ( $svcdb eq 'svc_acct' ) {
index 78d88dd..d270dba 100644 (file)
@@ -1802,12 +1802,12 @@ sub tables_hashref {
 
     'part_svc' => {
       'columns' => [
-        'svcpart',      'serial',     '',        '', '', '', 
-        'svc',         'varchar',     '',   $char_d, '', '', 
-        'svcdb',       'varchar',     '',   $char_d, '', '', 
-        'disabled',       'char', 'NULL',         1, '', '', 
-        'preserve',       'char', 'NULL',         1, '', '',
-        #'no_selfservice', 'char', 'NULL',         1, '', '',
+        'svcpart',             'serial',     '',        '', '', '', 
+        'svc',                'varchar',     '',   $char_d, '', '', 
+        'svcdb',              'varchar',     '',   $char_d, '', '', 
+        'disabled',              'char', 'NULL',         1, '', '', 
+        'preserve',              'char', 'NULL',         1, '', '',
+        'selfservice_access', 'varchar', 'NULL',   $char_d, '', '',
       ],
       'primary_key' => 'svcpart',
       'unique' => [],
index dea115c..c155408 100644 (file)
@@ -386,6 +386,7 @@ sub check {
     || $self->ut_alpha('svcdb')
     || $self->ut_enum('disabled', [ '', 'Y' ] )
     || $self->ut_enum('preserve', [ '', 'Y' ] )
+    || $self->ut_enum('selfservice_access', [ '', 'hidden', 'readonly' ] )
   ;
   return $error if $error;
 
index 1cd0943..26d090a 100755 (executable)
@@ -51,6 +51,8 @@ function part_export_areyousure(href) {
 
     <TH CLASS="grid" BGCOLOR="#cccccc"><A HREF="<% do { $cgi->param('orderby', 'active'); $cgi->self_url; } %>"><FONT SIZE=-1>Customer<BR>Services</FONT></A></TH>
 
+    <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Customer<BR>Self-service</FONT></TH>
+
     <TH CLASS="grid" BGCOLOR="#cccccc">Export</TH>
 
     <TH CLASS="grid" BGCOLOR="#cccccc">Field</TH>
@@ -119,6 +121,14 @@ function part_export_areyousure(href) {
 
     </TD>
 
+% tie my %selfservice_access, 'Tie::IxHash', #false laziness w/edit/part_svc.cgi
+%   ''         => 'Yes',
+%   'hidden'   => 'Hidden',
+%   'readonly' => 'Read-only',
+% ;
+    <TD ROWSPAN=<% $rowspan %> CLASS="grid" BGCOLOR="<% $bgcolor %>" ALIGN="center">
+      <% $selfservice_access{$part_svc->selfservice_access} %></TD>
+
     <TD ROWSPAN=<% $rowspan %> CLASS="inv" BGCOLOR="<% $bgcolor %>">
       <TABLE CLASS="inv">
 %
index 10b4c77..fae8961 100755 (executable)
@@ -9,8 +9,26 @@
       Service Part #<% $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %>
 <BR><BR>
 Service  <INPUT TYPE="text" NAME="svc" VALUE="<% $hashref->{svc} %>"><BR>
+
+Self-service access:
+<SELECT NAME="selfservice_access">
+% tie my %selfservice_access, 'Tie::IxHash', #false laziness w/browse/part_svc
+%   ''         => 'Yes',
+%   'hidden'   => 'Hidden',
+%   'readonly' => 'Read-only',
+% ;
+% for (keys %selfservice_access) {
+  <OPTION VALUE="<% $_ %>"
+          <% $_ eq $hashref->{'selfservice_access'} ? 'SELECTED' : '' %>
+  ><% $selfservice_access{$_} %>
+% }
+</SELECT><BR>
+
 <INPUT TYPE="checkbox" NAME="disabled" VALUE="Y"<% $hashref->{disabled} eq 'Y' ? ' CHECKED' : '' %>>&nbsp;Disable new orders<BR>
+
 <INPUT TYPE="checkbox" NAME="preserve" VALUE="Y"<% $hashref->{'preserve'} eq 'Y' ? ' CHECKED' : '' %>>&nbsp;Preserve this service on package cancellation<BR>
+
+
 <INPUT TYPE="hidden" NAME="svcpart" VALUE="<% $hashref->{svcpart} %>">
 
 <BR>
@@ -67,6 +85,7 @@ Service  <INPUT TYPE="text" NAME="svc" VALUE="<% $hashref->{svc} %>"><BR>
 %    #'form_action'    => 'process/part_svc.cgi',
 %    'form_action'    => 'part_svc.cgi', #self
 %    'form_text'      => [ qw( svc svcpart ) ],
+%    'form_select'    => [ 'selfservice_access' ],
 %    'form_checkbox'  => [ 'disabled', 'preserve' ],
 %    'layer_callback' => sub {
 %      my $layer = shift;
@@ -363,7 +382,8 @@ Service  <INPUT TYPE="text" NAME="svc" VALUE="<% $hashref->{svc} %>"><BR>
 %
 %      $html .= include('/elements/progress-init.html',
 %                         $layer, #form name
-%                         [ qw(svc svcpart disabled preserve exportnum),
+%                         [ qw(svc svcpart selfservice_access disabled preserve
+%                              exportnum),
 %                           @fields ],
 %                         'process/part_svc.cgi',
 %                         $p.'browse/part_svc.cgi',