diff options
| -rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 7 | ||||
| -rw-r--r-- | FS/FS/Schema.pm | 11 | ||||
| -rw-r--r-- | FS/FS/part_svc.pm | 1 | ||||
| -rwxr-xr-x | httemplate/browse/part_svc.cgi | 10 | ||||
| -rwxr-xr-x | httemplate/edit/part_svc.cgi | 22 | 
5 files changed, 44 insertions, 7 deletions
| diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 2e60eda3b..c2c295e27 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -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' ) { diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 782597313..a592efd6b 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1805,11 +1805,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, '', '', +        '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' => [], diff --git a/FS/FS/part_svc.pm b/FS/FS/part_svc.pm index 19a71df15..65a76e400 100644 --- a/FS/FS/part_svc.pm +++ b/FS/FS/part_svc.pm @@ -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; diff --git a/httemplate/browse/part_svc.cgi b/httemplate/browse/part_svc.cgi index 1cd0943bb..26d090a3d 100755 --- a/httemplate/browse/part_svc.cgi +++ b/httemplate/browse/part_svc.cgi @@ -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">  % diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index e899ad073..c03de5cce 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -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' : '' %>> Disable new orders<BR> +  <INPUT TYPE="checkbox" NAME="preserve" VALUE="Y"<% $hashref->{'preserve'} eq 'Y' ? ' CHECKED' : '' %>> Preserve this service on package cancellation<BR> + +  <INPUT TYPE="hidden" NAME="svcpart" VALUE="<% $hashref->{svcpart} %>">  <BR> @@ -80,6 +98,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; @@ -376,7 +395,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', | 
