Pflichtenhefte auf Versionen zurücksetzen können
[kivitendo-erp.git] / SL / DB / RequirementSpec.pm
index 69a750b..6a43a28 100644 (file)
@@ -133,9 +133,34 @@ sub copy_from {
     $id_to_clone{ $item->id }->update_attributes(dependencies => [ map { $id_to_clone{$_->id} } @{ $item->dependencies } ]);
   }
 
+  $self->update_attributes(%attributes);
+
   return $self;
 }
 
+sub delete_items {
+  my ($self) = @_;
+
+  my $worker = sub {
+    # First convert all items to sections so that deleting won't
+    # violate foreign key constraints on parent_id.
+    SL::DB::Manager::RequirementSpecItem->update_all(
+      set   => { parent_id => undef, item_type => 'section' },
+      where => [
+        requirement_spec_id => $self->id,
+        '!parent_id'        => undef,
+      ]);
+
+    # Now delete all items in one go.
+    SL::DB::Manager::RequirementSpecItem->delete_all(where => [ requirement_spec_id => $self->id ]);
+
+    # Last clear values in ourself.
+    $self->items([]);
+  };
+
+  return $self->db->in_transaction ? $worker->() : $self->db->do_transaction($worker);
+}
+
 sub previous_version {
   my ($self) = @_;