248 lines
9.8 KiB
PHP
248 lines
9.8 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../includes/db_connect.php';
|
|
|
|
session_start();
|
|
|
|
$kostenfix_id = $_POST['kostenfix_id'] ?? -1;
|
|
$fixkosten_submit = $_POST['fixkosten_submit'] ?? 'c';
|
|
$zahlungsmonate_id = $_POST['zahlungsmonate_id'] ?? '';
|
|
$zahlungstag_id = $_POST['zahlungstag_id'] ?? '';
|
|
$konto_id = $_POST['konto_id'] ?? '';
|
|
$gegenkonto_id = $_POST['gegenkonto_id'] ?? '';
|
|
$beschreibung = $_POST['beschreibung'] ?? '';
|
|
$betrag = $_POST['betrag'] ?? '';
|
|
$monat_id = $_POST['monat_id'] ?? '';
|
|
$jahr = $_POST['jahr'] ?? '';
|
|
$monat_wert = $_POST['monat_wert'] ?? '';
|
|
|
|
$returnOfFunction = 0;
|
|
|
|
switch($fixkosten_submit) {
|
|
case 'hinzufügen':
|
|
$returnOfFunction += insertFixkosten($pdo,
|
|
$zahlungsmonate_id,
|
|
$zahlungstag_id,
|
|
$konto_id,
|
|
$beschreibung,
|
|
$betrag);
|
|
|
|
if(!empty($gegenkonto_id)) {
|
|
$returnOfFunction += insertFixkosten($pdo,
|
|
$zahlungsmonate_id,
|
|
$zahlungstag_id,
|
|
$gegenkonto_id,
|
|
$beschreibung,
|
|
$betrag * -1);
|
|
|
|
}
|
|
break;
|
|
case 'speichern':
|
|
$returnOfFunction += UpdateFixkosten($pdo,
|
|
$kostenfix_id,
|
|
$zahlungsmonate_id,
|
|
$zahlungstag_id,
|
|
$konto_id,
|
|
$beschreibung,
|
|
$betrag);
|
|
break;
|
|
case 'löschen':
|
|
$returnOfFunction += removeFixkosten($pdo,
|
|
$kostenfix_id);
|
|
break;
|
|
case 'zuKontobewegung':
|
|
$returnOfFunction += fixkostenZuKontobewegung($pdo,
|
|
$monat_id,
|
|
$jahr);
|
|
$returnOfFunction += leereTempTabelle($pdo);
|
|
break;
|
|
case 'aktualisieren':
|
|
$returnOfFunction += aktualisiereTempTabelle($pdo,
|
|
$monat_wert);
|
|
$_SESSION['formdata'] = $_POST;
|
|
echo json_encode(['success' => true, 'monat_wert' => $monat_wert]);
|
|
exit;
|
|
}
|
|
|
|
if($returnOfFunction > 0) {
|
|
$fehler[] = "Fehler bei Datenbankoperation";
|
|
$_SESSION['errors'] = $fehler;
|
|
$_SESSION['formdata'] = $_POST;
|
|
}
|
|
|
|
header("Location: /../fixkosten.php");
|
|
//header("Location: /../fix_zuKontobewegung.php");
|
|
exit;
|
|
|
|
function insertFixkosten($para_pdo,
|
|
$para_zahlungsmonate_id,
|
|
$para_zahlungstag_id,
|
|
$para_konto_id,
|
|
$para_beschreibung,
|
|
$para_betrag) {
|
|
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$stmt = $para_pdo->prepare("INSERT INTO kostenfix (zahlungsmonate_id, zahlungstag_id, konto_id, beschreibung, betrag)
|
|
VALUES (:zahlungsmonate_id, :zahlungstag_id, :konto_id, :beschreibung, :betrag);");
|
|
$stmt->execute(['zahlungsmonate_id' => $para_zahlungsmonate_id,
|
|
'zahlungstag_id' => $para_zahlungstag_id,
|
|
'konto_id' => $para_konto_id,
|
|
'beschreibung' => $para_beschreibung,
|
|
'betrag' => $para_betrag]);
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
function updateFixkosten($para_pdo,
|
|
$para_kostenfix_id,
|
|
$para_zahlungsmonate_id,
|
|
$para_zahlungstag_id,
|
|
$para_konto_id,
|
|
$para_beschreibung,
|
|
$para_betrag) {
|
|
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$stmt = $para_pdo->prepare("UPDATE kostenfix
|
|
SET zahlungstag_id = :zahlungstag_id,
|
|
zahlungsmonate_id = :zahlungsmonate_id,
|
|
beschreibung = :beschreibung,
|
|
konto_id = :konto_id,
|
|
betrag = :betrag
|
|
WHERE id = :kostenfix_id;");
|
|
$stmt->execute(['zahlungstag_id' => $para_zahlungstag_id,
|
|
'zahlungsmonate_id' => $para_zahlungsmonate_id,
|
|
'beschreibung' => $para_beschreibung,
|
|
'konto_id' => $para_konto_id,
|
|
'betrag' => $para_betrag,
|
|
'kostenfix_id' => $para_kostenfix_id]);
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
function removeFixkosten($para_pdo,
|
|
$para_kostenfix_id, ) {
|
|
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$stmt = $para_pdo->prepare("UPDATE kontobewegung
|
|
SET kostenfix_id = NULL
|
|
WHERE kostenfix_id = :kostenfix_id;");
|
|
$stmt->execute(['kostenfix_id' => $para_kostenfix_id]);
|
|
|
|
$stmt = $para_pdo->prepare("DELETE FROM kostenfix
|
|
WHERE id = :kostenfix_id");
|
|
$stmt->execute(['kostenfix_id' => $para_kostenfix_id]);
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
function fixkostenZuKontobewegung($para_pdo,
|
|
$para_monat_id,
|
|
$para_jahr) {
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$stmt = $para_pdo->prepare("SELECT wert
|
|
FROM monat
|
|
WHERE id = :monat_id;");
|
|
$stmt->execute([':monat_id' => $para_monat_id]);
|
|
$monat_wert = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
$stmt = $para_pdo->prepare("INSERT INTO kontobewegung (konto_id, betrag, beschreibung, datum_ausgegeben, kostenfix_id, datum_fixkosten_uebernommen)
|
|
SELECT kf.konto_id,
|
|
kf.betrag,
|
|
kf.beschreibung,
|
|
TO_DATE(:jahr || '-' || :monat_wert || '-' || zt.name, 'YYYY-MM-DD'),
|
|
kf.id,
|
|
CURRENT_DATE
|
|
FROM kostenfix kf
|
|
JOIN zahlungstag zt ON zt.id = kf.zahlungstag_id
|
|
JOIN zahlungsmonate zm ON zm.id = kf.zahlungsmonate_id
|
|
WHERE zm.name LIKE '%' || CAST(:monat_wert AS INT) || '%'
|
|
AND NOT EXISTS (SELECT *
|
|
FROM kontobewegung kb_inner
|
|
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'],
|
|
'jahr' => $para_jahr]);
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
function aktualisiereTempTabelle($para_pdo,
|
|
$para_monat_wert) {
|
|
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$para_pdo->query("DELETE FROM temp_daten;");
|
|
|
|
$stmt = $para_pdo->prepare("INSERT INTO temp_daten(monat_wert)
|
|
VALUES(:monat_wert);");
|
|
$stmt->execute(['monat_wert' => $para_monat_wert]);
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
function leereTempTabelle($para_pdo) {
|
|
try {
|
|
$para_pdo->beginTransaction();
|
|
|
|
$para_pdo->query("DELETE FROM temp_daten;");
|
|
|
|
$para_pdo->commit();
|
|
|
|
return 0;
|
|
|
|
} catch(Exception $e) {
|
|
$para_pdo->rollBack();
|
|
echo "Fehler: " . $e->getMessage();
|
|
return 1;
|
|
}
|
|
}
|
|
?>
|