Como Validar Inscrição Estadual

Este exemplo pode ter sido visualizado em outros locais de outras formas, mas aqui quis reproduzi-lo, para que nós tenhamos de forma simples um sistema que utiliza-se de uma DLL externa para produzir alguma função (resultado).

Validador de Inscrição Estadual

O projeto não tem nenhuma característica especial, além de chamar uma DLL externa, sua função é validar se uma inscrição estadual digitado é ou não válida no estado selecionado.

Abaixo segue os cinco arquivos que contém o código de programa do projeto, no final da postagem você pode baixar o arquivo compactado com o projeto completo, bastando apenas compilar.

main.prg

Programa principal, encarregado por chamar o formulário (janela), assim como testar se a DLL esta disponível no disco, e também por abrigar duas outras funções, uma para carregar os estados brasileiros em uma combo e outra para fazer trazer o nome do estado a partir do posicionamento da combo.

#INCLUDE "hmg.ch"
// ----------------------------------------------------------------------
// main.prg
//

FUNCTION Main
    public dllFile := "dllinsce32.dll"

    IF FILE("DLLINSCE32.DLL")
       LOAD WINDOW Main
       Main.CENTER
       Main.ACTIVATE
	ELSE
	   MSGSTOP("DLLINSCE32.DLL não localizada!","Verifica IE (Erro Fatal)")
	ENDIF

RETURN nil

FUNCTION buscaEstado()

    pos := GETPROPERTY("main","comboEstado","VALUE")

    estado := SUBSTR( GETPROPERTY("main","comboEstado","ITEM",pos),1,2)

RETURN estado

FUNCTION encheComboEstado()
LOCAL posicaoSP

   DOMETHOD("main","comboEstado","DELETEALLITEMS")

   DOMETHOD("main","comboEstado","ADDITEM","AC-Acre")
   DOMETHOD("main","comboEstado","ADDITEM","AL-Alagoas")
   DOMETHOD("main","comboEstado","ADDITEM","AP-Amapá")
   DOMETHOD("main","comboEstado","ADDITEM","AM-Amazonas")
   DOMETHOD("main","comboEstado","ADDITEM","BA-Bahia")
   DOMETHOD("main","comboEstado","ADDITEM","CE-Ceará")
   DOMETHOD("main","comboEstado","ADDITEM","DF-Distrito Federal")
   DOMETHOD("main","comboEstado","ADDITEM","ES-Espírito Santo")
   DOMETHOD("main","comboEstado","ADDITEM","GO-Goiás")
   DOMETHOD("main","comboEstado","ADDITEM","MA-Maranhão")
   DOMETHOD("main","comboEstado","ADDITEM","MT-Mato Grosso")
   DOMETHOD("main","comboEstado","ADDITEM","MS-Mato Grosso do Sul")
   DOMETHOD("main","comboEstado","ADDITEM","MG-Minas Gerais")
   DOMETHOD("main","comboEstado","ADDITEM","PR-Paraná")
   DOMETHOD("main","comboEstado","ADDITEM","PB-Paraíba")
   DOMETHOD("main","comboEstado","ADDITEM","PA-Pará")
   DOMETHOD("main","comboEstado","ADDITEM","PE-Pernambuco")
   DOMETHOD("main","comboEstado","ADDITEM","PI-Piauí")
   DOMETHOD("main","comboEstado","ADDITEM","RJ-Rio de Janeiro")
   DOMETHOD("main","comboEstado","ADDITEM","RN-Rio Grande do Norte")
   DOMETHOD("main","comboEstado","ADDITEM","RS-Rio Grande do Sul")
   DOMETHOD("main","comboEstado","ADDITEM","RO-Rondonia")
   DOMETHOD("main","comboEstado","ADDITEM","SC-Santa Catarina")
   DOMETHOD("main","comboEstado","ADDITEM","SE-Sergipe")
   DOMETHOD("main","comboEstado","ADDITEM","SP-São Paulo")
   DOMETHOD("main","comboEstado","ADDITEM","TO-Tocantins")

   posicaoSP := GETPROPERTY("main","comboEstado","ITEMCOUNT")-1

   SETPROPERTY("main","comboEstado","VALUE", posicaoSP )

RETURN nil

main_form_oninit.prg

Este programa é responsável por alojar a função que é executada assim que o formulário (janela) é carregada, e este aciona a função para preencher o combo.

#include "hmg.ch"
// ----------------------------------------------------------------------
// main_form_oninit.prg
//

declare window Main

Function main_form_oninit

   encheComboEstado()

Return Nil

main_btnversao_action.prg

Este programa é apenas para mostrar a versão do sistema, e trazer informações sobre o mesmo, fique atento para o detalhe que aqui acionamos a primeira função interna da DLL para mostrar a versão da mesma.

#INCLUDE "hmg.ch"
// ----------------------------------------------------------------------
// main_btnversao_action.prg
//

DECLARE WINDOW Main
DECLARE DLL_TYPE_INT VersaoDLL() IN DLLINSCE32.DLL

FUNCTION main_btnversao_action
   LOCAL nRet := VersaoDLL()

   MSGINFO("Verifica IE 1.0"+CHR(13)+;
           CHR(13)+;
		   "autor: Crocciari, Daniel"+CHR(13)+;
		   "       danielcrocciari@gmail.com"+CHR(13)+;
		   "       danielcrocciari.wordpress.com"+CHR(13)+;
		   CHR(13)+;
           "DLLINSCE32.DLL versão: "+AllTrim(Str(nRet))+CHR(13)+;
		   CHR(13)+;
		   "HMG Lights"+CHR(13)+;
		   "https://hmglights.wordpress.com/"+CHR(13)+;
		   CHR(13)+;
		   "Harbour MiniGUI"+CHR(13)+;
		   "http://www.harbourminigui.com/"+CHR(13)+;
		   CHR(13)+;
		   "HMG-IDE"+CHR(13)+;
		   "https://sites.google.com/site/hmgweb/"+CHR(13)+CHR(13)+;
		   "2012"+;
		   CHR(13),"Verifica IE - Sobre...")

RETURN Nil

main_btverifica_action.prg

Este programa aloja a função que realmente faz a verificação da  Inscrição Estadual junto a DLL para saber se a mesma é válida ou não.

#INCLUDE "hmg.ch"
// ----------------------------------------------------------------------
// main_btverifica_action.prg
//

DECLARE WINDOW Main
DECLARE DLL_TYPE_INT ConsisteInscricaoEstadual( DLL_TYPE_LPSTR Insc, DLL_TYPE_LPSTR UF ) IN DLLINSCE32.DLL

FUNCTION main_btverifica_action
LOCAL nRet,pos,estado,ie

    IF FILE("DLLINSCE32.DLL")

    ELSE
	   MSGSTOP("DLLINSCE32.DLL não localizada!","Verifica IE (Erro Fatal)")
	   DOMETHOD("main","RELEASE")
	ENDIF

    estado := buscaEstado()

	ie := GETPROPERTY("main","txtInscricao","VALUE")

    nRet := ConsisteInscricaoEstadual(ie,estado)

    IF nRet == 0
       SETPROPERTY("main","lblStatus","VALUE","Inscrição "+ie+" "+estado+" válida")
	   SETPROPERTY("main","lblStatus","FONTCOLOR",{0,255,64,})
    ELSEIF nRet == 1
       SETPROPERTY("main","lblStatus","VALUE","Inscrição "+ie+" "+estado+" inválida")
	   SETPROPERTY("main","lblStatus","FONTCOLOR",{255,0,0,})
    ELSE
       SETPROPERTY("main","lblStatus","VALUE","Parâmetros inválidos")
	   SETPROPERTY("main","lblStatus","FONTCOLOR",{255,0,0,})
    ENDIF

    DOMETHOD("main","txtInscricao","SETFOCUS")

RETURN Nil

main_comboestado_onchange.prg

Esta é apenas para fazer um “charme”, aqui quando movimentos a seleção dentro da combo ela troca a imagem da bandeira do estado.

#include "hmg.ch"
// ----------------------------------------------------------------------
// main_comboestado_onchange.prg
//

declare window Main

Function main_comboestado_onchange

    estado := buscaEstado()

	file := "img\"+estado+".jpg"

	If file(file)

	   SETPROPERTY("main","imgBandeira","PICTURE",file)

	Else

	   SETPROPERTY("main","imgBandeira","PICTURE","img\br.jpg")

	EndIf

Return Nil

Também disponibilizei o projeto, o executável ou apenas a DLL, confira nos links abaixo:

Dentro do arquivo compactado existe todo o projeto, os códigos acima listados, assim como as imagens e arquivo DLL utilizados para o desenvolvimento.

3 comentários em “Como Validar Inscrição Estadual

Adicione o seu

  1. Também gostei da rotina para “Validar Inscrição Estadual”! Sou novato no Harbour, portanto, aí vai minha pergunta: a função: “DOMETHOD()” é do Harbour ou da DLL: “dllinsce32.dll”? Quais são os parâmetros que ela recebe?

    Obrigado!

    Jsnascimento

    1. doMethod() é do Harbour e não dá DLL, desconheço todos os parâmetros dessa dll.

Deixe um comentário

Acima ↑