X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_svc.cgi;h=8ca0196497f58d1c9d84da016e2ec5d571dde495;hb=fb8915cce4be9520c00cc53c659e34abfb6172e1;hp=940ea8d25bc0fcbc8bea1fe6b84ab56e8e1d69d5;hpb=89da4b96c4e2fce7079be8d2729750c088f8035b;p=freeside.git
diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi
index 940ea8d25..8ca019649 100755
--- a/httemplate/edit/part_svc.cgi
+++ b/httemplate/edit/part_svc.cgi
@@ -9,27 +9,12 @@
Service Part #<% $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %>
Service
-Disable new orders {disabled} eq 'Y' ? ' CHECKED' : '' %>>
+{disabled} eq 'Y' ? ' CHECKED' : '' %>> Disable new orders
+{'preserve'} eq 'Y' ? ' CHECKED' : '' %>> Preserve this service on package cancellation
+
-Service definitions are the templates for items you offer to your customers.
-
svc_acct - Accounts - anything with a username (Mailboxes, PPP accounts, shell accounts, RADIUS entries for broadband, etc.)
-
svc_domain - Domains
-
svc_forward - Mail forwarding
-
svc_mailinglist - Mailing list
-
svc_www - Virtual domain website
-
svc_broadband - Broadband/High-speed Internet service (always-on)
-
svc_phone - Customer phone numbers
-
svc_pbx - Customer PBXs
-
svc_external - Externally-tracked service
-
-
-For the selected table, you can give fields default or fixed (unchangable)
-values, or select an inventory class to manually or automatically fill in
-that field.
-
+
% #YUCK. false laziness w/part_svc.pm. go away virtual fields, please
% my %vfields;
@@ -72,6 +57,9 @@ that field.
% 'A' => { 'desc' => 'Automatically fill in from inventory',
% 'condition' => $inv_sub,
% },
+% 'H' => { 'desc' => 'Select from hardware class',
+% 'condition' => sub { $_[0]->{type} ne 'select-hardware' },
+% },
% 'X' => { 'desc' => 'Excluded',
% 'condition' =>
% sub { ! $vfields{$_[1]}->{$_[2]} },
@@ -92,20 +80,24 @@ that field.
% #'form_action' => 'process/part_svc.cgi',
% 'form_action' => 'part_svc.cgi', #self
% 'form_text' => [ qw( svc svcpart ) ],
-% 'form_checkbox' => [ 'disabled' ],
+% 'form_checkbox' => [ 'disabled', 'preserve' ],
% 'layer_callback' => sub {
% my $layer = shift;
%
% my $html = qq!!;
%
+% $html .= $svcdb_info;
+%
% my $columns = 3;
% my $count = 0;
+% my $communigate = 0;
% my @part_export =
% map { qsearch( 'part_export', {exporttype => $_ } ) }
% keys %{FS::part_export::export_info($layer)};
-% $html .= '
'. table().
+% $html .= '
'. include('/elements/table.html') .
% "
Exports
";
% foreach my $part_export ( @part_export ) {
+% $communigate++ if $part_export->exporttype =~ /^communigate/;
% $html .= '
'.
@@ -132,16 +128,17 @@ that field.
% my $bgcolor;
%
% #yucky kludge
-% my @fields = defined( dbdef->table($layer) )
-% ? grep {
-% $_ ne 'svcnum' &&
-% ( !FS::part_svc->svc_table_fields($layer)
-% ->{$_}->{disable_part_svc_column} ||
-% $part_svc->part_svc_column($_)->columnflag
-% )
-% }
-% fields($layer)
-% : ();
+% my @fields = ();
+% if ( defined( dbdef->table($layer) ) ) {
+% @fields = grep {
+% $_ ne 'svcnum'
+% && ( $communigate || !$communigate_fields{$layer}->{$_} )
+% && ( !FS::part_svc->svc_table_fields($layer)
+% ->{$_}->{disable_part_svc_column}
+% || $part_svc->part_svc_column($_)->columnflag
+% )
+% } fields($layer);
+% }
% push @fields, 'usergroup' if $layer eq 'svc_acct'; #kludge
% $part_svc->svcpart($clone) if $clone; #haha, undone below
%
@@ -186,7 +183,7 @@ that field.
% foreach my $f ( keys %flag ) {
%
% # need to template-ize more httemplate/edit/svc_* first
-% next if $f eq 'M' and $layer !~ /^svc_(broadband|external|phone)$/;
+% next if $f eq 'M' and $layer !~ /^svc_(broadband|external|phone|dish)$/;
%
% #here is where the SUB from above is called, to skip some choices
% next if $flag{$f}->{condition}
@@ -225,7 +222,8 @@ that field.
% " what.form.${layer}__${field}_classnum.style.backgroundColor = '#ffffff';".
% " what.form.${layer}__${field}_classnum.style.display = 'none';".
% " }".
-% ' } else if ( f == "M" || f == "A" ) { //enable, inventory',
+% ' } else if ( f == "M" || f == "A" || f == "H" ) { '.
+% '//enable, inventory',
% " what.form.${layer}__${field}.disabled = false;".
% " what.form.${layer}__${field}.style.backgroundColor = '#ffffff';".
% " what.form.${layer}__${field}.style.display = 'none';".
@@ -245,10 +243,10 @@ that field.
%
% my $disabled = $flag ? ''
% : 'DISABLED STYLE="background-color: #dddddd"';
+% my $nodisplay = ' STYLE="display:none"';
%
% if ( !$def->{type} || $def->{type} eq 'text' ) {
%
-% my $nodisplay = ' STYLE="display:none"';
% my $is_inv = ( $flag =~ /^[MA]$/ );
%
% $html .=
@@ -316,23 +314,15 @@ that field.
% qq!';
%
-% } elsif ( $def->{type} eq 'select-svc_pbx.html' ) {
+% } elsif ( $def->{type} =~ /select-(.*?).html/ ) {
%
-% $html .= include('/elements/select-svc_pbx.html',
+% $html .= include("/elements/".$def->{type},
% 'curr_value' => $value,
% 'element_name' => "${layer}__${field}",
% 'element_etc' => $disabled,
% 'multiple' => ($flag eq 'S'),
% );
%
-% } elsif ( $def->{type} eq 'radius_usergroup_selector' ) {
-%
-% #XXX disable the RADIUS usergroup selector? ugh it sure does need
-% #an overhaul, people have dum group problems because of it
-%
-% $html .= FS::svc_acct::radius_usergroup_selector(
-% [ split(',', $value) ], "${layer}__${field}" );
-%
% } elsif ( $def->{type} eq 'communigate_pro-accessmodes' ) {
%
% $html .= include('/elements/communigate_pro-accessmodes.html',
@@ -341,6 +331,16 @@ that field.
% #doesn't work#'element_etc' => $disabled,
% );
%
+% } elsif ( $def->{type} eq 'select-hardware' ) {
+%
+% $html .= qq!!;
+% $html .= include('/elements/select-hardware_class.html',
+% 'curr_value' => $value,
+% 'element_name' => "${layer}__${field}_classnum",
+% 'element_etc' => $flag ne 'H' && $nodisplay,
+% 'empty_label' => 'Select hardware class',
+% );
+%
% } elsif ( $def->{type} eq 'disabled' ) {
%
% $html .=
@@ -370,7 +370,8 @@ that field.
%
% $html .= include('/elements/progress-init.html',
% $layer, #form name
-% [ qw(svc svcpart disabled exportnum), @fields ],
+% [ qw(svc svcpart disabled preserve exportnum),
+% @fields ],
% 'process/part_svc.cgi',
% $p.'browse/part_svc.cgi',
% $layer,
@@ -420,7 +421,87 @@ my $action = $part_svc->svcpart ? 'Edit' : 'Add';
my $hashref = $part_svc->hashref;
# my $p_svcdb = $part_svc->svcdb || 'svc_acct';
+my %communigate_fields = (
+ 'svc_acct' => { map { $_=>1 }
+ qw( file_quota file_maxnum file_maxsize
+ password_selfchange password_recover
+ ),
+ grep /^cgp_/, fields('svc_acct')
+ },
+ 'svc_domain' => { map { $_=>1 }
+ qw( max_accounts trailer parent_svcnum ),
+ grep /^(cgp|acct_def)_/, fields('svc_domain')
+ },
+ #'svc_forward' => { map { $_=>1 } qw( ) },
+ #'svc_mailinglist' => { map { $_=>1 } qw( ) },
+ #'svc_cert' => { map { $_=>1 } qw( ) },
+);
+my $svcdb_info = '
+
+
+
Generic
+
Access
+
Telephony
+
+
+
+
+
+
svc_acct: Accounts - anything with a username (mailbox, shell, RADIUS, etc.)
+
svc_hardware: Equipment supplied to customers
+
svc_external: Externally-tracked service
+
+
+
+
+
svc_dsl: DSL
+
svc_broadband: Wireless broadband
+
svc_dish: DISH Network
+
+
+
+
+
svc_phone: Customer phone number
+
svc_pbx: Customer PBX
+
+
+
+
+
+
+
+
Hosting
+
Colocation
+
+
+
+
svc_domain: Domain
+
svc_cert: Certificate
+
svc_forward: Mail forwarding
+
svc_mailinglist: Mailing list
+
svc_www: Virtual domain website
+
+
+
+
+
svc_port: Customer router/switch port
+
+
+
+
+
+';
+
+my $mod_info = '
+For the selected table, you can give fields default or fixed (unchangable)
+values, or select an inventory class to manually or automatically fill in
+that field.
+';
%init>