Desafío 1
Sistema de Asignación Automática de Leads
Sales Cloud · Trigger + Handler + clase de lógica, bulkificado y a prueba de datos incompletos.
Bloqueado
Completa el módulo requisito para desbloquear este desafío. · Módulo 7: Trigger Handlers
La nutria: Antes de empezar: ¿te acuerdas?
En la arquitectura del Módulo 7, ¿dónde vive la regla de negocio?
La empresa recibe Leads de tres fuentes: el formulario web, las ferias y una lista comprada que entra por Data Loader en tandas de 200. Hoy un Admin los reparte a mano cada mañana y los Leads sin dueño claro se quedan días sin tocar.
Tu trabajo: automatizar el reparto. Cada Lead debe asignarse a un Sales Rep según su región y su industria, usando una tabla de asignación que ya existe en la org. Si al Lead le falta la región, va al representante por defecto: nunca se queda sin dueño.
La nutria: Cómo lo harías con clics
El modelo de datos
| Objeto / campo | Para qué se usa |
|---|---|
| Lead.Region__c (Text) | Región del Lead. Puede venir vacío. |
| Lead.Industry (Picklist) | Industria estándar del Lead. |
| Assignment_Rule__c | Objeto personalizado con Region__c, Industry__c, Sales_Rep__c (Lookup a User) e Is_Default__c (Checkbox). |
Lo que vas a construir
- 1
El Trigger
LeadAssignmentTrigger.trigger
Un único trigger sobre Lead, en los contextos before insert y before update.
- 2
El Handler
LeadAssignmentHandler.cls
Recibe la lista de Leads del contexto y orquesta: prepara los datos y llama a la clase de lógica.
- 3
La clase de lógica
LeadAssignmentService.cls
Indexa las reglas en un Map por región+industria y asigna el OwnerId de cada Lead.
Criterios de evaluación
- ¿Se lee la intención del código sin ejecutarlo? Un nombre como ruleMapByRegionAndIndustry ahorra un comentario.
- ¿Qué pasaría si mañana añaden una tercera dimensión (por ejemplo, tamaño de cuenta) a la regla de asignación?
- ¿Podrías escribir un test que cubra el camino feliz y el Lead sin región sin tocar la clase de servicio?