feat(opportunities): Uebernahme zurueck in die Akquise schieben

Im Dialog einer Opportunity aus der Akquise nimmt "Zurueck in die Akquise"
eine versehentliche Uebernahme zurueck: alle Opportunities aus dem Eintrag
wandern in den Papierkorb, der Eintrag steht mit seinem Funddatum wieder in
Eingang bzw. Archiv. Neue Spalte crm_opportunities.acquisition_id, damit bei
mehreren Beratern alle gefunden werden. Wiederherstellen haengt den Eintrag
wieder an die Opportunity.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-09-17 13:12:03 +02:00
co-authored by Claude Opus 5
parent 0ad7b32dbf
commit 33dedaedfb
9 changed files with 270 additions and 19 deletions
+20
View File
@@ -472,6 +472,26 @@ ALTER TABLE crm_acquisitions ADD COLUMN IF NOT EXISTS deleted_at DATETIME NULL A
ALTER TABLE crm_acquisitions ADD COLUMN IF NOT EXISTS deleted_by INT UNSIGNED NULL AFTER deleted_at;
ALTER TABLE crm_acquisitions ADD INDEX IF NOT EXISTS idx_crm_acq_deleted (deleted_at);
/*
* Rueckweg von der Opportunity in die Akquise.
*
* `crm_acquisitions.opportunity_id` merkt sich nur die erste Opportunity einer
* Uebernahme - bei drei Beratern entstehen aber drei. Wer eine Uebernahme
* zuruecknimmt, muss alle finden, deshalb zeigt jede Opportunity selbst auf
* ihren Eintrag. Ohne Fremdschluessel, wie `deleted_by`: die Akquise loescht
* nach 90 Tagen, und ein ADD COLUMN IF NOT EXISTS laesst sich wiederholen.
*
* Das UPDATE traegt den Verweis fuer Uebernahmen von vor dieser Spalte nach -
* aber nur fuer die erste Opportunity, von den weiteren weiss die Datenbank
* nichts. Es fasst nur leere Felder an und ist damit bei jedem Start harmlos.
*/
ALTER TABLE crm_opportunities ADD COLUMN IF NOT EXISTS acquisition_id INT UNSIGNED NULL AFTER consultant;
ALTER TABLE crm_opportunities ADD INDEX IF NOT EXISTS idx_crm_opp_acquisition (acquisition_id);
UPDATE crm_opportunities o
JOIN crm_acquisitions a ON a.opportunity_id = o.id
SET o.acquisition_id = a.id
WHERE o.acquisition_id IS NULL;
/*
* Auswahllisten der Akquise. "Von", "Kanal" und "Berater" sind Dropdowns, deren
* Inhalte in den Einstellungen gepflegt werden.