X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/31ead75c81bed1ebb1ac65475205e24cded34af5..e822adb3f7c61a1148cd6f73be2bb302ab704e0f:/SL/Controller/RequirementSpec.pm diff --git a/SL/Controller/RequirementSpec.pm b/SL/Controller/RequirementSpec.pm index a29c7cb92..d88ec8f29 100644 --- a/SL/Controller/RequirementSpec.pm +++ b/SL/Controller/RequirementSpec.pm @@ -29,7 +29,7 @@ use Rose::Object::MakeMethods::Generic ( scalar => [ qw(requirement_spec_item visible_item visible_section) ], 'scalar --get_set_init' => [ qw(requirement_spec customers types statuses complexities risks projects project_types project_statuses default_project_type default_project_status copy_source js - current_text_block_output_position models) ], + current_text_block_output_position models time_based_units) ], ); __PACKAGE__->run_before('setup'); @@ -265,6 +265,33 @@ sub action_paste_template { $self->invalidate_version->render($self); } +sub action_renumber_sections { + my ($self) = @_; + + my %numbers = map { ($_ => 1) } qw(section function_block); + my %formats = map { my $method = "${_}_number_format"; ($_ => $self->requirement_spec->type->$method) } qw(section function_block); + my @items = @{ $self->requirement_spec->sections_sorted }; + + $self->requirement_spec->db->with_transaction(sub { + while (@items) { + my $item = shift @items; + my $type = $item->parent_id ? 'function_block' : 'section'; + + $item->update_attributes(fb_number => SL::PrefixedNumber->new(number => $formats{$type} || 0)->set_to($numbers{$type})); + + $numbers{$type}++; + + unshift @items, @{ $item->children_sorted }; + } + + $self->requirement_spec->invalidate_version unless $self->requirement_spec->is_template; + + 1; + }); + + $self->redirect_to(action => 'show', id => $self->requirement_spec->id); +} + # # filters # @@ -289,6 +316,7 @@ sub init_project_types { SL::DB::Manager::ProjectType->get_all_sorted sub init_projects { SL::DB::Manager::Project->get_all_sorted } sub init_risks { SL::DB::Manager::RequirementSpecRisk->get_all_sorted } sub init_statuses { SL::DB::Manager::RequirementSpecStatus->get_all_sorted } +sub init_time_based_units { SL::DB::Manager::Unit->time_based_units } sub init_types { SL::DB::Manager::RequirementSpecType->get_all_sorted } sub init_customers {