adding unlinked account migration script, RT#6126
authorivan <ivan>
Fri, 23 Oct 2009 08:21:07 +0000 (08:21 +0000)
committerivan <ivan>
Fri, 23 Oct 2009 08:21:07 +0000 (08:21 +0000)
bin/move-unlinked [new file with mode: 0755]

diff --git a/bin/move-unlinked b/bin/move-unlinked
new file mode 100755 (executable)
index 0000000..0d31a49
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/perl -w
+
+#script to move unlinked accounts from one installation to another
+# source is remote, destination is local
+
+use strict;
+use vars qw( $sdbh );
+use DBI;
+use FS::UID qw( adminsuidsetup dbh );
+use FS::Schema qw( dbdef );
+use DBI;
+use FS::Record qw( qsearchs );
+use FS::svc_acct;
+
+#my $DANGEROUS = 0;
+#my $DRY = 0;
+
+#ssh -p 2222 -L 1080:66.209.32.4:7219 -L 5454:localhost:5432 66.209.32.4
+
+#my $source_datasrc = 'DBI:Pg:host=66.209.32.4;dbname=freeside;sslmode=require';
+my $source_datasrc = 'DBI:Pg:host=localhost;port=5454;dbname=freeside';
+my $source_user = 'readonly';
+my $source_pw = '';
+
+
+my %domsvc_map = (
+  1    => 108, #nothinbut.net
+  3653 => 109, #ewol.com
+  #7634 => 20451,
+);
+#my %domsvc_map = (
+#  1    => 20450,
+#  3653 => 20162,
+##  7634 => 20451,
+#);
+
+my %svcpart_map = (
+  2 => 23, # NBN-DIALUP
+  3 => 29, # NBN-EMAIL
+  8 => 30, # EWOL-EMAIL
+);
+#my %svcpart_map = (
+#  2 => , # NBN-DIALUP
+#  3 => , # NBN-EMAIL
+#  8 => , # EWOL-EMAIL
+#);
+
+
+#--
+
+# target(local) setup
+
+my $user = shift
+  or die "Usage:\n  (edit variables at top of script and then)\n".
+         "  move-customers user\n";
+adminsuidsetup $user;
+
+$FS::svc_Common::noexport_hack = 1;
+$FS::svc_Common::noexport_hack = 1;
+
+# -- 
+
+# source(remote) setup
+
+$sdbh = DBI->connect($source_datasrc, $source_user, $source_pw)
+  or die $DBI::errstr;
+
+$sdbh->{ChopBlanks} = 1;
+
+# --
+
+my $sth = $sdbh->prepare(
+ 'select * from svc_acct left join cust_svc using ( svcnum ) where pkgnum is null'
+) or die $sdbh->errstr;
+
+$sth->execute or die $sth->errstr;
+
+while ( my $hashref = $sth->fetchrow_hashref ) {
+
+  my %hash = %$hashref;
+
+  $hash{'svcnum'} = '';
+
+  $hash{'domsvc'}  = $domsvc_map{ $hash{'domsvc'}};
+  $hash{'svcpart'} = $svcpart_map{$hash{'svcpart'}};
+
+  my $svc_acct = new FS::svc_acct \%hash;
+
+  #my $error = $svc_acct->check;
+  my $error = $svc_acct->insert;
+
+  if ( $error ) {
+    use Data::Dumper;
+    warn Dumper($svc_acct);
+    die $error;
+  }
+}
+
+1;