Código: Selecionar todos
#include 'acbrlib.ch'
#ifdef __PLATFORM__WINDOWS
#define ACBrLIB 'ACBrNFSe32.dll'
#else
#ifdef __PLATFORM__LINUX
#define ACBrLIB 'libacbrnfse64.so'
#else
#error ACBrLIB-FALTA DEFINICAO: PLATFORM__?
#endif
#endif
CREATE CLASS ACBrNFSe
HIDDEN:
VAR hHandle
METHOD CheckResult(hResult)
METHOD ProcessResult(buffer, bufferLen)
VISIBLE:
METHOD New(eArqConfig, eChaveCrypt) CONSTRUCTOR
DESTRUCTOR Destroy
METHOD Nome()
METHOD Versao()
METHOD ConfigLer(eArqConfig)
METHOD ConfigGravar(eArqConfig)
METHOD ConfigLerValor(eSessao, eChave)
METHOD ConfigGravarValor(eSessao, eChave, eValor)
METHOD CarregarXML(eArquivoOuXml)
METHOD CarregarINI(eArquivoOuIni)
METHOD ObterXml(AIndex)
METHOD GravarXml(AIndex, eNomeArquivo, ePathArquivo)
METHOD ObterIni(AIndex)
METHOD GravarIni(AIndex, eNomeArquivo, ePathArquivo)
METHOD LimparLista()
METHOD ObterCertificados()
METHOD Emitir(ALote, aModoEnvio, Imprimir)
METHOD Cancelar(aInfCancelamentoNFSe)
METHOD SubstituirNFSe(aNumeroNFSe, aSerieNFSe, aCodigoCancelamento, aMotivoCancelamento, aNumeroLote, aCodigoVerificacao)
METHOD LinkNFSe(aNumeroNFSe, aCodigoVerificacao, aChaveAcesso, aValorServico)
METHOD GerarLote(aLote, aQtdMaxima, aModoEnvio)
METHOD GerarToken()
METHOD ConsultarSituacao(aProtocolo, aNumLote)
METHOD ConsultarLoteRps(aProtocolo, aNumLote)
METHOD ConsultarNFSePorRps(aNumeroRps, aSerie, aTipo, aCodigoVerificacao)
METHOD ConsultarNFSePorNumero(aNumero, aPagina)
METHOD ConsultarNFSePorPeriodo(aDataInicial, aDataFinal, aPagina, aNumeroLote, aTipoPeriodo)
METHOD ConsultarNFSePorFaixa(aNumeroInicial, aNumeroFinal, aPagina)
METHOD ConsultarNFSeGenerico(aInfConsultaNFSe)
METHOD ConsultarNFSeServicoPrestadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoPrestadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo)
METHOD ConsultarNFSeServicoPrestadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoPrestadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoTomadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoTomadoPorPrestador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoTomadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD ConsultarNFSeServicoTomadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo)
METHOD ConsultarNFSeServicoTomadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo)
METHOD EnviarEmail(ePara, eXMLNFe, aEnviaPDF, eAssunto, eCc, eAnexos, eMensagem)
METHOD Imprimir(cImpressora, nNumCopias, bGerarPDF, bMostrarPreview, cCancelada)
METHOD ImprimirPDF()
METHOD CallDll( cName, ... ) INLINE hb_DynCall( { cName, hDll, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD LoadDll( ... ) INLINE hb_LibLoad( ... )
METHOD UnloadDll( ... ) INLINE hb_LibFree( ... )
ENDCLASS
METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen, oErr
eArqConfig := IIF(eArqConfig = NIL, '', eArqConfig)
eChaveCrypt := IIF(eChaveCrypt = NIL, '', eChaveCrypt)
::hHandle := ::LoadDll( ACBrLIB )
IF Empty(::hHandle) // Eric.Developer: xHarbour retorna 0x00000000
oErr := ErrorNew()
oErr:Severity := ES_ERROR
oErr:Description := "Erro a carregar a dll [" + ACBrLIB + "]"
Throw(oErr)
ENDIF
hResult := ::CallDll( "NFSE_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
::CheckResult(hResult)
RETURN Self
METHOD Destroy CLASS ACBrNFSe
::CallDll( "NFSE_Finalizar") //
::UnloadDLL( ::hHandle )
RETURN Nil
METHOD CheckResult(hResult) CLASS ACBrNFSe
LOCAL buffer, bufferLen, oErr
IF hResult >= 0
RETURN Nil
ENDIF
bufferLen := STR_LEN
buffer := Space(bufferLen)
::CallDll( "NFSE_UltimoRetorno", @buffer, @bufferLen)
IF bufferLen > STR_LEN
buffer := Space(bufferLen)
::CallDll( "NFSE_UltimoRetorno", @buffer, @bufferLen)
ENDIF
oErr := ErrorNew()
oErr:Severity := ES_ERROR
oErr:Description := hb_UTF8ToStr(buffer)
Throw(oErr)
RETURN Nil
METHOD ProcessResult(buffer, bufferLen) CLASS ACBrNFSe
IF bufferLen > STR_LEN
buffer := Space(bufferLen)
::CallDll( "NFSE_UltimoRetorno", @buffer, @bufferLen)
ENDIF
RETURN buffer
METHOD Nome CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_Nome", @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD Versao CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_Versao", @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConfigLer(eArqConfig) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_ConfigLer", hb_StrToUTF8(eArqConfig))
::CheckResult(hResult)
RETURN Nil
METHOD ConfigGravar(eArqConfig) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_ConfigGravar", hb_StrToUTF8(eArqConfig))
::CheckResult(hResult)
RETURN Nil
METHOD ConfigLerValor(eSessao, eChave) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConfigLerValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConfigGravarValor(eSessao, eChave, eValor) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_ConfigGravarValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), hb_StrToUTF8(eValor))
::CheckResult(hResult)
RETURN Nil
METHOD CarregarXML(eArquivoOuXml) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
::CheckResult(hResult)
RETURN Nil
METHOD CarregarINI(eArquivoOuIni) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_CarregarINI", hb_StrToUTF8(eArquivoOuIni))
::CheckResult(hResult)
RETURN Nil
METHOD ObterXml(AIndex) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ObterXml", AIndex, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD GravarXml(AIndex, eNomeArquivo, ePathArquivo) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_GravarXml", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
::CheckResult(hResult)
RETURN Nil
METHOD ObterIni(AIndex) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ObterIni", AIndex, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD GravarIni(AIndex, eNomeArquivo, ePathArquivo) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_GravarIni", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
::CheckResult(hResult)
RETURN Nil
METHOD LimparLista() CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_LimparLista")
::CheckResult(hResult)
RETURN Nil
METHOD ObterCertificados() CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ObterCertificados", @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD Emitir(ALote, aModoEnvio, Imprimir) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_Emitir", ALote, aModoEnvio, Imprimir, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD Cancelar(aInfCancelamentoNFSe) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_Cancelar", hb_StrToUTF8(aInfCancelamentoNFSe), @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD SubstituirNFSe(aNumeroNFSe, aSerieNFSe, aCodigoCancelamento, aMotivoCancelamento, aNumeroLote, aCodigoVerificacao) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_SubstituirNFSe", aNumeroNFSe, aSerieNFSe, aCodigoCancelamento, hb_StrToUTF8(aMotivoCancelamento), aNumeroLote, aCodigoVerificacao, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD LinkNFSe(aNumeroNFSe, aCodigoVerificacao, aChaveAcesso, aValorServico) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_LinkNFSe", aNumeroNFSe, aCodigoVerificacao, hb_StrToUTF8(aChaveAcesso), aValorServico, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD GerarLote(aLote, aQtdMaxima, aModoEnvio) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_GerarLote", aLote, aQtdMaxima, aModoEnvio, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD GerarToken() CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_GerarToken", @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarSituacao(aProtocolo, aNumLote) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarSituacao", hb_StrToUTF8(aProtocolo), aNumLote, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarLoteRps(aProtocolo, aNumLote) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarLoteRps", hb_StrToUTF8(aProtocolo), aNumLote, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSePorRps(aNumeroRps, aSerie, aTipo, aCodigoVerificacao) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSePorRps", aNumeroRps, aSerie, aTipo, aCodigoVerificacao, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSePorNumero(aNumero, aPagina) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_DConsultarNFSePorNumero", aNumero, aPagina, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSePorPeriodo(aDataInicial, aDataFinal, aPagina, aNumeroLote, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSePorPeriodo", aDataInicial, aDataFinal, aPagina, aNumeroLote, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSePorFaixa(aNumeroInicial, aNumeroFinal, aPagina) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSePorFaixa", aNumeroInicial, aNumeroFinal, aPagina, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeGenerico(aInfConsultaNFSe) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeGenerico", hb_StrToUTF8(aInfConsultaNFSe), @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoPrestadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorNumero", aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoPrestadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorPeriodo", aDataInicial, aDataFinal, aPagina, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoPrestadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorTomador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoPrestadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorIntermediario", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoTomadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorNumero", aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoTomadoPorPrestador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorPrestador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoTomadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorTomador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoTomadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorPeriodo", aDataInicial, aDataFinal, aPagina, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD ConsultarNFSeServicoTomadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorIntermediario", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
METHOD EnviarEmail(ePara, eXMLNFe, aEnviaPDF, eAssunto, eCc, eAnexos, eMensagem) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_EnviarEmail", hb_StrToUTF8(ePara), hb_StrToUTF8(eXMLNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos), hb_StrToUTF8(eMensagem))
::CheckResult(hResult)
RETURN Nil
METHOD Imprimir(cImpressora, nNumCopias, bGerarPDF, bMostrarPreview, cCancelada) CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(bGerarPDF), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cCancelada), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado))
::CheckResult(hResult)
RETURN Nil
METHOD ImprimirPDF() CLASS ACBrNFSe
LOCAL hResult
hResult := ::CallDll( "NFSE_ImprimirPDF")
::CheckResult(hResult)
RETURN Nil
METHOD StatusServico() CLASS ACBrNFSe
LOCAL hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := ::CallDll( "NFSE_StatusServico", @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)


