M5 Kaffeeliste read-only auf Ledger umstellen
- kaffeeliste.php aus ledger_fetch_participant_summaries lesen lassen - Legacy-Teilnehmerlinks ueber legacy_mitarbeiter_id erhalten - Sidebar-Zugriff fuer Legacy-Admin und SaaS-Rollen trennen - Smoke-Test um konkrete Ledger-Werte und Inaktiv-Ausschluss erweitern - M5-App-Kern-Doku ergaenzen
This commit is contained in:
+108
-128
@@ -1,148 +1,128 @@
|
||||
<?php
|
||||
|
||||
include "functions.php";
|
||||
require_once __DIR__ . "/app/ledger.php";
|
||||
|
||||
$pdo = app_db_pdo();
|
||||
$saasUser = saas_current_user($pdo);
|
||||
$tenantId = 0;
|
||||
$hasAccess = false;
|
||||
|
||||
function kaffeeliste_default_tenant(PDO $pdo): ?array
|
||||
{
|
||||
$tenantSlug = getenv('M4_DEFAULT_TENANT_SLUG');
|
||||
if ($tenantSlug === false || trim($tenantSlug) === '') {
|
||||
$tenantSlug = getenv('M3_DEFAULT_TENANT_SLUG');
|
||||
}
|
||||
$tenantSlug = $tenantSlug !== false && trim($tenantSlug) !== ''
|
||||
? trim($tenantSlug)
|
||||
: 'default';
|
||||
|
||||
$stmt = $pdo->prepare('SELECT id, name, slug FROM tenants WHERE slug = ? LIMIT 1');
|
||||
$stmt->execute([$tenantSlug]);
|
||||
$tenant = $stmt->fetch();
|
||||
|
||||
return $tenant !== false ? $tenant : null;
|
||||
}
|
||||
|
||||
function kaffeeliste_money(int $cents): string
|
||||
{
|
||||
return saas_format_money_cents($cents) . ' €';
|
||||
}
|
||||
|
||||
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 = kaffeeliste_default_tenant($pdo);
|
||||
if ($tenant !== null) {
|
||||
$tenantId = (int)$tenant['id'];
|
||||
$hasAccess = true;
|
||||
}
|
||||
}
|
||||
|
||||
$participants = $hasAccess
|
||||
? ledger_fetch_participant_summaries($pdo, $tenantId, ['active_only' => true])
|
||||
: [];
|
||||
|
||||
include "header.php";
|
||||
include "headerline.php";
|
||||
include "nav.php";
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<!-- Banner -->
|
||||
<section id="banner">
|
||||
<div class="content">
|
||||
|
||||
<section id="banner">
|
||||
<div class="content">
|
||||
<?php
|
||||
if(checkKaffeelisteAdmin($conn, $mailadress)){
|
||||
if ($hasAccess) {
|
||||
?>
|
||||
<h2>Aktive Mitarbeiter mit Gesamtstand</h2>
|
||||
<br>
|
||||
<ul class="actions">
|
||||
<li>
|
||||
<form action="exportKaffeeliste.php" method="get">
|
||||
<button type="submit">Kaffeeliste exportieren</button>
|
||||
</form>
|
||||
</li>
|
||||
<li>
|
||||
<form action="letzteneintraege.php" method="get">
|
||||
<button type="submit">Letzten Einträge</button>
|
||||
</form>
|
||||
</li>
|
||||
<li>
|
||||
<form action="csvupload.php" method="get">
|
||||
<button type="submit">CSV Upload</button>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
// Funktion zum Berechnen der Gesamtausgabe und Gesamtstriche pro Mitarbeiter
|
||||
function berechneGesamtausgabe($mitarbeiterID, $conn) {
|
||||
// Gesamtausgabe für Kaffeeverbrauch pro Mitarbeiter
|
||||
$sqlAusgabe = "SELECT SUM(Kosten) AS Gesamtausgabe FROM kl_Kaffeeverbrauch WHERE MitarbeiterID = ?";
|
||||
$stmtAusgabe = sqlsrv_query($conn, $sqlAusgabe, array($mitarbeiterID));
|
||||
$rowAusgabe = sqlsrv_fetch_array($stmtAusgabe, SQLSRV_FETCH_ASSOC);
|
||||
$gesamtausgabe = $rowAusgabe['Gesamtausgabe'] ?? 0;
|
||||
<br>
|
||||
<table border="1" class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>E-Mail</th>
|
||||
<th>Aktueller Stand</th>
|
||||
<th>Gesamtausgabe (€)</th>
|
||||
<th>Gesamtstriche</th>
|
||||
<th>Gesamteinzahlungen</th>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($participants as $participant) {
|
||||
$legacyId = $participant['legacy_mitarbeiter_id'];
|
||||
$name = saas_html($participant['display_name']);
|
||||
$email = saas_html((string)($participant['email'] ?? ''));
|
||||
$balance = kaffeeliste_money((int)$participant['balance_cents']);
|
||||
$totalCosts = kaffeeliste_money((int)$participant['total_costs_cents']);
|
||||
$totalMarks = number_format((int)$participant['total_marks'], 0, ',', '.');
|
||||
$totalPayments = kaffeeliste_money((int)$participant['total_payments_cents']);
|
||||
|
||||
return $gesamtausgabe;
|
||||
}
|
||||
|
||||
// Funktion zum Berechnen der Gesamtstriche pro Mitarbeiter
|
||||
function berechneGesamtstriche($mitarbeiterID, $conn) {
|
||||
// Gesamtstriche pro Mitarbeiter
|
||||
$sqlStriche = "SELECT SUM(AnzahlStriche) AS Gesamtstriche FROM kl_Kaffeeverbrauch WHERE MitarbeiterID = ?";
|
||||
$stmtStriche = sqlsrv_query($conn, $sqlStriche, array($mitarbeiterID));
|
||||
$rowStriche = sqlsrv_fetch_array($stmtStriche, SQLSRV_FETCH_ASSOC);
|
||||
$gesamtstriche = $rowStriche['Gesamtstriche'] ?? 0;
|
||||
|
||||
return $gesamtstriche;
|
||||
}
|
||||
// Funktion zum Berechnen der Gesamteinzahlungen pro Mitarbeiter
|
||||
function berechneGesamteinzahlungen($mitarbeiterID, $conn) {
|
||||
// Gesamteinzahlungen pro Mitarbeiter
|
||||
$sqlEinzahlungen = "SELECT SUM(Betrag) AS Gesamteinzahlungen FROM kl_Einzahlungen WHERE MitarbeiterID = ?";
|
||||
$stmtEinzahlungen = sqlsrv_query($conn, $sqlEinzahlungen, array($mitarbeiterID));
|
||||
$rowEinzahlungen = sqlsrv_fetch_array($stmtEinzahlungen, SQLSRV_FETCH_ASSOC);
|
||||
$gesamteinzahlungen = $rowEinzahlungen['Gesamteinzahlungen'] ?? 0;
|
||||
|
||||
return $gesamteinzahlungen;
|
||||
}
|
||||
|
||||
|
||||
// Mitglieder aus der Datenbank abrufen
|
||||
$sqlMitglieder = "SELECT MitarbeiterID, Name, Email FROM kl_Mitarbeiter WHERE aktiv = 1 ORDER BY Name";
|
||||
$stmtMitglieder = sqlsrv_query($conn, $sqlMitglieder);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Kaffeeliste - Aktive Mitarbeiter mit Gesamtstand</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Aktive Mitarbeiter mit Gesamtstand</h2>
|
||||
<br>
|
||||
<ul class="actions">
|
||||
<li>
|
||||
<form action="exportKaffeeliste.php" method="get">
|
||||
<button type="submit">Kaffeeliste exportieren</button>
|
||||
</form>
|
||||
</li>
|
||||
<li>
|
||||
<form action="letzteneintraege.php" method="get">
|
||||
<button type="submit">Letzten Einträge</button>
|
||||
</form>
|
||||
</li>
|
||||
<li>
|
||||
<form action="csvupload.php" method="get">
|
||||
<button type="submit">CSV Upload</button>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<table border="1" class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>E-Mail</th>
|
||||
<th>Aktueller Stand</th>
|
||||
<th>Gesamtausgabe (€)</th>
|
||||
<th>Gesamtstriche</th>
|
||||
<th>Gesamteinzahlungen</th>
|
||||
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
while ($row = sqlsrv_fetch_array($stmtMitglieder, SQLSRV_FETCH_ASSOC)) {
|
||||
$mitarbeiterID = $row['MitarbeiterID'];
|
||||
$name = $row['Name'];
|
||||
$email = $row['Email'];
|
||||
|
||||
$gesamtausgabe = berechneGesamtausgabe($mitarbeiterID, $conn);
|
||||
$gesamtstriche = berechneGesamtstriche($mitarbeiterID, $conn);
|
||||
|
||||
$gesamteinzahlungen = berechneGesamteinzahlungen($mitarbeiterID, $conn);
|
||||
|
||||
$differenztemp = $gesamteinzahlungen - $gesamtausgabe;
|
||||
$differenz = number_format($differenztemp, 2, ',', '.');
|
||||
$gesamtausgabe = number_format($gesamtausgabe, 2, ',', '.');
|
||||
$gesamteinzahlungen = number_format($gesamteinzahlungen, 2, ',', '.');
|
||||
$gesamtstriche = number_format($gesamtstriche, 0, ',', '.');
|
||||
|
||||
echo "<tr>";
|
||||
echo "<td><a href=teilnehmerauswertung.php?user_id=$mitarbeiterID>{$name}</a></td>";
|
||||
echo "<td>{$email}</td>";
|
||||
echo "<td>{$differenz} €</td>";
|
||||
echo "<td>{$gesamtausgabe} €</td>";
|
||||
echo "<td>{$gesamtstriche}</td>";
|
||||
echo "<td>{$gesamteinzahlungen} €</td>";
|
||||
|
||||
echo "</tr>";
|
||||
|
||||
echo "<tr>";
|
||||
if ($legacyId !== null) {
|
||||
echo "<td><a href=\"teilnehmerauswertung.php?user_id=" . (int)$legacyId . "\">{$name}</a></td>";
|
||||
} else {
|
||||
echo "<td>{$name}</td>";
|
||||
}
|
||||
|
||||
?>
|
||||
</table>
|
||||
<br><br>
|
||||
|
||||
<form action="mailversenden.php" method="get">
|
||||
<button type="submit">Info-Mail versenden</button>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
echo "<td>{$email}</td>";
|
||||
echo "<td>{$balance}</td>";
|
||||
echo "<td>{$totalCosts}</td>";
|
||||
echo "<td>{$totalMarks}</td>";
|
||||
echo "<td>{$totalPayments}</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
<br><br>
|
||||
|
||||
<form action="mailversenden.php" method="get">
|
||||
<button type="submit">Info-Mail versenden</button>
|
||||
</form>
|
||||
<?php
|
||||
}else{
|
||||
} else {
|
||||
echo "<h2>Kein Zugriff</h2>";
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<?php include "footer.php"; ?>
|
||||
|
||||
Reference in New Issue
Block a user