Haerte Verwaltungsflows und Zahlungsabgleich

This commit is contained in:
2026-08-07 12:02:41 +02:00
parent 39f662d541
commit 0f263c3a19
9 changed files with 461 additions and 101 deletions
+10 -1
View File
@@ -47,6 +47,8 @@ foreach ($tenants as $tenantIdRaw) {
$schwelleCents = (int)$settings['negative_warning_cents']; // <= 0
$intervallTage = max(1, (int)$settings['payment_reminder_interval_days']);
$jetzt = new DateTimeImmutable('now');
$tenantGesendet = 0;
$tenantUebersprungen = 0;
$teilnehmer = ledger_fetch_participant_summaries($pdo, $tenantId, ['active_only' => true]);
$letzteErinnerungen = saas_fetch_last_payment_reminders($pdo, $tenantId);
@@ -68,11 +70,13 @@ foreach ($tenants as $tenantIdRaw) {
try {
$letzte = new DateTimeImmutable($letzteErinnerungen[$participantId]);
if ($letzte->add(new DateInterval("P{$intervallTage}D")) > $jetzt) {
$tenantUebersprungen++;
$gesamtUebersprungen++;
continue;
}
} catch (Throwable $e) {
// Unparsebares Datum: sicherheitshalber ueberspringen.
$tenantUebersprungen++;
$gesamtUebersprungen++;
continue;
}
@@ -84,6 +88,7 @@ foreach ($tenants as $tenantIdRaw) {
if ($dryRun) {
echo "[dry-run] Mandant {$tenantId}: {$person['display_name']} <{$email}> offen " . saas_format_money_cents($debtCents) . " EUR\n";
$tenantGesendet++;
$gesamtGesendet++;
continue;
}
@@ -94,12 +99,16 @@ foreach ($tenants as $tenantIdRaw) {
$sendResult['ok'] ? 'sent' : 'failed', $sendResult['error'] ?? null, null
);
if ($sendResult['ok']) {
$tenantGesendet++;
$gesamtGesendet++;
}
}
if (!$dryRun) {
app_audit_log($pdo, $tenantId, null, 'payment_reminder.batch', 'tenant', $tenantId, ['gesendet' => $gesamtGesendet]);
app_audit_log($pdo, $tenantId, null, 'payment_reminder.batch', 'tenant', $tenantId, [
'gesendet' => $tenantGesendet,
'uebersprungen' => $tenantUebersprungen,
]);
}
}