Finanzmanager/migrations/027_empfaenger_kartenverfuegung.sql
fds2610-bot 69af1af5eb Fix #119: Empfänger bei Kartenverfügungen aus dem Verwendungszweck lesen
Die comdirect liefert bei Zahlungen mit der Visa-Debitkarte (GVC 700) kein
Namensfeld; der Händler steht nur zwischen „KARTENVERFÜGUNG“ und „KARTE NR.“.
Der Abruf leitet ihn ab, ohne den Fingerabdruck zu ändern; ein erneuter Abruf
und Migration 027 tragen ihn bei vorhandenen Umsätzen und Buchungen nach.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:31:50 +02:00

23 lines
1 KiB
SQL
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.

-- Empfänger bei Kartenverfügungen nachtragen (#119).
--
-- Die comdirect liefert bei Kartenverfügungen der Visa-Debitkarte kein
-- Namensfeld; der Händler steht nur im Verwendungszweck zwischen
-- „KARTENVERFÜGUNG“ und „KARTE NR.“. Neue Abrufe leiten ihn ab
-- (UmsatzEmpfaenger), hier werden die bereits abgerufenen Umsätze und die
-- daraus übernommenen Buchungen nachgezogen – nur, wo der Empfänger leer ist.
--
-- Idempotent: Nach dem ersten Lauf ist der Empfänger nicht mehr leer.
UPDATE bank_umsaetze
SET empfaenger = LEFT(TRIM(REGEXP_REPLACE(
REGEXP_REPLACE(verwendungszweck, '(?s)^\\s*KARTENVERF(Ü|UE)GUNG\\s*(.+?)\\s*KARTE NR\\..*$', '\\2'),
'\\s+', ' ')), 255)
WHERE empfaenger = ''
AND verwendungszweck REGEXP '^\\s*KARTENVERF(Ü|UE)GUNG\\s*(.+?)\\s*KARTE NR\\.';
UPDATE buchungen b
JOIN bank_umsaetze u ON u.buchung_id = b.id AND u.benutzer_id = b.benutzer_id
SET b.empfaenger = u.empfaenger
WHERE b.empfaenger = ''
AND u.empfaenger <> ''
AND u.verwendungszweck REGEXP '^\\s*KARTENVERF(Ü|UE)GUNG';