Adresse Weg 2: Echtes Address-Dokument statt Custom-Field-Text (spätere Ausbaustufe) #5

Closed
opened 2026-07-25 17:29:11 +00:00 by forgejo-admin · 1 comment

Kontext

Frappe-native Alternative/Ergänzung zu #4 (Adresse Weg 1). Statt Adressdaten nur in Custom-Text-Feldern auf CRM Lead zu halten, ein echtes Address-Dokument anlegen — so wie Frappe/ERPNext es selbst überall macht.

Recherche

  • Address (Frappe-Standard-Doctype): Felder address_title, address_type, address_line1, address_line2, city, county, state, country (Link auf Country), pincode, plus Kind-Tabelle links (Doctype Dynamic Link: link_doctype/link_name/link_title) — generischer Verknüpfungsmechanismus an beliebige Dokumente.
  • Country-Stammdaten für Germany/Austria/Switzerland bereits vorhanden (Frappe-Standard-Fixture). Wichtig: englische Ländernamen als Primärschlüssel nötig, nicht die deutschen aus unserem bestehenden COUNTRY_NAMES_DE — neue Mapping-Tabelle COUNTRY_NAMES_EN nötig.

Umsetzung

  • Beim Lead-Anlegen zusätzlich ein Address-Dokument erzeugen: address_title=<organization>, address_type="Office", address_line1=<parse_address address1>, city=<stadt>, pincode=<zipcode>, country=<COUNTRY_NAMES_EN[land]>.
  • Verknüpfung über die links-Kind-Tabelle: link_doctype="CRM Lead", link_name=<lead.name> — gleiches Prinzip wie unser bestehendes FCRM Note (reference_doctype/reference_docname), nur als Kind-Tabellen-Zeile statt Direktfeld.

Nutzen

Frappes Standard-Adresswidgets/-Reports funktionieren automatisch; relevant für die ERPNext-Anbindung (Angebote/Rechnungen können die Adresse direkt übernehmen, siehe frappe-crm-erp/docs/install.md Abschnitt 6a).

Warum separates, späteres Issue

Mehr Komplexität als #4 (Update-Verhalten bei erneutem Fund desselben Leads, doppelte Datenhaltung ggü. #4 solange beide parallel existieren müssen). Erst nach #3 (Territory) und #4 (Adresse Weg 1) angehen.

Verifikation

  • Neuer Lead: Address-Dokument wird angelegt, korrekt per Dynamic Link mit dem Lead verknüpft
  • Adresse taucht im Frappe-Standard-Adress-Widget des Leads auf (falls im CRM-Frontend vorhanden) bzw. per API abrufbar
  • Klärung: Verhältnis zu #4 — Custom Fields behalten (redundant, aber einfach lesbar) oder durch Address-Link ersetzen?

Fachlicher Ursprung: #1. Baut auf #3 und #4 auf.

## Kontext Frappe-native Alternative/Ergänzung zu #4 (Adresse Weg 1). Statt Adressdaten nur in Custom-Text-Feldern auf `CRM Lead` zu halten, ein echtes `Address`-Dokument anlegen — so wie Frappe/ERPNext es selbst überall macht. ## Recherche - `Address` (Frappe-Standard-Doctype): Felder `address_title`, `address_type`, `address_line1`, `address_line2`, `city`, `county`, `state`, `country` (**Link** auf `Country`), `pincode`, plus Kind-Tabelle `links` (Doctype `Dynamic Link`: `link_doctype`/`link_name`/`link_title`) — generischer Verknüpfungsmechanismus an beliebige Dokumente. - `Country`-Stammdaten für `Germany`/`Austria`/`Switzerland` bereits vorhanden (Frappe-Standard-Fixture). Wichtig: **englische** Ländernamen als Primärschlüssel nötig, nicht die deutschen aus unserem bestehenden `COUNTRY_NAMES_DE` — neue Mapping-Tabelle `COUNTRY_NAMES_EN` nötig. ## Umsetzung - Beim Lead-Anlegen zusätzlich ein `Address`-Dokument erzeugen: `address_title=<organization>`, `address_type="Office"`, `address_line1=<parse_address address1>`, `city=<stadt>`, `pincode=<zipcode>`, `country=<COUNTRY_NAMES_EN[land]>`. - Verknüpfung über die `links`-Kind-Tabelle: `link_doctype="CRM Lead"`, `link_name=<lead.name>` — gleiches Prinzip wie unser bestehendes `FCRM Note` (`reference_doctype`/`reference_docname`), nur als Kind-Tabellen-Zeile statt Direktfeld. ## Nutzen Frappes Standard-Adresswidgets/-Reports funktionieren automatisch; relevant für die ERPNext-Anbindung (Angebote/Rechnungen können die Adresse direkt übernehmen, siehe `frappe-crm-erp/docs/install.md` Abschnitt 6a). ## Warum separates, späteres Issue Mehr Komplexität als #4 (Update-Verhalten bei erneutem Fund desselben Leads, doppelte Datenhaltung ggü. #4 solange beide parallel existieren müssen). Erst nach #3 (Territory) und #4 (Adresse Weg 1) angehen. ## Verifikation - [ ] Neuer Lead: `Address`-Dokument wird angelegt, korrekt per Dynamic Link mit dem Lead verknüpft - [ ] Adresse taucht im Frappe-Standard-Adress-Widget des Leads auf (falls im CRM-Frontend vorhanden) bzw. per API abrufbar - [ ] Klärung: Verhältnis zu #4 — Custom Fields behalten (redundant, aber einfach lesbar) oder durch Address-Link ersetzen? Fachlicher Ursprung: #1. Baut auf #3 und #4 auf.
Author
Owner

Gelöst in #8 — mit einer bewusst anderen Architektur als hier ursprünglich skizziert: keine CRM Organization wird beim Lead-Import angelegt (das wäre zu weit über den reinen Interessenten hinaus). Stattdessen bleibt die Adresse auf Interessenten-Ebene (echtes Address-Dokument am CRM Lead), und ein neuer doc_events-Hook (CRM Organizationafter_insert) reicht diese Adresse automatisch weiter, sobald ein Mitarbeiter den Lead später manuell zum Deal konvertiert — an der Stelle, an der Frappe selbst die CRM Organization erzeugt. Live in der Demo-Umgebung end-to-end getestet. Details siehe PR #8 sowie docs/install.md Abschnitt 7b und Projekt.md.

Gelöst in #8 — mit einer bewusst anderen Architektur als hier ursprünglich skizziert: **keine** `CRM Organization` wird beim Lead-Import angelegt (das wäre zu weit über den reinen Interessenten hinaus). Stattdessen bleibt die Adresse auf Interessenten-Ebene (echtes `Address`-Dokument am `CRM Lead`), und ein neuer `doc_events`-Hook (`CRM Organization` → `after_insert`) reicht diese Adresse automatisch weiter, sobald ein Mitarbeiter den Lead später manuell zum Deal konvertiert — an der Stelle, an der Frappe selbst die `CRM Organization` erzeugt. Live in der Demo-Umgebung end-to-end getestet. Details siehe PR #8 sowie `docs/install.md` Abschnitt 7b und `Projekt.md`.
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#5
No description provided.