|
GRUPOS DE DISCUSSÃO PROFISSIONAL WINDEV, WEBDEV e WINDEV Mobile |
| | | | | |
Inicio → WINDEV 25 → Função válida Inscrição Estadual de todos os estado do Brasil |
Função válida Inscrição Estadual de todos os estado do Brasil |
Iniciado por Boller, jul., 09 2024 6:58 PM - 1 resposta |
| |
| | | |
|
| |
Membro registado 3.715 mensagems |
|
Publicado em julho, 09 2024 - 6:58 PM |
PROCEDURE GB_Sct718Dec(LK_inscricao is string, LK_uf is string )
//Desevolvido por Dec Sistemas - Carlos Lages //http://www.sintegra.gov.br/insc_est.html // aqui tem todas as regras dos calculos das insc Estadual
//LK_inscricao = "131300246" //LK_uf = "BA"
// Esta rotina tem como Objetivo nao ter que usar a DLL do sintegra que e 32 bits e poder usar em qq modulo windev, mob e webdev // sem precisar de ferramenta de terceiros // a programacao e simples e foi pensada para nao ser complexa e facil de manutencao
// ela recebe um campo string , tira lixo, preenche com zeros a direita com tamanho maximo de 14 // entao receber exemplo 15.53.65/357# ai fica como 15536535700000 // D1 = 1 // D2 = 5 // ETC
// pela UF chama a rotina de cada UF e dentro da rotina faz umas criticas basicas tipo se tem LEtra, ja da erro // se numero de Digitos e maior do que o permitido pela UF ja da erro e nem faz a critica // e obrigatorio preencher na digitacao pelo usuario com os zeros a esquerda para ficar padrao dentro da UF
// e devolve: // 1 , tipo de erro // or // 0, e a inscricao formatada conforme a UF
// ps: no nosso banco de dados a inscricao e salva editada, para que em qq relatorio, NF etc saida editada
ws_inscricao is string = LK_inscricao
ws_inscricao = NoCharacter(ws_inscricao, "'!#$%*();/._-+\<?>,:]}{[=",sscAll) // tira todo que qq caracter, tem que ficar somente numeros ws_inscricao = NoSpace(ws_inscricao,sscAll) // Tira os espacos
ws_InscricaoEdt is string
D1 is int = 0 D2 is int = 0 D3 is int = 0 D4 is int = 0 D5 is int = 0 D6 is int = 0 D7 is int = 0 D8 is int = 0 D9 is int = 0 D10 is int = 0 D11 is int = 0 D12 is int = 0 D13 is int = 0 D14 is int = 0
Ds1 is string = "" Ds2 is string = "" Ds3 is string = "" Ds4 is string = "" Ds5 is string = "" Ds6 is string = "" Ds7 is string = "" Ds8 is string = "" Ds9 is string = "" Ds10 is string = "" Ds11 is string = "" Ds12 is string = "" Ds13 is string = "" Ds14 is string = ""
Ws_Digito is array of 14 int
ws_uf is string = NoSpace(Upper(LK_uf)) Ws_Retorno is int = 0 Ws_RetornoEdt is string = "Insc Invalida"
ws_soma is int = 0 ws_resto is int = 0 ws_result is string ws_peso is int = 0 ws_digcalc1 is int = 0 // digito calculado baseado nos dados informados ws_digcalc2 is int = 0 ws_digInf1 is int = 0 ws_digInf2 is int = 0 // digito informado pelo usuario que veio junto o campo da inscricao
IF CharactTypeCount(ws_inscricao,ctAlpha) = 0 THEN // nao tem caracter alfa no campo entao tenta validar SWITCH ws_uf CASE "AC": Valida_AC() CASE "AL": Valida_AL() CASE "AP": Valida_AP() CASE "AM": Valida_AM() CASE "BA": Valida_BA() CASE "CE": Valida_CE() CASE "DF": Valida_DF() CASE "ES": Valida_ES() CASE "GO": Valida_GO() CASE "MA": Valida_MA() CASE "MT": Valida_MT() CASE "MS": Valida_MS() CASE "MG": Valida_MG() CASE "PA": Valida_PA() CASE "PB": Valida_PB() CASE "PE": Valida_PE() CASE "PI": Valida_PI() CASE "RN": Valida_RN() CASE "RO": Valida_RO() CASE "RR": Valida_RR() CASE "SC": Valida_SC() CASE "SP": Valida_SP() CASE "SE": Valida_SE() CASE "TO": Valida_TO() CASE "RS": Valida_RS() CASE "PR": Valida_PR() CASE "RJ": Valida_RJ() OTHER CASE END ELSE IF Upper(ws_inscricao) <> "ISENTO" Ws_Retorno = 1 Ws_RetornoEdt = "Nao é Permitido Letras na Inscricao" ELSE Ws_Retorno = 1 Ws_RetornoEdt = "ISENTO" END END RESULT (Ws_Retorno,Ws_RetornoEdt)
INTERNAL PROCEDURE Monta_Digitos_Default() ws_InscricaoEdt = Complete(ws_inscricao,14,"0") //coloca zeros a direita D1 = Middle(ws_InscricaoEdt,1,1) // distribui cada Digito em sua variavel INT D2 = Middle(ws_InscricaoEdt,2,1) D3 = Middle(ws_InscricaoEdt,3,1) D4 = Middle(ws_InscricaoEdt,4,1) D5 = Middle(ws_InscricaoEdt,5,1) D6 = Middle(ws_InscricaoEdt,6,1) D7 = Middle(ws_InscricaoEdt,7,1) D8 = Middle(ws_InscricaoEdt,8,1) D9 = Middle(ws_InscricaoEdt,9,1) D10 = Middle(ws_InscricaoEdt,10,1) D11 = Middle(ws_InscricaoEdt,11,1) D12 = Middle(ws_InscricaoEdt,12,1) D13 = Middle(ws_InscricaoEdt,13,1) D14 = Middle(ws_InscricaoEdt,14,1) Ds1 = D1 // distribui cada Digito em sua variavel , mais aqui em string para depois formatar Ds2 = D2 Ds3 = D3 Ds4 = D4 Ds5 = D5 Ds6 = D6 Ds7 = D7 Ds8 = D8 Ds9 = D9 Ds10 = D10 Ds11 = D11 Ds12 = D12 Ds13 = D13 Ds14 = D14 END
INTERNAL PROCEDURE Valida_ES() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END
Monta_Digitos_Default()
ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_SE() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() // Formato: 8 dígitos + 1 dígito verificador // Exemplo: IE número 27123456-3 ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_TO() IF Length(ws_inscricao) NOT IN (9,11) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 ou 11 digitos, Check zeros a esquerda" RETURN END
IF Length(ws_inscricao) = 11 THEN Calcula_11Digitos() ELSE Calcula_9Digitos() END
INTERNAL PROCEDURE Calcula_9Digitos() Monta_Digitos_Default() // Formato: 08 dígitos + 1 dígito verificador // Exemplo: 29 022783 6 ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF (ws_digcalc1 <> ws_digInf1) Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END INTERNAL PROCEDURE Calcula_11Digitos() Monta_Digitos_Default() // Formato: 08 dígitos + 1 dígito verificador // Exemplo: 29 022783 6 ws_digInf1 = D11 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D5 * 7) + (D6 * 6) + (D7 * 5) + (D8 * 4) + (D9 * 3) + (D10 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF (ws_digcalc1 <> ws_digInf1) Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
END
INTERNAL PROCEDURE Valida_SC() // 8 DIGITOS + 1 de Controle IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_PA() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_PB() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_PI() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_GO() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END
Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_ref2 is int = Middle(ws_InscricaoEdt,1,2) ws_ref is int = Middle(ws_InscricaoEdt,1,8) IF ws_ref2 NOT IN (10,11,15,20,21,22,23,24,25,26,27,28,29) // NAO E inscricao de goias THEN Ws_Retorno = 1 Ws_RetornoEdt = "Nao e Inscricao de Goias" RETURN END ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto = 0 ws_digcalc1 = 0 ELSE IF ws_resto = 1 IF ws_ref >= 10103105 AND ws_ref <= 10119997 ws_digcalc1 = 1 ELSE ws_digcalc1 = 0 END ELSE // maior que 1 ws_digcalc1 = 11 - ws_resto END END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_RJ() IF Length(ws_inscricao) <> 8 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 8 digitos, Check zeros a esquerda" RETURN END
Monta_Digitos_Default() ws_digInf1 = D8 //Guarda digito informado que veio na inscricao digitado pelo usuario
ws_soma = (D1 * 2) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_AL()
IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 9 Digitos , check zeros Esquerda" RETURN END
Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario
ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_soma = ws_soma * 10 ws_resto = ws_soma modulo 11 IF ws_resto = 10 THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = ws_resto END IF (ws_digcalc1 <> ws_digInf1) OR (D1 <> 2) OR (D2 <> 4) Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_RS() IF Length(ws_inscricao) <> 10 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 10 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D10 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 2) + (D2 * 9) + (D3 * 8) + (D4 * 7) + (D5 * 6) + (D6 * 5) + (D7 * 4) + (D8 * 3) + (D9 * 2) ws_soma = ws_soma ws_resto = ws_soma modulo 11 IF 11 - ws_resto IN(10,11) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END
IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_RN() IF Length(ws_inscricao) NOT IN (9,10) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 ou 10 digitos, Check zeros a esquerda" RETURN END
IF Length(ws_inscricao) = 9 THEN Calcula_9digitos() ELSE Calcula_10digitos() END INTERNAL PROCEDURE Calcula_9digitos() Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_soma = ws_soma * 10 ws_resto = ws_soma modulo 11 IF ws_resto = 10 THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END INTERNAL PROCEDURE Calcula_10digitos() Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 10) + (D2 * 9) + (D3 * 8) + (D4 * 7) + (D5 * 6) + (D6 * 5) + (D7 * 4) + (D8 * 3) + (D9 * 2) ws_soma = ws_soma * 10 ws_resto = ws_soma modulo 11 IF ws_resto = 10 THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
END
INTERNAL PROCEDURE Valida_AM() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 9 Digitos , check zeros Esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) IF ws_soma < 11 ws_digcalc1 = 11 - ws_soma ELSE ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_AP() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + "Sao 9 Digitos, check zeros Esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_p is int = 0 ws_d is int = 0 ws_ref is int = Middle(ws_InscricaoEdt,1,8) IF ws_ref >= 03000001 AND ws_ref <= 03017000 THEN ws_p = 5 ws_d = 0 ELSE IF ws_ref >= 03017001 AND ws_ref <= 03019022 THEN ws_p = 9 ws_d = 1 ELSE ws_p = 0 ws_d = 0 END END ws_soma = ws_p + (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto IF ws_digcalc1 = 10 THEN ws_digcalc1 = 0 ELSE IF ws_digcalc1 = 11 THEN ws_digcalc1 = ws_d END END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_CE() IF Length(ws_inscricao) NOT IN (9) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 9 Digitos,check zeros Esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto
IF ws_digcalc1 IN (10,11) THEN ws_digcalc1 = 0 END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
//0011690810068
INTERNAL PROCEDURE Valida_MG() IF Length(ws_inscricao) <> 13 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END
Monta_Digitos_Default() D1 = Middle(ws_InscricaoEdt,1,1) D2 = Middle(ws_InscricaoEdt,2,1) D3 = Middle(ws_InscricaoEdt,3,1) D4 = 0 D5 = Middle(ws_InscricaoEdt,4,1) D6 = Middle(ws_InscricaoEdt,5,1) D7 = Middle(ws_InscricaoEdt,6,1) D8 = Middle(ws_InscricaoEdt,7,1) D9 = Middle(ws_InscricaoEdt,8,1) D10 = Middle(ws_InscricaoEdt,9,1) D11 = Middle(ws_InscricaoEdt,10,1) D12 = Middle(ws_InscricaoEdt,11,1) D13 = Middle(ws_InscricaoEdt,12,1) D14 = Middle(ws_InscricaoEdt,13,1)
ws_digInf1 = Middle(ws_InscricaoEdt,12,1) ws_digInf2 = Middle(ws_InscricaoEdt,13,1)
// alimenta a array Ws_Digito[01] = D1 Ws_Digito[02] = D2 Ws_Digito[03] = D3 Ws_Digito[04] = D4 Ws_Digito[05] = D5 Ws_Digito[06] = D6 Ws_Digito[07] = D7 Ws_Digito[08] = D8 Ws_Digito[09] = D9 Ws_Digito[10] = D10 Ws_Digito[11] = D11 Ws_Digito[12] = D12 Ws_Digito[13] = D13 Ws_Digito[14] = D14
ws_soma = 0 ws_result = "" ws_peso = 0 FOR ws_ind = 1 _TO_ 12 // ArrayCount(Ws_Digito) nao considera posicao 13 e 14 que sao digitos informados no campos IF IsOdd(ws_ind) = True // e impar peso = 1 ws_peso = 1 ELSE ws_peso = 2 END ws_result = NumToString(( Ws_Digito[ws_ind] * ws_peso),"04d") // resulta ficara 0012 por exemplo ws_soma = ws_soma + Val(Middle(ws_result,3,1)) + Val(Middle(ws_result,4,1)) END ws_digcalc1 = 10 - Val(Right(NumToString(ws_soma),1)) // transforma ws_soma em string pega ultimo numero e subtrai de 10 IF ws_digcalc1 = 10 THEN ws_digcalc1 = 0 END
D1 = Middle(ws_InscricaoEdt,1,1) D2 = Middle(ws_InscricaoEdt,2,1) D3 = Middle(ws_InscricaoEdt,3,1) D4 = Middle(ws_InscricaoEdt,4,1) D5 = Middle(ws_InscricaoEdt,5,1) D6 = Middle(ws_InscricaoEdt,6,1) D7 = Middle(ws_InscricaoEdt,7,1) D8 = Middle(ws_InscricaoEdt,8,1) D9 = Middle(ws_InscricaoEdt,9,1) D10 = Middle(ws_InscricaoEdt,10,1) D11 = Middle(ws_InscricaoEdt,11,1) D12 = ws_digcalc1 // acrescenta o digito1 na matriz na posicao 12 D13 = Middle(ws_InscricaoEdt,13,1) D14 = Middle(ws_InscricaoEdt,14,1) ws_soma = (D1 * 3) + (D2 * 2) + (D3 * 11) + (D4 * 10) + (D5 * 9) + (D6 * 8) + (D7 * 7) + (D8 * 6) + (D9 * 5) + (D10 * 4) + (D11 * 3) + (D12 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN(0,1) THEN ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END
IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_BA() IF Length(ws_inscricao) NOT IN (8,9) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 8 ou 9digitos, check zeros Esquerda" RETURN END
Monta_Digitos_Default()
IF Length(ws_inscricao) = 8 // Módulo 10 com peso de 2 a 7, aplicados da direita para esquerda, atribuindo um peso a cada dígito da I.E. seguindo a ordem abaixo: ws_digInf1 = D7 ws_digInf2 = D8 IF D1 IN (0,1,2,3,4,5,8) Valida_BA8Modulo10() ELSE Valida_BA8Modulo11() END ELSE ws_digInf1 = D8 ws_digInf2 = D9 IF D2 IN (0,1,2,3,4,5,8) Valida_BA9Modulo10() ELSE Valida_BA9Modulo11() END END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END
INTERNAL PROCEDURE Valida_BA8Modulo10() ws_soma = (D1 * 7) + (D2 * 6) + (D3 * 5) + (D4 * 4) + (D5 * 3) + (D6 * 2) ws_resto = ws_soma modulo 10 ws_digcalc2 = 10 - ws_resto IF ws_digcalc2 = 10 ws_digcalc2 = 0 END D7 = ws_digcalc2 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 8) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 10 ws_digcalc1 = 10 - ws_resto IF ws_digcalc1 = 10 ws_digcalc1 = 0 END END INTERNAL PROCEDURE Valida_BA8Modulo11() ws_soma = (D1 * 7) + (D2 * 6) + (D3 * 5) + (D4 * 4) + (D5 * 3) + (D6 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END D7 = ws_digcalc2 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 8) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END END
INTERNAL PROCEDURE Valida_BA9Modulo10() ws_soma = (D1 * 8) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 10 ws_digcalc2 = 10 - ws_resto IF ws_digcalc2 = 10 ws_digcalc2 = 0 END D8 = ws_digcalc2 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 10 ws_digcalc1 = 10 - ws_resto IF ws_digcalc1 = 10 ws_digcalc1 = 0 END END INTERNAL PROCEDURE Valida_BA9Modulo11() ws_soma = (D1 * 8) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END D8 = ws_digcalc2 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END END END
INTERNAL PROCEDURE Valida_AC() IF Length(ws_inscricao) <> 13 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 13 digitos, check zeros Esquerda" RETURN END
Monta_Digitos_Default()
//Formato: 11 dígitos + 2 dígitos verificadores ws_digInf1 = D12 ws_digInf2 = D13 ws_soma = (D1 * 4) + (D2 * 3) + (D3 * 2) + (D4 * 9) + (D5 * 8) + (D6 * 7) + (D7 * 6) + (D8 * 5) + (D9 * 4) + (D10 * 3) + (D11 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END D12 = ws_digcalc1 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 5) + (D2 * 4) + (D3 * 3) + (D4 * 2) + (D5 * 9) + (D6 * 8) + (D7 * 7) + (D8 * 6) + (D9 * 5) + (D10 * 4) + (D11 * 3) + (D12 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_SP() IF Length(ws_inscricao) = 13 AND Middle(ws_inscricao,1,1) <> "P" THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 13 digitos mais nao comeca com P de Produtor Rural" RETURN ELSE IF Length(ws_inscricao) NOT IN (12,13) Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 12 ou 13 digitos" RETURN END END
IF Upper(Middle(ws_inscricao,1,1)) = "P" THEN Calcula_ProdutorRural() ELSE Calcula_Normal() END
INTERNAL PROCEDURE Calcula_Normal() Monta_Digitos_Default() // à Formato: 12 dígitos sendo que o 9º e o 12º são dígitos verificadores // à Exemplo: Inscrição Estadual 110.042.490.114 ws_digInf1 = D9 ws_digInf2 = D12 ws_soma = (D1 * 1) + (D2 * 3) + (D3 * 4) + (D4 * 5) + (D5 * 6) + (D6 * 7) + (D7 * 8) + (D8 * 10) ws_resto = ws_soma modulo 11 IF ws_resto IN (10,11) ws_digcalc1 = 0 ELSE ws_digcalc1 = ws_resto END ws_soma = (D1 * 3) + (D2 * 2) + (D3 * 10) + (D4 * 9) + (D5 * 8) + (D6 * 7) + (D7 * 6) + (D8 * 5) + (D9 * 4) + (D10 * 3) + (D11 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (10,11) ws_digcalc2 = 0 ELSE ws_digcalc2 = ws_resto END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Calcula_ProdutorRural()
Monta_Digitos_Default() // Formato: - P0MMMSSSSD000 // 13 caracteres dos quais o 10º caracter contado a partir da esquerda ("D") é o dígito verificador // Inicia sempre com "P" e apresenta a sequência 0MMMSSSSD000 ws_digInf1 = D10 ws_soma = (D2 * 1) + (D3 * 3) + (D4 * 4) + (D5 * 5) + (D6 * 6) + (D7 * 7) + (D8 * 8) + (D9 * 10) ws_resto = ws_soma modulo 11 IF ws_resto IN (10,11) ws_digcalc1 = 0 ELSE ws_digcalc1 = ws_resto END IF ws_digInf1 <> ws_digcalc1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
END
INTERNAL PROCEDURE Valida_PR() IF Length(ws_inscricao) <> 10 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 10 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() //Formato: 08 dígitos + 2 dígitos verificadores ws_digInf1 = D9 ws_digInf2 = D10 ws_soma = (D1 * 3) + (D2 * 2) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END D9 = ws_digcalc1 // incorpora digito ao numero e vai calcular segundo digito ws_soma = (D1 * 4) + (D2 * 3) + (D3 * 2) + (D4 * 7) + (D5 * 6) + (D6 * 5) + (D7 * 4) + (D8 * 3) + (D9 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_PE() IF Length(ws_inscricao) NOT IN (9,14) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 ou 14 digitos, Check zeros a esquerda" RETURN END
IF Length(ws_inscricao) = 9 THEN Calcula_9digitos() ELSE Calcula_14digitos() END
INTERNAL PROCEDURE Calcula_9Digitos() Monta_Digitos_Default() //Formato: 07 dígitos + 2 dígitos verificadores ws_digInf1 = D8 ws_digInf2 = D9 ws_soma = (D1 * 8) + (D2 * 7) + (D3 * 6) + (D4 * 5) + (D5 * 4) + (D6 * 3) + (D7 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END D8 = ws_digcalc1 // incorpora digito ao numero e vai calcular segundo digito ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc2 = 0 ELSE ws_digcalc2 = 11 - ws_resto END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Calcula_14Digitos() Monta_Digitos_Default() //Formato: 13 dígitos + 1 dígitos verificadores ws_digInf1 = D14 ws_soma = (D1 * 5) + (D2 * 4) + (D3 * 3) + (D4 * 2) + (D5 * 1) + (D6 * 9) + (D7 * 8) + (D8 * 7) + (D9 * 6) + (D10 * 5) + (D11 * 4) + (D12 * 3) + (D13 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto IF ws_digcalc1 > 9 ws_digcalc1 = ws_digcalc1 - 10 END IF ws_digInf1 <> ws_digcalc1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
END
INTERNAL PROCEDURE Valida_RO() IF Length(ws_inscricao) NOT IN (9,14) THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 ou 14 digitos, Check zeros a esquerda" RETURN END
IF Length(ws_inscricao) = 9 THEN Calcula_9digitos() ELSE Calcula_14digitos() END INTERNAL PROCEDURE Calcula_9Digitos() Monta_Digitos_Default() //Formato: 08 dígitos + 1 dígitos verificadores ws_digInf1 = D9 ws_soma = (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto IF ws_digcalc1 > 9 // ou seja 10 ou 11 ws_digcalc1 = ws_digcalc1 - 10 END
IF ws_digInf1 <> ws_digcalc1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END INTERNAL PROCEDURE Calcula_14Digitos() ws_inscricao = NumToString(Val(ws_inscricao),"014d") // coloca zeros a esquerda para ficar com 14 posicoes Monta_Digitos_Default() //Formato: 13 dígitos + 1 dígitos verificadores ws_digInf1 = D14 ws_soma = (D1 * 5) + (D2 * 4) + (D3 * 3) + (D4 * 2) + (D5 * 1) + (D6 * 9) + (D7 * 8) + (D8 * 7) + (D9 * 6) + (D10 * 5) + (D11 * 4) + (D12 * 3) + (D13 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto IF ws_digcalc1 > 9 ws_digcalc1 = ws_digcalc1 - 10 END IF ws_digInf1 <> ws_digcalc1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END END
INTERNAL PROCEDURE Valida_RR() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() //Formato: 08 dígitos + 1 dígitos verificadores ws_digInf1 = D9 ws_soma = (D1 * 1) + (D2 * 2) + (D3 * 3) + (D4 * 4) + (D5 * 5) + (D6 * 6) + (D7 * 7) + (D8 * 8) ws_resto = ws_soma modulo 09 ws_digcalc1 = ws_resto IF ws_digInf1 <> ws_digcalc1 THEN Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_DF() IF Length(ws_inscricao) < 13 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 13 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() //Formato: 11 dígitos + 2 dígitos verificadores ws_digInf1 = D12 ws_digInf2 = D13 ws_soma = (D1 * 4) + (D2 * 3) + (D3 * 2) + (D4 * 9) + (D5 * 8) + (D6 * 7) + (D7 * 6) + (D8 * 5) + (D9 * 4) + (D10 * 3) + (D11 * 2) ws_resto = ws_soma modulo 11 ws_digcalc1 = 11 - ws_resto IF ws_digcalc1 IN (10,11) ws_digcalc1 = 0 END D12 = ws_digcalc1 // incorpora seg digito ao numero e vai calcular Primeiro digito ws_soma = (D1 * 5) + (D2 * 4) + (D3 * 3) + (D4 * 2) + (D5 * 9) + (D6 * 8) + (D7 * 7) + (D8 * 6) + (D9 * 5) + (D10 * 4) + (D11 * 3) + (D12 * 2) ws_resto = ws_soma modulo 11 ws_digcalc2 = 11 - ws_resto IF ws_digcalc2 IN (10,11) ws_digcalc2 = 0 END IF ws_digInf1 <> ws_digcalc1 OR ws_digInf2 <> ws_digcalc2 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_MA() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) THEN ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END
IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_MT() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " sao 9 digitos, Check zeros a esquerda" RETURN END ws_inscricao = NumToString(Val(ws_inscricao),"011d") // coloca zeros a esquerda para ficar com 11 posicoes Monta_Digitos_Default()
ws_digInf1 = D11 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 3) + (D2 * 2) + (D3 * 9) + (D4 * 8) + (D5 * 7) + (D6 * 6) + (D7 * 5) + (D8 * 4) + (D9 * 3) + (D10 * 2) ws_resto = ws_soma modulo 11 IF ws_resto IN (0,1) ws_digcalc1 = 0 ELSE ws_digcalc1 = 11 - ws_resto END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE Valida_MS() IF Length(ws_inscricao) <> 9 THEN Ws_Retorno = 1 Ws_RetornoEdt = ws_uf + " Sao 9 digitos, Check zeros a esquerda" RETURN END Monta_Digitos_Default() ws_digInf1 = D9 //Guarda digito informado que veio na inscricao digitado pelo usuario ws_soma = (D1 * 9) + (D2 * 8) + (D3 * 7) + (D4 * 6) + (D5 * 5) + (D6 * 4) + (D7 * 3) + (D8 * 2) ws_resto = ws_soma modulo 11 IF ws_resto = 0 THEN ws_digcalc1 = 0 ELSE IF 11 - ws_resto < 10 THEN ws_digcalc1 = 11 - ws_resto ELSE ws_digcalc1 = 0 END END IF ws_digcalc1 <> ws_digInf1 Ws_Retorno = 1 Ws_RetornoEdt = "Insc Invalida" RETURN ELSE FormataInscricao() RETURN END END
INTERNAL PROCEDURE FormataInscricao() Ws_Retorno = 0 SWITCH ws_uf CASE "ES": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + "." + Ds4 + Ds5 + Ds6 + "." + Ds7 + Ds8 + "-" + Ds9 CASE "RJ": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + "-" + Ds8 CASE "BA": IF Length(ws_inscricao) = 8 Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + "-" +Ds7 + Ds8 ELSE Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + D7 + "-" +Ds8 + Ds9 END CASE "MG": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + "." + Ds4 + Ds5 + Ds6 + "." + Ds7 + Ds8 + Ds9 + "/" + Ds10 + Ds11 + Ds12 + Ds13 CASE "PA": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "MA": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "MT": Ws_RetornoEdt = Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + Ds9 + Ds10 + "-" + Ds11 CASE "PB": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "PR": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 + Ds10 CASE "AL": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + "." + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "AP": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "AM": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "CE": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "PI": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "RN": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "RS": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + "/" + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + Ds9 + Ds10 CASE "RO": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + Ds9 + Ds10 + "." + Ds11 + Ds12 + Ds13 + "-" + Ds14 CASE "RR": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "SC": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + "." + Ds4 + Ds5 + Ds6 + "." + Ds7 + Ds8 + Ds9 CASE "SE": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "GO": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "MS": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "-" + Ds9 CASE "DF": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + Ds8 + "/" + Ds9 + Ds10 + Ds11 + "-" + Ds12 + Ds13 CASE "SP": Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + "." + Ds4 + Ds5 + Ds6 + "." + Ds7 + Ds8 + Ds9 + "." + Ds10 + Ds11 + Ds12 CASE "AC": Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "/" + Ds9 + Ds10 + Ds11 + "-" + Ds12 + Ds13 CASE "PE": IF Middle(ws_InscricaoEdt,10,5) <> "00000" THEN // E pq e inscricao antiga com 14 digitos (13+1) Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + "." + Ds4 + Ds5 + Ds6 + "." + Ds7 + Ds8 + Ds9 + Ds10 + Ds11 + Ds12 + Ds13 + "-" + Ds14 ELSE Ws_RetornoEdt = Ds1 + Ds2 + Ds3 + Ds4 + Ds5 + Ds6 + Ds7 + "-" + Ds8 + Ds9 END CASE "TO": IF Length(ws_inscricao) <> 9 Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + "." + Ds5 + Ds6 + Ds7 + "." + Ds8 + Ds9 + Ds10 + "-" + Ds11 ELSE Ws_RetornoEdt = Ds1 + Ds2 + "." + Ds3 + Ds4 + Ds5 + "." + Ds6 + Ds7 + Ds8 + "-" + Ds9 END OTHER CASE: Ws_RetornoEdt = " " 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/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.715 mensagems |
|
Publicado em julho, 09 2024 - 9:01 PM |
Aqui a chamada da rotina dentro de qq forms que tenha campo incricao estadual
ws_uf is string = Combo_UF..DisplayedValue ws_Retinscricao is int ws_Retmsg is ANSI string Ws_RetornoEdt is string
IF NoSpace(Edt_Inscricao) <> "ISENTO" (ws_Retinscricao,ws_Retmsg) = GB_Sct718Dec(NoSpace(Edt_Inscricao),ws_uf) // insc dec //chama rotina para criticar inscricao estadual ELSE ws_Retinscricao = 0 // forca retorno OK ja que e ISENTO ws_Retmsg = "ISENTO" Ws_RetornoEdt = "ISENTO" END
SWITCH ws_Retinscricao CASE 0: Edt_Inscricao = ws_Retmsg CASE 1: Error(ws_Retmsg) ReturnToCapture(Edt_Inscricao) 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/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|