Ir para conteúdo
  • Cadastre-se

dev botao

Solução simples para o nono dígito


  • Este tópico foi criado há 3120 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa noite pessoal,

Recentemente precisamos fazer algumas adaptações nas nossas soluções para poder suportar o nono dígito e gostaria de compartilhar com vocês uma em especial que usa um recurso muito bacana do Firebird de casamento de padrão por expressão regular. Antes de passar o trecho de código vale apenas ressaltar que esta alteração não procede para telefones fixos.

      Em 25 de Agosto de 2013 passou a valer o nono dígito para os números móveis dos DDDs 11, 12, 13, 14, 15, 16, 17, 18, 19
      Em 27 de Outubro de 2013  os números dos DDDs 21, 22, 24, 27, 28
      Até 31 de dezembro de 2014 para os Códigos Nacionais 91, 92, 93, 94, 95, 96, 97, 98, 99
      Em 31 de maio de 2015 para os Códigos Nacionais 81, 82, 83, 84, 85, 86, 87, 88, 89
      Em 11 de outubro de 2015 Códigos Nacionais 31, 32, 33, 34, 35, 37, 38, 71, 73, 74, 75, 77, 79
      Até 31 de dezembro de 2016 para os Códigos Nacionais 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 53, 54, 55, 61,62, 63, 64, 65, 66, 67, 68, 69

Fizemos um tratamento a nível de trigger que verifica se o número de telefone já pode receber o nono dígito caso o usuário esqueça de informar e atualiza os antigos como segue abaixo:

      IF (NEW.PESSOA_TELEFONE SIMILAR TO '(11|12|13|14|15|16|17|18|19|21|22|24|27|28|91|92|93|94|95|96|97|98|99|81|82|83|84|85|86|87|88|89|31|32|33|34|35|37|38|71|73|74|75|77|79)[6-9]{1}[0-9]{7}') THEN
      BEGIN

         NEW.PESSOA_TELEFONE = SUBSTRING(NEW.PESSOA_TELEFONE FROM 1 FOR 2) || '9' || SUBSTRING(NEW.PESSOA_TELEFONE FROM 3 FOR 8);

      END

Com uma única expressão conseguimos verificar se o número de telefone pode receber o nono dígito como segue:

1) (11|12|13|14|15|16|17|18|19|21|22|24|27|28|91|92|93|94|95|96|97|98|99|81|82|83|84|85|86|87|88|89|31|32|33|34|35|37|38|71|73|74|75|77|79) verifica os dois primeiros digitos são DDDs que já estão valendo o nono dígito

2) [6-9]{1} verifica somente números de telefones não fixos

3) [0-9]{7} verifica se o resto do numero de telefone e digito

Esperamos que seja útil.

 

  • Curtir 2

3 Virtudes de um líder:
1) Ensinar o que se sabe
2) Praticar o que se ensina
3) Aprender o que se ignora

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3120 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.