X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FRequirementSpecItem.pm;h=9322c32b76b3fc8f4ba2bc700086eadc625fa550;hb=54daa586799871ce5ede8f628a03ea55a9660cf5;hp=ee71d7c448f1f4c7516d24cb2226f1fe48235883;hpb=d17e1b9d1b761bb19d0cb79a742ea70a07028998;p=kivitendo-erp.git diff --git a/SL/DB/RequirementSpecItem.pm b/SL/DB/RequirementSpecItem.pm index ee71d7c44..9322c32b7 100644 --- a/SL/DB/RequirementSpecItem.pm +++ b/SL/DB/RequirementSpecItem.pm @@ -3,8 +3,38 @@ package SL::DB::RequirementSpecItem; use strict; use SL::DB::MetaSetup::RequirementSpecItem; +use SL::DB::Manager::RequirementSpecItem; +use SL::DB::Helper::ActsAsList; -# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all. -__PACKAGE__->meta->make_manager_class; +__PACKAGE__->meta->add_relationship( + children => { + type => 'one to many', + class => 'SL::DB::RequirementSpecItem', + column_map => { id => 'parent_id' }, + }, +); + +__PACKAGE__->meta->initialize; + +__PACKAGE__->configure_acts_as_list(group_by => [qw(requirement_spec_id parent_id)]); + +__PACKAGE__->before_delete(\&_before_delete_delete_children); + +sub _before_delete_delete_children { + my ($self) = @_; + + foreach my $child (@{ SL::DB::Manager::RequirementSpecItem->get_all(where => [ parent_id => $self->id ]) }) { + my $result = $child->delete; + return $result if !$result; + } + + 1; +} + +sub sorted_children { + my ($self) = @_; + + return [ sort { $a->position <=> $b->position } @{ $self->children } ]; +} 1;