Projekt

Allgemein

Profil

Fehler #109

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

Von G. Richardson vor etwa 9 Jahren hinzugefügt. Vor fast 9 Jahren aktualisiert.

Status:
Gelöst
Priorität:
Normal
Zugewiesen an:
Zielversion:
-
Beginn:
26.11.2015
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:

Beschreibung

Beim Auslagern per "?" funktioniert es.

Historie

#1

Von Jan Büren vor etwa 9 Jahren aktualisiert

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

Von Jan Büren vor etwa 9 Jahren aktualisiert

  • % erledigt wurde von 0 zu 100 geändert
#3

Von Jan Büren vor fast 9 Jahren aktualisiert

  • Status wurde von Neu zu Gelöst geändert

Auch abrufbar als: Atom PDF