fix(akquise): Anbieter wieder als Freitext mit Vorschlaegen

Das Dropdown fiel dem Feld zur Last: neue Vermittler tauchen zu oft auf, als
dass das Eintragen an einer gepflegten Liste haengen sollte. Anbieter ist wieder
ein Textfeld, jetzt mit Vorschlagsliste aus den bisherigen Eintraegen - der
zuletzt benutzte zuerst.

In den Einstellungen bleiben die drei Listen "Von", "Kanal" und "Berater".
dropProviderOptions() nimmt 'provider' aus dem ENUM der Optionstabelle und
loescht die dort gepflegten Werte; die Anbieter der Akquise-Eintraege bleiben
unberuehrt, sie stehen als Text in crm_acquisitions.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-08-18 12:21:33 +02:00
co-authored by Claude Opus 5
parent 05cc261900
commit 23087a12fb
11 changed files with 135 additions and 50 deletions
+24 -8
View File
@@ -27,6 +27,8 @@ interface AcquisitionFormProps {
editing: Acquisition | null;
/** Inhalte der Dropdowns, gepflegt unter Einstellungen -> Akquise. */
options: AcquisitionOptions;
/** Schon benutzte Anbieter - das Feld bleibt Freitext. */
providerSuggestions: string[];
onSaved: () => void;
onCancelEdit: () => void;
}
@@ -80,6 +82,7 @@ function toFormState(entry: Acquisition | null): FormState {
export const AcquisitionForm: React.FC<AcquisitionFormProps> = ({
editing,
options,
providerSuggestions,
onSaved,
onCancelEdit,
}) => {
@@ -252,14 +255,27 @@ export const AcquisitionForm: React.FC<AcquisitionFormProps> = ({
onChange={(value) => set('sender', value)}
onOpenSettings={openSettings}
/>
<OptionSelect
id="acq-provider"
label={ACQUISITION_FIELD_LABELS.provider}
value={form.provider}
options={options.provider}
onChange={(value) => set('provider', value)}
onOpenSettings={openSettings}
/>
{/* Anbieter bleibt Freitext: neue Vermittler tauchen zu oft auf, als dass
das Eintragen an einer gepflegten Liste haengen sollte. Die
Vorschlagsliste erspart das Ausschreiben bekannter Namen. */}
<div>
<label className={labelClass} htmlFor="acq-provider">
Anbieter
</label>
<input
id="acq-provider"
list="acq-provider-vorschlaege"
value={form.provider}
onChange={(event) => set('provider', event.target.value)}
placeholder="z. B. Hays"
className={fieldClass}
/>
<datalist id="acq-provider-vorschlaege">
{providerSuggestions.map((option) => (
<option key={option} value={option} />
))}
</datalist>
</div>
<OptionSelect
id="acq-channel"
label={ACQUISITION_FIELD_LABELS.channel}