20251213 - refactor + GUI update

This commit is contained in:
p3t3rp1Lz 2025-12-13 17:30:14 +01:00
parent 14f0ec91a3
commit 1dce3d435f
23 changed files with 517 additions and 336 deletions

View File

@ -1,6 +1,11 @@
<?php
require_once __DIR__ . '/includes/db_connect.php';
$labels = ["Jan", "Feb", "Mrz", "Apr"];
$reiheA = [10, 20, 15, 30];
$reiheB = [5, 12, 18, 25];
?>
<!DOCTYPE html>
@ -8,9 +13,47 @@ require_once __DIR__ . '/includes/db_connect.php';
<head>
<link rel="stylesheet" href="style.css">
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<h1>Hello World!</h1>
<div class="header">
<h2 class="seitentitel">
Diagramme
</h2>
<a href="index.php"
class="konto_header"
id="konto_navigationRechts">
<img src="img\home.svg" alt="Home" class="menue">
</a>
</div>
<div id="chart" style="width:600px;height:300px;"></div>
<script>
const labels = <?php echo json_encode($labels); ?>;
const reiheA = <?php echo json_encode($reiheA); ?>;
const reiheB = <?php echo json_encode($reiheB); ?>;
const data = [
{
x: labels,
y: reiheA,
type: "scatter",
mode: "lines",
name: "Reihe A"
},
{
x: labels,
y: reiheB,
type: "scatter",
mode: "lines",
name: "Reihe B"
}
];
Plotly.newPlot("chart", data, {
margin: { t: 20 }
});
</script>
</body>
</html>

View File

@ -8,7 +8,7 @@
$kostenfix_id = $_POST['kostenfix_id'];
$stmt = $pdo->prepare("SELECT kf.id AS kostenfix_id,
$stmt = $pdo->query("SELECT kf.id AS kostenfix_id,
kf.beschreibung,
zt.id AS zahlungstag_id,
zm.id AS zahlungsmonate_id,
@ -18,15 +18,8 @@
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 kf.id = :kostenfix_id;");
$stmt->execute(['kostenfix_id' => $kostenfix_id]);
$kostenfixFetchAll = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($kostenfixFetchAll) > 1) {
//TODO FEHLERHANDLING
} else {
$kostenfix = $kostenfixFetchAll[0];
}
WHERE kf.id = $kostenfix_id;");
$kostenfix = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id, name
FROM zahlungsmonate
@ -54,7 +47,7 @@
<body>
<form method="POST" action="forms/fixkosten.php">
<input type="hidden" name="kostenfix_id" value="<?= htmlspecialchars($kostenfix_id) ?>">
<input type="hidden" name="kostenfix_id" value="<?= $kostenfix_id ?>">
<div class="header">
<button class="header"
@ -62,19 +55,20 @@
name="fixkosten_submit"
value="speichern"
type="submit">
<span>speichern</span>
<img src="img\speichern.svg" alt="speichern" class="menue">
</button>
<button class="header"
id="navigationMitte"
name="fixkosten_submit"
value="löschen"
type="submit">
<span>Eintrag löschen</span>
<img src="img\löschen.svg" alt="löschen" class="menue">
</button>
<a href="fixkosten.php"
class="header"
id="navigationRechts">
abbrechen
<h2 class="seitentitel">
Fixkosten ändern
</h2>
<a href="fixkosten.php" class="header" id="navigationRechts">
<img src="img\abbrechen.svg" alt="abbrechen" class="menue">
</a>
</div>
@ -87,9 +81,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="zahlungsmonate_id" class="fix_select">
<?php foreach ($zahlungsmonate as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= ((isset($data['zahlungsmonate_id']) && $y['id'] == $data['zahlungsmonate_id']) || $y['id'] == $kostenfix['zahlungsmonate_id']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['name']) ?>
<?= $y['name'] ?>
</option>
<?php endforeach; ?>
</select>
@ -103,9 +97,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="zahlungstag_id" class="fix_select">
<?php foreach ($zahlungstag as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= ((isset($data['zahlungstag_id']) && $y['id'] == $data['zahlungstag_id']) || $y['id'] == $kostenfix['zahlungstag_id']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['name']) ?>
<?= $y['name'] ?>
</option>
<?php endforeach; ?>
</select>
@ -119,9 +113,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="konto_id" class="umsatz_select">
<?php foreach ($konto as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= ((isset($data['konto_id']) && $y['id'] == $data['konto_id']) || $y['id'] == $kostenfix['konto_id']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['bezeichnung']) ?>
<?= $y['bezeichnung'] ?>
</option>
<?php endforeach; ?>
</select>
@ -133,7 +127,7 @@
</p>
</div>
<div class="umsatz_div" id="umsatz_rechts">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= $data['beschreibung'] ?? $kostenfix['beschreibung']?>">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= htmlspecialchars($data['beschreibung'] ?? $kostenfix['beschreibung'], ENT_QUOTES, 'UTF-8') ?>">
</div>
<div class="umsatz_div" id="umsatz_links">

View File

@ -37,12 +37,13 @@
name="fixkosten_submit"
value="hinzufügen"
type="submit">
<span>hinzufügen</span>
<img src="img\speichern.svg" alt="neue Fixkosten" class="menue">
</button>
<a href="fixkosten.php"
class="header"
id="navigationRechts">
abbrechen
<h2 class="seitentitel">
neue Fixkosten hinzufügen
</h2>
<a href="fixkosten.php" class="konto_header" id="konto_navigationRechts">
<img src="img\abbrechen.svg" alt="Abbrechen" class="menue">
</a>
</div>
<div class="inhalt">
@ -54,9 +55,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="zahlungsmonate_id" class="fix_select">
<?php foreach ($zahlungsmonate as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= (isset($data['zahlungsmonate']) && $y['id'] == $data['zahlungsmonate']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['name']) ?>
<?= $y['name'] ?>
</option>
<?php endforeach; ?>
</select>
@ -70,9 +71,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="zahlungstag_id" class="fix_select">
<?php foreach ($zahlungstag as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= (isset($data['zahlungstag']) && $y['id'] == $data['zahlungstag']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['name']) ?>
<?= $y['name'] ?>
</option>
<?php endforeach; ?>
</select>
@ -86,9 +87,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="konto_id" class="umsatz_select">
<?php foreach ($konto as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= (isset($data['konto']) && $y['id'] == $data['konto']) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['bezeichnung']) ?>
<?= $y['bezeichnung'] ?>
</option>
<?php endforeach; ?>
</select>
@ -114,7 +115,7 @@
</p>
</div>
<div class="umsatz_div" id="umsatz_rechts">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= ($data['beschreibung']) ?? '' ?>">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= htmlspecialchars($data['beschreibung'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
</div>
<div class="umsatz_div" id="umsatz_links">

View File

@ -10,7 +10,8 @@
$monat_wert = -1;
$temp_date_gesetzt = false;
$stmt = $pdo->query("SELECT id, name
$stmt = $pdo->query("SELECT id,
name
FROM zahlungsmonate
ORDER BY id ASC;");
$zahlungsmonate = $stmt->fetchAll(PDO::FETCH_ASSOC);
@ -21,12 +22,14 @@
FROM monat;");
$monat = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id, name
$stmt = $pdo->query("SELECT id,
name
FROM zahlungstag
ORDER BY id ASC;");
$zahlungstag = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->query("SELECT id, bezeichnung
$stmt = $pdo->query("SELECT id,
bezeichnung
FROM konto
ORDER BY id ASC;");
$konto = $stmt->fetchAll(PDO::FETCH_ASSOC);
@ -105,12 +108,13 @@
name="fixkosten_submit"
value="zuKontobewegung"
type="submit">
<span>hinzufügen</span>
<img src="img\speichern.svg" alt="hinzufügen" class="menue">
</button>
<a href="fixkosten.php"
class="header"
id="navigationRechts">
abbrechen
<h2 class="seitentitel">
Fixkosten zu Kontobewegung
</h2>
<a href="fixkosten.php" class="konto_header" id="konto_navigationRechts">
<img src="img\abbrechen.svg" alt="Abbrechen" class="menue">
</a>
</div>
<div class="inhalt">
@ -122,7 +126,7 @@
<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']) ?>"
<option value="<?= $y['id'] ?>"
<?php
if($temp_date_gesetzt) {
if($y['wert'] == $monat_wert) echo 'selected';
@ -130,7 +134,7 @@
if($y['wert'] == date('m')) echo 'selected';
}
?>>
<?= htmlspecialchars($y['name']) ?>
<?= $y['name'] ?>
</option>
<?php endforeach; ?>
</select>
@ -144,8 +148,8 @@
<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 value="<?= $y['jahr'] ?>" <?php if($y['jahr'] == date('Y')) echo 'selected';?>>
<?= $y['jahr'] ?>
</option>
<?php endforeach; ?>
</select>

View File

@ -31,20 +31,17 @@
<body>
<form method="POST" action="forms/fixkostenZuKontobewegung.php">
<div class="header">
<a href="fix_neu.php"
class="header"
id="navigationLinks">
Neue Fixkosten
<a href="fix_neu.php" class="konto_header" id="konto_navigationLinks">
<img src="img\neueKontobewegung.svg" alt="neue Fixkosten" class="menue">
</a>
<a href="fix_zuKontobewegung.php"
class="header"
id="navigationMitte">
zu Konto hinzufügen
<a href="fix_zuKontobewegung.php" class="konto_header" id="konto_navigationLinks1">
<img src="img\fixkostenZuKontobewegung.svg" alt="Fixkosten zu Kontobewegung" class="menue">
</a>
<a href="index.php"
class="header"
id="navigationRechts">
HOME
<h2 class="seitentitel">
Fixkosten
</h2>
<a href="index.php" class="konto_header" id="konto_navigationRechts">
<img src="img\home.svg" alt="Home" class="menue">
</a>
</div>
</form>
@ -58,28 +55,23 @@
<th id="th_konto">Konto</th>
</tr>
<?php foreach ($kostenfix as $y): ?>
<tr>
<td class="td_text"
onClick="ändereFixkosten(<?= htmlspecialchars($y['kostenfix_id']) ?>)">
<?= htmlspecialchars($y['zahlungsmonate']) ?>
<tr onClick="ändereFixkosten(<?= $y['kostenfix_id'] ?>)">
<td class="td_text">
<?= $y['zahlungsmonate'] ?>
</td>
<td class="td_text"
onClick="ändereFixkosten(<?= htmlspecialchars($y['kostenfix_id']) ?>)">
<?= htmlspecialchars($y['zahlungstag']) ?>
<td class="td_text">
<?= $y['zahlungstag'] ?>
</td>
<td class="td_text"
onClick="ändereFixkosten(<?= htmlspecialchars($y['kostenfix_id']) ?>)">
<?= htmlspecialchars($y['beschreibung']) ?>
<td class="td_text">
<?= htmlspecialchars($y['beschreibung'], ENT_QUOTES, 'UTF-8') ?>
</td>
<td class="<?php if($y['betrag'] < 0) echo 'td_zahl_neg';
elseif($y['betrag'] > 0) echo 'td_zahl_pos';
else echo 'td_zahl_null'; ?>"
onClick="ändereFixkosten(<?= htmlspecialchars($y['kostenfix_id']) ?>)">
else echo 'td_zahl_null'; ?>">
<?= number_format($y['betrag'], 2, ",", ".") ?>
</td>
<td class="td_text"
onClick="ändereFixkosten(<?= htmlspecialchars($y['kostenfix_id']) ?>)">
<?= htmlspecialchars($y['konto']) ?>
<td class="td_text">
<?= $y['konto'] ?>
</td>
<form id="hiddenFormÄndereFix" method="post" action="fix_edit.php">

View File

@ -174,7 +174,9 @@
FROM monat
WHERE id = :monat_id;");
$stmt->execute([':monat_id' => $para_monat_id]);
$monat_wert = $stmt->fetchAll(PDO::FETCH_ASSOC);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$monat_wert = $row ?: null;
$stmt = $para_pdo->prepare("INSERT INTO kontobewegung (konto_id, betrag, beschreibung, datum_ausgegeben, kostenfix_id, datum_fixkosten_uebernommen)
SELECT kf.konto_id,
@ -192,7 +194,7 @@
WHERE kb_inner.kostenfix_id = kf.id
AND EXTRACT(MONTH FROM kb_inner.datum_ausgegeben) = CAST(:monat_wert AS INT)
AND EXTRACT(YEAR FROM kb_inner.datum_ausgegeben) = CAST(:jahr AS INT));");
$stmt->execute(['monat_wert' => $monat_wert[0]['wert'],
$stmt->execute(['monat_wert' => $monat_wert['wert'],
'jahr' => $para_jahr]);
$para_pdo->commit();

View File

@ -113,14 +113,13 @@
JOIN konto k ON k.id = kb.konto_id
WHERE kb.id = :kontobewegung_id;");
$stmt->execute(['kontobewegung_id' => $para_kontobewegung_id]);
$kontobewegung = $stmt->fetchAll(PDO::FETCH_ASSOC);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$kontobewegung = $row ?: null;
if(count($kontobewegung) > 1) throw new Exception('Mehr als eine Kontobewegung gefunden');
$konto_id_vorher = $kontobewegung[0]['konto_id'];
$datum_abgebucht_vorher = $kontobewegung[0]['datum_abgebucht'];
$kontostand_vorher_konto_vorher = $kontobewegung[0]['kontostand'];
$betrag_vorher = $kontobewegung[0]['betrag'];
$konto_id_vorher = $kontobewegung['konto_id'];
$datum_abgebucht_vorher = $kontobewegung['datum_abgebucht'];
$kontostand_vorher_konto_vorher = $kontobewegung['kontostand'];
$betrag_vorher = $kontobewegung['betrag'];
$stmt = $para_pdo->prepare("SELECT kontostand
FROM konto
@ -196,14 +195,14 @@
FROM kontobewegung
WHERE id = :kontobewegung_id;");
$stmt->execute(['kontobewegung_id' => $para_kontobewegung_id]);
$kontobewegung = $stmt->fetchAll(PDO::FETCH_ASSOC);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$kontobewegung = $row ?: null;
try {
if(count($kontobewegung) > 1) throw new Exception("Multiple Kontobewegungen gefunden");
$datum_abgebucht = $kontobewegung[0]['datum_abgebucht'];
$betrag = $kontobewegung[0]['betrag'];
$konto_id = $kontobewegung[0]['konto_id'];
$datum_abgebucht = $kontobewegung['datum_abgebucht'];
$betrag = $kontobewegung['betrag'];
$konto_id = $kontobewegung['konto_id'];
$para_pdo->beginTransaction();
@ -250,10 +249,10 @@
WHERE EXTRACT(MONTH FROM CAST(:datum_ausgegeben AS DATE)) = CAST(wert AS INT);");
$stmt->execute(['datum_ausgegeben' => $para_datum_ausgegeben]);
$monat = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$monat_id = $monat['id'];
$jahr = $monat['jahr'];
$monat_id = $row ? $row['id'] : -1;
$jahr = $row ? $row['jahr'] : 2000;
$stmt = $para_pdo->prepare("SELECT betrag
FROM hist_restguthaben
@ -261,10 +260,12 @@
AND jahr = :jahr;");
$stmt->execute(['monat_id' => $monat_id,
'jahr' => $jahr]);
$hist_restguthaben = $stmt->fetchAll(PDO::FETCH_ASSOC);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$hist_restguthaben = $row ?: null;
if(isset($hist_restguthaben)) {
$betrag = $hist_restguthaben[0]['betrag'] + $para_betrag;
$betrag = $hist_restguthaben['betrag'] + $para_betrag;
$stmt = $para_pdo->prepare("UPDATE hist_restguthaben
SET betrag = :betrag

View File

@ -1,50 +0,0 @@
<?php
require_once __DIR__ . '/includes/db_connect.php';
$stmt = $pdo->query("SELECT m.name,
hrg.jahr,
hrg.betrag
FROM hist_restguthaben hrg
JOIN monat m ON m.id = hrg.monat_id;");
$historie = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="header">
<a href="index.php"
class="konto_header"
id="konto_navigationRechts">
HOME
</a>
</div>
<div class="inhalt">
<table>
<tr>
<th id="th_gebucht">Jahr</th>
<th id="th_ausgegeben">Monat</th>
<th id="th_betrag">Betrag</th>
</tr>
<?php foreach ($historie as $y): ?>
<tr>
<td class="td_datum">
<?= htmlspecialchars($y['name']) ?? '' ?>
</td>
<td class="td_datum">
<?= htmlspecialchars($y['jahr']) ?? '' ?>
</td>
<td class="<?= $y['betrag'] < 0 ? 'td_zahl_neg' : 'td_zahl_pos' ?>">
<?= number_format($y['betrag'], 2, ",", ".") ?>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</body>
</html>

19
img/abbrechen.svg Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" ?>
<svg enable-background="new 0 0 512 512" id="Layer_1" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
<g>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.0000038" x2="512" y1="256" y2="256">
<stop offset="0" style="stop-color:#14748A"/>
<stop offset="1" style="stop-color:#17859E"/>
</linearGradient>
<circle cx="256" cy="256" fill="url(#SVGID_1_)" r="256"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="42.6666679" x2="469.3333435" y1="256.0005188" y2="256.0005188">
<stop offset="0" style="stop-color:#17859E"/>
<stop offset="1" style="stop-color:#14748A"/>
</linearGradient>
<path d="M256,469.3338623c-117.6314697,0-213.3333282-95.7018738-213.3333282-213.3333435 c0-117.6309204,95.7018585-213.333313,213.3333282-213.333313c117.636261,0,213.3333435,95.7024002,213.3333435,213.333313 C469.3333435,373.6319885,373.636261,469.3338623,256,469.3338623z" fill="url(#SVGID_2_)"/>
</g>
<path d="M313.7276001,144h-99.4075928L144,214.2714691v99.4085236L214.3200073,384h99.4075928L384,313.6799927 v-99.4085236L313.7276001,144z M314.0209351,306.9216003l-7.0705261,7.0704041l-42.9370728-42.9370728l-42.9364166,42.9370728 l-7.0710449-7.0704041l42.9370575-42.9370728l-42.9370575-42.9370575l7.0710449-7.0704041l42.9364166,42.9370575 l42.9370728-42.9370575l7.0705261,7.0704041l-42.9371948,42.9370575L314.0209351,306.9216003z" opacity="0.3"/>
<path d="M305.7276001,136h-99.4075928L136,206.2714691v99.4085236L206.3200073,376h99.4075928L376,305.6799927 v-99.4085236L305.7276001,136z M306.0209351,298.9216003l-7.0705261,7.0704041l-42.9370728-42.9370728l-42.9364166,42.9370728 l-7.0710449-7.0704041l42.9370575-42.9370728l-42.9370575-42.9370575l7.0710449-7.0704041l42.9364166,42.9370728 l42.9370728-42.9370728l7.0705261,7.0704041l-42.9371948,42.9370575L306.0209351,298.9216003z" fill="#FFFFFF"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

4
img/diagramme.svg Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" ?><svg id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style type="text/css">
.st0{fill:#14748A;}
.st1{fill:#232323;}
</style><g id="XMLID_174_"><path class="st0" d="M41,315.8c-5.8,0-11.4-1.6-16.4-4.6L6,300v172.5h67.5V297.1l-11,10.2 C56.7,312.8,49,315.8,41,315.8z" id="XMLID_3390_"/><polygon class="st0" id="XMLID_183_" points="143.2,232.4 143.2,472.6 210.8,472.6 210.8,225.5 176.1,201.8 "/><path class="st0" d="M290.2,273.1c-6.4,0-12.6-1.9-17.9-5.5l-13.3-9.1v214h67.5V251.8L311,265.4 C305.2,270.4,297.8,273.1,290.2,273.1z" id="XMLID_182_"/><polygon class="st0" id="XMLID_175_" points="378.5,472.6 446,472.6 446,148 378.5,206.7 "/><path class="st1" d="M401.1,69.3L429,96.4L288.8,217.5l-105.1-71.8c-7.3-5-17.2-4.3-23.7,1.8l-121.6,113L6.1,240.9 v44.4l25.1,15.1c7.3,4.4,16.5,3.4,22.8-2.4l120.9-112.4l104.6,71.5c7.1,4.9,16.7,4.3,23.2-1.3l153.7-132.9l23,22.3L506,39.4 L401.1,69.3z" id="XMLID_498_"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
img/fixkosten.png.orig Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

39
img/fixkosten.svg Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="exchange-euro" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" viewBox="0 0 99.997 99.9956" enable-background="new 0 0 99.997 99.9956" xml:space="preserve">
<circle id="exchange-euro-label" fill="#14748A" cx="49.998" cy="49.9978" r="49.9978"/>
<g id="exchange-euro-exchange-euro">
<g>
<path fill="#FFFFFF" d="M29.4746,69.2818c-5.1494-5.1533-7.9859-12.001-7.9859-19.2827c0-13.5025,10.0655-25.1089,23.4117-26.9991
l0.1333-0.0087h7.4467v1.9042h-7.3789C32.7207,26.6812,23.393,37.462,23.393,49.9991c0,6.7749,2.6382,13.144,7.4278,17.937
L29.4746,69.2818L29.4746,69.2818z"/>
</g>
<g>
<path fill="#EB8619" d="M55.0303,77.0044H47.518v-1.9033h7.3775c12.3808-1.7861,21.7099-12.5683,21.7099-25.1045
c-0.0009-6.7754-2.6396-13.1445-7.4306-17.935l1.3486-1.3467c5.1485,5.1509,7.9854,11.998,7.9854,19.2817
c0,13.5039-10.0664,25.1074-23.4131,26.9981L55.0303,77.0044L55.0303,77.0044z"/>
</g>
<g>
<polygon fill="#FFFFFF" points="46.3291,31.4405 44.9844,30.0957 51.1338,23.9449 44.9844,17.7955 46.3291,16.4488
53.1533,23.271 53.1533,24.6167 46.3291,31.4405 "/>
</g>
<g>
<polygon fill="#EB8619" points="53.667,83.5455 46.8471,76.7261 46.8467,75.3804 53.667,68.5552 55.0127,69.9009 48.8662,76.0533
55.0127,82.2017 53.667,83.5455 "/>
</g>
<g>
<path fill="#43C7D2" d="M51.664,64.1734c-4.9008,0-10.7431-2.4297-10.7431-14.0064c0-8.6928,3.5141-12.9179,10.7431-12.9179
c8.1524,0,9.4873,3.5297,9.6114,3.9321l-1.8174,0.5654c-0.0029,0.0005-1.0664-2.5942-7.794-2.5942
c-6.1128,0-8.8398,3.3965-8.8398,11.0146c0,8.1451,2.8916,12.1031,8.8398,12.1031c6.7491,0,7.7393-3.4815,7.7784-3.6319
l1.8515,0.4463C61.2461,59.2915,60.0107,64.1734,51.664,64.1734L51.664,64.1734z"/>
</g>
<g>
<polygon fill="#43C7D2" points="53.8398,50.0303 37.5224,50.0303 37.5224,48.126 53.8398,48.126 53.8398,50.0303 "/>
</g>
<g>
<polygon fill="#43C7D2" points="53.8398,54.3814 37.5224,54.3814 37.5224,52.479 53.8398,52.479 53.8398,54.3814 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW X6 -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100%" height="100%" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 500 500"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.fil4 {fill:#005792}
.fil5 {fill:url(#id0)}
.fil1 {fill:url(#id1)}
.fil8 {fill:url(#id2)}
.fil6 {fill:url(#id3)}
.fil9 {fill:url(#id4)}
.fil2 {fill:url(#id5)}
.fil10 {fill:url(#id6)}
.fil7 {fill:url(#id7)}
.fil3 {fill:url(#id8)}
]]>
</style>
<linearGradient id="id0" gradientUnits="userSpaceOnUse" x1="259.137" y1="392.265" x2="397.493" y2="392.265">
<stop offset="0" style="stop-color:#14748A"/>
<stop offset="0.619608" style="stop-color:#14748A"/>
<stop offset="1" style="stop-color:#14748A"/>
</linearGradient>
<linearGradient id="id1" gradientUnits="userSpaceOnUse" xlink:href="#id0" x1="357.629" y1="173.135" x2="287.729" y2="52.065">
</linearGradient>
<linearGradient id="id2" gradientUnits="userSpaceOnUse" xlink:href="#id0" x1="123.788" y1="191.355" x2="54.2" y2="311.885">
</linearGradient>
<linearGradient id="id3" gradientUnits="userSpaceOnUse" x1="427.72" y1="227.345" x2="419.434" y2="385.599">
<stop offset="0" style="stop-color:#14748A"/>
<stop offset="0.631373" style="stop-color:#14748A"/>
<stop offset="1" style="stop-color:#14748A"/>
</linearGradient>
<linearGradient id="id4" gradientUnits="userSpaceOnUse" xlink:href="#id3" x1="182.238" y1="420.247" x2="49.084" y2="333.783">
</linearGradient>
<linearGradient id="id5" gradientUnits="userSpaceOnUse" xlink:href="#id3" x1="131.354" y1="108.359" x2="270.144" y2="37.635">
</linearGradient>
<linearGradient id="id6" gradientUnits="userSpaceOnUse" x1="165.488" y1="331.016" x2="60.537" y2="331.016">
<stop offset="0" style="stop-color:#14748A"/>
<stop offset="1" style="stop-color:#14748A"/>
</linearGradient>
<linearGradient id="id7" gradientUnits="userSpaceOnUse" xlink:href="#id6" x1="359.246" y1="287.046" x2="410.884" y2="376.486">
</linearGradient>
<linearGradient id="id8" gradientUnits="userSpaceOnUse" xlink:href="#id6" x1="216.01" y1="138.562" x2="267.81" y2="48.842">
</linearGradient>
</defs>
<g id="Layer_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<g id="_1546748816">
<g>
<path id="path2742" class="fil1" d="M398 91l-18 8c-2,1 -5,0 -6,-2l-30 -47c-14,-22 -42,-19 -62,-7 -14,9 -26,27 -36,45 -1,2 -1,3 0,5l32 59c1,2 1,5 -1,6l-11 7c-2,1 -3,3 -3,6 1,2 3,3 5,3l89 3c1,0 3,-1 4,-3l43 -76c1,-2 1,-4 -1,-5 -1,-2 -3,-2 -5,-2z"/>
<path class="fil2" d="M246 88l-54 92c-2,3 -5,3 -7,2l-87 -50c-3,-2 -4,-5 -2,-7 10,-18 20,-36 31,-54 12,-21 28,-44 47,-43l139 6c-11,0 -22,4 -31,9 -14,9 -26,27 -36,45z"/>
<path class="fil3" d="M246 88l-54 92c-2,3 -5,3 -7,2l-3 -2c2,2 5,1 7,-1l54 -93c10,-18 22,-36 36,-45 7,-3 14,-6 21,-8l13 1c-11,0 -22,4 -31,9 -14,9 -26,27 -36,45z"/>
<path id="path2742_0" class="fil4" d="M398 91l-18 8c-2,1 -5,0 -6,-2l-30 -47c-14,-22 -42,-19 -62,-7 -13,8 -25,26 -35,43 10,-16 21,-32 34,-40 19,-12 47,-15 61,6l30 48c2,2 4,2 6,1l18 -7c2,-1 4,0 6,1 1,2 1,4 0,6l-41 74c0,0 0,-1 0,-1l43 -76c1,-2 1,-4 -1,-5 -1,-2 -3,-2 -5,-2zm-121 67c0,0 0,0 0,0l-11 7c-2,1 -2,2 -3,3 1,0 1,0 1,0l11 -7c1,-1 2,-2 2,-3z"/>
</g>
<g>
<path id="path2742_1" class="fil5" d="M309 468l3 -19c0,-3 2,-4 4,-5l56 -2c26,-1 37,-27 37,-50 -1,-16 -11,-36 -21,-54 -1,-1 -2,-2 -4,-2l-68 -2c-2,0 -4,-2 -4,-5l-1 -13c0,-2 -1,-3 -3,-4 -2,-1 -4,0 -6,2l-46 76c-1,1 -1,3 0,5l44 75c1,2 3,3 5,2 2,0 4,-2 4,-4z"/>
<path class="fil6" d="M388 338l-53 -93c-1,-2 0,-5 2,-7l88 -50c2,-2 5,-1 6,2 10,17 21,35 31,53 13,21 24,47 14,63l-75 117c6,-9 8,-20 8,-31 -1,-16 -11,-36 -21,-54z"/>
<path class="fil7" d="M388 338l-53 -93c-1,-2 0,-5 2,-7l3 -1c-2,1 -3,4 -2,6l53 93c10,18 20,38 21,54 0,8 -1,15 -4,22l-7 11c6,-9 8,-20 8,-31 -1,-16 -11,-36 -21,-54z"/>
<path id="path2742_2" class="fil4" d="M309 468l3 -19c0,-3 2,-4 4,-5l56 -2c26,-1 37,-27 37,-50 -1,-16 -10,-35 -20,-52 9,16 18,34 18,49 1,23 -11,49 -36,50l-56 3c-3,0 -4,2 -5,4l-3 19c0,2 -1,4 -3,4 -2,1 -4,0 -5,-2l-43 -73c0,0 0,0 0,1l44 75c1,2 3,3 5,2 2,0 4,-2 4,-4zm3 -138c0,0 0,0 0,-1l-1 -13c0,-1 0,-2 -1,-3 0,0 0,0 0,1l0 13c0,1 1,2 2,3z"/>
</g>
<g>
<path id="path2742_3" class="fil8" d="M33 197l15 12c2,2 3,4 2,6l-26 50c-12,23 5,45 25,56 14,8 36,9 57,9 2,0 3,-1 4,-2l35 -58c2,-2 5,-3 7,-1l11 6c2,1 4,0 6,-1 1,-2 2,-4 1,-6l-43 -78c0,-1 -2,-2 -4,-2l-87 0c-2,0 -4,2 -5,4 0,2 0,4 2,5z"/>
<path class="fil9" d="M106 330l107 1c3,0 5,2 5,5l0 101c0,3 -2,5 -5,5 -20,0 -41,0 -62,0 -25,1 -52,-2 -61,-19l-64 -124c5,10 14,17 23,22 14,8 36,9 57,9z"/>
<path class="fil10" d="M106 330l107 1c3,0 5,2 5,5l0 3c0,-2 -2,-4 -5,-4l-107 -1c-21,0 -43,-1 -57,-9 -6,-4 -13,-9 -17,-14l-6 -12c5,10 14,17 23,22 14,8 36,9 57,9z"/>
<path id="path2742_4" class="fil4" d="M33 197l15 12c2,2 3,4 2,6l-26 50c-12,23 5,45 25,56 14,8 35,9 55,9 -19,0 -39,-1 -52,-9 -20,-11 -37,-33 -25,-56l26 -50c1,-2 0,-4 -1,-6l-16 -12c-2,-1 -2,-3 -2,-5 1,-2 3,-4 5,-4l85 0c0,0 -1,0 -1,0l-87 0c-2,0 -4,2 -5,4 0,2 0,4 2,5zm118 71c0,0 1,1 1,1l11 6c1,0 3,1 4,0 0,0 0,0 -1,0l-11 -6c-1,-1 -3,-1 -4,-1z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

51
img/home.svg Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="460.298px" height="460.297px" viewBox="0 0 460.298 460.297" style="enable-background:new 0 0 460.298 460.297;"
xml:space="preserve">
<g>
<g>
<path fill="#14748A" d="M230.149,120.939L65.986,256.274c0,0.191-0.048,0.472-0.144,0.855c-0.094,0.38-0.144,0.656-0.144,0.852v137.041
c0,4.948,1.809,9.236,5.426,12.847c3.616,3.613,7.898,5.431,12.847,5.431h109.63V303.664h73.097v109.64h109.629
c4.948,0,9.236-1.814,12.847-5.435c3.617-3.607,5.432-7.898,5.432-12.847V257.981c0-0.76-0.104-1.334-0.288-1.707L230.149,120.939
z"/>
<path fill="#14748A" d="M457.122,225.438L394.6,173.476V56.989c0-2.663-0.856-4.853-2.574-6.567c-1.704-1.712-3.894-2.568-6.563-2.568h-54.816
c-2.666,0-4.855,0.856-6.57,2.568c-1.711,1.714-2.566,3.905-2.566,6.567v55.673l-69.662-58.245
c-6.084-4.949-13.318-7.423-21.694-7.423c-8.375,0-15.608,2.474-21.698,7.423L3.172,225.438c-1.903,1.52-2.946,3.566-3.14,6.136
c-0.193,2.568,0.472,4.811,1.997,6.713l17.701,21.128c1.525,1.712,3.521,2.759,5.996,3.142c2.285,0.192,4.57-0.476,6.855-1.998
L230.149,95.817l197.57,164.741c1.526,1.328,3.521,1.991,5.996,1.991h0.858c2.471-0.376,4.463-1.43,5.996-3.138l17.703-21.125
c1.522-1.906,2.189-4.145,1.991-6.716C460.068,229.007,459.021,226.961,457.122,225.438z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

1
img/löschen.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg enable-background="new 0 0 512 512" id="Layer_1" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><g><linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="-0.0000027" x2="512" y1="256" y2="256"><stop offset="0" style="stop-color:#14748A"/><stop offset="1" style="stop-color:#17859E"/></linearGradient><circle cx="256" cy="256" fill="url(#SVGID_1_)" r="256"/><linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="42.6666641" x2="469.3333435" y1="256.0005188" y2="256.0005188"><stop offset="0" style="stop-color:#17859E"/><stop offset="1" style="stop-color:#14748A"/></linearGradient><path d="M256,469.3338623c-117.6314697,0-213.3333435-95.7023926-213.3333435-213.3333435 c0-117.6314545,95.7018661-213.333313,213.3333435-213.333313c117.636261,0,213.3333435,95.7018661,213.3333435,213.333313 C469.3333435,373.6314697,373.636261,469.3338623,256,469.3338623z" fill="url(#SVGID_2_)"/></g><path d="M381.4981384,174.610672h-45.6714783v-21.6021423c0-4.9701233-4.0287781-8.9983978-8.9989319-8.9983978 H201.1704559c-4.9700775,0-8.9992065,4.0282745-8.9992065,8.9983978v21.6021423h-45.6693878v9.9989319h20.962677 l22.7453766,183.5509186c1.1203766,9.0400085,8.801712,15.8288269,17.9104004,15.8288269h111.7570038 c9.1093445,0,16.7904053-6.7888184,17.9109497-15.8288269l22.7456055-183.5509186h20.9642639V174.610672z M221.0897064,351.9584045 l-9.9256592-129.5248108l9.9696655-0.7615967l9.9261322,129.5248108L221.0897064,351.9584045z M268.9985657,351.5776062h-9.9991455 V222.0527954h9.9991455V351.5776062z M306.9077454,351.9584045l-9.9701538-0.7615967l9.9264221-129.5248108l9.969574,0.7615967 L306.9077454,351.9584045z" opacity="0.3"/><path d="M373.4981384,166.610672h-45.6714783v-21.6021423c0-4.9701233-4.0287781-8.9983978-8.9989319-8.9983978 H193.1704559c-4.9700775,0-8.9992523,4.0282745-8.9992523,8.9983978v21.6021423h-45.669342v9.9989319h20.962677 l22.7455902,183.5509186c1.1200104,9.0400085,8.8014984,15.8288269,17.9101868,15.8288269h111.7570038 c9.1093445,0,16.7904053-6.7888184,17.9109497-15.8288269l22.7456055-183.5509186h20.9642639V166.610672z M213.0897064,343.9584045 l-9.9256592-129.5248108l9.9696655-0.7615967l9.9261322,129.5248108L213.0897064,343.9584045z M260.9985657,343.5776062h-9.9991455 V214.0527954h9.9991455V343.5776062z M298.9077454,343.9584045l-9.9700928-0.7615967l9.9263611-129.5248108l9.969574,0.7615967 L298.9077454,343.9584045z" fill="#FFFFFF"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

19
img/neueKontobewegung.svg Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" ?>
<svg enable-background="new 0 0 512 512" id="Layer_1" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
<g>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.0000038" x2="512" y1="256" y2="256">
<stop offset="0" style="stop-color:#14748A"/>
<stop offset="1" style="stop-color:#17859E"/>
</linearGradient>
<circle cx="256" cy="256" fill="url(#SVGID_1_)" r="256"/>
<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="42.6666679" x2="469.3333435" y1="256.0005188" y2="256.0005188">
<stop offset="0" style="stop-color:#17859E"/>
<stop offset="1" style="stop-color:#14748A"/>
</linearGradient>
<path d="M256,469.3338623c-117.6309357,0-213.3333282-95.7023926-213.3333282-213.3333435 c0-117.6314545,95.7023926-213.333313,213.3333282-213.333313c117.636261,0,213.3333435,95.7018661,213.3333435,213.333313 C469.3333435,373.6314697,373.636261,469.3338623,256,469.3338623z" fill="url(#SVGID_2_)"/>
</g>
<polygon id="XMLID_109_" opacity="0.3" points="384,242.5413361 285.459198,242.5413361 285.459198,144 242.5424042,144 242.5424042,242.5413361 144,242.5413361 144,285.4581299 242.5424042,285.4581299 242.5424042,384 285.459198,384 285.459198,285.4581299 384,285.4581299 "/>
<polygon fill="#FFFFFF" id="XMLID_189_" points="376,234.5413361 277.459198,234.5413361 277.459198,136 234.5424042,136 234.5424042,234.5413361 136,234.5413361 136,277.4581299 234.5424042,277.4581299 234.5424042,376 277.459198,376 277.459198,277.4581299 376,277.4581299 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg enable-background="new 0 0 512 512" id="Layer_1" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><g><linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0.0000038" x2="512" y1="256" y2="256"><stop offset="0" style="stop-color:#33B49D"/><stop offset="1" style="stop-color:#00A185"/></linearGradient><circle cx="256" cy="256" fill="url(#SVGID_1_)" r="256"/><linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="42.6666679" x2="469.3333435" y1="256.0005188" y2="256.0005188"><stop offset="0" style="stop-color:#00A185"/><stop offset="1" style="stop-color:#33B49D"/></linearGradient><path d="M256,469.3338623c-117.6309357,0-213.3333282-95.7023926-213.3333282-213.3333435 c0-117.6314545,95.7023926-213.333313,213.3333282-213.333313c117.636261,0,213.3333435,95.7018661,213.3333435,213.333313 C469.3333435,373.6314697,373.636261,469.3338623,256,469.3338623z" fill="url(#SVGID_2_)"/></g><polygon id="XMLID_109_" opacity="0.3" points="384,242.5413361 285.459198,242.5413361 285.459198,144 242.5424042,144 242.5424042,242.5413361 144,242.5413361 144,285.4581299 242.5424042,285.4581299 242.5424042,384 285.459198,384 285.459198,285.4581299 384,285.4581299 "/><polygon fill="#FFFFFF" id="XMLID_189_" points="376,234.5413361 277.459198,234.5413361 277.459198,136 234.5424042,136 234.5424042,234.5413361 136,234.5413361 136,277.4581299 234.5424042,277.4581299 234.5424042,376 277.459198,376 277.459198,277.4581299 376,277.4581299 "/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

3
img/speichern.svg Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" ?><svg id="Layer_1" style="enable-background:new 0 0 612 792;" version="1.1" viewBox="0 0 612 792" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style type="text/css">
.st0{clip-path:url(#SVGID_2_);fill:#14748A;}
</style><g><g><defs><rect height="512" id="SVGID_1_" width="512" x="50" y="140"/></defs><clipPath id="SVGID_2_"><use style="overflow:visible;" xlink:href="#SVGID_1_"/></clipPath><path class="st0" d="M562,619V254l0,0c-0.1-2.9-1.2-6.1-4.1-9L457.4,144.5c0,0-5.3-4.9-11.7-4.5l0,0H83c0,0-33,0-33,33v446 c0,0,0,33,33,33h446C529,652,562,652,562,619L562,619z M453,303c0,22-22,22-22,22H181c-22,0-22-22-22-22V198c0-22,22-22,22-22h250 c22,0,22,22,22,22V303L453,303z M526,594c0,22-22,22-22,22H108c-22,0-22-22-22-22V394c0-22,22-22,22-22h396c22,0,22,22,22,22V594 L526,594z M435,296v-91c0,0,0-15-15-15h-49c0,0-15,0-15,15v91c0,0,0,15,15,15h49C420,311,435,311,435,296L435,296z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 973 B

View File

@ -15,19 +15,17 @@
ORDER BY k.id ASC;");
$kontos = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $pdo->prepare("SELECT SUM(betrag) AS restguthaben
FROM kontobewegung
WHERE (konto_id = :konto1 OR konto_id = :konto2)
AND EXTRACT(MONTH FROM datum_ausgegeben) = EXTRACT(MONTH FROM CURRENT_DATE);");
$stmt->execute(['konto1' => 1,
'konto2' => 2]);
$restguthaben = ($stmt->fetchAll(PDO::FETCH_ASSOC))[0]['restguthaben'];
$stmt = $pdo->query("SELECT name
FROM monat
WHERE CAST(wert AS INT) = EXTRACT(MONTH FROM CURRENT_DATE);");
$monat = $stmt->fetchAll(PDO::FETCH_ASSOC)[0]['name'];
$stmt = $pdo->query("SELECT SUM(kb.betrag) AS restguthaben,
m.name
FROM kontobewegung kb
JOIN monat m ON CAST(m.wert AS INT) = EXTRACT(MONTH FROM CURRENT_DATE)
WHERE kb.konto_id IN (1, 2)
AND EXTRACT(MONTH FROM kb.datum_ausgegeben) = EXTRACT(MONTH FROM CURRENT_DATE)
AND COALESCE(kb.bei_restguthaben_ignorieren, false) <> true
GROUP BY m.name;;");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$restguthaben = $row ? $row['restguthaben'] : -0;
$monat = $row ? $row['name'] : '';
?>
<!DOCTYPE html>
@ -39,52 +37,41 @@
<body>
<div class="header">
<?php
if($system == 'test') {
echo '<h2 class="restguthaben">Testsystem</h2>';
}
?>
<h2 class="restguthaben">
Restguthaben <?= htmlspecialchars($monat)?>: <?= htmlspecialchars($restguthaben ?? '0') ?> €
<a href="kontobewegung_neu.php" class="konto_header" id="konto_navigationLinks">
<img src="img\neueKontobewegung.svg" alt="neue Kontobewegung" class="menue">
</a>
<a href="fixkosten.php" class="konto_header" id="konto_navigationLinks1">
<img src="img\fixkosten.svg" alt="Fixkosten" class="menue">
</a>
<h2 class="seitentitel">
Restguthaben <?= $monat?>: <?= number_format($restguthaben, 2, ",", ".") ?> €
</h2>
<a href="diagramme.php" class="konto_header" id="konto_navigationRechts">
<img src="img\diagramme.svg" alt="Diagramme" class="menue">
</a>
</div>
<div class="inhalt">
<?php foreach ($kontos as $y): ?>
<a href="konto.php?id=<?= htmlspecialchars($y['id']) ?>"
class="kontoübersicht"
id="container"
style="background-color: <?= htmlspecialchars($y['color']) ?>;">
<a href="konto.php?id=<?= $y['id'] ?>" class="kontoübersicht" id="container" style="background-color:<?= $y['color'] ?>;">
<div class="kontoübersicht" id="containerInnenLinks">
<p class="ausgabe" id="überschrift">
<?= htmlspecialchars($y['bezeichnung']) ?>
<?= $y['bezeichnung'] ?>
</p>
<p id="infotext">
<?= htmlspecialchars($y['bankname']) ?> \
<?= htmlspecialchars($y['kontoinhaber']) ?>
<?= $y['bankname'] ?> \
<?= $y['kontoinhaber'] ?>
</p>
</div>
<div class="kontoübersicht" id="containerInnenRechts">
<p class="ausgabe" id="kontostand">
<?= number_format(htmlspecialchars($y['kontostand']), 2, ",", ".") ?>
<?= number_format($y['kontostand'], 2, ",", ".") ?>
</p>
</div>
</a>
<?php endforeach; ?>
<a href="kontobewegung_neu.php" class="navigation_index">
Neue Kontobewegung
</a>
<a href="fixkosten.php" class="navigation_index">
Fixkosten
</a>
<a href="diagramme.php" class="navigation_index">
Diagramme
</a>
<a href="historie.php" class="navigation_index">
Historie
</a>
</div>
<?= $system === 'test' ? '<div class="menue"><h2 class="seitentitel">Testsystem</h2></div>' : '' ?>
</body>
</html>

View File

@ -2,42 +2,39 @@
require_once __DIR__ . '/includes/db_connect.php';
$system = getenv('POSTGRES_SYSTEM') ?? 'test';
$konto_id = $_GET['id'];
$G_konto_id = isset($_GET['id']) ? (int)$_GET['id'] : -1;
$stmt = $pdo->prepare("SELECT id,
$stmt = $pdo->query("SELECT id,
kontostand,
darstellungsfarbe AS backgroundcolor,
bezeichnung AS konto
bezeichnung AS konto,
(date_trunc('month', CURRENT_DATE::date) - interval '2 month')::date AS von,
(date_trunc('month', CURRENT_DATE::date) + interval '1 month' - interval '1 day')::date AS bis
FROM konto
WHERE id = :konto_id;");
$stmt->execute(['konto_id' => $konto_id]);
$konto = $stmt->fetchAll(PDO::FETCH_ASSOC);
WHERE id = $G_konto_id");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// Da nur ein Konto abgefragt wird, sind diese Werte in allen Ergebnissen gleich
$konto_bezeichnung = $konto[0]['konto'];
$konto_kontostand = $konto[0]['kontostand'];
$konto_backgroundColor = $konto[0]['backgroundcolor'];
$konto_id = $row ? $row['id'] : -1;
$konto_bezeichnung = $row ? $row['konto'] : '';
$konto_kontostand = $row ? $row['kontostand'] : -0;
$konto_backgroundColor = $row ? $row['backgroundcolor'] : '#ff0000';
$monat_aktuell_von = $row ? $row['von'] : '2000-01-01';
$monat_aktuell_bis = $row ? $row['bis'] : '2000-01-01';
$stmt = $pdo->query("SELECT (date_trunc('month', CURRENT_DATE::date) - interval '2 month')::date AS von,
(date_trunc('month', CURRENT_DATE::date) + interval '1 month' - interval '1 day')::date AS bis;");
$monat_aktuell = $stmt->fetchAll(PDO::FETCH_ASSOC)[0];
$G_selectedRange = $_GET['range'] ?? $row['von'] . " to " . $row['bis'];
$selectedRange = $_GET['range'] ?? $monat_aktuell['von'] . " to " . $monat_aktuell['bis'];
$stmt = $pdo->prepare("SELECT kb.id AS kontobewegung_id,
$stmt = $pdo->query("SELECT kb.id AS kontobewegung_id,
kb.betrag,
kb.beschreibung,
kb.datum_ausgegeben,
kb.datum_abgebucht,
kb.kostenfix_id
FROM kontobewegung kb
LEFT OUTER JOIN kostenfix kf ON kf.id = kb.kostenfix_id
WHERE kb.konto_id = :konto_id
AND kb.datum_ausgegeben BETWEEN :von AND :bis
ORDER BY datum_ausgegeben DESC,
WHERE kb.konto_id = $konto_id
AND kb.datum_ausgegeben BETWEEN '$monat_aktuell_von' AND '$monat_aktuell_bis'
ORDER BY kb.datum_ausgegeben DESC,
kb.id DESC;");
$stmt->execute(['konto_id' => $konto_id, 'von' => $monat_aktuell['von'], 'bis' => $monat_aktuell['bis']]);
$kontobewegung = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
@ -146,23 +143,14 @@
<body>
<div class="header">
<a href="kontobewegung_neu.php?id=<?= htmlspecialchars($konto_id) ?>"
class="konto_header"
id="konto_navigationLinks">
Neue Kontobewegung
<a href="kontobewegung_neu.php?id=<?= $konto_id ?>" class="konto_header" id="konto_navigationLinks">
<img src="img\neueKontobewegung.svg" alt="neue Kontobewegung" class="menue">
</a>
<?php
if($system == 'test') {
echo '<h2 class="restguthaben">Testsystem</h2>';
}
?>
<h2 class="kontoübersicht" id="h2_kontoübersicht">
<?= htmlspecialchars($konto_bezeichnung) ?>: <?= htmlspecialchars(number_format($konto_kontostand, 2, ",", ".")) ?> €
<h2 class="seitentitel">
<?= $konto_bezeichnung ?>: <?= number_format($konto_kontostand, 2, ",", ".") ?> €
</h2>
<a href="index.php"
class="konto_header"
id="konto_navigationRechts">
HOME
<a href="index.php" class="konto_header" id="konto_navigationRechts">
<img src="img\home.svg" alt="Home" class="menue">
</a>
</div>
<div class="inhalt">
@ -171,10 +159,8 @@
<tr>
<th id="th_gebucht">gebucht</th>
<th id="th_ausgegeben">
<!--ausgegeben-->
<div class="range-wrapper">
<input id="rangePicker" type="text" placeholder="ausgegben" value="<?= htmlspecialchars($selectedRange) ?>">
<!--button id="applyRange" type="button" onClick="datum(< ?= htmlspecialchars($konto_id) ?>)">Anwenden</button-->
<input id="rangePicker" type="text" placeholder="ausgegben" value="<?= htmlspecialchars($G_selectedRange, ENT_QUOTES, 'UTF-8') ?>">
</div>
</th>
<th id="th_beschreibung">Beschreibung</th>
@ -183,23 +169,20 @@
</thead>
<tbody id="tableBody">
<?php foreach ($kontobewegung as $y): ?>
<tr <?= $y['kostenfix_id'] ? 'class="konto_fixKosten"' : 'class="standard"' ?>>
<td class="td_datum"
onClick="ändereUmsatz(<?= htmlspecialchars($y['kontobewegung_id']) ?>, <?= htmlspecialchars($konto_id) ?>)">
<?= empty($y['datum_abgebucht']) ? '' : htmlspecialchars($y['datum_abgebucht']) ?>
<tr onClick="ändereUmsatz(<?= $y['kontobewegung_id'] ?>, <?= $konto_id ?>)"
<?= $y['kostenfix_id'] ? 'class="konto_fixKosten"' : 'class="standard"' ?>>
<td class="td_datum">
<?= empty($y['datum_abgebucht']) ? '' : $y['datum_abgebucht'] ?>
</td>
<td class="td_datum"
onClick="ändereUmsatz(<?= htmlspecialchars($y['kontobewegung_id']) ?>, <?= htmlspecialchars($konto_id) ?>)">
<?= htmlspecialchars($y['datum_ausgegeben']) ?>
<td class="td_datum">
<?= $y['datum_ausgegeben'] ?>
</td>
<td class="td_text"
onClick="ändereUmsatz(<?= htmlspecialchars($y['kontobewegung_id']) ?>, <?= htmlspecialchars($konto_id) ?>)">
<?= htmlspecialchars($y['beschreibung']) ?>
<td class="td_text">
<?= htmlspecialchars($y['beschreibung'], ENT_QUOTES, 'UTF-8') ?>
</td>
<td class="<?php if($y['betrag'] < 0) echo 'td_zahl_neg';
elseif($y['betrag'] > 0) echo 'td_zahl_pos';
else echo 'td_zahl_null'; ?>"
onClick="ändereUmsatz(<?= htmlspecialchars($y['kontobewegung_id']) ?>, <?= htmlspecialchars($konto_id) ?>)">
else echo 'td_zahl_null'; ?>">
<?= number_format($y['betrag'], 2, ",", ".") ?>
</td>
</tr>
@ -213,6 +196,7 @@
<input id="hiddenInputEditTyp" type="hidden" name="editTyp" value="edit">
</form>
</div>
<?= $system === 'test' ? '<div class="menue"><h2 class="seitentitel">Testsystem</h2></div>' : '' ?>
</body>
</html>

View File

@ -25,13 +25,7 @@
FROM kontobewegung
WHERE id = :kontobewegung_id;");
$stmt->execute(['kontobewegung_id' => $kontobewegung_id]);
$kontobewegungFetchAll = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($kontobewegungFetchAll) > 1) {
//TODO FEHLERHANDLING
} else {
$kontobewegung = $kontobewegungFetchAll[0];
}
$kontobewegung = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
@ -59,19 +53,20 @@
name="kontobewegung_submit"
value="speichern"
type="submit">
<span>speichern</span>
<img src="img\speichern.svg" alt="speichern" class="menue">
</button>
<button class="header"
id="navigationMitte"
id="navigationLinks"
name="kontobewegung_submit"
value="löschen"
type="submit">
<span>Eintrag löschen</span>
<img src="img\löschen.svg" alt="löschen" class="menue">
</button>
<a href="konto.php?id= <?= htmlspecialchars($konto_id) ?>"
class="header"
id="navigationRechts">
abbrechen
<h2 class="seitentitel">
Kontobewegung ändern
</h2>
<a href="konto.php?id= <?= htmlspecialchars($konto_id, ENT_QUOTES, 'UTF-8') ?>" class="header" id="navigationRechts">
<img src="img\abbrechen.svg" alt="abbrechen" class="menue">
</a>
</div>
@ -112,9 +107,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="konto_id" class="umsatz_select">
<?php foreach ($konto as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= isset($data['konto_id']) && $y['id'] == $data['konto_id'] || $y['id'] == $konto_id ? 'selected' : '' ?>>
<?= htmlspecialchars($y['bezeichnung']) ?>
<?= htmlspecialchars($y['bezeichnung'], ENT_QUOTES, 'UTF-8') ?>
</option>
<?php endforeach; ?>
</select>
@ -129,7 +124,7 @@
<input type="text"
name="beschreibung"
class="umsatz_text"
value="<?= $data['beschreibung'] ?? $kontobewegung['beschreibung'] ?>">
value="<?= htmlspecialchars($data['beschreibung'] ?? $kontobewegung['beschreibung'], ENT_QUOTES, 'UTF-8') ?>">
</div>
<div class="umsatz_div" id="umsatz_links">

View File

@ -39,12 +39,13 @@
name="kontobewegung_submit"
value="hinzufügen"
type="submit">
<span>hinzufügen</span>
<img src="img\speichern.svg" alt="neue Kontobewegung" class="menue">
</button>
<a href="<?= $return ?>"
class="header"
id="navigationRechts">
abbrechen
<h2 class="seitentitel">
neue Kontobewegung hinzufügen
</h2>
<a href="<?= htmlspecialchars($return, ENT_QUOTES, 'UTF-8') ?>" class="konto_header" id="konto_navigationRechts">
<img src="img\abbrechen.svg" alt="Abbrechen" class="menue">
</a>
</div>
<div class="inhalt">
@ -65,9 +66,9 @@
<div class="umsatz_div" id="umsatz_rechts">
<select name="konto_id" class="umsatz_select">
<?php foreach ($konto as $y): ?>
<option value="<?= htmlspecialchars($y['id']) ?>"
<option value="<?= $y['id'] ?>"
<?= ((isset($data['konto_id']) && $y['id'] == $data['konto_id']) || $y['id'] == $konto_id) ? 'selected' : '' ?>>
<?= htmlspecialchars($y['bezeichnung']) ?>
<?= htmlspecialchars($y['bezeichnung'], ENT_QUOTES, 'UTF-8') ?>
</option>
<?php endforeach; ?>
</select>
@ -82,7 +83,9 @@
<select name="gegenkonto_id" class="umsatz_select">
<option value="" disabled selected>Überweisung auf</option>
<?php foreach ($konto as $y): ?>
<option value="<?=$y['id']?>" <?php if(isset($data['gegenkonto_id'])) { if($y['id'] == $data['gegenkonto_id']) { echo 'selected';}} ?>><?=$y['bezeichnung']?></option>
<option value="<?=$y['id']?>" <?php if(isset($data['gegenkonto_id'])) { if($y['id'] == $data['gegenkonto_id']) { echo 'selected';}} ?>>
<?= htmlspecialchars($y['bezeichnung'], ENT_QUOTES, 'UTF-8')?>
</option>
<?php endforeach; ?>
</select>
</div>
@ -93,7 +96,7 @@
</p>
</div>
<div class="umsatz_div" id="umsatz_rechts">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= $data['beschreibung'] ?? ''?>">
<input type="text" name="beschreibung" class="umsatz_text" value="<?= htmlspecialchars($data['beschreibung'] ?? '', ENT_QUOTES, 'UTF-8')?>">
</div>
<div class="umsatz_div" id="umsatz_links">

View File

@ -32,6 +32,11 @@ table {
width: 100%;
}
h2 {
font-size: 2.2rem;
color: #14748A;
}
th {
border: 1px solid black;
border-collapse: collapse;
@ -90,19 +95,19 @@ div.header{
position: fixed;
top: 0;
left: 0;
width: 97%;
height: 60px;
background-color: #fff;
width: 100%;
height: 70px;
background-color: rgb(210, 210, 210);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
border-bottom: 1px solid #ccc;
z-index: 1000;
padding-top: 20px;
padding-bottom: 20px;
}
div.inhalt {
margin-top: 60px;
margin-top: 110px;
height: calc(100vh - 80px);
overflow-y: auto;
}
@ -145,7 +150,7 @@ input.umsatz_number {
button.header {
text-align: center;
background-color: white;
background-color: rgb(210, 210, 210);
border-style: none;
}
@ -154,9 +159,46 @@ button.header {
}
#navigationRechts {
margin-right: 60px;
}
div.menue {
position: fixed;
bottom: 50px;
left: 0;
width: 100%;
z-index: 1000;
}
#konto_navigationLinks {
margin-left: 20px;
}
#konto_navigationRechts {
margin-right: 20px;
}
#konto_navigationRechts1 {
margin-right: 60px;
}
#konto_navigationLinks1 {
margin-left: 40px;
}
img.menue {
width: 60px;
height: 60px;
}
h2.seitentitel {
width: 100%;
border-style: none;
display: flex;
align-items: center;
justify-content: center;
}
/****************************************/
/* Index */
/****************************************/
@ -164,15 +206,15 @@ button.header {
a.navigation_index {
border-style: solid;
height: 60px;
width: 60%;
width: 25%;
float: left;
border-radius: 15px;
margin-right: 20px;
margin-top: 50px;
margin-left: 20%;
margin-left: 45px;
padding-bottom: 15px;
padding-top: 15px;
background-color: white;
background-color: rgb(210, 210, 210);
font-size: 2.5rem;
display: flex;
align-items: center;
@ -225,15 +267,6 @@ p.ausgabe {
text-align: right;
}
h2.restguthaben {
width: 100%;
/*margin-left: 50%;*/
border-style: none;
display: flex;
align-items: center;
justify-content: center;
}
/****************************************/
/* Konto */
/****************************************/
@ -241,15 +274,6 @@ h2.restguthaben {
display: none;
}
h2.kontoübersicht {
width: 50%;
/*margin-left: 50%;*/
border-style: none;
display: flex;
align-items: center;
justify-content: center;
}
td.td_text {
padding-left: 20px;
}
@ -289,14 +313,6 @@ td.td_datum {
vertical-align: middle;
}
#konto_navigationLinks {
margin-left: 20px;
}
#konto_navigationRechts {
margin-right: 20px;
}
#rangePicker {
width: 90%;
background-color: rgb(185, 185, 185);