Territory-Hierarchie (Land → Bundesland/Kanton) auf CRM Lead befüllen #3

Closed
opened 2026-07-25 17:28:41 +00:00 by forgejo-admin · 0 comments

Kontext

Beim Testen von feature/lead-origin-note aufgefallen: CRM Lead hat ein territory-Feld (Link auf CRM Territory), das wir bisher nicht befüllen.

Recherche

  • CRM Territory ist ein Baum-Doctype (is_tree: 1, nsm_parent_field: parent_crm_territory), Autoname field:territory_name, aktuell komplett leer in der DB.
  • Kein Root-Zwang im Controller (reiner pass-Controller) — mehrere Wurzelknoten (mehrere Länder nebeneinander) sind mit Frappes generischem Nested-Set-Framework unproblematisch.

Entscheidung (abgestimmt)

Automatisch zweistufig anlegen:

  • ensure_territory(country_name, region_name) in crm_lead_sync.py, analog zu ensure_lead_source():
    • Land als Gruppen-Knoten (is_group=1, kein Parent) falls nicht vorhanden.
    • Bundesland/Kanton als Kind-Knoten (is_group=0, parent_crm_territory=<Land>) falls nicht vorhanden.
  • Braucht ausgeschriebene Namen statt Codes (BYBayern) → REGION_NAMES-Tabelle aus dem alten Mautic-Projekt (GitLab/wsc_py_leadscraper/import_leads.py) für DE/AT/CH nach crm_lead_sync.py übernehmen (oder eigenes Modul region_names.py, falls zu groß).
  • build_lead_fields() bekommt ein neues Feld "territory": region_name.
  • Land-Ebene nutzt dieselben deutschen Anzeigenamen wie COUNTRY_NAMES_DE (Konsistenz zu custom_country).

Verifikation

  • Neuer Lead in einer bisher unbekannten Region → Land- und Bundesland-Territory werden automatisch angelegt
  • Zweiter Lead in derselben Region → keine doppelten Territory-Einträge
  • territory-Feld im CRM-Frontend auf dem Lead sichtbar/korrekt

Fachlicher Ursprung: #1

## Kontext Beim Testen von `feature/lead-origin-note` aufgefallen: `CRM Lead` hat ein `territory`-Feld (Link auf `CRM Territory`), das wir bisher nicht befüllen. ## Recherche - `CRM Territory` ist ein Baum-Doctype (`is_tree: 1`, `nsm_parent_field: parent_crm_territory`), Autoname `field:territory_name`, aktuell **komplett leer** in der DB. - Kein Root-Zwang im Controller (reiner `pass`-Controller) — mehrere Wurzelknoten (mehrere Länder nebeneinander) sind mit Frappes generischem Nested-Set-Framework unproblematisch. ## Entscheidung (abgestimmt) Automatisch zweistufig anlegen: - `ensure_territory(country_name, region_name)` in `crm_lead_sync.py`, analog zu `ensure_lead_source()`: - Land als Gruppen-Knoten (`is_group=1`, kein Parent) falls nicht vorhanden. - Bundesland/Kanton als Kind-Knoten (`is_group=0`, `parent_crm_territory=<Land>`) falls nicht vorhanden. - Braucht ausgeschriebene Namen statt Codes (`BY` → `Bayern`) → `REGION_NAMES`-Tabelle aus dem alten Mautic-Projekt (`GitLab/wsc_py_leadscraper/import_leads.py`) für DE/AT/CH nach `crm_lead_sync.py` übernehmen (oder eigenes Modul `region_names.py`, falls zu groß). - `build_lead_fields()` bekommt ein neues Feld `"territory": region_name`. - Land-Ebene nutzt dieselben deutschen Anzeigenamen wie `COUNTRY_NAMES_DE` (Konsistenz zu `custom_country`). ## Verifikation - [ ] Neuer Lead in einer bisher unbekannten Region → Land- und Bundesland-Territory werden automatisch angelegt - [ ] Zweiter Lead in derselben Region → keine doppelten Territory-Einträge - [ ] `territory`-Feld im CRM-Frontend auf dem Lead sichtbar/korrekt Fachlicher Ursprung: #1
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Frappe-Projekte/LeadScraper-Google#3
No description provided.