nxar.Aprender
Automations: que el CRM trabaje solo0 de 9 capítulos
  1. 1Qué es una automation
  2. 2Tu primera automation
  3. 3Condiciones
  4. 4Referencias y variables
  5. 5Fórmulas: calcular antes de guardar
  6. 6Frenar un guardado
  7. 7Recorrer registros relacionados
  8. 8Mandar un email
  9. 9Cuando algo no anda: los logs

Casos de uso

  1. ·Un caso crítico arranca en curso
  2. ·Que una oportunidad cerrada no se reabra
  3. ·Completar la cuenta de un caso desde su contacto
  4. ·Avisarle al contacto cuando se cierra su caso

← Volver al recorrido

Capítulo 7 de 9 · 20 min

Recorrer registros relacionados

Cada cuenta muestra cuánto suma lo que sigue abierto con ella: una automation trae sus oportunidades, las recorre con un loop y guarda el total.

Hasta ahora cada automation trabajó con un registro: el que disparó el evento. Para un total hacen falta muchos: todas las oportunidades de la cuenta. El patrón tiene tres piezas:

  1. Obtener registro en modo lista trae los registros y los guarda en una variable.
  2. Loop los recorre de a uno. Su salida body es lo que se hace con cada elemento; cuando el último nodo del body termina, el flujo vuelve solo al loop. Su salida end es lo que sigue cuando no quedan elementos.
  3. Una variable acumula el resultado mientras el loop gira.

Antes de empezar: el campo en la cuenta

ConfiguraciónConstructor de appEntidadesAccountCampos

Nuevo campo → Label Pipeline abierto, Tipo Currency. Revisá que el API Name sea pipeline_abierto y hacé clic en Crear campo.

Para verlo al abrir una cuenta, sumalo a su página: en Record Pages, abrí Default, seleccioná el bloque Record Details, usá + Add field… para agregar Pipeline abierto y hacé clic en Save.

Creá la automation

ConfiguraciónAutomatizaciónProcesosNuevo

Evento de registro, Label Pipeline abierto de la cuenta, Entidad Opportunity. Operación: Crear, Actualizar y Eliminar: el total cambia en los tres casos. Momento: Después. Nueva automation.

La variable que acumula

Ícono Variables de la barra superior → desplegá la sección Variables → Agregar variable: Nombre total, Tipo Número, Valor por defecto 0. Guardar.

¿Tiene cuenta?

Arrastrá una Condición. Nombre ¿Tiene cuenta?, dos ramas:

  • sin_cuenta: campo record.account, Está vacío.
  • cuenta_borrada: campo record.account, Igual a, y el valor vacío.

En las dos ramas escribí record.account completo y cerrá la lista con Esc: si lo elegís de las sugerencias, como account es una relación, el editor le agrega un punto (record.account.) para seguir a los campos de la cuenta, y esa rama no compara lo que querés.

No conectes ninguna de las dos: si la oportunidad no tiene cuenta, el flujo termina ahí. Todo lo demás sigue por Default, que acá es el camino principal.

Esta guarda no es un detalle: el filtro del paso siguiente, cuando su valor queda vacío, no filtra, y traería las oportunidades de todas las cuentas.

Traé las oportunidades de la cuenta

Arrastrá Obtener registro. En el inspector:

  • Nombre del nodo: Oportunidades de la cuenta.
  • Entidad: Opportunity.
  • Resultado: Lista de registros.
  • Filtro (opcional): a la izquierda del =, el API name account; a la derecha, {{record.account}}. El campo de la izquierda es muy angosto y no muestra lo que escribís: escribilo igual.
  • Límite: 50, el valor que viene.
  • Guardar como variable: oportunidades.

Conectá la salida default de ¿Tiene cuenta? a este nodo.

Inspector de Obtener registro en modo Lista de registros, entidad Opportunity, filtro account igual a {{record.account}} y Guardar como variable oportunidades
Modo lista: todos los registros que cumplen el filtro, guardados en una variable.

El loop

Arrastrá Loop (grupo Lógica). Nombre Recorrer oportunidades:

  • Lista a iterar: {{oportunidades}}.
  • Nombre de la variable de iteración: opp. Dentro del loop, opp es la oportunidad de esa vuelta.
  • Nombre de la variable de índice: dejalo vacío.

Conectá Oportunidades de la cuenta al loop. La tarjeta del loop tiene dos salidas: body y end.

El campo de la lista puede pintarse de rojo: el editor no reconoce los nombres que guarda Obtener registro. Si el nombre coincide con el de Guardar como variable, funciona igual.

Dentro del loop: ¿sigue abierta?

Arrastrá una Condición. Nombre ¿Sigue abierta?, rama abierta: campo opp.stage, No es ninguno de, valor Won, Lost. Conectá la salida body del loop a esta condición.

Dentro del loop: sumar

Arrastrá Asignar valor. Nombre Sumar al total:

  • Modo: Asignar valor. Nombre de la variable: total.
  • Valor, en Fórmula: {{total}} + {{opp.amount}}.

Conectá la salida abierta a este nodo y no le conectes nada a la salida: al terminar, el flujo vuelve al loop por la próxima oportunidad. La salida default de ¿Sigue abierta? tampoco se conecta: una oportunidad cerrada no suma y el loop sigue.

Después del loop: guardar en la cuenta

Arrastrá Obtener registro. Nombre La cuenta: Entidad Account, Resultado Un registro, Buscar por ID, Valor {{record.account}}, Guardar como variable cuenta. Conectá la salida end del loop a este nodo.

Buscar por ya aparece en ID, pero hoy esa opción no queda guardada hasta que la elegís: sin eso, el nodo falla con invalid field name "undefined". Hacé clic en Campo y de nuevo en ID.

Arrastrá Actualizar registro. Nombre Guardar el total:

  • Registro a actualizar: Variable. Nombre de la variable: cuenta.
  • Campos a actualizar: con +, campo pipeline_abierto, valor {{total}}. Las sugerencias de campo muestran los de Opportunity, así que el API name de la cuenta se escribe a mano.

Conectá La cuenta a Guardar el total y hacé clic en Guardar.

Flujo Pipeline abierto de la cuenta: condición ¿Tiene cuenta?, Obtener registro, Loop con body hacia ¿Sigue abierta? y Sumar al total, y end hacia La cuenta y Guardar el total
El body vuelve solo al loop; end sigue cuando no quedan oportunidades.

Límites que conviene conocer

  • Obtener registro en modo lista trae hasta lo que diga Límite (50 si no lo cambiás, 200 como máximo). Si una cuenta tiene más oportunidades, las que quedan afuera no suman.
  • Un loop da como máximo 100 vueltas y después sigue por end sin avisar.
  • Un flujo puede hacer hasta 20 búsquedas con Obtener registro por ejecución: no pongas uno adentro de un loop largo.
  • Si una oportunidad se pasa a otra cuenta, esta automation recalcula la cuenta nueva, no la anterior. Para eso haría falta repetir el cálculo con old.account.
Página de la cuenta Lácteos del Sur con el campo Pipeline abierto en 50.000 y la lista de sus oportunidades
El total en la cuenta, recalculado cada vez que cambia una de sus oportunidades.

Cómo saber que te salió

  • El total se calcula cuando cambia una oportunidad, así que hasta acá la cuenta no lo tiene. Creá Renovación 2028 para Lácteos del Sur, amount 20000, stage Proposal.
  • Abrí Lácteos del Sur: Pipeline abierto dice 50.000, en el formato de moneda de tu workspace. Es Renovación 2028 más Implementación (30.000); las demás oportunidades de los capítulos anteriores están en Won y no suman. Si tu cuenta tiene otras abiertas, el número es otro: siempre es la suma de las que no están en Won ni en Lost.
  • Abrí Renovación 2028, con el lápiz de Details pasala a Lost y hacé clic en Save. Recargá la cuenta: vuelve a 30.000.

¿Llegaste al resultado de arriba?