'Betrieb-ID fehlt']); exit; } $betrieb_query = "SELECT id, name, adresse, email FROM betriebe WHERE id = :betrieb_id"; $betrieb_stmt = $db->prepare($betrieb_query); $betrieb_stmt->execute([':betrieb_id' => $betrieb_id]); $betrieb = $betrieb_stmt->fetch(); if (!$betrieb) { http_response_code(404); echo json_encode(['message'=>'Betrieb nicht gefunden']); exit; } $query = "SELECT k.name as kurs_name, k.gebuehr, COUNT(a.id) as anzahl_teilnehmer, (k.gebuehr * COUNT(a.id)) as gesamt_kurs FROM kurse k JOIN anmeldungen a ON k.id = a.kurs_id JOIN schueler s ON a.schueler_id = s.id WHERE s.betrieb_id = :betrieb_id GROUP BY k.id"; $stmt = $db->prepare($query); $stmt->execute([':betrieb_id' => $betrieb_id]); $zusammenfassung = []; $netto = 0.0; while ($row = $stmt->fetch()) { $zusammenfassung[] = [ 'kurs_name' => $row['kurs_name'], 'anzahl_teilnehmer' => (int)$row['anzahl_teilnehmer'], 'gebuehr' => (float)$row['gebuehr'], 'gesamt_kurs' => (float)$row['gesamt_kurs'] ]; $netto += (float)$row['gesamt_kurs']; } if (empty($zusammenfassung)) { http_response_code(404); echo json_encode(['message'=>'Keine Anmeldungen für diesen Betrieb gefunden']); exit; } $mwst_satz = 19; $mwst_betrag = $netto * ($mwst_satz / 100); $gesamtsumme = $netto + $mwst_betrag; $rechnung = [ 'rechnungsnummer' => 'RE-' . date('Y') . '-' . str_pad((string)$betrieb_id, 4, '0', STR_PAD_LEFT), 'datum' => date('Y-m-d'), 'betrieb' => [ 'id' => (int)$betrieb['id'], 'name' => $betrieb['name'], 'adresse' => $betrieb['adresse'], 'telefon' => '', 'email' => $betrieb['email'] ], 'zusammenfassung' => $zusammenfassung, 'netto' => round($netto, 2), 'mwst_satz' => $mwst_satz, 'mwst_betrag' => round($mwst_betrag, 2), 'gesamtsumme' => round($gesamtsumme, 2) ]; echo json_encode($rechnung); } catch (Exception $e) { error_log("Error in rechnungen/generate.php: " . $e->getMessage()); http_response_code(500); echo json_encode(['message' => 'Fehler beim Erstellen der Rechnung']); }