Project

General

Profile

Fehler #109

Bei "Auslagern über Standardlagerplatz" wird delivery_order_items_stock_id in inventory nicht gesetzt

Added by G. Richardson about 9 years ago. Updated almost 9 years ago.

Status:
Gelöst
Priority:
Normal
Assignee:
Target version:
-
Start date:
11/26/2015
Due date:
% Done:

100%

Estimated time:

Description

Beim Auslagern per "?" funktioniert es.

History

#1

Updated by Jan Büren about 9 years ago

die delivery_order_items_stock_id wird beim speichern des Lieferscheins in DO.pm gesetzt.

Als erste Lösung kann ich die in dem enstprechenden request in transfer_in_out_default, NACH dem Speichern ergänzen:

  save(no_redirect => 1); # Wir können auslagern, deshalb beleg speichern
                          # und in delivery_order_items_stock speichern

  + # ... and fill back the persistent dois_id for inventory fk
  + undef (@all_requests);
  + foreach my $i (1 .. $form->{rowcount}) {
  +   next unless ($form->{"id_$i"} && $form->{"stock_${prefix}_$i"});
  +   foreach my $request (@{ DO->unpack_stock_information('packed' => $form->{"stock_${prefix}_$i"}) }) {
  +     push @all_requests, $request;
  +   }
  }

  DO->transfer_in_out('direction' => $prefix,
                      'requests'  => \@all_requests);

Das ist nicht so richtig elegant, weil ich die @all_requests nochmal komplett neu aufbaue, um ein Attribut zu ergänzen.

Die entscheidenden Commits hierzu waren: 286dc87c und 6934a717b6f76c
Vorher wurden diese ids immer beim Speichern neu angelegt, jetzt wird beim Speichern die id für dois wieder zurückgegeben und muss auch hier nochmal in die Form mit YAML zurückgepackt werden.

Ich seh jetzt wenig weitere Optimierung ohne grundsätzlichere Umbauarbeiten zu machen.
Vielleicht hat jmd. noch eine bessere Idee, was etwas schwierig zu erkennen ist, ist die Wandlung zwischen YAML und einzelnen Requests.

Diese Stelle in DO.pm ist eigentlich der Knackpunkt:

      # write back the id to the form (important if only transfer was clicked (id fk for invoice)
      $form->{"stock_${in_out}_$i"} = YAML::Dump($stock_info);

Ich muss diese Struktur wieder in die Form zurückschreiben (mit dem einen Attribut mehr), da ich nicht weiß, ob der Nutzer NUR gespeichert hat oder Auslagert ohne vorher zu Speichern.

Demnach muss ich diese Info für transfer_in_out_default wieder zurücklesen, da ich den Lieferschein auch erst Speichern möchte, wenn alle anderen Fehlerprüfungen durch sind.

#2

Updated by Jan Büren almost 9 years ago

  • % Done changed from 0 to 100
#3

Updated by Jan Büren almost 9 years ago

  • Status changed from Neu to Gelöst

Also available in: Atom PDF