Haushaltsbuch/fix_zuKontobewegung.php
2025-11-18 20:37:13 +01:00

190 lines
7.4 KiB
PHP

<?php
require_once __DIR__ . '/includes/db_connect.php';
session_start();
$data = $_SESSION['formdata'] ?? [];
unset($_SESSION['formdata']);
$konto_id = -1;
$monat_wert = -1;
$temp_date_gesetzt = false;
$stmt = $pdo->query("SELECT id, name
FROM zahlungsmonate
ORDER BY id ASC;");
$zahlungsmonate = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id,
name,
wert
FROM monat;");
$monat = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id, name
FROM zahlungstag
ORDER BY id ASC;");
$zahlungstag = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id, bezeichnung
FROM konto
ORDER BY id ASC;");
$konto = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT EXTRACT(YEAR FROM CURRENT_DATE) - 1 AS jahr
UNION SELECT EXTRACT(YEAR FROM CURRENT_DATE)
UNION SELECT EXTRACT(YEAR FROM CURRENT_DATE) + 1;");
$jahr = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT monat_wert
FROM temp_daten;");
$inhalt_temp_daten = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT kf.id AS kostenfix_id,
kf.beschreibung,
kf.betrag,
zt.name AS zahlungstag,
zm.name AS zahlungsmonate,
kf.konto_id,
k.bezeichnung AS konto
FROM kostenfix kf
JOIN zahlungstag zt ON zt.id = kf.zahlungstag_id
JOIN zahlungsmonate zm ON zm.id = kf.zahlungsmonate_id
JOIN konto k ON k.id = kf.konto_id
WHERE zm.name LIKE '%' || CAST(:monat_wert AS INT) || '%'
ORDER BY kf.id ASC");
$monat_wert = $monat[0]['wert'];
if(count($inhalt_temp_daten) > 0) {
$monat_wert = $inhalt_temp_daten[0]['monat_wert'];
$temp_date_gesetzt = true;
}
$stmt->execute(['monat_wert' => $monat_wert]);
$kostenfix = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script>
function aktualisiereTabelle(element) {
const monat_wert = element.value;
if (!monat_wert) return;
fetch("forms/fixkosten.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: "fixkosten_submit=aktualisieren&monat_wert=" + encodeURIComponent(monat_wert)
})
.then(response => response.json())
.then(data => {
console.log("Server-Antwort:", data.überschrift);
element.style.backgroundColor = "#d4edda";
setTimeout(() => element.style.backgroundColor = "", 800);
location.reload();
})
.catch(error => {
console.error("Fehler:", error);
element.style.backgroundColor = "#f8d7da";
});
}
</script>
</head>
<body>
<form method="POST" action="forms/fixkosten.php">
<div class="header">
<button class="header"
id="navigationLinks"
name="fixkosten_submit"
value="zuKontobewegung"
type="submit">
<span>hinzufügen</span>
</button>
<a href="fixkosten.php"
class="header"
id="navigationRechts">
abbrechen
</a>
</div>
<div class="inhalt">
<div class="umsatz_div" id="umsatz_links">
<p class="ausgabe" id="umsatz_p">
Fixkosten für Monat
</p>
</div>
<div class="umsatz_div" id="umsatz_rechts">
<select name="monat_id" class="fix_select" onchange="aktualisiereTabelle(this)">
<?php foreach ($monat as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<?php
if($temp_date_gesetzt) {
if($y['wert'] == $monat_wert) echo 'selected';
} else {
if($y['wert'] == date('m')) echo 'selected';
}
?>>
<?= htmlspecialchars($y['name']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="umsatz_div" id="umsatz_links">
<p class="ausgabe" id="umsatz_p">
Fixkosten für Jahr
</p>
</div>
<div class="umsatz_div" id="umsatz_rechts">
<select name="jahr" class="fix_select">
<?php foreach ($jahr as $y): ?>
<option value="<?= htmlspecialchars($y['jahr']) ?>" <?php if($y['jahr'] == date('Y')) echo 'selected';?>>
<?= htmlspecialchars($y['jahr']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<table>
<tr>
<th id="th_gebucht">Zyklus</th>
<th id="th_ausgegeben">Tag</th>
<th id="th_beschreibung">Beschreibung</th>
<th id="th_betrag">Betrag</th>
<th id="th_konto">Konto</th>
</tr>
<?php foreach ($kostenfix as $y): ?>
<tr>
<td class="td_text">
<?= htmlspecialchars($y['zahlungsmonate']) ?>
</td>
<td class="td_text">
<?= htmlspecialchars($y['zahlungstag']) ?>
</td>
<td class="td_text">
<?= htmlspecialchars($y['beschreibung']) ?>
</td>
<td class="<?= $y['betrag'] < 0 ? 'td_zahl_neg' : 'td_zahl_pos' ?>">
<?= number_format($y['betrag'], 2, ",", ".") ?> €
</td>
<td class="td_text">
<?= htmlspecialchars($y['konto']) ?>
</td>
<form id="hiddenFormÄndereFix" method="post" action="fix_edit.php">
<input id="hiddenInputÄndereFixKostenvariabelID" type="hidden" name="kostenfix_id">
<input id="hiddenInputEditTyp" type="hidden" name="editTyp" value="edit">
</form>
</tr>
<?php endforeach; ?>
</table>
</div>
</form>
</body>
</html>