PayPal-Zahlungen auch ueber die Mailadresse zuordnen
Bisher verglich die Zuordnung ausschliesslich Namen: der Parser las die Adresse des Zahlers gar nicht aus, und die Suche kannte nur paypal_name und display_name. Eine Zahlung von genau der Adresse, die beim Mitglied hinterlegt ist, blieb deshalb liegen. Die Adresse wird jetzt ausgelesen (neue Spalte paypal_payments.payer_email), in der Warteschlange angezeigt und zuerst geprueft - sie ist im Mandanten eindeutig und aendert sich nicht, wenn jemand bei PayPal anders heisst. Der heikle Teil ist das Aussortieren: In einer weitergeleiteten Mail stehen mehrere Adressen. Die falsche zu nehmen wuerde fremdes Geld dem Mitglied hinter dieser Adresse gutschreiben - typischerweise dem Kassenwart. Deshalb fallen paypal.*-Adressen und die eigene Eingangsadresse raus (geprueft gegen die tatsaechliche Empfaengeradresse, Plus-Adressierung ignoriert), und es zaehlt nur eine Adresse in unmittelbarer Naehe des Zahlernamens. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -222,3 +222,31 @@ Name auch auf ein anderes Mitglied, wird nichts gelernt — sonst wäre die
|
||||
Zuordnung mehrdeutig und würde gar nicht mehr greifen. Was gelernt wurde,
|
||||
steht in der Erfolgsmeldung und im Audit-Log
|
||||
(`paypal_import.manual_assigned`, Feld `learned_paypal_name`).
|
||||
|
||||
### Zuordnung über die Mailadresse
|
||||
|
||||
Stand: 2026-08-21. `paypal_match_participant()` prüft in dieser Reihenfolge:
|
||||
|
||||
1. **Mailadresse des Zahlers** gegen `participants.email_norm` — im
|
||||
Mandanten eindeutig (Unique Key auf `tenant_id + email_norm`) und
|
||||
unabhängig davon, wie jemand bei PayPal heißt.
|
||||
2. Zahlername gegen `paypal_name`/`display_name` (genau ein Treffer).
|
||||
3. Mitteilung des Zahlers gegen dieselben Felder.
|
||||
|
||||
Die Adresse zieht `paypal_extract_payer_email()` aus der Mail und
|
||||
`paypal_payments.payer_email` (Migration `0028`) hält sie fest; in der
|
||||
Warteschlange steht sie unter dem Zahlernamen.
|
||||
|
||||
Das Heikle daran ist nicht das Finden, sondern das Aussortieren: In einer
|
||||
weitergeleiteten Mail stehen mehrere Adressen — die von PayPal, die
|
||||
Eingangsadresse der Kaffeeliste, je nach Weiterleitung die des
|
||||
ursprünglichen Empfängers. Würde davon die falsche genommen, bekäme das
|
||||
Mitglied hinter dieser Adresse fremdes Geld gutgeschrieben. Deshalb:
|
||||
|
||||
- alles auf `paypal.*` fällt raus,
|
||||
- die eigene Eingangsadresse fällt raus — geprüft gegen die tatsächliche
|
||||
Empfängeradresse der Mail (`paypal_same_mailbox()`, Plus-Adressierung
|
||||
wird ignoriert), nicht nur gegen `PAYPAL_INBOX_BASE`,
|
||||
- übrig bleibt nur eine Adresse, die **nahe am Namen des Zahlers** steht;
|
||||
ist keine in Reichweite, wird keine genommen und es bleibt beim
|
||||
Namensvergleich.
|
||||
|
||||
Reference in New Issue
Block a user