Validação de PIS

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Validação de PIS

Mensagem por Maligno »

PIS = Programa de Integração Nacional

Código: Selecionar todos

//****************************************************************************
function ValidPIS(cPIS)
return Len(cPIS:=StrTran(cPIS," "))=11 .and. Modulo11(cPIS,2,9)==Right(cPIS,1)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Darth GTB
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 12 Fev 2010 11:32
Localização: Viamão/Porto Alegre - RS

Re: Validação de PIS

Mensagem por Darth GTB »

Maligno, que function é essa MODULO11(,,)? o que ela faz? imagino que seja uma função que criaste para definir o módulo de um valor, mas tem 3 parâmetros, então nao entendi mais nada...

se puderes me ajudar, agradeço. Estou fazendo em FoxPro um validador PIS.

Obrigado
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Validação de PIS

Mensagem por Maligno »

Essa função estava separada, em outra thread. Segue:

Código: Selecionar todos

//************************************************************
// Módulo 11, com pesos nPeso1 (inicial) a nPeso2 (final), que
// serão utilizados no multiplicador dos dígitos, apanhados da
// direita para a esquerda. Tal multiplicador será reciclado e
// voltará para nPeso1, quando o limite (nPeso2) for atingido.
//************************************************************
function Modulo11(cStr,nPeso1,nPeso2) 
local nTot := 0                       
local nMul := nPeso1                  
local i                               
*
for i := Len(cStr) to 1 step -1
    nTot += Val(SubStr(cStr,i,1)) * nMul
    nMul := if(nMul=nPeso2, nPeso1, nMul+1)
next
return if(nTot%11 < 2, "0", Str(11-(nTot%11),1))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Re: Validação de PIS

Mensagem por lugab »

Bravo, Maligno, muito legal....

gaqbriel
lugab
Responder