Como evitar reservas duplicadas no Salesforce
Regras de validação não enxergam outros registros. Essa única limitação explica por que a maioria dos sistemas de reserva no Salesforce descobre seus conflitos com um dia de atraso.
Reserva duplicada é um problema de momento. Quando qualquer recurso do Salesforce padrão consegue avisar que a sala está ocupada, o usuário já a escolheu, preencheu o resto do formulário e seguiu em frente.
Por que as ferramentas óbvias não resolvem
| Ferramenta | O que ela faz | Onde ela falha |
|---|---|---|
| Regra de validação | Verifica campos do registro que está sendo salvo | Não consegue consultar nenhum outro registro |
| Regra de duplicidade | Compara campos com valores iguais | 9:00 às 10:00 e 9:30 às 10:30 se chocam, mas não são iguais |
| Fluxo acionado por registro | Consulta e bloqueia ao salvar | Dispara depois que o usuário confirmou; falha em massa se for escrito de forma ingênua |
| Código personalizado | Controle total, lógica de sobreposição correta | Continua rejeitando ao salvar, e agora o código é seu para manter |
Todas têm o mesmo formato: rejeitam o usuário depois da escolha. Mesmo uma solução personalizada correta resulta em "esse horário está ocupado, tente de novo", uma experiência pior do que nunca oferecer o horário.
Sobreposição não é igualdade
As regras de duplicidade são tentadoras, então aqui vai a regra. Duas reservas entram em conflito quando uma começa antes de a outra terminar e termina depois de a outra começar. Uma reserva das 9:00 às 10:00 e outra das 9:30 às 10:30 se sobrepõem por meia hora sem ter nenhum valor de campo idêntico. Qualquer abordagem baseada em comparar valores vai deixar isso passar todas as vezes.
Conflito e capacidade são problemas diferentes
Muitas vezes são tratados como uma coisa só.
Um conflito
Duas coisas disputando um recurso que comporta uma. Uma sala, um entrevistador, um veículo.
Capacidade
Um recurso que comporta várias. A pergunta é quantas vagas sobram. Uma turma com vinte lugares, um plantão que precisa de quatro enfermeiros, uma área de mesas com sessenta posições.
Tratar um recurso de capacidade como recurso de conflito significa que você nunca consegue reservar a segunda pessoa. Tratar um recurso de conflito como capacidade de um tecnicamente funciona, mas perde as contagens que você provavelmente quer ver nos relatórios.
Três comportamentos sensatos
"Bloquear" nem sempre é o certo. Quando alguém seleciona doze datas e duas delas têm conflito, rejeitar o envio inteiro é hostil. Sistemas úteis oferecem uma escolha:
Bloquear
Recusa a gravação e informa o conflito. Certo quando cada data importa.
Pular
Salva as dez livres e informa as duas que não estavam. Normalmente o padrão mais humano para seleção em massa.
Permitir
Aceita a sobreposição de propósito. Algumas empresas trabalham com overbooking deliberadamente.
A solução de verdade vem antes
Todos os mecanismos acima atuam na hora de salvar. A solução é levar a verificação para a hora da seleção: consultar o que já existe quando o calendário carrega, desenhar isso na grade e nunca oferecer um horário que já foi tomado. As verificações ao salvar continuam rodando como rede de segurança para a corrida real em que duas pessoas olham o mesmo horário livre, mas deixam de ser a defesa principal.
Acabe com as reservas duplicadas no momento da escolha
Reserve um horário na demo ao vivo e veja os horários ocupados saírem da grade.
- US$ 20/usuário/mês, todos os recursos
- Teste grátis de 30 dias, sem cartão
- 100% nativo do Salesforce
- Sem Apex
- Em breve no Salesforce AppExchange