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';