X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FRequirementSpec.pm;h=c35540c74a21eb7ea68128230daf71696ccdd9b0;hb=10348b514ddb450a0ee23df36f7f4c4242989b3e;hp=bc68c17c4b18e7736953b7dec46b1283455325f9;hpb=075499b035a29c2144f8fa066d65575b4bde755c;p=kivitendo-erp.git diff --git a/SL/DB/RequirementSpec.pm b/SL/DB/RequirementSpec.pm index bc68c17c4..c35540c74 100644 --- a/SL/DB/RequirementSpec.pm +++ b/SL/DB/RequirementSpec.pm @@ -9,6 +9,10 @@ use Rose::DB::Object::Helpers; use SL::DB::MetaSetup::RequirementSpec; use SL::DB::Manager::RequirementSpec; use SL::DB::Helper::AttrDuration; +use SL::DB::Helper::CustomVariables ( + module => 'RequirementSpecs', + cvars_alias => 1, +); use SL::DB::Helper::LinkedRecords; use SL::Locale::String; use SL::Util qw(_hashify); @@ -152,7 +156,7 @@ sub create_copy { sub _create_copy { my ($self, %params) = @_; - my $copy = Rose::DB::Object::Helpers::clone_and_reset($self); + my $copy = $self->clone_and_reset; $copy->copy_from($self, %params); return $copy; @@ -171,19 +175,24 @@ sub _copy_from { %attributes); } + # Copy custom variables. + foreach my $var (@{ $source->cvars_by_config }) { + $self->cvar_by_name($var->config->name)->value($var->value); + } + my %paste_template_result; # Clone text blocks and pictures. my $clone_and_reset_position = sub { my ($src_obj) = @_; - my $cloned = Rose::DB::Object::Helpers::clone_and_reset($src_obj); + my $cloned = $src_obj->clone_and_reset; $cloned->position(undef); return $cloned; }; my $clone_text_block = sub { my ($text_block) = @_; - my $cloned = Rose::DB::Object::Helpers::clone_and_reset($text_block); + my $cloned = $text_block->clone_and_reset; $cloned->position(undef); $cloned->pictures([ map { $clone_and_reset_position->($_) } @{ $text_block->pictures_sorted } ]); return $cloned; @@ -203,7 +212,7 @@ sub _copy_from { $self->$accessor($paste_template_result{parts}); # Save new object -- we need its ID for the items. - $self->save; + $self->save(cascade => 1); my %id_to_clone; @@ -211,7 +220,7 @@ sub _copy_from { my $clone_item; $clone_item = sub { my ($item) = @_; - my $cloned = Rose::DB::Object::Helpers::clone_and_reset($item); + my $cloned = $item->clone_and_reset; $cloned->requirement_spec_id($self->id); $cloned->position(undef); $cloned->fb_number(undef) if $params->{paste_template};