ACNR NFSE

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

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)
É isso mesmo que usa? esse fonte péssimo ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

ACNR NFSE

Mensagem por lucimauro »

Ola jose, pegou de onde essa classe?
Digo isso porque quero implementar a emissão de nota de serviço eletrônica.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

ACNR NFSE

Mensagem por sygecom »

É apenas um exemplo, a ideia da DLL NFSe é ótima e pratica para usar, isso ajuda muitooooooo
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Poderia ser melhor, mas fazer o que, os caras adoram arquivos em disco.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

ACNR NFSE

Mensagem por lucimauro »

Muito boas as dll do acbr, uso varias com as classes disponíveis para harbour.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Sim, nisso não há dúvida.
Mas já se perguntou porque ficar usando arquivo, se dá pra transferir entre a DLL e o aplicativo ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

ACNR NFSE

Mensagem por sygecom »

Alguém já usando? Vamos começar a usar aqui, quem quiser compartilhar conhecimento da dll vamos colocando aqui no fórum.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Código: Selecionar todos

#include 'acbrlib.ch'
#include  "hbdyn.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) INLINE ::CallDll( "NFSE_ConfigLer", hb_StrToUTF8(eArqConfig))
   METHOD ConfigGravar(eArqConfig) INLINE ::CallDll( "NFSE_ConfigGravar", hb_StrToUTF8(eArqConfig))
   METHOD ConfigLerValor(eSessao, eChave)
   METHOD ConfigGravarValor(eSessao, eChave, eValor) INLINE ::CallDll( "NFSE_ConfigGravarValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), hb_StrToUTF8(eValor))

   METHOD CarregarXML(eArquivoOuXml) INLINE ::CallDll( "NFSE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
   METHOD CarregarINI(eArquivoOuIni) INLINE ::CallDll( "NFSE_CarregarINI", hb_StrToUTF8(eArquivoOuIni))
   METHOD ObterXml(AIndex)
   METHOD GravarXml(AIndex, eNomeArquivo, ePathArquivo) INLINE ::CallDll( "NFSE_GravarXml", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
   METHOD ObterIni(AIndex)
   METHOD GravarIni(AIndex, eNomeArquivo, ePathArquivo) INLINE ::CallDll( "NFSE_GravarIni", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
   METHOD LimparLista() INLINE ::CallDll( "NFSE_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) INLINE ::CallDll( "NFSE_EnviarEmail", hb_StrToUTF8(ePara), hb_StrToUTF8(eXMLNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos), hb_StrToUTF8(eMensagem))
   METHOD Imprimir(cImpressora, nNumCopias, bGerarPDF, bMostrarPreview, cCancelada) INLINE ::CallDll( "NFSE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(bGerarPDF), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cCancelada), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado))
   METHOD ImprimirPDF() INLINE ::CallDll( "NFSE_ImprimirPDF")
   METHOD CallDll( cName, ... )
   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))

   RETURN Self

METHOD Destroy() CLASS ACBrNFSe

   ::CallDll( "NFSE_Finalizar") //
   ::UnloadDLL( ::hHandle )

   RETURN Nil

METHOD CheckResult(hResult) CLASS ACBrNFSe

   LOCAL buffer := Space( STR_LEN ), bufferLen := STR_LEN, oErr

   IF hResult >= 0
      RETURN Nil
   ENDIF

   ::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 := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_Nome", @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD Versao CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_Versao", @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConfigLerValor(eSessao, eChave) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConfigLerValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ObterXml(AIndex) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ObterXml", AIndex, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ObterIni(AIndex) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ObterIni", AIndex, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ObterCertificados() CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ObterCertificados", @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD Emitir(ALote, aModoEnvio, Imprimir) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_Emitir", ALote, aModoEnvio, Imprimir, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD Cancelar(aInfCancelamentoNFSe) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_Cancelar", hb_StrToUTF8(aInfCancelamentoNFSe), @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD SubstituirNFSe(aNumeroNFSe, aSerieNFSe, aCodigoCancelamento, aMotivoCancelamento, aNumeroLote, aCodigoVerificacao) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_SubstituirNFSe", aNumeroNFSe, aSerieNFSe, aCodigoCancelamento, hb_StrToUTF8(aMotivoCancelamento), aNumeroLote, aCodigoVerificacao, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD LinkNFSe(aNumeroNFSe, aCodigoVerificacao, aChaveAcesso, aValorServico) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_LinkNFSe", aNumeroNFSe, aCodigoVerificacao, hb_StrToUTF8(aChaveAcesso), aValorServico, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD GerarLote(aLote, aQtdMaxima, aModoEnvio) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_GerarLote", aLote, aQtdMaxima, aModoEnvio, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD GerarToken() CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   bufferLen := STR_LEN
   buffer    := Space(bufferLen)
   hResult   := ::CallDll( "NFSE_GerarToken", @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarSituacao(aProtocolo, aNumLote) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarSituacao", hb_StrToUTF8(aProtocolo), aNumLote, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarLoteRps(aProtocolo, aNumLote) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarLoteRps", hb_StrToUTF8(aProtocolo), aNumLote, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSePorRps(aNumeroRps, aSerie, aTipo, aCodigoVerificacao) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSePorRps", aNumeroRps, aSerie, aTipo, aCodigoVerificacao, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSePorNumero(aNumero, aPagina) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_DConsultarNFSePorNumero", aNumero, aPagina, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSePorPeriodo(aDataInicial, aDataFinal, aPagina, aNumeroLote, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSePorPeriodo", aDataInicial, aDataFinal, aPagina, aNumeroLote, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSePorFaixa(aNumeroInicial, aNumeroFinal, aPagina) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSePorFaixa", aNumeroInicial, aNumeroFinal, aPagina, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeGenerico(aInfConsultaNFSe) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeGenerico", hb_StrToUTF8(aInfConsultaNFSe), @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoPrestadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorNumero", aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoPrestadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorPeriodo", aDataInicial, aDataFinal, aPagina, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoPrestadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorTomador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoPrestadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoPrestadoPorIntermediario", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoTomadoPorNumero(aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorNumero", aNumero, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoTomadoPorPrestador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorPrestador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoTomadoPorTomador(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorTomador", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoTomadoPorPeriodo(aDataInicial, aDataFinal, aPagina, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorPeriodo", aDataInicial, aDataFinal, aPagina, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNFSeServicoTomadoPorIntermediario(aCNPJ, aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo) CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_ConsultarNFSeServicoTomadoPorIntermediario", hb_StrToUTF8(aCNPJ), aInscMun, aPagina, aDataInicial, aDataFinal, aTipoPeriodo, @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD StatusServico() CLASS ACBrNFSe

   LOCAL hResult, buffer := Space( STR_LEN ), bufferLen := STR_LEN

   hResult   := ::CallDll( "NFSE_StatusServico", @buffer, @bufferLen)

   RETURN ::ProcessResult(buffer, bufferLen)

METHOD CallDll( cName, ... ) CLASS ACBRNFSe

   hResult := hb_DynCall( { cName, ::hHandle, HB_DYN_CALLCONV_STDCALL }, ... )
   ::CheckResult( hResult )

   RETURN hResult
Olhando pelo Windows, ficou 4.000 letras menor.
Só eliminei duplicação à toa.

Nas originais, toda hora testando resultado de chamada, e passando 2 parâmetros iniciais sempre iguais:

Código: Selecionar todos

    hResult := DllCall(::hHandle, DLL_OSAPI, "NFSE_UltimoRetorno", @buffer, @bufferLen)
    ::CheckResult(hResult)
na alteração:

Código: Selecionar todos

      ::CallDll( "NFSE_UltimoRetorno", @buffer, @bufferLen)
e no método já faz o teste, que vale pra tudo

Código: Selecionar todos

METHOD CallDll( cName, ... ) CLASS ACBRNFSe

   hResult := hb_DynCall( { cName, ::hHandle, HB_DYN_CALLCONV_STDCALL }, ... )
   ::CheckResult( hResult )

   RETURN hResult
No Harbour, até passar por referência vale nos "..."
O problema é XHarbour que não aceita "..."
Não sei se a,b,c,d,e,f,g,h vai ter a mesma validade, precisa testar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

ACNR NFSE

Mensagem por lucimauro »

Ola sigecom,
Nfse ainda não tenho mais pretendo logo desenvolver, já nfe,boleto,mdfe e outros já tenho em produção com a dll.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Faz um teste rápido com sefazclass que vai entender do que estou falando.

Se pegar o programa exemplo, e no windows associar a XMLs, vai ter o PDF apenas clicando nos XMLs.
teste.png
O mesmo programa teste pode até autorizar notas, mas não recomendo isso.
Melhor fazer só os outros testes, tudo sem arquivo em disco.

Só usar as opções marcadas de vermelho em primeiro lugar, pra selecionar certificado e configurar o que vai usar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Esqueci de mencionar:
Mas se vai usar ACBR pra outra coisa, então mais prático usar tudo do ACBR.

Vantagens da sefazclass:
Não precisa disco pra nada

Vantagens do ACBR:
Mais gente já testou as diversas opções, e tem muito mais coisas do que NFE, CTE, MDFE, NFCE.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Se um dia eu for usar ACBR, a primeira coisa vai ser uma LIB intermediária, pra usar igual Sefazclass.
Vocês deveriam fazer isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

ACNR NFSE

Mensagem por Wanderlei »

Zé vc já começou a fazer a NFS-e na SefazClass?
Estou iniciando os testes aqui em Goiânia com o HbNFe, mais se vc já tiver alguma coisa, me ajudaria a entender melhor.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ACNR NFSE

Mensagem por JoséQuintas »

Só trabalho com empresas de São Paulo - capital.

NFE é igual pro Brasil inteiro, sem problemas.

NFSE é diferente pra cada município, é fazer o que NÃO uso.
Como teria que parar meu serviço normal, é como se eu estivesse pagando pra fazer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder