Pflichtenhefte: Kontextmenüs für Items/Textblöcke auf größerer Fläche anzeigen
[kivitendo-erp.git] / SL / DB / RequirementSpec.pm
index db757e2..0ad61aa 100644 (file)
@@ -27,6 +27,11 @@ __PACKAGE__->meta->add_relationship(
     class          => 'SL::DB::RequirementSpec',
     column_map     => { id => 'working_copy_id' },
   },
+  orders           => {
+    type           => 'one to many',
+    class          => 'SL::DB::RequirementSpecOrder',
+    column_map     => { id => 'requirement_spec_id' },
+  },
 );
 
 __PACKAGE__->meta->initialize;
@@ -71,6 +76,13 @@ sub sections_sorted {
 
 sub sections { &sections_sorted; }
 
+sub orders_sorted {
+  my ($self, %params) = _hashify(1, @_);
+  my $by              = $params{by} || 'itime';
+
+  return [ sort { $a->$by cmp $b->$by } @{ $self->orders } ];
+}
+
 sub displayable_name {
   my ($self) = @_;
 
@@ -119,7 +131,7 @@ sub _copy_from {
 
   # Copy attributes.
   if (!$params->{paste_template}) {
-    $self->assign_attributes(map({ ($_ => $source->$_) } qw(type_id status_id customer_id project_id title hourly_rate net_sum previous_section_number previous_fb_number is_template)),
+    $self->assign_attributes(map({ ($_ => $source->$_) } qw(type_id status_id customer_id project_id title hourly_rate time_estimation previous_section_number previous_fb_number is_template)),
                              %attributes);
   }
 
@@ -153,6 +165,7 @@ sub _copy_from {
     my $cloned = Rose::DB::Object::Helpers::clone_and_reset($item);
     $cloned->requirement_spec_id($self->id);
     $cloned->position(undef);
+    $cloned->fb_number(undef) if $params->{paste_template};
     $cloned->children(map { $clone_item->($_) } @{ $item->children });
 
     $id_to_clone{ $item->id } = $cloned;