RT# 83450 - fixed rateplan export
[freeside.git] / FS / FS / part_export / acct_xmlrpc.pm
index 96ad1fa..acd7ffe 100644 (file)
@@ -5,6 +5,7 @@ use vars qw( %info ); # $DEBUG );
 #use Data::Dumper;
 use Tie::IxHash;
 use Frontier::Client; #to avoid adding a dependency on RPC::XML just now
+use Frontier::RPC2;
 #use FS::Record qw( qsearch qsearchs );
 use FS::Schema qw( dbdef );
 
@@ -34,6 +35,7 @@ tie my %options, 'Tie::IxHash',
   'svc'     => 'svc_acct',
   'desc'    => 'Configurable provisioning of accounts via the XML-RPC protocol',
   'options' => \%options,
+  'no_machine' => 1,
   'notes'   => <<'END',
 Configurable, real-time export of accounts via the XML-RPC protocol.<BR>
 <BR>
@@ -46,6 +48,8 @@ The following variables are available for interpolation (prefixed with new_ or
 old_ for replace operations):
 <UL>
   <LI><code>$username</code>
+  <LI><code>$domain</code>
+  <LI><code>$email</code> - username@domain
   <LI><code>$_password</code>
   <LI><code>$crypt_password</code> - encrypted password
   <LI><code>$ldap_password</code> - Password in LDAP/RFC2307 format (for example, "{PLAIN}himom", "{CRYPT}94pAVyK/4oIBk" or "{MD5}5426824942db4253f87a1009fd5d2d4")
@@ -127,10 +131,10 @@ sub _export_command {
 sub _export_replace {
   my( $self, $new, $old ) = (shift, shift, shift);
 
-  my $method = $self->option($action.'_method');
+  my $method = $self->option('replace_method');
   return '' if $method =~ /^\s*$/;
 
-  my @params = split("\n", $self->option($action.'_params') );
+  my @params = split("\n", $self->option('replace_params') );
 
   my( @x_param ) = ();
   my( %x_struct ) = ();
@@ -188,23 +192,24 @@ sub _export_value {
   if ( $fields{$value} ) {
     my $type = dbdef->table('svc_acct')->column($value)->type;
     if ( $type =~ /^(int|serial)/i ) {
-      return Frontier::Client->new->int( $svc_acct->$value() );
+      return Frontier::RPC2::Integer->new( $svc_acct->$value() );
     } elsif ( $value =~ /^last_log/ ) {
-      return Frontier::Client->new->date_time( $svc_acct->$value() ); #conversion?
+      return Frontier::RPC2::DateTime::ISO8601->new( $svc_acct->$value() ); #conversion?
     } else {
-      return Frontier::Client->new->string( $svc_acct->$value() );
+      return Frontier::RPC2::String->new( $svc_acct->$value() );
     }
-  } elsif ( $value eq 'domain' ) {
-    return Frontier::Client->new->string( $svc_acct->domain );
+  } elsif ( $value =~ /^(domain|email)$/ ) {
+    return Frontier::RPC2::String->new( $svc_acct->$value() );
   } elsif ( $value eq 'crypt_password' ) {
-    return Frontier::Client->new->string( $svc_acct->crypt_password( $self->option('crypt') ) );
+    return Frontier::RPC2::String->new( $svc_acct->crypt_password( $self->option('crypt') ) );
   } elsif ( $value eq 'ldap_password' ) {
-    return Frontier::Client->new->string( $svc_acct->ldap_password($self->option('crypt') ) );
+    return Frontier::RPC2::String->new( $svc_acct->ldap_password($self->option('crypt') ) );
   } elsif ( $value eq 'radius_groups' ) {
     my @radius_groups = $svc_acct->radius_groups;
     #XXX
   }
 
+#this is the "cust_main" email, not svc_acct->email
 #  my $cust_pkg = $svc_acct->cust_svc->cust_pkg;
 #  if ( $cust_pkg ) {
 #    no strict 'vars';