finally fix part_svc!!!
[freeside.git] / FS / FS / svc_Common.pm
index 5bea5b0..c47cdbf 100644 (file)
@@ -2,7 +2,7 @@ package FS::svc_Common;
 
 use strict;
 use vars qw( @ISA );
-use FS::Record qw( qsearchs fields );
+use FS::Record qw( qsearchs fields dbh );
 use FS::cust_svc;
 use FS::part_svc;
 
@@ -48,6 +48,10 @@ sub insert {
   local $SIG{TSTP} = 'IGNORE';
   local $SIG{PIPE} = 'IGNORE';
 
+  my $oldAutoCommit = $FS::UID::AutoCommit;
+  local $FS::UID::AutoCommit = 0;
+  my $dbh = dbh;
+
   $error = $self->check;
   return $error if $error;
 
@@ -55,21 +59,26 @@ sub insert {
   my $cust_svc;
   unless ( $svcnum ) {
     $cust_svc = new FS::cust_svc ( {
-      'svcnum'  => $svcnum,
+      #hua?# 'svcnum'  => $svcnum,
       'pkgnum'  => $self->pkgnum,
       'svcpart' => $self->svcpart,
     } );
     $error = $cust_svc->insert;
-    return $error if $error;
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return $error;
+    }
     $svcnum = $self->svcnum($cust_svc->svcnum);
   }
 
   $error = $self->SUPER::insert;
   if ( $error ) {
-    $cust_svc->delete if $cust_svc;
+    $dbh->rollback if $oldAutoCommit;
     return $error;
   }
 
+  $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+
   '';
 }
 
@@ -155,9 +164,11 @@ sub setx {
   return "Unkonwn svcpart" unless $part_svc;
 
   #set default/fixed/whatever fields from part_svc
-  foreach my $field ( fields('svc_acct') ) {
-    if ( $part_svc->getfield('svc_acct__'. $field. '_flag') eq $x ) {
-      $self->setfield( $field, $part_svc->getfield('svc_acct__'. $field) );
+  my $table = $self->table;
+  foreach my $field ( grep { $_ ne 'svcnum' } fields($table) ) {
+    my $part_svc_column = $part_svc->part_svc_column($field);
+    if ( $part_svc_column->columnflag eq $x ) {
+      $self->setfield( $field, $part_svc_column->columnvalue );
     }
   }
 
@@ -184,7 +195,7 @@ sub cancel { ''; }
 
 =head1 VERSION
 
-$Id: svc_Common.pm,v 1.1 1999-08-04 09:03:53 ivan Exp $
+$Id: svc_Common.pm,v 1.5 2001-09-06 20:41:59 ivan Exp $
 
 =head1 BUGS