Kein Zugriff"; include "footer.php"; exit; } /** * Liefert die Mitarbeiter/Teilnehmerliste fuer die Vorder-/Rueckseiten- oder * Alle-Auswahl. Siehe stricheintragen.php fuer dieselbe Logik: Default- * Mandant nutzt die Legacy-Historie, andere Mandanten die Ledger-native * Fensterpruefung mit dem konfigurierten Listenfenster. * * @return list */ function einzahlung_fetch_participants(PDO $pdo, int $tenantId, string $action): array { $isDefault = ledger_is_default_tenant($pdo, $tenantId); if ($action === 'vorderseite' || $action === 'rueckseite') { if ($isDefault) { $vergleich = $action === 'vorderseite' ? '>= 10' : '< 10'; $join = $action === 'vorderseite' ? 'JOIN' : 'LEFT JOIN'; $stmt = $pdo->query( "SELECT M.MitarbeiterID FROM kl_Mitarbeiter M {$join} kl_Kaffeeverbrauch V ON M.MitarbeiterID = V.MitarbeiterID AND V.Datum >= DATE_SUB(NOW(), INTERVAL 100 DAY) WHERE M.aktiv = 1 GROUP BY M.MitarbeiterID HAVING COALESCE(SUM(V.AnzahlStriche), 0) {$vergleich}" ); $legacyIds = array_map('intval', $stmt->fetchAll(PDO::FETCH_COLUMN)); return ledger_fetch_participant_summaries($pdo, $tenantId, ['legacy_mitarbeiter_ids' => $legacyIds]); } $settings = saas_fetch_tenant_settings($pdo, $tenantId); $windowDays = $settings['sheet_window_days'] ?? 100; return ledger_fetch_participants_by_window_marks($pdo, $tenantId, $windowDays, $action === 'vorderseite'); } return ledger_fetch_participant_summaries($pdo, $tenantId, ['active_only' => true]); } $eingetragen = 0; $fehlgeschlagen = false; $hatGespeichert = false; // Verarbeitung des Formulars, wenn es gesendet wurde if ($_SERVER["REQUEST_METHOD"] == "POST" ) { $hatGespeichert = true; $datum = date("Y-m-d H:i:s"); // Das aktuelle Datum verwenden // Legacy-Verknuepfung je Teilnehmer vorab laden, damit pro Zeile // entschieden werden kann, ob (Default-Mandant) zusaetzlich in // kl_Einzahlungen geschrieben oder (jeder andere Mandant) direkt ins // Ledger gebucht wird. $legacyMap = []; $stmt = $pdo->prepare('SELECT id, legacy_mitarbeiter_id FROM participants WHERE tenant_id = ?'); $stmt->execute([$tenantId]); foreach ($stmt->fetchAll() as $row) { $legacyMap[(int)$row['id']] = $row['legacy_mitarbeiter_id'] !== null ? (int)$row['legacy_mitarbeiter_id'] : null; } try { $pdo->beginTransaction(); $insertLegacy = $pdo->prepare( "INSERT INTO kl_Einzahlungen (MitarbeiterID, Betrag, Datum) VALUES (?, ?, ?)" ); foreach ($_POST["anzahlBetrag"] ?? [] as $participantId => $anzahlBetrag) { $participantId = (int)$participantId; $anzahlBetrag = floatval($anzahlBetrag); if ($participantId <= 0 || $anzahlBetrag == 0.0 || !array_key_exists($participantId, $legacyMap)) { continue; } $legacyMitarbeiterId = $legacyMap[$participantId]; if ($legacyMitarbeiterId !== null) { $insertLegacy->execute([$legacyMitarbeiterId, $anzahlBetrag, $datum]); $legacyPaymentId = (int)$pdo->lastInsertId(); ledger_mirror_legacy_payment($pdo, $tenantId, $legacyPaymentId); } else { ledger_record_payment($pdo, $tenantId, $participantId, (int)round($anzahlBetrag * 100), 'manual_bulk'); } $eingetragen++; } $pdo->commit(); } catch (Throwable $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $fehlgeschlagen = true; } $action = 'alle'; } else { $action = (string)($_GET['action'] ?? 'alle'); } $mitarbeiter = einzahlung_fetch_participants($pdo, $tenantId, $action); ?> Kaffeeliste - Einzahlung

Einzahlungen für alle Mitarbeiter

Die Einzahlungen konnten nicht gespeichert werden.

Einträge erfolgreich hinzugefügt.

"> "; echo " Mitarbeiter Betrag "; foreach ($mitarbeiter as $teilnehmer) { $participantId = $teilnehmer['participant_id']; $name = saas_html($teilnehmer['display_name']); echo ""; echo ""; echo ""; echo ""; } echo ""; ?>