Cómo evitar las reservas duplicadas en Salesforce
Las reglas de validación no pueden ver otros registros. Esa única limitación explica por qué la mayoría de los sistemas de reservas en Salesforce descubren sus conflictos con un día de retraso.
La reserva duplicada es un problema de momento. Cuando algo en Salesforce estándar puede decirte que la sala está ocupada, el usuario ya la ha elegido, ha rellenado el resto del formulario y ha pasado a otra cosa.
Por qué no sirven las herramientas obvias
| Herramienta | Qué puede hacer | Por qué se queda corta |
|---|---|---|
| Regla de validación | Comprobar campos del registro que se guarda | No puede consultar otros registros en absoluto |
| Regla de duplicados | Coincidir por igualdad de campos | 9:00 a 10:00 y 9:30 a 10:30 chocan, pero no coinciden |
| Flujo desencadenado por registro | Consultar y bloquear al guardar | Actúa cuando el usuario ya se ha comprometido; falla con cargas masivas si se escribe sin cuidado |
| Código personalizado | Control total, lógica de solapamiento correcta | Sigue rechazando al guardar, y ahora el código es tuyo |
Todas comparten el mismo patrón: rechazan al usuario después de elegir. Incluso una solución personalizada correcta acaba en «esa franja está ocupada, inténtalo de nuevo», que es peor experiencia que no ofrecer nunca la franja.
Solapamiento no es igualdad
Las reglas de duplicados tientan a mucha gente, así que aquí va la regla. Dos reservas entran en conflicto cuando una empieza antes de que termine la otra y termina después de que la otra empiece. Una reserva de 9:00 a 10:00 y otra de 9:30 a 10:30 se solapan media hora sin compartir ningún valor de campo idéntico. Cualquier enfoque basado en comparar valores lo pasará por alto siempre.
Conflicto y capacidad son problemas distintos
A menudo se tratan como si fueran lo mismo.
Un conflicto
Dos cosas que compiten por un recurso que admite una sola. Una sala, un entrevistador, un vehículo.
Capacidad
Un recurso que admite varias. La pregunta es cuántas plazas quedan. Una clase con veinte plazas, un turno que necesita cuatro enfermeras, una zona de puestos con sesenta sitios.
Tratar un recurso con capacidad como un recurso de conflicto significa que nunca podrás reservar a la segunda persona. Tratar un recurso de conflicto como capacidad de uno funciona técnicamente, pero pierde los recuentos sobre los que probablemente quieras hacer informes.
Tres comportamientos razonables
«Bloquearlo» no siempre es lo correcto. Cuando alguien selecciona doce fechas y dos chocan, rechazar todo el envío es hostil. Los sistemas útiles ofrecen elegir:
Block
Rechaza el guardado e informa del conflicto. Lo correcto cuando importa cada fecha.
Skip
Guarda las diez que están libres e informa de las dos que no. Suele ser la opción más humana para selecciones en bloque.
Allow
Permite el solapamiento a propósito. Algunos negocios sobrerreservan de forma deliberada.
La solución de verdad llega antes
Todos los mecanismos anteriores actúan al guardar. La solución es llevar la comprobación al momento de la selección: consultar lo que ya existe cuando se carga el calendario, dibujarlo en la cuadrícula y no ofrecer nunca una franja que ya no está libre. Las comprobaciones al guardar siguen ejecutándose como red de seguridad para la carrera real en la que dos personas miran la misma franja libre, pero dejan de ser la defensa principal.
Evita las reservas duplicadas en el momento de elegir
Reserva una franja en la demo en vivo y mira cómo las horas ocupadas desaparecen de la cuadrícula.
- US$20/usuario/mes, todas las funciones
- Prueba gratis de 30 días, sin tarjeta
- 100 % nativo de Salesforce
- Sin Apex
- Próximamente en Salesforce AppExchange