FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 25
→
Procedure Validar Cnpj
Procedure Validar Cnpj
Débuté par amarildo, 26 fév. 2015 10:46 - 1 réponse
Connectez-vous…
amarildo
#1
Membre enregistré
535 messages
Popularité : +14 (14 votes)
Posté le 26 février 2015 - 10:46
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
Signaler
0
0
amarildo
#2
Membre enregistré
535 messages
Popularité : +14 (14 votes)
Posté le 26 février 2015 - 10:48
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
Signaler
1
0
→ Revenir à WINDEV 25
WINDEV 25
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte