Você está aqui: Página Inicial > Arquivos > NUP > calculadora_nup_html

calculadora_nup_html

text/html Calculadora do Dígito Verificador do NUP, conforme Portaria Interministerial 2321, de 30 de dezembro de 2014 (1).html — 4 KB

Conteúdo do arquivo

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="pt-br"> 
<head>
<meta http-equiv="Content-Type" content="text/html">
<meta charset="utf-8">
<title>Calculadora do Dígito Verificador do NUP, conforme Portaria Interministerial 2321, de 30 de dezembro de 2014</title>
<style>
h1 {
    font-size: 1em;
    text-align: center;
    font-family: Tahoma, Geneva, sans-serif;
    font-weight: normal;
}

h2.negrito {
    font-size: 1em; 
    text-align: center;
    font-family: Tahoma, Geneva, sans-serif;
    font-weight: bold;    
}

h2.normal {
    font-size: 1em; 
    text-align: center;
    font-family: Tahoma, Geneva, sans-serif;
    font-weight: normal;    
}

p {
    font-size: 1em; 
    font-family: Tahoma, Geneva, sans-serif;
}

a.voltar{
    padding-left: 20px;
    background: url("http://www.brasil.gov.br/portal_css/Sunburst%20Theme/++resource++brasil.gov.portal/img/voltar-topo.png") no-repeat scroll left center transparent;
    color: #777;
    font-size: 0.9em;
    font-family: "open_sansregular";
    font-style: normal;
    font-weight: normal;
    text-decoration: none;
}

</style>
</head>
<body>
<h1>Ministério do Planejamento, Orçamento e Gestão</h1>
<h1>Ministério da Justiça</h1>
<h2 class="normal"><a title="Portaria Interministerial MJ/MP n° 2.321, de 30 de dezembro de 2014" href="http://www.comprasgovernamentais.gov.br/paginas/portarias/portaria-interministerial-no-2-321-de-30-de-dezembro-de-2014" target="_self">Portaria Interministerial MJ/MP n° 2.321, de 30 de dezembro de 2014</a></h2>
<h2 class="negrito">Calculadora dos dígitos verificadores (DVs) do Número Único de Protocolo (NUP)</h2>
<p>Informe o número-base do NUP, sem ponto (.), barra (/) e hífen (-):</p>

<input id="nup" type="text" maxlength="19" onkeypress="return EnviaFormulario(event);">

<button type="button" onclick="calculaDV()">Calcular DVs</button>

<p id="resultado"></p>
<a href="http://www.comprasgovernamentais.gov.br/paginas/comunicacoes-administrativas/numero-unico-de-protocolo-nup/#calculadora" class="voltar">Voltar</a>


<script>
function calculaDV() {
    var x, text;

    // Get the value of the input field with id="numb"
    x = document.getElementById("nup").value;
    
    //Apaga os pontos
    x = x.replace(".", ""); 
    
    //Apaga as virgulas
    x = x.replace(",", ""); 
    
    //Apaga o +
    x = x.replace("+", ""); 
    
    //Apaga o -
    x = x.replace("-", ""); 
 
    //Apaga o "E"
    x = x.replace("E", ""); 

    //Apaga o "e"
    x = x.replace("e", ""); 
    
    //Tamanho do campo digitado
    var tamanhoNUP = x.length;

    // Se o digitado não é número ou é menor que 0 ou se não tem 19 dígitos sem o DV
    if (isNaN(x) || x <= 0 || tamanhoNUP != 19) {
        text = "Entrada inválida. Informe exatamente os 19 dígitos que compõem o número-base do NUP, sem ponto (.), barra (/) e hífen (-).";
    } else {
        //O javascripst consegue calcular corretamente, sem erro de arredondamento, números com até 13 dígitos.
	// devemos quebrar o número em DUAS partes, e fazer o cálculo de forma fatorada.


	//Retorna a string dele
	var StringDoNUP = x.toString(); 
	    
	//Pega os 12 primeiros dígitos do NUP
	var parte1 = StringDoNUP.substring(0, 12);

        //Pega os últimos dígitos do NUP
	var parte2 = StringDoNUP.substring(12, StringDoNUP.length);
	    
	//Adiciona os dois zeros finais à segunda parte do NUP
	parte2 = parte2 + "00";
	    
	//Resto da divisão inteira por 97
	var resto1 = parte1 % 97;
	    
	//Concatena ao resto da divisão a segunda parte do NUP, depois calcula o resto da divisão inteira
	var resto2 = (resto1.toString() + parte2) % 97;
	    
	//Calcula o DV
	var DV = 98 - resto2;
	    
        
	//Se o DV foi menor que 10, tem que adicionar um zero a esquerda 
        if (DV < 10) {
            DV = "0" + DV;
       }	
        
	//Descobre quais são os dígitos separadamente
	var primeiroDV = (DV.toString()).substring(0, 1);
        var segundoDV = (DV.toString()).substring(1, 2);
    
       
       //Formata o texto
	text = "Os DVs gerados são " + primeiroDV + " e " + segundoDV + ", resultando no NUP " + x.slice(0, 7) + "."+ x.slice(7, 15) + "/" +  x.slice(15, 19) + "-" + DV + ".";

    }

		
    //Atribui o texto ao label   
    document.getElementById("resultado").innerHTML = text;
    
}

//Função que verifica se a tecla digitada foi o enter
function OnEnter(evt)
{
    var key_code = evt.keyCode  ? evt.keyCode  :
                       evt.charCode ? evt.charCode :
                       evt.which    ? evt.which    : void 0;
 
 
    if (key_code == 13)
    {
        return true;
    }
}

//Trata do evento de tecla pressionada no edit
function EnviaFormulario(e)
{
    if(OnEnter(e))
    {
       //Se a tecla digitada foi o enter, faz o cálculo do DV
       calculaDV();
       
        return false;
    }
    else
    {
        return true;
    }
}

</script>
</body>
</html>