fix up editing services w/manual select from inventory, RT#7010
authorivan <ivan>
Mon, 1 Mar 2010 22:00:25 +0000 (22:00 +0000)
committerivan <ivan>
Mon, 1 Mar 2010 22:00:25 +0000 (22:00 +0000)
FS/FS/svc_Common.pm
httemplate/elements/select-table.html

index 8cbcc91..fd2745d 100644 (file)
@@ -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;
index 772f0c6..741e51e 100644 (file)
@@ -94,7 +94,7 @@ Example:
 % {
 %   my $recvalue = $record->$key();
     <OPTION VALUE="<% $recvalue %>"
-            <% $opt{'all_selected'} || ref($value) && $value->{$recvalue} || $value == $recvalue
+            <% $opt{'all_selected'} || ref($value) && $value->{$recvalue} || $value && $value eq $recvalue # not == because of value_col
                ? ' SELECTED' : ''
             %>
 %           foreach my $att ( @{ $opt{'extra_option_attributes'} } ) {