move export info to the modules themselves
[freeside.git] / FS / FS / part_export / cp.pm
index 58ac85e..a295c57 100644 (file)
@@ -1,19 +1,41 @@
 package FS::part_export::cp;
 
-use vars qw(@ISA);
+use vars qw(@ISA %info);
+use Tie::IxHash;
 use FS::part_export;
 
 @ISA = qw(FS::part_export);
 
+tie my %options, 'Tie::IxHash',
+  'port'      => { label=>'Port number' },
+  'username'  => { label=>'Username' },
+  'password'  => { label=>'Password' },
+  'domain'    => { label=>'Domain' },
+  'workgroup' => { label=>'Default Workgroup' },
+;
+
+%info = (
+  'svc'    => 'svc_acct',
+  'desc'   => 'Real-time export to Critical Path Account Provisioning Protocol',
+  'options'=> \%options,
+  'notes'  => <<'END'
+Real-time export to
+<a href="http://www.cp.net/">Critial Path Account Provisioning Protocol</a>.
+Requires installation of
+<a href="http://search.cpan.org/dist/Net-APP">Net::APP</a>
+from CPAN.
+END
+);
+
 sub rebless { shift; }
 
 sub _export_insert {
   my( $self, $svc_acct ) = (shift, shift);
   $self->cp_queue( $svc_acct->svcnum, 'create_mailbox',
-    Mailbox   => $svc_acct->username,
-    Password  => $svc_acct->_password,
-    Workgroup => $self->option('workgroup'),
-    Domain    => $svc_acct->domain,
+    'Mailbox'   => $svc_acct->username,
+    'Password'  => $svc_acct->_password,
+    'Workgroup' => $self->option('workgroup'),
+    'Domain'    => $svc_acct->domain,
   );
 }
 
@@ -30,8 +52,30 @@ sub _export_replace {
 sub _export_delete {
   my( $self, $svc_acct ) = (shift, shift);
   $self->cp_queue( $svc_acct->svcnum, 'delete_mailbox',
-    Mailbox   => $svc_acct->username,
-    Domain    => $svc_acct->domain,
+    'Mailbox'   => $svc_acct->username,
+    'Domain'    => $svc_acct->domain,
+  );
+}
+
+sub _export_suspend {
+  my( $self, $svc_acct ) = (shift, shift);
+  $self->cp_queue( $svc_acct->svcnum, 'set_mailbox_status',
+    'Mailbox'       => $svc_acct->username,
+    'Domain'        => $svc_acct->domain,
+    'OTHER'         => 'T',
+    'OTHER_SUSPEND' => 'T',
+  );
+}
+
+sub _export_unsuspend {
+  my( $self, $svc_acct ) = (shift, shift);
+  $self->cp_queue( $svc_acct->svcnum, 'set_mailbox_status',
+    'Mailbox'       => $svc_acct->username,
+    'Domain'        => $svc_acct->domain,
+    'PAYMENT'       => 'F',
+    'OTHER'         => 'F',
+    'OTHER_SUSPEND' => 'F',
+    'OTHER_BOUNCE'  => 'F',
   );
 }
 
@@ -42,7 +86,7 @@ sub cp_queue {
     'job'    => 'FS::part_export::cp::cp_command',
   };
   $queue->insert(
-    $self->option('host'),
+    $self->machine,
     $self->option('port'),
     $self->option('username'),
     $self->option('password'),
@@ -69,25 +113,22 @@ sub cp_command { #subroutine, not method
       );
     }
 
+    #my $other = 'F';
     if ( $new_password =~ /^\*SUSPENDED\* (.*)$/ ) {
       $new_password = $1;
-      cp_command($host, $port, $username, $password, 'set_mailbox_status',
-        Domain       => $domain,
-        Mailbox      => $new_username,
-        Other        => 'T',
-        Other_Bounce => 'T',
-      );
-    } else {
-      cp_command($host, $port, $username, $password, 'set_mailbox_status',
-        Domain       => $domain,
-        Mailbox      => $new_username,
-        Other        => 'F',
-        Other_Bounce => 'F',
-      );
+    #  $other = 'T';
     }
+    #cp_command($host, $port, $username, $password, $login_domain,
+    #  'set_mailbox_status',
+    #  Domain       => $domain,
+    #  Mailbox      => $new_username,
+    #  Other        => $other,
+    #  Other_Bounce => $other,
+    #);
 
     if ( $old_password ne $new_password ) {
-      cp_command($host, $port, $username, $password, 'change_mailbox',
+      cp_command($host, $port, $username, $password, $login_domain,
+        'change_mailbox',
         Domain    => $domain,
         Mailbox   => $new_username,
         Password  => $new_password,
@@ -115,3 +156,5 @@ sub cp_command { #subroutine, not method
 
 }
 
+1;
+