API: Sortieren der Einträge

Aktuell müssen die Items in einer Rechnung (z.B. kb_position_monitoring) manuell im UI umsortiert werden. Dies ist insbesondere deshalb mühsam, weil Zeiterfassungen nicht in chronologischer Ordnung übernommen werden. Für Consulting-Mandate, wo es nicht selten ist, dass eine Rechnung 100(e) Einträge hat, ist das extrem mühsam.

Die Idee / Bitte ist, eine Sortierung per API zu erlauben.

Um Concurrency-Probleme zu vermeiden, folgende (zugegebenermassen nicht extrem lange durchgedachte) einfache Idee: statt eine einzelne position zu verschieben, wird eine liste der positionen mitgegeben. Diese muss jeweils pro level vollständig sein.

Das API könnte ich mir folgendermassen vorstellen (natürlich auch für die anderen betroffenen typen)

* Path: <base>/kb_invoice/<id>/kb_reorder_for_parent/<id>

** 1. ID: invoice

** 2. ID: "parent_id", leer für top-level items (alternativ: "kb_reorder" statt "kb_reorder_for_parent" für top level items)

* Verb: PATCH (oder POST um konsequent zu sein)

* Body: { "positions": [ { "id": <INT>, "pos": "STRING" }, ... ] }

Gleichzeitig würde ich empfehlen, die Bearbeitung von Rechnungen zu "synchronisieren", um generell Effekte von concurrent Updates zu vermeiden.

  • Chris Zwicker
  • Sep 13 2018
  • Future consideration