fix: Beschriftungen unabhaengig von Umlaut und Zitat erkennen
Ohne den Beguenstigten ist ein Eintrag im Eingang wertlos – man sieht einen Betrag und weiss nicht, wofuer. Genau das passierte bei weitergeleiteten Mails: Gmail zitiert den Text mit "> " davor, die Beschriftung stand also nicht mehr am Zeilenanfang, und je nach Kodierung kam "Beguenstigter" statt "Beguenstigter" mit Umlaut an. Beschriftungen werden jetzt normalisiert verglichen (Umlaute verschriftlicht, alles ausser Buchstaben und Ziffern verworfen), und Zitatzeichen fallen vor der Feldsuche weg. Die Suchbegriffe laufen durch dieselbe Normalisierung, damit sie lesbar bleiben statt doppelt gepflegt zu werden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -103,3 +103,20 @@ def test_blosse_zahlen_sind_keine_betraege():
|
||||
e = mail_parse.parse("Auftrag 12345", "Referenz 998877\nBestellnummer 4711\n")
|
||||
assert e.betrag is None
|
||||
assert "betrag" in e.unklar
|
||||
|
||||
|
||||
def test_beschriftung_wird_unabhaengig_von_umlaut_und_zitat_erkannt():
|
||||
"""Weitergeleitete Mails kommen zitiert an, und Umlaute schreibt nicht jedes
|
||||
Programm gleich. „Begünstigter“ muss trotzdem greifen – ohne den
|
||||
Begünstigten ist ein Eintrag im Eingang wertlos."""
|
||||
varianten = [
|
||||
" Begünstigter: Sunrise GmbH / Yallo\n Betrag: 14.90 CHF\n",
|
||||
"> Begünstigter: Sunrise GmbH / Yallo\n> Betrag: 14.90 CHF\n",
|
||||
">> BEGÜNSTIGTER : Sunrise GmbH / Yallo\n>> Betrag: 14.90 CHF\n",
|
||||
" Beguenstigter: Sunrise GmbH / Yallo\n Betrag: 14.90 CHF\n",
|
||||
]
|
||||
for text in varianten:
|
||||
e = mail_parse.parse("Zahlungsauftrag", text)
|
||||
assert e.empfaenger is not None, f"kein Empfänger erkannt in: {text!r}"
|
||||
assert e.empfaenger.wert == "Sunrise GmbH / Yallo"
|
||||
assert e.betrag.wert == 1490
|
||||
|
||||
Reference in New Issue
Block a user