PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - VALIDA CNPJ
WX - VALIDA CNPJ
Iniciado por adrianoboller, out., 29 2015 5:47 PM - 4 respostas
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em outubro, 29 2015 - 5:47 PM
Procedure ValidaCNPJ(cnpj isstring)

//Limpa Campo
cnpj=LimpaCampo(cnpj)

// Caso coloque todos os numeros iguais
SWITCH cnpj
CASE"00000000000000"
cnpj=""
CASE"11111111111111"
cnpj=""
CASE"22222222222222"
cnpj=""
CASE"333333333333333"
cnpj=""
CASE"444444444444444"
cnpj=""
CASE"555555555555555"
cnpj=""
CASE"666666666666666"
cnpj=""
CASE"777777777777777"
cnpj=""
CASE"888888888888888"
cnpj=""
CASE"999999999999999"
cnpj=""
END

// calcula o primeiro digito
LOC_num is int
LOC_num2 is int
LOC_num=(Val(Middle(cnpj,1,1)) *5) + ...
(Val(Middle(cnpj,2,1)) *4) + ...
(Val(Middle(cnpj,3,1)) *3) + ...
(Val(Middle(cnpj,4,1)) *2) + ...
(Val(Middle(cnpj,5,1)) *9) + ...
(Val(Middle(cnpj,6,1)) *8) + ...
(Val(Middle(cnpj,7,1)) *7) +...
(Val(Middle(cnpj,8,1)) *6) + ...
(Val(Middle(cnpj,9,1)) *5) + ...
(Val(Middle(cnpj,10,1)) *4) + ...
(Val(Middle(cnpj,11,1)) *3) + ...
(Val(Middle(cnpj,12,1)) *2)


LOC_num=Modulo(LOC_num,11)
IF LOC_num<2 THEN
LOC_num=0
ELSE
LOC_num=11-LOC_num
END

// calculoa o segundo dígito
LOC_num2= (Val(Middle(cnpj,1,1)) *6) + ...
(Val(Middle(cnpj,2,1)) *5) + ...
(Val(Middle(cnpj,3,1)) *4) + ...
(Val(Middle(cnpj,4,1)) *3) + ...
(Val(Middle(cnpj,5,1)) *2) + ...
(Val(Middle(cnpj,6,1)) *9) + ...
(Val(Middle(cnpj,7,1)) *8) + ...
(Val(Middle(cnpj,8,1)) *7) + ...
(Val(Middle(cnpj,9,1)) *6) + ...
(Val(Middle(cnpj,10,1)) *5) + ...
(Val(Middle(cnpj,11,1)) *4) + ...
(Val(Middle(cnpj,12,1)) *3) + ...
(LOC_num) *2


LOC_num2=Modulo(LOC_num2,11)
IF LOC_num2<2 THEN
LOC_num2=0
ELSE
LOC_num2=11-LOC_num2
END

Resultado is string

Resultado=NumToString(LOC_num) +NumToString(LOC_num2)

//99.999.999/0001-00 = 99999999000000
IF Val(Middle(cnpj,13,2)) =Resultado THEN
RESULT(True)
ELSE
RESULT(False)
END


--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
______________________________________________
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em fevereiro, 10 2017 - 12:29 PM
PROCEDURE LimpaCampo(Texto)

Texto = Replace(Texto,".","")
Texto = Replace(Texto,"-","")
Texto = Replace(Texto,"/","")
Texto = Replace(Texto,"\","")
Texto = Replace(Texto," ","")
Texto = Replace(Texto,"(","")
Texto = Replace(Texto,")","")

RESULT Texto


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 02 2019 - 9:44 PM
//Valida CNPJ

// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] ValidaCPF (<gCpf> is string)
//
// Parameters:
// gCpf (ANSI string): <specify the role of cpf>
// Return Value:
// boolean: // None
//
// For instance:
// Indicate an example.
//
Procedure ValidaCPF(sGCpf is string)

Cpf is string = sGCpf
Cpf = Replace(Cpf,".","")
Cpf = Replace(Cpf,"-","")
// Caso coloque todos os numeros iguais
SWITCH Cpf
CASE "00000000000"
Cpf = ""
RESULT(False)
CASE "11111111111"
Cpf = ""
RESULT(False)
CASE "2222222222"
Cpf = ""
RESULT(False)
CASE "33333333333"
Cpf = ""
RESULT(False)
CASE "44444444444"
Cpf = ""
RESULT(False)
CASE "55555555555"
Cpf = ""
RESULT(False)
CASE "66666666666"
Cpf = ""
RESULT(False)
CASE "77777777777"
Cpf = ""
RESULT(False)
CASE "88888888888"
Cpf = ""
RESULT(False)
CASE "99999999999"
Cpf = ""
RESULT(False)
END


// calcula o primeiro digito
nSoma is int
nResto is int
nDigito_1, nDigito_2 is int

nSoma = (Val(Middle(Cpf,1,1)) * 10) + ...
(Val(Middle(Cpf,2,1)) * 09) + ...
(Val(Middle(Cpf,3,1)) * 08) + ...
(Val(Middle(Cpf,4,1)) * 07) + ...
(Val(Middle(Cpf,5,1)) * 06) + ...
(Val(Middle(Cpf,6,1)) * 05) + ...
(Val(Middle(Cpf,7,1)) * 04) + ...
(Val(Middle(Cpf,8,1)) * 03) + ...
(Val(Middle(Cpf,9,1)) * 02)

nResto = Modulo(nSoma, 11)

IF nResto = 0 OR nResto = 1 THEN
nDigito_1 = 0
ELSE
nDigito_1 = 11 - nResto
END

// calculoa o segundo dígito
nSoma = (Val(Middle(Cpf,01,1)) * 11) + ...
(Val(Middle(Cpf,02,1)) * 10) + ...
(Val(Middle(Cpf,03,1)) * 09) + ...
(Val(Middle(Cpf,04,1)) * 08) + ...
(Val(Middle(Cpf,05,1)) * 07) + ...
(Val(Middle(Cpf,06,1)) * 06) + ...
(Val(Middle(Cpf,07,1)) * 05) + ...
(Val(Middle(Cpf,08,1)) * 04) + ...
(Val(Middle(Cpf,09,1)) * 03) + ...
(Val(Middle(Cpf,10,1)) * 02)

nResto = Modulo(nSoma, 11)

IF nResto = 0 OR nResto = 1 THEN
nDigito_2 = 0
ELSE
nDigito_2 = 11 - nResto
END

sResultado is string

sResultado = NumToString(nDigito_1) + NumToString(nDigito_2)

//info(Val(Middle(cpf,10,2)) , Resultado)
//999.999.999-99

IF Val(Middle(Cpf,10,2)) = sResultado THEN
RESULT(True)
ELSE
RESULT(False)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 02 2019 - 9:45 PM
// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] ValidaCPF (<gCpf> is string)
//
// Parameters:
// gCpf (ANSI string): <specify the role of cpf>
// Return Value:
// boolean: // None
//
// For instance:
// Indicate an example.
//
Procedure ValidaCPF(sGCpf is string)

Cpf is string = sGCpf
Cpf = Replace(Cpf,".","")
Cpf = Replace(Cpf,"-","")
// Caso coloque todos os numeros iguais
SWITCH Cpf
CASE "00000000000"
Cpf = ""
RESULT(False)
CASE "11111111111"
Cpf = ""
RESULT(False)
CASE "2222222222"
Cpf = ""
RESULT(False)
CASE "33333333333"
Cpf = ""
RESULT(False)
CASE "44444444444"
Cpf = ""
RESULT(False)
CASE "55555555555"
Cpf = ""
RESULT(False)
CASE "66666666666"
Cpf = ""
RESULT(False)
CASE "77777777777"
Cpf = ""
RESULT(False)
CASE "88888888888"
Cpf = ""
RESULT(False)
CASE "99999999999"
Cpf = ""
RESULT(False)
END


// calcula o primeiro digito
nSoma is int
nResto is int
nDigito_1, nDigito_2 is int

nSoma = (Val(Middle(Cpf,1,1)) * 10) + ...
(Val(Middle(Cpf,2,1)) * 09) + ...
(Val(Middle(Cpf,3,1)) * 08) + ...
(Val(Middle(Cpf,4,1)) * 07) + ...
(Val(Middle(Cpf,5,1)) * 06) + ...
(Val(Middle(Cpf,6,1)) * 05) + ...
(Val(Middle(Cpf,7,1)) * 04) + ...
(Val(Middle(Cpf,8,1)) * 03) + ...
(Val(Middle(Cpf,9,1)) * 02)

nResto = Modulo(nSoma, 11)

IF nResto = 0 OR nResto = 1 THEN
nDigito_1 = 0
ELSE
nDigito_1 = 11 - nResto
END

// calculoa o segundo dígito
nSoma = (Val(Middle(Cpf,01,1)) * 11) + ...
(Val(Middle(Cpf,02,1)) * 10) + ...
(Val(Middle(Cpf,03,1)) * 09) + ...
(Val(Middle(Cpf,04,1)) * 08) + ...
(Val(Middle(Cpf,05,1)) * 07) + ...
(Val(Middle(Cpf,06,1)) * 06) + ...
(Val(Middle(Cpf,07,1)) * 05) + ...
(Val(Middle(Cpf,08,1)) * 04) + ...
(Val(Middle(Cpf,09,1)) * 03) + ...
(Val(Middle(Cpf,10,1)) * 02)

nResto = Modulo(nSoma, 11)

IF nResto = 0 OR nResto = 1 THEN
nDigito_2 = 0
ELSE
nDigito_2 = 11 - nResto
END

sResultado is string

sResultado = NumToString(nDigito_1) + NumToString(nDigito_2)

//info(Val(Middle(cpf,10,2)) , Resultado)
//999.999.999-99

IF Val(Middle(Cpf,10,2)) = sResultado THEN
RESULT(True)
ELSE
RESULT(False)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 10 2019 - 7:19 PM
IF RADIO__column_radio_button_TP_PESSOA = "F" AND EDT_T001_CPF <> "" THEN
IF ValidaCPF(EDT_T001_CPF) = False THEN
Info("CPF digitado invalido!")
SetFocus(EDT_T001_CPF)
EDT_T001_CPF = ""
RETURN
END
END

IF RADIO__column_radio_button_TP_PESSOA = "J" AND EDT_T001_CPF <> "" THEN
IF ValidaCNPJ(EDT_T001_CPF) = False THEN
Info("CNPJ digitado invalido!")
SetFocus(EDT_T001_CPF)
EDT_T001_CPF = ""
RETURN
END
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/