diff options
author | ivan <ivan> | 2010-03-01 22:00:25 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-03-01 22:00:25 +0000 |
commit | ea3c94b9862524f0d17931e77bf3955bac5ad83f (patch) | |
tree | 5c2a22f76ca7ebfe0b95905132110ae24f403ad9 /FS | |
parent | 809adfdda42cdd46b9a8abf9530b1458b2d6b807 (diff) |
fix up editing services w/manual select from inventory, RT#7010
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/svc_Common.pm | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index 8cbcc91bb..fd2745dac 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -401,7 +401,7 @@ sub replace { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $error = $new->set_auto_inventory; + my $error = $new->set_auto_inventory($old); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -694,6 +694,7 @@ If there is an error, returns the error, otherwise returns false. sub set_auto_inventory { my $self = shift; + my $old = @_ ? shift : ''; my $error = $self->ut_numbern('svcnum') @@ -762,6 +763,24 @@ sub set_auto_inventory { return "Error provisioning inventory: $ierror"; } + if ( $old && $old->$field() && $old->$field() ne $self->$field() ) { + my $old_inv = qsearchs({ + 'table' => 'inventory_item', + 'hashref' => { 'classnum' => $classnum, + 'svcnum' => $old->svcnum, + 'item' => $old->$field(), + }, + }); + if ( $old_inv ) { + $old_inv->svcnum(''); + my $oerror = $old_inv->replace; + if ( $oerror ) { + $dbh->rollback if $oldAutoCommit; + return "Error unprovisioning inventory: $oerror"; + } + } + } + } $dbh->commit or die $dbh->errstr if $oldAutoCommit; |