Darstellung
ADR-0005 – customers → kontakte mit Person/Organisation-Modell
Status
Accepted (Migration 035).
Kontext
Das ursprüngliche customers-Modell mischte Firmen und Einzelpersonen und kodierte den Ansprechpartner als Freitextfeld (contact_person, position). Für Handwerksbetriebe sind sowohl Organisationen (Auftraggeber-Firmen) als auch konkrete Personen (Ansprechpartner, Privatkunden) relevant – mit echten Beziehungen.
Entscheidung
- Tabelle
customers→kontakteumbenannt. - Typdiskriminator
kind∈ {person,organisation} (abgeleitet aus altemtype). - Person-Felder (
salutation,title,first_name,last_name,name_suffix) und Organisations-/Zahlungsfelder (legal_form,commercial_register,default_vat_rate,payment_term_days,skonto_*) ergänzt. - n:m-Verknüpfung
organisation_personen(mit Rolle/Position) ersetzt die Freitextfeldercontact_person/position. - FK-Spalten in referenzierenden Tabellen
customer_id→kontakt_id;invoice_summary-View umgestellt.
Konsequenzen
- ➕ Sauberes CRM-Modell, echte Ansprechpartner-Beziehungen, steuer-/zahlungsrelevante Felder am richtigen Objekt.
- ➖ Begriffs-Mix im Code (Domain-Funktionen heißen weiter
*Customer*, DB heißtkontakte); Migrations-/FK-Umstellung war invasiv.