]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Controller/RequirementSpecOrder.pm
Pflichtenhefte -> Angebote: Eintrag in record_links anlegen
[kivitendo-erp.git] / SL / Controller / RequirementSpecOrder.pm
index 0e9785272c7e13846873e0fb2f2da43a83b633e9..07d3e0603e9d2cef6a4cea0f865866364d07654b 100644 (file)
@@ -63,13 +63,20 @@ sub action_create {
 
   # 2. Create actual quotation/order.
   my $order = $self->create_order(sections => $sections);
-  $order->save;
+  $order->db->with_transaction(sub {
+    $order->save;
+
+    $self->requirement_spec->orders(
+      @{ $self->requirement_spec->orders },
+      SL::DB::RequirementSpecOrder->new(order => $order, version => $self->requirement_spec->version)
+    );
+    $self->requirement_spec->save;
+
+    $self->requirement_spec->link_to_record($order);
+  }) or do {
+    $::lxdebug->message(LXDebug::WARN(), "Error creating the order object: $@");
+  };
 
-  $self->requirement_spec->orders(
-    @{ $self->requirement_spec->orders },
-    SL::DB::RequirementSpecOrder->new(order => $order, version => $self->requirement_spec->version)
-  );
-  $self->requirement_spec->save;
   $self->init_requirement_spec;
 
   # 3. Notify the user and return to list.
@@ -135,7 +142,13 @@ sub action_do_update {
   $order->orderitems([ @{ $order->orderitems }, @new_orderitems ]) if @new_orderitems;
 
   $order->calculate_prices_and_taxes;
-  $order->save;
+
+  $order->db->with_transaction(sub {
+    $order->save;
+    $self->requirement_spec->link_to_record($order);
+  }) or do {
+    $::lxdebug->message(LXDebug::WARN(), "Error updating the order object: $@");
+  };
 
   $self->init_requirement_spec;