1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

validar BI em C#

Discussão em 'Programação' iniciada por asa_delta, 4 de Abril de 2007. (Respostas: 14; Visualizações: 6345)

  1. asa_delta

    asa_delta Power Member

    Boas

    Alguém tem o código para validar o BI em C#,

    Agradecia mesmo


    Obrigado
     
  2. HecKel

    HecKel The WORM

    hummm, isso depende muito dos objectivos do programa em questão :P

    Recentemente fiz um trabalho onde considerámos o dono do BI como um cidadão de qualquer país, caso do Brasil os BIs são alfanuméricos..., se for apenas BI Português apenas tens de verificar se tem os digitos todos, salvo erro têm de ter 8 digitos. É uma simples comparação.

    A menos que queiras ter em conta o número de controlo dos BIs, aí existem regras, salvo erro...

    abraços, HecKel
     
  3. quando almocar faco-te isso.


    br
    -htr
     
  4. Esta funcao deve calcular o checkdigit.. aquele digito que esta' a' direita do numero do BI.


    Código:
    static int calc_check_digit(string BI)
    {
      int i=2;
      int sum=0;
    
      foreach(char c in BI)
      {
         sum += (c - '0') * i;
         i++;
      }
      return sum%11;
    }
    
    
     
  5. asa_delta

    asa_delta Power Member

    a funçaõ do check digit funciona perfeitamente


    obrigadinho
     

  6. Tem de ter 9 digitos.... especifica qual o objectivo em questão
     
  7. HecKel

    HecKel The WORM

    O meu BI tem 8 dígitos, daí estar na dúvida, acho que existem com 7 dígitos também...

    abraços, HecKel
     
  8. Yeah.. right :)

    nao existe um numero fixo de digitos do BI.

    A unica validacao e' atraves do checkdigit.
     
  9. damisoft

    damisoft Power Member

    uma vez um professor meu de matemática disse-me que para validar um BI, é com um polinómio maluco, que dá os digitos do BI, em que o resultado desse polinómio tem de ser diferente de 0... eu vou perguntar a esse professor se o encontrar, pk para validar o nº de contribuinte também é uma "formula", e penso que para o BI será a mesma coisa...
     
  10. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Experimentei o código do hugotr e funcionou perfeitamente.
    O meu BI tem 8 dígitos, e o numero de controlo apareceu bem.
    O do meu irmão, idem. 8 digitos, apareceu bem.
    O BI do meu pai tem 7 dígitos. Nessa situação, o número de controlo estava errado.

    Para corrigir, acrescenta-se um zero à esquerda do BI de modo a perfazer os 8 dígitos. Assim, o número de controlo já aparece correctamente. É tão simples quanto isso :)

    Não esquecer que este algoritmo deve ser a forma do MJ de Portugal calcular o dígito de controlo ;)
     
  11. malato

    malato Power Member

    Este está em javascript

    Há tempos tive de programar um validador de NIF e BI. Reparei que o algoritmo de validação destes dois números tem uma parte comum. Na altura programei aquilo em javascript. Mas passar isto pra C# é uma operação que envolve 2 minutos.

    Código:
    function CheckNIF(nif){
     var c;   
     
     // verifica o tamanho
     if(nif.length != 9)
      return false;
                
     // valida primeiro digito
     c = nif.charAt(0);
     if((c=='0')||(c=='3')||(c=='4')||(c=='7')||(c=='8'))
      return false;
        
     // algoritmo de validação
     return AlgoritmoValidacao(nif);
    }
                    
    function CheckBI(nbi, lastDigit){
     var BIformated;
     // verifica tamanhos
     if((nbi.length < 7) || (nbi.length > 8))
      return false;
     if(lastDigit.length != 1)
      return false;
     
     // prepara o numero de BI formatado
     if(nbi.length == 8){
      BIformated = nbi + lastDigit;
     } else {
      BIformated = '0' + nbi + lastDigit;
     }
     
     // algoritmo de validação
     return AlgoritmoValidacao(BIformated);
    }
    
    function AlgoritmoValidacao(numFormated){
     var pos, ctl, val = 0;
     for(pos=0; pos<8; ++pos){
      val += parseInt(numFormated.charAt(pos)) * (9 - pos);
     }
                       
     ctl = 0;
     if((val%11) != 0)
      ctl = (11 - val % 11) % 10;
     return ctl == parseInt(numFormated.charAt(8));
    }
    
     
  12. degenerated

    degenerated Power Member

    Neste site estão várias validações (NIF, BI, NISS, etc.) em várias linguagens (C, T-SQL, Python, VBA, etc.) :)
     
  13. Gostaria de saber como faço para validar o nif, ao introduzir o numero do nif para que me diga se é valido ou não, dps tudo isto será validado através de uma web reference, mas nao sei como fazer isto..

    I need Help ;(
     
  14. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Chegaste a ler o link do post anterior ao teu?
     
  15. flaviorodrigues

    flaviorodrigues Power Member

    Vou reacordar isto!

    Alguem sabe se é possivel validar o BI so com os primeiros digitos? sem o "numero de controlo"?

    Obrigado
     

Partilhar esta Página