GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEV
,
WEBDEV
e
WINDEV Mobile
Inicio
|
Mensagens recentes
|
Conecte-se...
|
Disconnect
|
Português
Inicio
→
WINDEV 25
→
Procedure Validar Cnpj
Procedure Validar Cnpj
Iniciado por amarildo, fev., 26 2015 10:46 AM - 1 resposta
Conecte-se…
amarildo
#1
Membro registado
535 mensagems
Popularité : +14 (14 votes)
Publicado em fevereiro, 26 2015 - 10:46 AM
http://windevdesenvolvimento.blogspot.com.br/2015/02/matos-funcao-cnpj-validar.html
Aqui faco um video para fazer uma função cnpj validar e mostro no blog
IF
matos_f_cnpj_validar
(
EDT_
cnpj
) =
1
THEN
STC_
resultado
=
"Cnpj Validado com Sucesso"
ELSE
STC_
resultado
=
"Cnpj Invalido"
END
// Summary: <retorna soma com pesos descendentes>
// Syntax:
//[ <Result> = ] matos_f_Soma_Com_Peso_Desc (<pNro> is string, <_MenorPeso> is int)
//
// Parameters:
//
pNro (ANSI string): <número para calcular, em variavel String>
//
_MenorPeso (int): <menor peso>
// Return Value:
//
2-byte unsigned int: //
Peso total calculado
//
// For instance:
// Indicate an example.
// SomaComPeso('111222333',2)
// tmpPeso = 1*(9-1+2) + 1*(9-2+2) + 1*(9-3+2) + 2*(9-4+2) + 2*(9-5+2) + 2*(9-6+2)
// + 3*(9-7+2) + 3*(9-8+2) + 3*(9-9+2)
// peso = 1*10 + 1*9 + 1*8 + 2*7 + 2*6 + 2*5 + 3*4 + 3*3 + 3*2
// peso = 10 + 9 + 8 + 14 + 12 + 10 + 12 + 9 + 6
// peso = 90
// Matos 26 02 2015
Procedure
matos_f_Soma_Com_Peso_Desc
(
pNro is
string
,
_MenorPeso is
int
)
_Tam is
int
=
Length
(
pNro
)
_Peso is
2
-
byte
unsigned
int
=
0
FOR i
=
1
TO _Tam
_Peso
=
_Peso
+ (
Asc
(
pNro
[
[i]
]
) -
48
)
* (
_Tam
-i+
_MenorPeso
)
END
RESULT
_Peso
// Summary: retorna TRUE se o CPF está correto ou FALSE se está incorreto
// Syntax:
//[ <Result> = ] matos_f_cpf_validar (<pCPF> is string)
// Parameters:
//
pCPF (ANSI string): <specify the role of pCPF>
// Return Value:
//
boolean: //
None
// For instance:
// Indicate an example.
//IF matos_f_cpf_validar(EDT_cpf) = 1 THEN
//
STC_resultado="Cpf Validado com Sucesso"
//ELSE
//
STC_resultado="Cpf Invalido"
//END
Procedure
matos_f_cpf_validar
(
pCPF is
string
)
_CPF
is
string
_Peso
is
2
-
byte
unsigned
int
_Resto
is
1
-
byte int
_Digito is
1
-
byte int
FOR i
=
1
_TO_
Length
(
pCPF
)
IF
47
<
Asc
(
pCPF
[
[i]
]
) <
58
THEN
_CPF
+
=
pCPF
[
[i]
]
END
END
IF
Length
(
_CPF
) <
>
11
THEN RESULT
False
FOR i
=
1
TO
10
_Peso
=
_Peso
+ (
Asc
(
_CPF
[
[
1
TO
10
]
]
[
[i]
]
) -
48
)
* (
10
-i+
2
)
END
_Resto
=
Modulo
(
_Peso
,
11
)
IF
_Resto
<
2
THEN
_Digito
=
0
ELSE
_Digito
=
11
-
_Resto
END
//Trace(pCPF) // Trace Para Conferencia
//Trace("Val(tmpCPF[[11]])["+_CPF[[11]]+"]")
//Trace("tmpDigito9["+_Digito+"]")
IF
Val
(
_CPF
[
[
11
]
]
) <
>
_Digito
THEN
RESULT
False
ELSE
RESULT
True
END
Denunciar
0
0
amarildo
#2
Membro registado
535 mensagems
Popularité : +14 (14 votes)
Publicado em fevereiro, 26 2015 - 10:48 AM
Tinha colocado rotina do cpf acima e nao do cnpj agora vou colocar rotina do cnpj
// (c) Matos Informatica - 26 02 2015
// Summary: retorna TRUE se o CNPJ está correto ou FALSE se está incorreto
// Syntax:
//[ <Result> = ] matos_f_cnpj_validar (<pCNPJ> is string)
//
// Parameters:
//
pCNPJ (ANSI string): número da inscrição CNPJ-MF
// Return Value:
//
boolean: TRUE se o CNPJ está correto ou FALSE se está incorreto
// Matos 26 02 2015
Procedure
matos_f_cnpj_validar
(
pCNPJ is
string
)
_CNPJ is
string
_Peso is
2
-
byte
unsigned
int
_Resto is
1
-
byte int
_Digito is
1
-
byte int
FOR i
=
1
_TO_
Length
(
pCNPJ
)
IF
47
<
Asc
(
pCNPJ
[
[i]
]
) <
58
THEN
_CNPJ
+
=
pCNPJ
[
[i]
]
END
IF
Length
(
_CNPJ
) <
>
14
THEN RESULT
False
// calculo do primeiro digito verificador (posição 13)
_Peso
=
matos_f_Soma_Com_Peso_Desc
(
_CNPJ
[
[
1
TO
4
]
]
,
2
) ...
+
matos_f_Soma_Com_Peso_Desc
(
_CNPJ
[
[
5
TO
12
]
]
,
2
)
_Resto
=
Modulo
(
_Peso
,
11
)
IF
_Resto
<
2
THEN
_Digito
=
0
ELSE
_Digito
=
11
-
_Resto
IF
Asc
(
_CNPJ
[
[
13
]
]
)
-
48
<
>
_Digito
THEN RESULT
False
// calculo do segundo digito verificador (posição 14)
_Peso
=
matos_f_Soma_Com_Peso_Desc
(
_CNPJ
[
[
1
TO
5
]
]
,
2
) ...
+
matos_f_Soma_Com_Peso_Desc
(
_CNPJ
[
[
6
TO
13
]
]
,
2
)
_Resto
=
Modulo
(
_Peso
,
11
)
IF
_Resto
<
2
THEN
_Digito
=
0
ELSE
_Digito
=
11
-
_Resto
IF
Asc
(
_CNPJ
[
[
14
]
]
)
-
48
<
>
_Digito
THEN RESULT
False
ELSE RESULT
True
Denunciar
1
0
→ Voltar para WINDEV 25
WINDEV 25
Français
English
Español
Portuguesa
Fermer cette fenêtre
Tipo de Pesquisa
Apenas tópicos
Todas as mensagens
Período de pesquisa
Qualquer momento
Última hora
Últimas 24 horas
Semana passada
Mês passado
Ano passado
Cancelar
Pré-visualização da sua mensagem
Adicionar imagem
Importar uma imagem de uma URL
Enviar uma imagem a partir do seu disco
Deixe um ficheiro ou clique em "Procurar ..."
ou
Cancelar
0%
WLanguage
SQL
XML, HTML
JAVA, Javascript
Texto