## Visión general

El módulo de **Contratos** se integra a los motores de automatización de la plataforma para que
**generes y envíes contratos sin intervención manual**, en lugar de hacer clic en cada conversación.
Las mismas dos acciones están disponibles en **tres lugares**:

- **Automatizaciones de conversación** — se disparan por evento/condición (p. ej., cambió la etapa del
  negocio).
- **Macros** — ejecutas la acción manualmente, con un clic, sobre una conversación.
- **Flow Builder** — el nodo **Enviar contrato** dentro de un flujo visual.

En todos ellos, la plataforma resuelve la **plantilla**, el **contacto** y la **conversación** a
partir del contexto, autocompleta las variables, **autofirma la empresa emisora** (la parte
contratada) y entrega el **enlace de firma** al contacto cuando hay una conversación vinculada.

## Requisitos previos

- Módulo de Contratos **habilitado** y un usuario con **permiso** para gestionar contratos.
- Al menos una **plantilla** de contrato ya creada.
- Un **contacto** (y, preferiblemente, una **conversación**) en el disparador — de ahí sale el
  firmante.
- Una **empresa emisora** registrada (se usa como contratada predeterminada y para la autofirma).
- Para entregar el enlace por los canales, una **Bandeja de entrada** de WhatsApp o correo.

## Paso a paso

### Automatizaciones de conversación

1. Ve a **Configuración → Automatización** y crea o edita una regla.
2. Define el **evento** y las **condiciones** que disparan la regla.
3. En **Acciones**, elige una de las acciones de contrato:
   - **Enviar contrato desde plantilla** (`send_contract_from_template`): crea el contrato a partir de
     la plantilla **y lo envía para firma** de inmediato.
   - **Crear contrato desde plantilla** (`create_contract_from_template`): solo crea el contrato como
     **borrador** para que el agente lo revise antes de enviar.
4. Indica la **plantilla** en la acción. Guarda la regla.

### Macros

1. Ve a **Configuración → Macros** y crea una macro.
2. Agrega la misma acción de contrato (**Enviar** o **Crear** desde plantilla) y elige la plantilla.
3. En la conversación, ejecuta la macro desde el menú de **Macros** para generar/enviar el contrato
   manualmente.

### Flow Builder

1. En el editor de flujo, agrega el nodo **Enviar contrato**.
2. Selecciona la **plantilla** (y, opcionalmente, un **título**).
3. Conecta la **salida de éxito** al siguiente paso y la **salida de fallo** a una alternativa (p.
   ej., avisar a un agente).
4. Publica el flujo. Al ejecutarse, el nodo crea el contrato (autocompleta variables, arma
   firmantes/ítems y elige la emisora predeterminada) y lo envía.

## Configuración y opciones

- **Parámetros de la acción**: `template_id` es obligatorio. Opcionalmente, `company_id` (empresa
  emisora), `crm_item_id` (negocio del CRM) y `title` (título del contrato). Cuando omites la empresa,
  la plataforma usa la **emisora predeterminada**; el contacto y la conversación vienen del disparador.
- **Misma ejecución en todas partes**: Automatizaciones y Macros comparten exactamente el mismo
  conjunto de acciones, así que el comportamiento es idéntico — solo cambia el disparo (automático,
  manual o por flujo).
- **Condiciones basadas en el contrato**: las reglas que responden a **eventos de contrato** pueden
  filtrar por `contract_status` (situación), `contract_tier` (nivel de firma), `contract_company`
  (empresa emisora) y `contract_total` (suma de los ítems, en **unidades enteras de moneda**).
  Operadores disponibles: igual a, distinto de, contiene, no contiene, está presente, no está
  presente, mayor que, menor que. Una regla **sin condiciones** siempre se ejecuta; una condición mal
  configurada **falla de forma segura** (no se dispara con todo).
- **Salidas del nodo de flujo**: el éxito avanza (llevando el `contract_id` generado); el fallo sale
  por un camino aparte, identificado por `contracts_not_enabled`, `contracts_template_missing`,
  `contracts_no_contact` o `send_contract_failed`.

## Casos de uso

- **Negocio ganado en el CRM** → enviar automáticamente el contrato de prestación de servicio en la
  misma conversación.
- **Cambio de etapa** (p. ej., "En negociación" → "Cierre") → crear el contrato como borrador para que
  el agente lo revise antes de enviar.
- **Atención por flujo**: al final de un Flow Builder de calificación, el nodo **Enviar contrato**
  emite el documento y pasa a una etapa de cobro cuando hay éxito.

## Consejos, límites y buenas prácticas

- Usa **Crear** cuando quieras revisión humana antes del envío; usa **Enviar** cuando el flujo ya esté
  validado y pueda ir directo a la firma.
- En **Automatizaciones y Macros**, las acciones **degradan en silencio**: si el módulo está
  deshabilitado, falta la plantilla o no hay contacto en el disparador, la acción simplemente **no
  hace nada** y registra una línea de log `[CONTRACTS_AUTOMATION]` — **nunca rompe** el resto de la
  regla/macro.
- En el **Flow Builder**, el mismo problema **no interrumpe** el flujo: sale por la **salida de
  fallo**, así que conecta siempre ese camino a un manejo alternativo.
- Asegúrate de que los **datos de origen** (contacto, documento, negocio) estén completos para que el
  autocompletado de variables funcione bien.
- Para la autofirma de la contratada, mantén la **empresa emisora** correcta (y un certificado A1
  vigente, en el caso de firma cualificada).

## Solución de problemas

- **La regla se ejecutó pero no apareció el contrato**: lo más probable es que falte la **plantilla**,
  falte el **contacto** en la conversación o el **módulo esté deshabilitado**. Revisa la línea
  `[CONTRACTS_AUTOMATION]` en el log.
- **El contrato se creó pero no se envió**: la acción usada fue **Crear desde plantilla** (queda como
  borrador). Usa **Enviar desde plantilla** para emitir y enviar de una vez.
- **El flujo salió por la salida de fallo**: lee el motivo — `contracts_not_enabled` (módulo
  apagado), `contracts_template_missing` (plantilla sin definir), `contracts_no_contact` (sin
  contacto) o `send_contract_failed` (error en el envío).
- **El firmante no recibió el enlace**: confirma que hay una **conversación vinculada** y que el
  **canal** (WhatsApp/correo) y los datos del contacto son correctos.

## Ver también

- [Visión general de Contratos y Firma Electrónica](/hc/ajuda/articles/contracts-esignature-overview-es)
- [Plantillas, variables y autocompletado](/hc/ajuda/articles/contracts-esignature-templates-variaveis-auto-fill-es)
- [Firma interna y externa](/hc/ajuda/articles/contracts-esignature-assinatura-interna-externa-es)
- [Empresas emisoras y certificado digital A1](/hc/ajuda/articles/contracts-esignature-empresas-emissoras-certificado-a1-es)