Beiträge in diesem Abschnitt

Positionen bearbeiten: anlegen, aktualisieren und löschen

Veröffentlicht:
Aktualisiert:

Wenn Sie einen Beleg bearbeiten, senden Sie den vollständigen Satz an Positionen, den Sie behalten möchten, und die Plattform gleicht sie mit dem ab, was bereits gespeichert ist. Dieser Artikel erläutert dieses Modell der vollständigen Ersetzung — wie Zeilen in einem Speichervorgang erstellt, aktualisiert und gelöscht werden. Das Bearbeiten erfordert die Berechtigung belege:transition und einen Beleg im Status Entwurf oder Rückfrage erforderlich.

Vollständige Ersetzung, nicht inkrementell

Es gibt keinen Aufruf "Zeile 3 löschen" oder "eine Zeile hinzufügen". Stattdessen trägt jede Aktualisierung das vollständige Positions-Array, das der Beleg nach dem Speichern haben soll. Die Plattform vergleicht dieses Array mit den gespeicherten Positionen und ermittelt, was zu erstellen, zu aktualisieren und zu löschen ist. Dieser Alles-oder-nichts-Ansatz hält die Kopfsummen konsistent — Positionen werden niemals außerhalb dieses Ablaufs verändert.

Wie jede Zeile abgeglichen wird

Der Abgleich erfolgt über die id der Position:

Zeile in Ihrer AnfrageBedeutungErgebnis
Keine id (null)Neue ZeileWird als neue Position erstellt.
Hat eine id, die auf dem Beleg existiertBestehende ZeileWird an Ort und Stelle mit Ihren Werten aktualisiert.
Eine bestehende id, die Sie in der Anfrage weglassenEntfernte ZeileWird vom Beleg gelöscht.
Warnung: Alles, was Sie weglassen, wird gelöscht. Um eine Position zu behalten, nehmen Sie sie mit ihrer bestehenden id in das Array auf. Um sie unverändert zu behalten, senden Sie sie mit denselben Werten erneut.

Ein durchgerechnetes Beispiel

Angenommen, ein Beleg hat Positionen mit den ids 10, 11 und 12. Sie speichern eine Aktualisierung, die Folgendes enthält:

  • id 10 mit einer korrigierten Menge — Position 10 wird aktualisiert.
  • id 12 unverändert — Position 12 wird behalten.
  • eine Zeile ohne id — eine neue Position wird erstellt.
  • id 11 ist nicht vorhanden — Position 11 wird gelöscht.

Das Ergebnis sind drei Positionen: die bearbeitete 10, die unberührte 12 und die neue.

Was beim Speichern passiert

  1. Die Positionen werden an der Grenze validiert: Pflichtfelder pro Zeile, mindestens eine Position, nicht mehr als 20 und aktive finanzielle Referenzen.
  2. Der Beleg wird mit seinen bestehenden Positionen geladen, und es wird bestätigt, dass er sich in einem bearbeitbaren Status befindet.
  3. Die vollständige Ersetzung wird angewendet: Zeilen werden per id-Abgleich erstellt, aktualisiert oder gelöscht.
  4. Der Netto-, Umsatzsteuer- und Bruttobetrag jeder Position wird neu berechnet, und Zeilen werden nach Sortierreihenfolge von 1 bis n neu sequenziert.
  5. Die Kopfsummen werden neu berechnet.
  6. Alles wird in einer einzigen Transaktion gespeichert, die anwendbaren Regeln werden neu ausgewertet, und Prüfereignisse (BelegLineItemsUpdated, BelegTotalsRecomputed) werden aufgezeichnet.
Hinweis: Der gesamte Speichervorgang ist atomar. Wenn eine Zeile die Validierung nicht besteht — zum Beispiel eine inaktive Kostenstelle oder eine 21. Zeile — wird nichts geschrieben, und der Beleg behält seine bisherigen Positionen und Summen.

Zeilen neu anordnen

Sie können für jede Zeile eine Sortierreihenfolge festlegen, um ihre Position zu steuern. Nach dem Speichern normalisiert die Plattform die Sortierreihenfolge auf eine lückenlose Sequenz von 1 bis n auf Basis der von Ihnen gesendeten Werte (Gleichstände werden über die id aufgelöst), sodass eine Neuanordnung per Drag-and-drop im Raster sauber erhalten bleibt, ohne dass Sie die Nummern verwalten müssen.

Verwandte Artikel

  • Positionen zu einem Beleg hinzufügen
  • Wie Kopfsummen bei jeder Änderung neu berechnet werden
  • Wie Netto-, Umsatzsteuer- und Bruttobeträge berechnet werden
  • Wann Sie einen Beleg bearbeiten können: bearbeitbare Status
AH
Geschrieben von Alexander Hagemann
Aktualisiert:
Zugriff abgelehnt
Zugriff abgelehnt