+sub save_history {
+ my ($self, $addition) = @_;
+
+ my $number_type = $self->order->type =~ m{order} ? 'ordnumber' : 'quonumber';
+ my $snumbers = $number_type . '_' . $self->order->$number_type;
+
+ SL::DB::History->new(
+ trans_id => $self->order->id,
+ employee_id => SL::DB::Manager::Employee->current->id,
+ what_done => $self->order->type,
+ snumbers => $snumbers,
+ addition => $addition,
+ )->save;
+}
+
+sub store_doc_to_webdav_and_filemanagement {
+ my ($self, $content, $filename, $variant) = @_;
+
+ my $order = $self->order;
+ my @errors;
+
+ # copy file to webdav folder
+ if ($order->number && $::instance_conf->get_webdav_documents) {
+ my $webdav = SL::Webdav->new(
+ type => $order->type,
+ number => $order->number,
+ );
+ my $webdav_file = SL::Webdav::File->new(
+ webdav => $webdav,
+ filename => $filename,
+ );
+ eval {
+ $webdav_file->store(data => \$content);
+ 1;
+ } or do {
+ push @errors, t8('Storing the document to the WebDAV folder failed: #1', $@);
+ };
+ }
+ if ($order->id && $::instance_conf->get_doc_storage) {
+ eval {
+ SL::File->save(object_id => $order->id,
+ object_type => $order->type,
+ mime_type => SL::MIME->mime_type_from_ext($filename),
+ source => 'created',
+ file_type => 'document',
+ file_name => $filename,
+ file_contents => $content,
+ print_variant => $variant);
+ 1;
+ } or do {
+ push @errors, t8('Storing the document in the storage backend failed: #1', $@);
+ };
+ }
+
+ return @errors;
+}
+
+sub link_requirement_specs_linking_to_created_from_objects {
+ my ($self, @converted_from_oe_ids) = @_;
+
+ return unless @converted_from_oe_ids;
+
+ my $rs_orders = SL::DB::Manager::RequirementSpecOrder->get_all(where => [ order_id => \@converted_from_oe_ids ]);
+ foreach my $rs_order (@{ $rs_orders }) {
+ SL::DB::RequirementSpecOrder->new(
+ order_id => $self->order->id,
+ requirement_spec_id => $rs_order->requirement_spec_id,
+ version_id => $rs_order->version_id,
+ )->save;
+ }
+}
+
+sub set_project_in_linked_requirement_specs {
+ my ($self) = @_;
+
+ my $rs_orders = SL::DB::Manager::RequirementSpecOrder->get_all(where => [ order_id => $self->order->id ]);
+ foreach my $rs_order (@{ $rs_orders }) {
+ next if $rs_order->requirement_spec->project_id == $self->order->globalproject_id;
+
+ $rs_order->requirement_spec->update_attributes(project_id => $self->order->globalproject_id);
+ }
+}
+