# Odoo CRM

## ¿Qué es Odoo CRM?

Odoo es un sistema ERP y CRM de código abierto ampliamente utilizado. La integración con Anunzi permite que tus agentes —de voz y de WhatsApp— trabajen directamente sobre tu Odoo: crean y actualizan contactos, dejan notas, etiquetan, abren oportunidades en tu pipeline, crean tareas y agendan citas reales en el calendario, de forma automática.

La integración tiene **dos partes complementarias** que puedes usar juntas o por separado:

1. **Sincronización automática (saliente):** cada lead que captan tus agentes aparece en Odoo sin que el agente tenga que hacer nada.
2. **Funciones de agente (bundle Odoo):** el agente —de voz o de WhatsApp— consulta y escribe en Odoo en tiempo real, durante la conversación.

***

## Parte 1 — Sincronización automática

Anunzi sincroniza contactos y oportunidades en Odoo según el canal que disparó el evento.

### Llamadas de voz

Cuando un agente de voz recibe una llamada y el contacto proporciona su nombre y al menos un teléfono o email:

1. Anunzi crea o actualiza el **contacto** (`res.partner`) con nombre, teléfono y email.
2. Anunzi crea una **oportunidad** (`crm.lead`) en el pipeline con la duración, el resumen generado por la IA y la transcripción completa.

> Si la llamada no captura nombre ni teléfono/email, no se crea ningún registro para evitar entradas sin datos útiles.

### Leads de WhatsApp cualificados

Cuando el agente de WhatsApp completa la calificación de un contacto:

1. Crea o actualiza el **contacto** en Odoo.
2. Crea una **oportunidad** en el CRM (si el contacto ya tenía una, la actualiza en lugar de duplicar).
3. Agrega **etiquetas** automáticamente con los valores capturados (interés, ubicación, asesor, etc.).

### Nuevos contactos de WhatsApp

La primera vez que un número nuevo escribe a un agente de WhatsApp, solo crea o actualiza el **contacto** (sin oportunidad).

***

## Parte 2 — Funciones de agente (bundle Odoo)

Además de la sincronización automática, puedes activar funciones de Odoo en un agente —de voz o de WhatsApp— para que consulte y escriba en tu CRM **durante la conversación**. Se activan desde la ficha del agente → **Funciones del agente** → pestaña **CRM** → grupo **Odoo** (las funciones de agenda están en la pestaña **Citas**).

Al igual que Clientify, las funciones de Odoo se activan **una por una** (o varias juntas, seleccionándolas): puedes elegir solo las que necesitas —por ejemplo usar Odoo para el CRM y otra herramienta para la agenda, o al revés.

| Función                   | Qué hace                                                                       |
| ------------------------- | ------------------------------------------------------------------------------ |
| `odoo_buscar_contacto`    | Busca el contacto en Odoo por teléfono o email                                 |
| `odoo_guardar_contacto`   | Crea o actualiza el contacto (nombre, teléfono, email, etiquetas) sin duplicar |
| `odoo_agregar_nota`       | Guarda una nota en el chatter del contacto                                     |
| `odoo_agregar_tag`        | Agrega una o más etiquetas al contacto                                         |
| `odoo_crear_oportunidad`  | Abre una oportunidad en el pipeline CRM                                         |
| `odoo_mover_etapa`        | Mueve la oportunidad del contacto a otra etapa, **por nombre** de la etapa     |
| `odoo_crear_tarea`        | Crea una actividad/tarea real (`mail.activity`) asociada al contacto           |
| `odoo_disponibilidad`     | Consulta los eventos ya agendados de un día para ofrecer horarios libres       |
| `odoo_agendar_cita`       | Agenda una **cita real** en el calendario de Odoo (`calendar.event`)           |

> 💡 **`odoo_mover_etapa` funciona por nombre, no por ID.** Le decís al agente a qué etapa mover la oportunidad (ej. "Qualified", "Won") y él la busca entre las etapas reales de tu pipeline. Si no encuentra coincidencia, te ofrece las etapas disponibles en vez de pedirte un identificador.
>
> 💡 **Odoo tiene calendario real.** A diferencia de Clientify, `odoo_agendar_cita` crea una cita de verdad en el calendario de Odoo, y `odoo_disponibilidad` permite revisar qué franjas ya están ocupadas antes de proponer un horario. Las horas se manejan en **UTC**.

**Requisito:** la integración de Odoo debe estar conectada en **Integraciones** (Parte 1) para que las funciones del agente funcionen. El agente usa las mismas credenciales y el equipo de ventas configurado ahí.

***

## Cómo activarla

### 1. Genera tu API Key en Odoo

1. Ingresa a tu Odoo.
2. Haz clic en tu avatar (arriba a la derecha) → **Mi Perfil**.
3. Ve a la pestaña **Seguridad de la cuenta**.
4. En la sección **Claves de API**, haz clic en **Nueva clave de API**.
5. Asígnale un nombre descriptivo (por ejemplo: `Anunzi`) y copia la clave generada.

> Guarda la clave en ese momento; Odoo no la vuelve a mostrar.

### 2. Conéctala en Anunzi

1. En el panel, ve a **Integraciones** → **Odoo CRM** → **Conectar**.
2. Completa los campos:

| Campo                 | Descripción                             | Ejemplo                      |
| --------------------- | --------------------------------------- | ---------------------------- |
| **URL**               | La dirección web de tu Odoo             | `https://miempresa.odoo.com` |
| **Base de datos**     | Nombre de la base de datos de Odoo      | `miempresa`                  |
| **Usuario**           | El email con el que ingresas a Odoo     | `admin@miempresa.com`        |
| **API Key**           | La clave que generaste en el paso previo | `abc123xyz...`               |

3. Haz clic en **Probar conexión** para verificar las credenciales.
4. _(Opcional)_ Elige el **equipo de ventas** donde se crearán las oportunidades. Una vez guardadas las credenciales, el campo se convierte en un **desplegable** poblado con los equipos reales de tu Odoo (no hace falta buscar el ID a mano).
5. En la sección **Eventos**, activa los que quieras sincronizar: Llamada de voz, Nuevo contacto por WhatsApp, Lead cualificado por WhatsApp.
6. Guarda la configuración.

***

## ¿Qué se puede hacer en Odoo y qué no?

La integración usa la API externa de Odoo (XML-RPC) sobre el módulo **CRM**, que existe en cualquier Odoo con ventas activadas. Esto es lo que puede y no puede hacer:

| Módulo                       | Disponible | Notas                                                                  |
| ---------------------------- | :--------: | ---------------------------------------------------------------------- |
| Contactos                    | ✅         | Crear, actualizar, buscar, etiquetar                                   |
| Notas (chatter)              | ✅         | Se guardan en el contacto                                              |
| Oportunidades (CRM)          | ✅         | Crear, mover de etapa (por nombre)                                     |
| Actividades / tareas         | ✅         | `mail.activity` real (Llamar, Reunión, Por hacer…)                     |
| **Calendario / citas**       | ✅         | `calendar.event` real — **con consulta de disponibilidad**            |
| **Tickets (Helpdesk)**       | ⚠️         | Solo si tu Odoo es Enterprise con el módulo Helpdesk instalado         |
| **Proyectos / Ventas**       | ⚠️         | Requieren los módulos Proyecto / Ventas instalados                     |

> Las funciones del bundle usan el núcleo (Contactos, CRM, Actividades, Calendario), disponible en cualquier Odoo con CRM. Helpdesk, Proyectos y Ventas quedan fuera del bundle estándar porque no todas las cuentas los tienen.

***

## ¿Cómo obtener el equipo de ventas? _(opcional)_

Si tu Odoo aún no cargó las credenciales, puedes indicar el equipo por su ID:

1. Ve a **CRM → Configuración → Equipos de ventas** en tu Odoo.
2. Abre el equipo que quieres usar.
3. El ID aparece en la URL del navegador: `.../web#id=**2**&model=crm.team...`

Si no configuras un equipo, las oportunidades se crean con el equipo por defecto de Odoo.

***

## Preguntas frecuentes

**¿Necesito activar las dos partes?**\
No. Puedes usar solo la sincronización automática (Parte 1), o sumarle funciones de agente (Parte 2) en los agentes que quieras. Las funciones de agente requieren que la integración esté conectada.

**¿Qué pasa si un contacto ya existe en Odoo?**\
Anunzi lo detecta por teléfono o email y actualiza sus datos sin crear un duplicado.

**¿Qué pasa si el mismo lead de WhatsApp califica dos veces?**\
Se actualiza la oportunidad existente en lugar de crear una nueva.

**¿Puedo usar Odoo para el CRM y otra herramienta para la agenda?**\
Sí. Como las funciones se activan una por una, podés activar solo las de contacto/oportunidad de Odoo y usar Google Calendar o Cal.com para las citas — o directamente usar el calendario de Odoo, que también consulta disponibilidad.

**¿En qué zona horaria se agendan las citas?**\
El calendario de Odoo almacena los eventos en **UTC**. Al agendar, indicá la hora en UTC (o configurá el prompt del agente para que haga la conversión desde la zona horaria de tu cliente).

**¿Funciona con Odoo en la nube (odoo.com) y con Odoo self-hosted?**\
Sí, con ambas, siempre que la URL sea accesible desde internet.

**¿Qué pasa si falla el envío a Odoo?**\
El lead se guarda igualmente en Anunzi. El error queda registrado en los logs internos del sistema.
