Finanzmanager/src/Views/zahlungsverkehr/vop.php
fds2610-bot 79f617025b Fix #56: Namensabgleich vor der Überweisung
Seit Oktober 2025 gleicht die Bank vor der Ausführung den Empfängernamen mit
dem Kontoinhaber ab (Verification of Payee). Der Finanzmanager kannte diese
Stufe nicht, die Überweisung blieb stehen.

FinTsUeberweisung wartet jetzt auf das Ergebnis, solange die Bank es braucht.
Stimmt der Name überein, wird selbst bestätigt und direkt zur TAN gegangen –
eine Rückfrage ohne Erkenntnis erspart das dem Nutzer. Weicht der Name ab, ist
er nur nahezu gleich oder konnte die Bank nicht prüfen, kommt die neue Maske
zahlungsverkehr/vop.php: Ergebnis in einem deutschen Satz, Aufklärungstext der
Bank als Klartext, Empfänger und IBAN aus dem Auftrag und – sofern die Bank ihn
nennt – der bei ihr hinterlegte Kontoinhaber.

Ohne Ausführungstermin steht jetzt das Platzhalterdatum 1999-01-01 in der
Nachricht. Mit dem heutigen Datum wurde daraus eine terminierte Überweisung
(HKCSE statt HKCCS), die die Bank mit "Die minimale Vorlaufzeit beträgt 1 Tage"
zurückwies.

Der FinTS-Fork steht auf v4.1.3 mit zwei Eingriffen: Die schrittweise Lieferung
des Prüfberichts wird erst abgelehnt, wenn sie wirklich eintritt, und der beim
Close Match gemeldete Kontoinhaber wird an die Anwendung durchgereicht. Beide
liegen zusätzlich auf eigenen Branches für PRs an das Upstream-Projekt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013iURiWYZJQYVGQNXFFGyWu
2026-09-01 19:58:12 +02:00

90 lines
3.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Finanzmanager\View;
/**
* Der Namensabgleich der Bank weicht ab (Verification of Payee).
*
* Die Bank hat den Empfängernamen mit dem Kontoinhaber verglichen und meldet
* eine Abweichung. Hier steht die Entscheidung: trotzdem senden oder abbrechen
* und den Empfänger korrigieren. Der Text der Bank wird wortgleich
* wiedergegeben – ohne die Auszeichnungen, die sie mitschickt.
*
* @var array<string,mixed> $vop
* @var string $meldung
* @var string $csrfToken
*/
// Der Text kommt bereits als Klartext aus `FinTsUeberweisung::vopHinweis()`.
$banktext = (string)($vop['text'] ?? '');
include __DIR__ . '/../layout/kopf.php';
?>
<div class="kachel einzeln">
<header>
<h2>Namensabgleich prüfen</h2>
<p class="kachelhinweis"><?= View::h($vop['urteil'] ?? '') ?></p>
</header>
<p class="hinweis"><?= View::h($meldung) ?></p>
<dl class="merkmale">
<?php if (($vop['empfaenger'] ?? '') !== ''): ?>
<dt>So lautet der Empfänger im Auftrag</dt>
<dd><?= View::h($vop['empfaenger']) ?></dd>
<?php endif; ?>
<?php if (($vop['hinterlegt'] ?? '') !== ''): ?>
<dt>So lautet er bei der Bank des Empfängers</dt>
<dd><?= View::h($vop['hinterlegt']) ?></dd>
<?php endif; ?>
<?php if (($vop['iban'] ?? '') !== ''): ?>
<dt>Empfänger-IBAN</dt>
<dd><?= View::h($vop['iban']) ?></dd>
<?php endif; ?>
</dl>
<?php if (($vop['hinterlegt'] ?? '') === ''): ?>
<p class="feldhinweis">
Den Namen, der bei der Bank des Empfängers hinterlegt ist, nennt die Bank nur,
wenn er dem angegebenen nahezu entspricht. Weicht er ganz ab, bleibt er geheim –
sonst ließen sich über beliebige IBANs Kontoinhaber ausspähen.
</p>
<?php endif; ?>
<?php if (($vop['grund'] ?? '') !== ''): ?>
<p class="feldhinweis">Begründung der Bank: <?= View::h($vop['grund']) ?></p>
<?php endif; ?>
<?php if ($banktext !== ''): ?>
<p class="tanhinweis"><?= nl2br(View::h($banktext)) ?></p>
<?php endif; ?>
<?php if (($vop['gueltig_bis'] ?? null) !== null): ?>
<p class="feldhinweis">Die Bank hält das Ergebnis bis <?= View::h($vop['gueltig_bis']) ?> vor.</p>
<?php endif; ?>
<form method="post" action="/zahlungsverkehr/vop" class="formular">
<input type="hidden" name="csrf_token" value="<?= View::h($csrfToken) ?>">
<div class="knopfleiste">
<button type="submit" class="knopf primaer">Trotzdem senden</button>
</div>
</form>
<form method="post" action="/zahlungsverkehr/tan/abbrechen" class="formular">
<input type="hidden" name="csrf_token" value="<?= View::h($csrfToken) ?>">
<div class="knopfleiste">
<button type="submit" class="knopf">Abbrechen</button>
</div>
</form>
<p class="feldhinweis">
Beim Abbrechen bleibt der Auftrag als Entwurf stehen; der Empfängername lässt sich
dann korrigieren und der Auftrag erneut senden. Wird trotz Abweichung gesendet,
haftet die Bank nicht, wenn das Geld beim falschen Empfänger landet.
</p>
</div>
<?php include __DIR__ . '/../layout/fuss.php'; ?>