Auftrag: Projekt automatisch in verknüpftem Pflichtenheft eintragen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 8 Jul 2016 13:42:29 +0000 (15:42 +0200)
committerMoritz Bunkus <m.bunkus@linet.de>
Wed, 10 Nov 2021 15:06:56 +0000 (16:06 +0100)
SL/Controller/Order.pm
SL/OE.pm
doc/changelog

index eac3ad9..302a5ea 100644 (file)
@@ -1702,6 +1702,8 @@ sub save {
       $self->link_requirement_specs_linking_to_created_from_objects(@converted_from_oe_ids);
     }
 
+    $self->set_project_in_linked_requirement_specs if $self->order->globalproject_id;
+
     $self->save_history('SAVED');
 
     1;
@@ -2328,6 +2330,17 @@ sub link_requirement_specs_linking_to_created_from_objects {
   }
 }
 
+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);
+  }
+}
+
 1;
 
 __END__
index 266e557..f3d3d0c 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -841,6 +841,12 @@ SQL
     is_new             => $is_new,
   );
 
+  $self->_set_project_in_linked_requirement_spec(
+    type           => $form->{type},
+    project_id     => $form->{globalproject_id},
+    sales_order_id => $form->{id},
+  );
+
   $main::lxdebug->leave_sub();
 
   return 1;
@@ -880,6 +886,25 @@ sub _link_created_sales_order_to_requirement_specs_for_sales_quotations {
   });
 }
 
+sub _set_project_in_linked_requirement_spec {
+  my ($self, %params) = @_;
+
+  return if  $params{type} ne 'sales_order';
+  return if !$params{project_id} || !$params{sales_order_id};
+
+  my $query = <<SQL;
+    UPDATE requirement_specs
+    SET project_id = ?
+    WHERE id IN (
+      SELECT so.requirement_spec_id
+      FROM requirement_spec_orders so
+      WHERE so.order_id = ?
+    )
+SQL
+
+  do_query($::form, $::form->get_standard_dbh, $query, $params{project_id}, $params{sales_order_id});
+}
+
 sub save_periodic_invoices_config {
   my ($self, %params) = @_;
 
index c328200..3004a0d 100644 (file)
@@ -32,6 +32,9 @@ Kleinere neue Features und Detailverbesserungen:
 - Pflichtenhefte: wenn man im Workflow vom Pflichtenheft ein neues
   Angebot anlegt und später von diesem Angebot aus einen Auftrag, so
   wird auch der Auftrag direkt mit dem Pflichtenheft verknüpft.
+- Pflichtenhefte: wenn in einem Auftrag, das mit einem Pflichtenheft
+  verknüpft ist, ein Projekt ausgewählt, so wird dieses Projekt auch
+  automatisch beim verknüpften Pflichtenheft eingetragen.
 
 Bugfixes (Tracker: https://www.kivitendo.de/redmine):