Página 1 de 1
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 08:54
por jelias
Olá amigos, desejo e espero encontra-los bem!
Uso a dll ie32.dll fornecida no site do sintegra para validação no sistema da inscrição estadual. Ocorre que, em várias ocasiões quando o usuário faz cadastro de novas empresas no estado de Minas Gerais, a dll retorna como inválida, entretanto a inscrição estadual é válida e conferida no sistema site da receita.
Desde já agradeço possíveis soluções,
Saudações,
Júlio.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 11:13
por developer
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 11:45
por JoséQuintas
Quer em MySQL ou em Harbour ?
Desativada em harbour, não lembro se está atualizada:
https://github.com/JoseQuintas/sefazcla ... tadual.prg
Em MySQL, não lembro se está atualizada:
https://github.com/JoseQuintas/MySQL-fu ... ain/source
O site do sintegra tem manual de calcular todas IEs de todas as UFs, mas não está atualizado.
Provavelmente a DLL segue o site.
No site do sintegra, em serviços, inscrições estaduais, escolher a UF.
Em harbour desativei e não uso mais, e nem atualizo, por isso em rascunhos da sefazclass.
Só valido pelo MySQL mesmo.
Em MySQL até esqueço que coloquei no github.
Quando aparece algo novo em algum cliente, atualizo aqui local, pra resolver o problema.
Algumas mudanças são na base da intuição, já que não tem referência em lugar nenhum.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 15:25
por jelias
Não testei o exemplo o Rochinha, ainda.
Fiz o teste com a rotina "Harbour" do Quintas e realmente não consegue validar. Como ele mesmo disse está desatualizada.
INSCRIÇÃO ESTADUAL
49673960097
Saudações,
Júlio.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 16:26
por JoséQuintas
Da página do sintegra, já não bate.
Código: Selecionar todos
SET cInscricao = ze_SoNumero( cInscricao );
IF LENGTH( cInscricao ) <> 13 THEN
RETURN 0;
END IF;
Não é exatamente que está desatualizada.
É que não existe informação mesmo.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 16:46
por JoséQuintas
Com esta alteração deu certo.
Código: Selecionar todos
SET cInscricao = ze_SoNumero( cInscricao );
IF LENGTH( cInscricao ) > 13 THEN
RETURN 0;
END IF;
IF LENGTH( cInscricao ) < 13 THEN
SET cInscricao := LPAD( cInscricao, 13, '0' );
END IF;
Pois é....
Tem que ser adivinho pra resolver certas questões no Brasil kkkkk
Nem a DLL do governo entende essas coisas kkkkk
Mas neste caso achei no google esta página, que diz pra colocar zeros à esquerda, fiz o teste e deu certo.
http://community.maxmanager.com.br/2024 ... de-mg.html
Como não tem nada oficial em lugar nenhum, e a consulta mostra esse número, os zeros só entram pra validar.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 16:58
por JoséQuintas
Como usa a DLL no seu aplicativo, pode alterar pra colocar zeros quando for MG, e continuar usando a DLL.
Fica a seu critério.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 17:02
por jelias
Agradeço ao Mestre Quintas,
Fiz a alteração e está funcionando corretamente.
Código: Selecionar todos
STATIC FUNCTION ValidIE_MG( cInscricao )
LOCAL lOk := .T., nSoma, cNumero, nMultip, cChecar, nCont
IF LEN( cInscricao) < 13
cInscricao = PADL( cInscricao, 13, "0")
ENDIF
IF Len( cInscricao ) != 13
lOk := .F.
ELSE
cNumero := ""
nMultip := 1
cChecar := Substr( cInscricao, 1, 3 ) + "0" + Substr( cInscricao, 4, 8 )
FOR nCont = 1 to Len(cChecar)
cNumero := cNumero + LTrim( Str( Val( Substr( cChecar, nCont, 1 ) ) * nMultip ) )
nMultip := iif( nMultip == 1, 2, 1 )
NEXT
nSoma := 0
FOR nCont = 1 to Len( cNumero )
nSoma += Val( Substr( cNumero, nCont, 1 ) )
NEXT
nSoma := Mod( nSoma, 10 )
IF nSoma != 0
nSoma := 10 - nSoma
ENDIF
IF nSoma != Val( Substr( cInscricao, 12, 1 ) )
lOk := .F.
ELSE
nSoma := 0
nMultip := 2
FOR nCont = 12 to 1 step -1
nSoma += ( nMultip * Val( Substr( cInscricao, nCont, 1 ) ) )
nMultip += 1
nMultip := iif( nMultip == 12, 2, nMultip )
NEXT
nSoma := 11 - Mod( nSoma, 11 )
nSoma := iif( nSoma > 9, 0, nSoma )
IF nSoma != Val( Substr( cInscricao, 13, 1 ) )
lOk := .F.
ENDIF
ENDIF
ENDIF
IF lOk
cInscricao := Transform( cInscricao, "@R 999.999.999/9999" )
ENDIF
RETURN lOk
Agradeço pela ajuda.
Saudações,
Júlio.
Validação de Inscrição Estadual
Enviado: 26 Fev 2025 17:21
por JoséQuintas
Alterei de novo.
Falo pra não fazerem IF grande eu mesmo tinha feito isso.
Código: Selecionar todos
STATIC FUNCTION ValidIE_MG( cInscricao )
LOCAL lOk := .T., nSoma, cNumero, nMultip, cChecar, nCont
IF Len( cInscricao ) > 13
RETURN .F.
ENDIF
IF Len( cInscricao ) < 13
cInscricao := PadL( cInscricao, 13, "0" )
ENDIF
Maior que 13 é inválida e assunto encerrado.
Depois segue normal.
Evita ficar IF pendente no fonte por várias linhas.