fix(v3): '@' -> EM auch im Leitweg-Feld; BT-49-Info nennt beide Felder
- resolve_buyer_endpoint: das Schema wird jetzt am finalen Wert entschieden, egal aus welchem Feld er stammt. Ein '@' (auch versehentlich ins Leitweg-ID-Feld getippt) fuehrt immer zu Schema EM statt 0204. - Der sichtbare Hinweis unter dem Schema-Feld benennt jetzt ausdruecklich beide Felder (Elektronische Adresse BT-49 UND Adress-Schema BT-49-1) mit ihren effektiven Werten, damit das leere BT-49-Feld nicht als "offen" missverstanden wird. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
2e259589c0
commit
23968bb911
|
|
@ -84,23 +84,26 @@ BUYER_ENDPOINT_SCHEMES = {
|
||||||
def resolve_buyer_endpoint(recipient_email, recipient_scheme, leitweg_id):
|
def resolve_buyer_endpoint(recipient_email, recipient_scheme, leitweg_id):
|
||||||
"""Ermittelt die effektive elektronische Adresse des Kaeufers (BT-49) samt Schema (BT-49-1).
|
"""Ermittelt die effektive elektronische Adresse des Kaeufers (BT-49) samt Schema (BT-49-1).
|
||||||
|
|
||||||
Regeln (in dieser Reihenfolge):
|
Zuerst wird der Wert bestimmt: das BT-49-Feld hat Vorrang; ist es leer, wird die Leitweg-ID
|
||||||
1. Steht im BT-49-Feld eine Adresse mit '@', ist es immer eine E-Mail -> Schema 'EM'
|
(BT-10) genommen (so muss sie nur einmal eingegeben werden). Dann das Schema:
|
||||||
(unabhaengig vom Dropdown, damit ein falsch gewaehltes Schema nicht durchschlaegt).
|
1. Enthaelt der Wert ein '@', ist es immer eine E-Mail -> Schema 'EM' (egal aus welchem Feld
|
||||||
2. Steht dort eine Adresse ohne '@' (z.B. GLN), wird das gewaehlte Schema uebernommen.
|
er stammt und unabhaengig vom Dropdown - ein falsch gewaehltes Schema schlaegt nicht durch).
|
||||||
3. Ist das Feld leer, aber eine Leitweg-ID (BT-10) vorhanden, wird die Leitweg-ID als BT-49
|
2. Stammt der Wert aus der Leitweg-ID (BT-49-Feld war leer) -> Schema '0204'.
|
||||||
mit Schema '0204' verwendet - so muss die Leitweg-ID nur einmal (in BT-10) eingegeben werden.
|
3. Sonst (Wert direkt in BT-49 eingetragen, ohne '@', z.B. GLN) -> das gewaehlte Schema.
|
||||||
4. Ist beides leer, bleibt die Adresse leer (Schema unveraendert).
|
Ist beides leer, bleibt die Adresse leer (Schema unveraendert). Gibt (adresse, schema) zurueck."""
|
||||||
Gibt (adresse, schema) zurueck."""
|
|
||||||
email = str(recipient_email or "").strip()
|
email = str(recipient_email or "").strip()
|
||||||
if email:
|
if email:
|
||||||
if "@" in email:
|
value, from_leitweg = email, False
|
||||||
return email, "EM"
|
else:
|
||||||
return email, recipient_scheme
|
value, from_leitweg = str(leitweg_id or "").strip(), True
|
||||||
leitweg = str(leitweg_id or "").strip()
|
|
||||||
if leitweg:
|
if not value:
|
||||||
return leitweg, "0204"
|
|
||||||
return "", recipient_scheme
|
return "", recipient_scheme
|
||||||
|
if "@" in value:
|
||||||
|
return value, "EM"
|
||||||
|
if from_leitweg:
|
||||||
|
return value, "0204"
|
||||||
|
return value, recipient_scheme
|
||||||
|
|
||||||
# Fester Hinweistext fuer Vorkasse. Vorkasse ist eine Zahlungs*bedingung* (BT-20), kein
|
# Fester Hinweistext fuer Vorkasse. Vorkasse ist eine Zahlungs*bedingung* (BT-20), kein
|
||||||
# Zahlungs*mittel* - das Zahlungsmittel bleibt die Ueberweisung. Der Text wird daher zu den
|
# Zahlungs*mittel* - das Zahlungsmittel bleibt die Ueberweisung. Der Text wird daher zu den
|
||||||
|
|
|
||||||
14
main.py
14
main.py
|
|
@ -348,14 +348,18 @@ with col2:
|
||||||
)
|
)
|
||||||
r_endpoint_scheme = r_endpoint_scheme_label.split(" - ")[0]
|
r_endpoint_scheme = r_endpoint_scheme_label.split(" - ")[0]
|
||||||
|
|
||||||
# Sichtbar machen, was tatsächlich als BT-49 exportiert wird - vor allem wenn es
|
# Sichtbar machen, was tatsächlich in BEIDE Felder (BT-49 + BT-49-1) exportiert wird -
|
||||||
# aus der Leitweg-ID (BT-10) abgeleitet wird, damit das leere Feld nicht "offen" wirkt.
|
# vor allem, wenn die Adresse aus der Leitweg-ID (BT-10) abgeleitet wird und das
|
||||||
|
# Feld BT-49 daher leer bleibt (sonst könnte man es für "noch offen" halten).
|
||||||
_bt49_preview, _bt49_scheme_preview = resolve_buyer_endpoint(r_email, r_endpoint_scheme, leitweg_id)
|
_bt49_preview, _bt49_scheme_preview = resolve_buyer_endpoint(r_email, r_endpoint_scheme, leitweg_id)
|
||||||
if _bt49_preview and not str(r_email).strip():
|
if _bt49_preview and not str(r_email).strip():
|
||||||
st.success(f"➡️ BT-49 wird automatisch aus der Leitweg-ID übernommen: "
|
st.success(f"➡️ Wird automatisch aus der Leitweg-ID (BT-10) übernommen – die beiden "
|
||||||
f"**{_bt49_preview}** (Schema **{_bt49_scheme_preview}**) – hier nichts nötig.")
|
f"Felder oben können leer bleiben:\n\n"
|
||||||
|
f"- **Elektronische Adresse (BT-49):** {_bt49_preview}\n"
|
||||||
|
f"- **Adress-Schema (BT-49-1):** {_bt49_scheme_preview}")
|
||||||
elif _bt49_preview:
|
elif _bt49_preview:
|
||||||
st.caption(f"Export als BT-49: **{_bt49_preview}** · Schema **{_bt49_scheme_preview}**")
|
st.info(f"➡️ Export → **Elektronische Adresse (BT-49):** {_bt49_preview} · "
|
||||||
|
f"**Adress-Schema (BT-49-1):** {_bt49_scheme_preview}")
|
||||||
|
|
||||||
r_street = st.text_input("Straße (BT-50)", value=data.get("recipient_street", ""))
|
r_street = st.text_input("Straße (BT-50)", value=data.get("recipient_street", ""))
|
||||||
r_zip = st.text_input("PLZ (BT-53)", value=data.get("recipient_zip", ""))
|
r_zip = st.text_input("PLZ (BT-53)", value=data.get("recipient_zip", ""))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue