From 046b26665f6b409f7dfdd472b0b8d122ad68b339 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Thu, 9 Apr 2026 00:44:28 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Foto-Upload=20h=C3=A4ngt=20an=20neuestem?= =?UTF-8?q?=20Entwurf,=20nicht=20blind=20an=20[0]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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) [deploy] --- api/orders.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/api/orders.php b/api/orders.php index 3086258..80618fb 100644 --- a/api/orders.php +++ b/api/orders.php @@ -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';