import type { FC } from 'react'; import { useEffect, useState } from 'react'; import { Save, Smile } from 'lucide-react'; import { Button, Input, TextArea, toast } from './ui'; import { odooApi, ENCUESTAS_DEFAULT, type ClinicSettings, type EncuestasSettings, } from '../services/odoo'; interface Props { settings: ClinicSettings; onSaved: (settings: ClinicSettings) => void; } const Toggle: FC<{ label: string; checked: boolean; onChange: (v: boolean) => void; ayuda?: string }> = ({ label, checked, onChange, ayuda }) => ( ); // Configuración → Encuestas: bloque `encuestas`. Apagado (default) no se envía // ninguna encuesta tras completar una cita. const EncuestasPanel: FC = ({ settings, onSaved }) => { const [form, setForm] = useState(settings.encuestas || ENCUESTAS_DEFAULT); const [plantillas, setPlantillas] = useState<{ id: number; name: string; activo: boolean; tiene_nps: boolean }[]>([]); const [saving, setSaving] = useState(false); useEffect(() => setForm(settings.encuestas || ENCUESTAS_DEFAULT), [settings.encuestas]); useEffect(() => { odooApi.getEncuestasConfig() .then((res) => { if (res.status === 'success') setPlantillas(res.plantillas || []); }) .catch(() => {}); }, []); const set = (k: K, v: EncuestasSettings[K]) => setForm((prev) => ({ ...prev, [k]: v })); const guardar = async () => { setSaving(true); try { const res = await odooApi.putClinicSettings({ encuestas: { ...form }, motivo: 'Configuración de encuestas', }); if (res.status === 'success') { onSaved(res.settings); toast.success('Configuración de encuestas guardada'); } } catch (err) { const msg = (err as { response?: { data?: { message?: string } } })?.response?.data?.message; toast.error(msg || 'No se pudo guardar la configuración de encuestas'); } finally { setSaving(false); } }; return (

Encuestas de salida (NPS)

Apagado (default) no se envía ninguna encuesta al completar una cita. Crea la plantilla (tipo Encuesta) con una pregunta de recomendación (0-10) en Formularios.

set('activo', v)} ayuda="Envía la encuesta tras completarse una cita y habilita el reporte de Satisfacción." /> set('solo_primera_visita', v)} ayuda="Solo se envía a quien tiene una única visita completada." />
set('enviar_tras_horas', Number(e.target.value) || 0)} /> set('recordatorio_horas', Number(e.target.value) || 0)} />