|
Válida cnpj com outra abordagem de validação |
Débuté par Boller, 16 mai 2023 02:23 - 2 réponses |
| |
| | | |
|
| |
Membre enregistré 3 574 messages Popularité : +175 (223 votes) |
|
Posté le 16 mai 2023 - 02:23 |
Prezados, Podemos criar uma procedure para validar um CNPJ usando WLanguage. Lembrando que um CNPJ válido tem 14 dígitos e possui um dígito verificador. Abaixo, segue um exemplo de como poderíamos fazer isso:
WLanguage Copy code //############################## Procedure ValidateCNPJ(cnpj is string) Returns boolean
IF length (cnpj) <> 14 THEN Result False RETURN END
iSum is int = 0 iRest is int
FOR i = 1 _TO_ 12 iSum += val(Middle (cnpj, 13 - i, 1)) * (2 + (i mod 8)) END
iRest = 11 - (iSum mod 11) IF iRest = 10 OR iRest = 11 THEN iRest = 0
IF iRest <> val(Middle(cnpj, 13, 1)) THEN Result False RETURN END
iSum = 0 FOR i = 1 _TO_ 13 iSum += val(Middle(cnpj, 14 - i, 1)) * (2 + (i mod 8)) END
iRest = 11 - (iSum mod 11) IF iRest = 10 OR iRest = 11 THEN iRest = 0
IF iRest <> val(Middle(cnpj, 14, 1)) THEN Result False ELSE Result True END
//############################## Neste exemplo, a procedure ValidateCNPJ recebe uma string cnpj como entrada e retorna um booleano indicando se o CNPJ é válido ou não. A validação é feita calculando os dígitos verificadores do CNPJ e comparando-os com os dígitos fornecidos. Se o CNPJ for válido, a procedure retorna True; caso contrário, retorna False.
Agora, você pode chamar essa procedure para validar um CNPJ da seguinte maneira:
WLanguage Copy code //############################## IF ValidateCNPJ("11222333000181") THEN Info("O CNPJ é válido.") ELSE Info("O CNPJ é inválido.") END //############################## Espero que este exemplo ajude a entender a validação de CNPJ em WLanguage!
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modifié, 16 mai 2023 - 02:33 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 574 messages Popularité : +175 (223 votes) |
|
Posté le 16 mai 2023 - 02:26 |
Aqui está um exemplo de uma procedure que valida um CPF em WLanguage. Assim como o CNPJ, o CPF tem seus próprios critérios de validação, incluindo 11 dígitos e um dígito verificador.
WLanguage Copy code //############################## Procedure ValidateCPF(cpf is string) Returns boolean
IF length (cpf) <> 11 THEN Result False RETURN END
FOR i = 1 _TO_ 9 iSum1 += val(Middle(cpf, i, 1)) * (11 - i) END
iRest1 = (iSum1 * 10) mod 11
IF iRest1 = 10 THEN iRest1 = 0
IF iRest1 <> val(Middle(cpf, 10, 1)) THEN Result False RETURN END
FOR i = 1 _TO_ 10 iSum2 += val(Middle(cpf, i, 1)) * (12 - i) END
iRest2 = (iSum2 * 10) mod 11
IF iRest2 = 10 THEN iRest2 = 0
IF iRest2 <> val(Middle(cpf, 11, 1)) THEN Result False ELSE Result True END //############################## Esta procedure, ValidateCPF, recebe uma string cpf como entrada e retorna um booleano indicando se o CPF é válido ou não. A validação é feita calculando os dígitos verificadores do CPF e comparando-os com os dígitos fornecidos. Se o CPF for válido, a procedure retorna True; caso contrário, retorna False.
Agora, você pode chamar essa procedure para validar um CPF da seguinte maneira:
WLanguage Copy code //############################## IF ValidateCPF("12345678909") THEN Info("O CPF é válido.") ELSE Info("O CPF é inválido.") END //############################## Espero que este exemplo ajude a entender a validação de CPF em WLanguage! Lembre-se de substituir "12345678909" por um CPF real para testar a validação.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modifié, 16 mai 2023 - 02:35 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 191 messages Popularité : +25 (25 votes) |
|
Posté le 16 mai 2023 - 12:17 |
Procedure ValidaCNPJ(sCNPJ is string) bOK is boolean sX is string nPosicao is int nDV1C is int nDV2C is int nDV1F is int nDV2F is int sNum is string sMu is string nResto is int sDV is string
sX = Replace(sCNPJ,".","") sX = Replace(sX,"/","") sX = Replace(sX,"-","") sX = Replace(sX,",","") sX = Replace(sX,":","") sX = NoSpace(sX)
IF Length(sX) = 0 THEN bOK = True ELSE bOK = False END
IF Length(sX) = 14 THEN nDV1F = Val(Middle(sX,13,1)) nDV2F = Val(Right(sX,1)) sNum = Left(sX,12) nDV1C = 0 sMu = "543298765432" nPosicao = 12 WHILE nPosicao > 0 nDV1C = nDV1C + Val(Middle(sNum, nPosicao, 1)) * Val(Middle(sMu, nPosicao, 1)) nPosicao = nPosicao - 1 END nResto = Modulo(nDV1C,11) IF nResto < 2 THEN nDV1C = 0 ELSE nDV1C = 11 - nResto END sDV = Right(NumToString(nDV1C), 1) sNum = sNum + sDV nDV2C = 0 sMu = "6" + sMu nPosicao = 13
WHILE nPosicao > 0 nDV2C = nDV2C + Val(Middle(sNum, nPosicao, 1)) * Val(Middle(sMu, nPosicao, 1)) nPosicao = nPosicao -1 END
nResto = Modulo(nDV2C,11) IF nResto < 2 THEN nDV2C = 0 ELSE nDV2C = 11 - nResto END bOK = (nDV1C = nDV1F) AND (nDV2C = nDV2F) END
RESULT bOK
-- André Martini IS2 https://www.is2.inf.br/ - https://www.is2.com.br/ YouTube
KW2MKT https://www.kw2mkt.com/ *Websites Desenvolvidos https://www.educacaocaninars.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|