fix: Foto-Upload hängt an neuestem Entwurf, nicht blind an [0]
All checks were successful
Deploy bericht / deploy (push) Successful in 1s

- Wenn mehrere Berichte zum Auftrag existieren, wird der erste
  gefundene ENTWURF (status=0) wiederverwendet
- Finalisierte Berichte werden NICHT mehr mit neuen Seiten überschrieben
- Optional ?bericht_id=X um gezielt in einen bestimmten Bericht hochzuladen
- Wenn alle Berichte final sind, wird automatisch ein neuer Entwurf angelegt

So kann die PWA mehrere Fotos hintereinander in denselben Bericht
packen, statt pro Upload einen neuen anzulegen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
This commit is contained in:
Eduard Wisch 2026-04-09 00:44:28 +02:00
parent bcf48ccddc
commit 046b26665f

View file

@ -102,9 +102,23 @@ if ($action === 'upload_photo' && $_SERVER['REQUEST_METHOD'] === 'POST') {
if (!$user->hasRight('bericht', 'write')) api_fail('Schreibrechte fehlen', 403);
if (empty($_FILES['file']['tmp_name'])) api_fail('file fehlt');
// Bericht zum Auftrag suchen oder neu anlegen
$list = Bericht::fetchAllForElement($db, 'order', $cmd->id);
$bericht = !empty($list) ? $list[0] : null;
// Bericht zum Auftrag suchen: neuester ENTWURF wird erweitert.
// Wenn nur finalisierte Berichte existieren, wird ein neuer Entwurf angelegt.
// Mit ?bericht_id=X kann die PWA einen spezifischen Bericht addressieren.
$wanted_id = (int) ($_GET['bericht_id'] ?? 0);
$bericht = null;
if ($wanted_id > 0) {
$b = new Bericht($db);
if ($b->fetch($wanted_id) > 0 && $b->fk_element == $cmd->id && $b->element_type === 'order') {
$bericht = $b;
}
}
if (!$bericht) {
$list = Bericht::fetchAllForElement($db, 'order', $cmd->id);
foreach ($list as $b) {
if ((int) $b->status === Bericht::STATUS_DRAFT) { $bericht = $b; break; }
}
}
if (!$bericht) {
$bericht = new Bericht($db);
$bericht->element_type = 'order';