work around missing id, RT#83146
[freeside.git] / bin / fs-migrate-part_svc
index 96332f7..b0f3ac5 100755 (executable)
@@ -2,38 +2,39 @@
 
 use strict;
 use FS::UID qw(adminsuidsetup);
-use FS::Record qw(qsearchs);
-use FS::part_svc
+use FS::Record qw(qsearch fields);
+use FS::part_svc;
 
 my $user = shift or die &usage;
 my $dbh = adminsuidsetup $user;
 
 my $oldAutoCommit = $FS::UID::AutoCommit;
-local $FS::UID::AutoCommit = 0
+local $FS::UID::AutoCommit = 0;
 
 foreach my $part_svc ( qsearch('part_svc', {} ) ) {
   foreach my $field (
-    grep { defined($part_svc->getfield($part_svc->svcdb.'__'.$field.'_flag') ) }
-      fields($self->svcdb)
+    grep { defined($part_svc->getfield($part_svc->svcdb.'__'.$_.'_flag') ) }
+      fields($part_svc->svcdb)
   ) {
-    my $flag = $self->getfield($part_svc->svcdb.'__'.$field.'_flag');
+    my $flag = $part_svc->getfield($part_svc->svcdb.'__'.$field.'_flag');
     if ( uc($flag) =~ /^([DF])$/ ) {
-      $part_svc_column->setfield('columnflag', $1);
-      $part_svc_column->setfield('columnvalue',
-        $self->getfield($part_svc->svcdb.'__'.$field)
-      );
-      $error = $part_svc_column->insert;
-    } else {
-      $error = $part_svc_column->delete;
+      my $part_svc_column = new FS::part_svc_column {
+        'svcpart' => $part_svc->svcpart,
+        'columnname' => $field,
+        'columnflag' => $1,
+        'columnvalue' => $part_svc->getfield($part_svc->svcdb.'__'.$field),
+      };
+      my $error = $part_svc_column->insert;
+      if ( $error ) {
+        $dbh->rollback if $oldAutoCommit;
+        die $error;
+      }
     }
-    if ( $error ) {
-      $dbh->rollback if $oldAutoCommit;
-      die $error;
-    }
-
   }
 }
 
+$dbh->commit or die $dbh->errstr;
+
 sub usage {
   die "Usage:\n  fs-migrate-part_svc user\n"; 
 }