M5 abschliessen: Schreibseiten aufs Ledger umstellen, Storno statt Delete
- stricheintragen.php und einzahlung.php erhielten bisher gar keine Zugriffskontrolle (nur CSRF), jetzt Rollen-/Legacy-Fallback wie in kaffeeliste.php; Sammeleintraege spiegeln transaktional ins Ledger (ledger_mirror_legacy_payment neu ergaenzt). - letzteneintraege.php war rein ueber Legacy-Admin gesperrt und haette neue SaaS-Mandanten ausgeschlossen; Loeschen markiert den gespiegelten Ledger-Eintrag jetzt per voided_at statt ihn zu entfernen (ledger_void_entry_by_legacy_id). - check-m4-ledger-migration.php an das Storno-Modell angepasst: verwaiste Ledger-Zeilen sind nur noch ein Fehler, wenn sie nicht voided sind. - Nebenbei: PHP-Warning bei Sammelerfassung behoben, toten Code entfernt, veraltete README (verwies auf nicht existierende saas-app/-Struktur) korrigiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+59
-20
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
include "functions.php";
|
||||
require_once __DIR__ . "/app/ledger.php";
|
||||
app_require_csrf();
|
||||
include "header.php";
|
||||
include "headerline.php";
|
||||
@@ -18,35 +19,73 @@ include "nav.php";
|
||||
|
||||
<?php
|
||||
|
||||
$pdo = app_db_pdo();
|
||||
$saasUser = saas_current_user($pdo);
|
||||
$tenantId = 0;
|
||||
$hasAccess = false;
|
||||
|
||||
if ($saasUser !== null && saas_user_has_role(['owner', 'admin', 'treasurer'], $saasUser)) {
|
||||
$tenantId = (int)$saasUser['tenant_id'];
|
||||
$hasAccess = true;
|
||||
}
|
||||
|
||||
if (!$hasAccess && $saasUser === null && checkKaffeelisteAdmin($conn, $mailadress)) {
|
||||
$tenant = ledger_fetch_default_tenant($pdo);
|
||||
if ($tenant !== null) {
|
||||
$tenantId = (int)$tenant['id'];
|
||||
$hasAccess = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$hasAccess) {
|
||||
echo "<h2>Kein Zugriff</h2>";
|
||||
include "footer.php";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Verarbeitung des Formulars, wenn es gesendet wurde
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
// Kosten pro Strich übernehmen:
|
||||
$kostenproStrich = $_POST["kostenproStrich"];
|
||||
|
||||
// Iteriere über alle Mitarbeiter
|
||||
foreach ($_POST["anzahlStriche"] as $mitarbeiterID => $anzahlStriche) {
|
||||
// Validierung könnte hier hinzugefügt werden
|
||||
$anzahlStriche = (int)$anzahlStriche;
|
||||
$kostenproStrich = floatval($kostenproStrich);
|
||||
$kosten = floatval($anzahlStriche * $kostenproStrich);
|
||||
$datum = date("Y-m-d H:i:s"); // Das aktuelle Datum verwenden
|
||||
if($anzahlStriche != 0){
|
||||
// SQL-Abfrage zum Einfügen der Daten
|
||||
$sql = "INSERT INTO kl_Kaffeeverbrauch (MitarbeiterID, AnzahlStriche, Kosten, KostenproStrich, Datum) VALUES (?, ?, ?, ?, ?)";
|
||||
$params = array($mitarbeiterID, $anzahlStriche, $kosten, $kostenproStrich, $datum);
|
||||
$kostenproStrich = floatval($_POST["kostenproStrich"] ?? 0);
|
||||
$datum = date("Y-m-d H:i:s"); // Das aktuelle Datum verwenden
|
||||
$eingetragen = 0;
|
||||
$fehlgeschlagen = false;
|
||||
|
||||
$stmt = sqlsrv_query($conn, $sql, $params);
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
$insert = $pdo->prepare(
|
||||
"INSERT INTO kl_Kaffeeverbrauch (MitarbeiterID, AnzahlStriche, Kosten, KostenproStrich, Datum) VALUES (?, ?, ?, ?, ?)"
|
||||
);
|
||||
|
||||
if ($stmt === false) {
|
||||
die(print_r(sqlsrv_errors(), true));
|
||||
foreach ($_POST["anzahlStriche"] ?? [] as $mitarbeiterID => $anzahlStriche) {
|
||||
$mitarbeiterID = (int)$mitarbeiterID;
|
||||
$anzahlStriche = (int)$anzahlStriche;
|
||||
if ($mitarbeiterID <= 0 || $anzahlStriche === 0) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "Einträge erfolgreich hinzugefügt.";
|
||||
$kosten = $anzahlStriche * $kostenproStrich;
|
||||
$insert->execute([$mitarbeiterID, $anzahlStriche, $kosten, $kostenproStrich, $datum]);
|
||||
$legacyConsumptionId = (int)$pdo->lastInsertId();
|
||||
ledger_mirror_legacy_consumption($pdo, $tenantId, $legacyConsumptionId);
|
||||
$eingetragen++;
|
||||
}
|
||||
|
||||
$pdo->commit();
|
||||
} catch (Throwable $e) {
|
||||
if ($pdo->inTransaction()) {
|
||||
$pdo->rollBack();
|
||||
}
|
||||
$fehlgeschlagen = true;
|
||||
}
|
||||
|
||||
if ($fehlgeschlagen) {
|
||||
echo "Die Einträge konnten nicht gespeichert werden.";
|
||||
} else {
|
||||
echo $eingetragen . " Einträge erfolgreich hinzugefügt.";
|
||||
}
|
||||
|
||||
// Mitarbeiter aus der Datenbank abrufen und nach Namen sortieren
|
||||
$sqlMitarbeiter = "SELECT MitarbeiterID, Name FROM kl_Mitarbeiter WHERE aktiv = 1 ORDER BY Name";
|
||||
}elseif($_SERVER["REQUEST_METHOD"] == "GET" AND isset($_GET["action"])){
|
||||
|
||||
if($_GET["action"] == "vorderseite"){
|
||||
|
||||
Reference in New Issue
Block a user