X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_Common.pm;h=7e216461fa47b3a65b2e0a701f0794e71073178b;hb=1fd215138eeed664b07d4347ce18a7a1a616419b;hp=8bcdf4f56b779f7a91930f38ca18c9e705251901;hpb=15f65a0c56cbce6951d9cb4f71119725a2009f79;p=freeside.git diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index 8bcdf4f56..7e216461f 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -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; @@ -60,16 +64,21 @@ sub insert { '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,15 +195,12 @@ sub cancel { ''; } =head1 VERSION -$Id: svc_Common.pm,v 1.2 2001-04-09 23:05:15 ivan Exp $ +$Id: svc_Common.pm,v 1.6 2001-09-11 22:20:28 ivan Exp $ =head1 BUGS The setfixed method return value. -The new method should set defaults from part_svc (like the check method -sets fixed values)? - =head1 SEE ALSO L, L, L, L, schema.html