communigate provisioning phase 2: Domain:Account Defaults:Settings: RulesAllowed...
[freeside.git] / FS / FS / svc_acct.pm
index 1816287..fbf4707 100644 (file)
@@ -1,7 +1,8 @@
 package FS::svc_acct;
 
 use strict;
-use vars qw( @ISA $DEBUG $me $conf $skip_fuzzyfiles
+use base qw( FS::svc_Domain_Mixin FS::svc_Common );
+use vars qw( $DEBUG $me $conf $skip_fuzzyfiles
              $dir_prefix @shells $usernamemin
              $usernamemax $passwordmin $passwordmax
              $username_ampersand $username_letter $username_letterfirst
@@ -32,8 +33,6 @@ use FS::Msgcat qw(gettext);
 use FS::UI::bytecount;
 use FS::UI::Web;
 use FS::part_pkg;
-use FS::svc_Common;
-use FS::cust_svc;
 use FS::part_svc;
 use FS::svc_acct_pop;
 use FS::cust_main_invoice;
@@ -48,8 +47,6 @@ use FS::svc_forward;
 use FS::svc_www;
 use FS::cdr;
 
-@ISA = qw( FS::svc_Common );
-
 $DEBUG = 0;
 $me = '[FS::svc_acct]';
 
@@ -271,8 +268,46 @@ sub table_info {
                          disable_fixed => 1,
                          disable_select => 1,
                        },
+        'cgp_type'=> { 
+                       label => 'Communigate account type',
+                       type => 'select',
+                       select_list => [qw( MultiMailbox TextMailbox MailDirMailbox AGrade BGrade CGrade )],
+                       disable_inventory => 1,
+                       disable_select    => 1,
+                     },
+        'cgp_accessmodes' => { 
+                               label => 'Communigate enabled services',
+                               type  => 'communigate_pro-accessmodes',
+                               disable_inventory => 1,
+                               disable_select    => 1,
+                             },
+        'cgp_aliases' => { 
+                           label => 'Communigate aliases',
+                           type  => 'text',
+                           disable_inventory => 1,
+                           disable_select    => 1,
+                         },
+        'password_selfchange' => { label => 'Password modification',
+                                   type  => 'checkbox',
+                                 },
+        'password_recover'    => { label => 'Password recovery',
+                                   type  => 'checkbox',
+                                 },
+        'cgp_deletemode' => { 
+                              label => 'Communigate message delete method',
+                              type  => 'select',
+                              select_list => [ 'Move To Trash', 'Immediately', 'Mark' ],
+                              disable_inventory => 1,
+                              disable_select    => 1,
+                            },
+        'cgp_emptytrash' => { 
+                              label => 'Communigate on logout remove trash',
+                              type  => 'text',
+                              disable_inventory => 1,
+                              disable_select    => 1,
+                            },
         'quota'     => { 
-                         label => 'Quota',
+                         label => 'Quota', #Mail storage limit
                          type => 'text',
                          disable_inventory => 1,
                          disable_select => 1,
@@ -318,16 +353,6 @@ sub table_info {
                          select_key   => 'svcnum',
                          select_label => 'domain',
                          disable_inventory => 1,
-
-                       },
-        'domsvc'    => {
-                         label     => 'Domain',
-                         type      => 'select',
-                         select_table => 'svc_domain',
-                         select_key   => 'svcnum',
-                         select_label => 'domain',
-                         disable_inventory => 1,
-
                        },
         'pbxsvc'    => { label => 'PBX',
                          type  => 'select-svc_pbx.html',
@@ -1080,13 +1105,14 @@ sub check {
               || $self->ut_snumbern('upbytes')
               || $self->ut_snumbern('downbytes')
               || $self->ut_snumbern('totalbytes')
-              || $self->ut_enum( '_password_encoding',
-                                 [ '', qw( plain crypt ldap ) ]
-                               )
-              || $self->ut_enum( 'password_selfchange', [ '', 'Y' ] )
-              || $self->ut_enum( 'password_recover',    [ '', 'Y' ] )
-              || $self->ut_alphasn( 'cgp_accessmodes' )
-              || $self->ut_alphan( 'cgp_type' )
+              || $self->ut_enum('_password_encoding', ['',qw(plain crypt ldap)])
+              || $self->ut_enum('password_selfchange', [ '', 'Y' ])
+              || $self->ut_enum('password_recover',    [ '', 'Y' ])
+              || $self->ut_textn('cgp_accessmodes')
+              || $self->ut_alphan('cgp_type')
+              || $self->ut_textn('cgp_aliases' ) #well
+              || $self->ut_alphasn('cgp_deletemode')
+              || $self->ut_alphan('cgp_emptytrash')
   ;
   return $error if $error;
 
@@ -1771,22 +1797,6 @@ sub domain {
   $svc_domain->domain;
 }
 
-=item svc_domain
-
-Returns the FS::svc_domain record for this account's domain (see
-L<FS::svc_domain>).
-
-=cut
-
-# FS::h_svc_acct has a history-aware svc_domain override
-
-sub svc_domain {
-  my $self = shift;
-  $self->{'_domsvc'}
-    ? $self->{'_domsvc'}
-    : qsearchs( 'svc_domain', { 'svcnum' => $self->domsvc } );
-}
-
 =item cust_svc
 
 Returns the FS::cust_svc record for this account (see L<FS::cust_svc>).
@@ -3108,61 +3118,4 @@ schema.html from the base documentation.
 
 =cut
 
-=item domain_select_hash %OPTIONS
-
-Returns a hash SVCNUM => DOMAIN ...  representing the domains this customer
-may at present purchase.
-
-Currently available options are: I<pkgnum> I<svcpart>
-
-=cut
-
-sub domain_select_hash {
-  my ($self, %options) = @_;
-  my %domains = ();
-  my $part_svc;
-  my $cust_pkg;
-
-  if (ref($self)) {
-    $part_svc = $self->part_svc;
-    $cust_pkg = $self->cust_svc->cust_pkg
-      if $self->cust_svc;
-  }
-
-  $part_svc = qsearchs('part_svc', { 'svcpart' => $options{svcpart} })
-    if $options{'svcpart'};
-
-  $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $options{pkgnum} })
-    if $options{'pkgnum'};
-
-  if ($part_svc && ( $part_svc->part_svc_column('domsvc')->columnflag eq 'S'
-                  || $part_svc->part_svc_column('domsvc')->columnflag eq 'F')) {
-    %domains = map { $_->svcnum => $_->domain }
-               map { qsearchs('svc_domain', { 'svcnum' => $_ }) }
-               split(',', $part_svc->part_svc_column('domsvc')->columnvalue);
-  }elsif ($cust_pkg && !$conf->exists('svc_acct-alldomains') ) {
-    %domains = map { $_->svcnum => $_->domain }
-               map { qsearchs('svc_domain', { 'svcnum' => $_->svcnum }) }
-               map { qsearch('cust_svc', { 'pkgnum' => $_->pkgnum } ) }
-               qsearch('cust_pkg', { 'custnum' => $cust_pkg->custnum });
-  }else{
-    %domains = map { $_->svcnum => $_->domain } qsearch('svc_domain', {} );
-  }
-
-  if ($part_svc && $part_svc->part_svc_column('domsvc')->columnflag eq 'D') {
-    my $svc_domain = qsearchs('svc_domain',
-      { 'svcnum' => $part_svc->part_svc_column('domsvc')->columnvalue } );
-    if ( $svc_domain ) {
-      $domains{$svc_domain->svcnum}  = $svc_domain->domain;
-    }else{
-      warn "unknown svc_domain.svcnum for part_svc_column domsvc: ".
-           $part_svc->part_svc_column('domsvc')->columnvalue;
-
-    }
-  }
-
-  (%domains);
-}
-
 1;
-