Initial Commit
This commit is contained in:
65
api/rechnungen/generate.php
Normal file
65
api/rechnungen/generate.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
global $db;
|
||||
try {
|
||||
$betrieb_id = $_GET['betrieb_id'] ?? null;
|
||||
if (!$betrieb_id) { http_response_code(400); echo json_encode(['message'=>'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']);
|
||||
}
|
||||
Reference in New Issue
Block a user