fix(opportunities): Berater als eigenes Feld statt nur in den Notizen
Bei der Uebernahme aus der Akquise verschwand die wichtigste Angabe nach dem Titel: fuer wen das Projekt laeuft. Die Opportunity hatte kein Feld dafuer, also schrieb die Uebernahme den Namen in den Herkunftsvermerk der Notizen - in Pipeline, Liste und Kacheln war er damit nicht zu sehen, und suchen liess sich nur im Notiztext. crm_opportunities.consultant traegt ihn jetzt selbst. Genau ein Name je Opportunity: passt ein Fund zu drei Beratern, entstehen bei der Uebernahme drei Opportunities. Sichtbar in Pipeline-Karte, Kachel, Papierkorb und als sortierbare Spalte direkt hinter dem Titel; die Suche fasst ihn mit ein, und im Dialog kommt die Auswahl aus derselben Liste wie in der Akquise (Einstellungen -> Akquise), damit nicht "Nico" und "Nico N." nebeneinander entstehen. Bestehende Opportunities holt migrateOpportunityConsultant() beim Start aus ihren Notizen nach - nur dort, wo die Spalte leer ist. Damit ist der Lauf wiederholbar und ueberschreibt nichts, was seither von Hand gesetzt wurde; ein Merker in crm_settings ist dafuer nicht noetig. Der Text in den Notizen bleibt stehen: er ist der Herkunftsnachweis samt Anbieter, Kanal und Link. Der Namenszusatz im Titel entfaellt wieder. Er war gestern dazugekommen, damit sich mehrere Opportunities aus einem Fund unterscheiden liessen - mit einer eigenen Spalte ist er nur noch Rauschen. Nebenbei: der Block, der won_at nachzieht, stand zweimal in schema.sql. Idempotent und damit harmlos, aber eine Kopie - jetzt einmal. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8403f1c39d
commit
93fe8cfd73
+14
-6
@@ -27,7 +27,7 @@ ALTER TABLE crm_users ADD COLUMN IF NOT EXISTS avatar LONGTEXT NULL AFTER color;
|
||||
-- Persoenliche Darstellung. Sie haengt am Benutzer und nicht am Browser: wer
|
||||
-- sich an einem anderen Rechner anmeldet, findet sein Design wieder, und zwei
|
||||
-- Benutzer am selben Rechner kommen sich nicht in die Quere.
|
||||
-- theme = Farbwelt ('perinco', 'pixel', 'outdoor'); NULL = 'perinco'
|
||||
-- theme = Farbwelt ('perinco', 'pixel', 'outdoor', 'cyberpunk'); NULL = 'perinco'
|
||||
-- theme_mode = 'light' oder 'dark'; NULL = der Systemeinstellung folgen
|
||||
-- Bewusst VARCHAR und kein ENUM: ein weiteres Theme soll eine Zeile im
|
||||
-- Frontend sein und keine Datenbankmigration. Geprueft wird in userFields.js.
|
||||
@@ -177,12 +177,20 @@ ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS won_at DATETIME NULL AFTE
|
||||
ALTER TABLE crm_opportunities ADD INDEX IF NOT EXISTS idx_crm_opp_won (won_at);
|
||||
|
||||
/*
|
||||
* Zeitpunkt des Gewinns. Ohne ihn liesse sich "wie viele Projekte haben wir im
|
||||
* Mai gewonnen" nicht beantworten - die Phase allein sagt nur, wie es jetzt
|
||||
* steht. Gesetzt beim Wechsel nach 'Beauftragt', geleert beim Wechsel heraus.
|
||||
* Fuer welchen Berater das Projekt laeuft.
|
||||
*
|
||||
* Bis zum 09.09.2026 stand der Berater nur in den Notizen: die Uebernahme aus
|
||||
* der Akquise schrieb ihn dorthin, weil die Opportunity kein Feld dafuer hatte.
|
||||
* In Pipeline, Liste und Kacheln war damit nicht zu sehen, fuer wen ein Projekt
|
||||
* laeuft - neben dem Titel die wichtigste Angabe. Bestehende Opportunities aus
|
||||
* der Akquise holt migrateOpportunityConsultant() in db.js aus ihren Notizen
|
||||
* nach.
|
||||
*
|
||||
* Genau ein Name je Opportunity: passt ein Fund zu drei Beratern, entstehen bei
|
||||
* der Uebernahme drei Opportunities. Deshalb 190 Zeichen wie die uebrigen
|
||||
* Namensfelder und nicht 500 wie in der Akquise, wo eine Liste darin steht.
|
||||
*/
|
||||
ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS won_at DATETIME NULL AFTER stage;
|
||||
ALTER TABLE crm_opportunities ADD INDEX IF NOT EXISTS idx_crm_opp_won (won_at);
|
||||
ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS consultant VARCHAR(190) NULL AFTER company;
|
||||
|
||||
ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS deleted_at DATETIME NULL AFTER created_by;
|
||||
ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS deleted_by INT UNSIGNED NULL AFTER deleted_at;
|
||||
|
||||
Reference in New Issue
Block a user