SAT ELGIN SMART

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

- Boa tarde pessoal, alguem tem e poderia ceder os fontes de comunicação com o equipamento SAT em harbour 3.2 utilizando a dll do acbr ou comunicação direta?
HASA
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

SAT ELGIN SMART

Mensagem por fladimir »

Pessoal do ACBr fez pra Harbour se não me engano tem no SVN deles, não lembro de onde tirei o código abaixo, mas é mérito dos caras do ACBr junto com algum colega dos grupos de harbour

Código: Selecionar todos

#include "hbclass.ch"
#include "error.ch"

#define DC_CALL_CDECL          0x0010      // __cdecl
#define DC_CALL_STD            0x0020      // __stdcall

#ifdef _XHARBOUR_ 
	#define ACBrLIBSat "ACBrSAT32.dll"
	#define DLL_OSAPI DC_CALL_STD
#else
	#if defined( __PLATFORM__WINDOWS )
		#define ACBrLIBSat "ACBrSAT32.dll"
		#define DLL_OSAPI DC_CALL_STD
	#else
		#define ACBrLIBSat "ACBrSAT32.so"
		#define DLL_OSAPI DC_CALL_CDECL
	#endif
#endif

#define STR_LEN 256

Function SatDemo ()
   local sat
   local vendaRetorno, strIniVenda
   local hIni, hIniVenda
   LOCAL cSection
   
   sat := ACBrSat():New("", "")
   //                      Sessão       Chave    Valor
   // Configurações de log da Lib
   sat:ConfigGravarValor("Principal", "LogNivel", "4") // logParanoico     
   sat:ConfigGravarValor("Principal", "LogPath", hb_dirBase())

   //Configurações do Sat
   sat:ConfigGravarValor("SAT", "Modelo", "1") // satDinamico_cdecl
   sat:ConfigGravarValor("SAT", "NomeDLL", "C:\SAT\SAT.dll")
   sat:ConfigGravarValor("SAT", "CodigoDeAtivacao", "sefaz1234")
   sat:ConfigGravarValor("SAT", "SignAC", "111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111")
   
   // Softhouse   
   sat:ConfigGravarValor("SATConfig", "infCFe_versaoDadosEnt", "0.07")
   sat:ConfigGravarValor("SATConfig", "ide_CNPJ", "16716114000172")
   sat:ConfigGravarValor("SATConfig", "ide_numeroCaixa", "0")

   // Emitente
   sat:ConfigGravarValor("SATConfig", "emit_CNPJ", "14200166000166")
   sat:ConfigGravarValor("SATConfig", "emit_IE", "111111111111")
   sat:ConfigGravarValor("SATConfig", "emit_IM", "")
   sat:ConfigGravarValor("SATConfig", "emit_cRegTrib", "0") // RTSimplesNacional
   sat:ConfigGravarValor("SATConfig", "emit_cRegTribISSQN", "0") // RTISSMicroempresaMunicipal
   sat:ConfigGravarValor("SATConfig", "emit_indRatISSQN", "0") // irSim

   // Extrato
   sat:ConfigGravarValor("Extrato", "Tipo", "0") // teFortes
   sat:ConfigGravarValor("Extrato", "MostraPreview", "1") // True

   // Salvando configurações
   sat:ConfigGravar("")
  
   ?sat:Nome
   ?sat:Versao
   
   sat:Inicializar()

   ?sat:ConsultarStatusOperacional()

   // Gerando ini venda
   hIniVenda := Hash()
   hIniVenda["infCFe"] := Hash()
   hIniVenda["infCFe"]["versao"] := "0.07"

   hIniVenda["Destinatario"] := Hash()
   hIniVenda["Destinatario"]["CNPJCPF"] := "05481336000137"
   hIniVenda["Destinatario"]["xNome"] := "D.J. SYSTEM"

   hIniVenda["Entrega"] := Hash()
   hIniVenda["Entrega"]["xLgr"] := "Rua Cel. Aureliano de Camargo"
   hIniVenda["Entrega"]["nro"] := "973"
   hIniVenda["Entrega"]["xCpl"] := ""
   hIniVenda["Entrega"]["xBairro"] := "Centro"
   hIniVenda["Entrega"]["xMun"] := "Tatui"
   hIniVenda["Entrega"]["UF"] := "SP"

   hIniVenda["Produto001"] := Hash()
   hIniVenda["Produto001"]["cProd"] := "1189"
   hIniVenda["Produto001"]["infAdProd"] := "Teste de Produto"
   hIniVenda["Produto001"]["cEAN"] := ""
   hIniVenda["Produto001"]["xProd"] := "OVO VERMELHO"
   hIniVenda["Produto001"]["NCM"] := "04072100"
   hIniVenda["Produto001"]["CFOP"] := "5102"
   hIniVenda["Produto001"]["uCom"] := "DZ"
   hIniVenda["Produto001"]["Combustivel"] := "0"
   hIniVenda["Produto001"]["qCom"] := "510"
   hIniVenda["Produto001"]["vUnCom"] := "2,70"
   hIniVenda["Produto001"]["indRegra"] := "A"
   hIniVenda["Produto001"]["vDesc"] := "0"
   hIniVenda["Produto001"]["vOutro"] := "0"
   hIniVenda["Produto001"]["vItem12741"] := "137,00"

   hIniVenda["ObsFiscoDet001001"] := Hash()
   hIniVenda["ObsFiscoDet001001"]["xCampoDet"] := "Teste"
   hIniVenda["ObsFiscoDet001001"]["xTextoDet"] := "Texto Teste"

   hIniVenda["ICMS001"] := Hash()
   hIniVenda["ICMS001"]["Origem"] := "0"
   hIniVenda["ICMS001"]["CSOSN"] := "500"

   hIniVenda["PIS001"] := Hash()
   hIniVenda["PIS001"]["CST"] := "01"

   hIniVenda["COFINS001"] := Hash()
   hIniVenda["COFINS001"]["CST"] := "01"

   hIniVenda["Total"] := Hash()
   hIniVenda["Total"]["vCFeLei12741"] := "137,00"

   hIniVenda["DescAcrEntr"] := Hash()
   hIniVenda["DescAcrEntr"]["vDescSubtot"] := "7,00"

   hIniVenda["Pagto001"] := Hash()
   hIniVenda["Pagto001"]["cMP"] := "01"
   hIniVenda["Pagto001"]["vMP"] := "1400"

   hIniVenda["DadosAdicionais"] := Hash()
   hIniVenda["DadosAdicionais"]["infCpl"] := "Teste emissao CFe/SAT"

   hIniVenda["ObsFisco001"] := Hash()
   hIniVenda["ObsFisco001"]["xCampo"] := "ObsFisco 1"
   hIniVenda["ObsFisco001"]["xTexto"] := "Teste ObsFisco 1"

   strIniVenda := hb_iniWriteStr(hIniVenda)

   // Venda 
   ?"Ini Venda"
   ?strIniVenda
   ?""
   ?"-------------------------------------------------------------------------------------------------------------"
   ?"" 
   vendaRetorno := sat:CriarEnviarCFe(strIniVenda)
   ?vendaRetorno
   ?""
   ?"-------------------------------------------------------------------------------------------------------------"
   ?"" 
   hIni := hb_iniReadStr(vendaRetorno)
   cSection := hIni["ENVIO"]

   if cSection["CodigoDeRetorno"] != "6000"
      ?cSection["Resultado"]
   else
   ?"Impressão Preview"
   sat:ImprimirExtratoVenda(cSection["XML"], "")
   ?"Impressão PDF"
   ?sat:GerarPDFExtratoVenda(cSection["XML"], "")
   end if

   sat:DesInicializar()
   sat:Destroy()
   sat := nil
return NIL

********************************************************************************
CREATE CLASS ACBrSat 
	VISIBLE:
	    METHOD New() CONSTRUCTOR
	    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 Inicializar
	    METHOD DesInicializar
	
	    METHOD AssociarAssinatura(CNPJvalue, assinaturaCNPJs)
	    METHOD BloquearSAT()
	    METHOD DesbloquearSAT()
	    METHOD TrocarCodigoDeAtivacao(codigoDeAtivacaoOuEmergencia, opcao, novoCodigo)
	    METHOD ConsultarSAT()
	    METHOD ConsultarStatusOperacional()
	    METHOD ConsultarNumeroSessao(cNumeroDeSessao)
	    METHOD AtualizarSoftwareSAT()
	    METHOD ComunicarCertificadoICPBRASIL(certificado)
	    METHOD ExtrairLogs(eArquivo)
	    METHOD TesteFimAFim(eArquivoXmlVenda)
	    METHOD GerarAssinaturaSAT(eCNPJSHW, eCNPJEmitente)
	
	    METHOD CriarCFe(eArquivoIni)
	    METHOD CriarEnviarCFe(eArquivoIni)
	    METHOD EnviarCFe(eArquivoXml)
	    METHOD CancelarCFe(eArquivoXml)
	
	    METHOD ImprimirExtratoVenda(eArqXMLVenda, eNomeImpressora)
	    METHOD ImprimirExtratoResumido(eArqXMLVenda, eNomeImpressora)
	    METHOD ImprimirExtratoCancelamento(eArqXMLVenda, eArqXMLCancelamento, eNomeImpressora)
	    METHOD GerarImpressaoFiscalMFe(eArqXMLVenda)
	    METHOD GerarPDFExtratoVenda(eArqXMLVenda, eNomeArquivo)
	    METHOD GerarPDFCancelamento(eArqXMLVenda, eArqXMLCancelamento, eNomeArquivo)
	    METHOD EnviarEmail(eArqXMLVenda, sPara, sAssunto, eNomeArquivo, sMensagem, sCC, eAnexos)
END CLASS

METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrSat
    local hResult, buffer, bufferLen, oErr

    ::hHandle := DllLoad(ACBrLIBSat)
    if ::hHandle = nil
        oErr := ErrorNew()
        oErr:Severity := ES_ERROR        
        oErr:Description := "Erro a carregar a dll [" + ACBrLIBSat + "]"
        Throw(oErr)
    endif
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
    ::CheckResult(hResult) 
    RETURN Self

METHOD Destroy CLASS ACBrSat
    DllCall(::hHandle, DLL_OSAPI, "SAT_Finalizar")
    DllUnload(::hHandle)
    RETURN

METHOD CheckResult(hResult) CLASS ACBrSat
    local buffer, bufferLen, oErr
    if hResult >= 0 
       RETURN nil
    endif    

    bufferLen := STR_LEN
    buffer := Space(bufferLen)

    DllCall(::hHandle, DLL_OSAPI, "SAT_UltimoRetorno", @buffer, @bufferLen)
    if bufferLen > STR_LEN
        buffer := Space(bufferLen)
        DllCall(::hHandle, DLL_OSAPI, "SAT_UltimoRetorno", @buffer, @bufferLen)        
    endif    

    oErr := ErrorNew()
    oErr:Severity := ES_ERROR
    oErr:Description := hb_UTF8ToStr(buffer)
    Throw(oErr)
    RETURN nil

METHOD ProcessResult(buffer, bufferLen) CLASS ACBrSat
    if bufferLen > STR_LEN
        buffer := Space(bufferLen)
        DllCall(::hHandle, DLL_OSAPI, "SAT_UltimoRetorno", @buffer, @bufferLen)        
    endif
    RETURN buffer

METHOD Nome CLASS ACBrSat
    local hResult, buffer, bufferLen, ret
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_Nome", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD Versao CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_Versao", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConfigLer(eArqConfig) CLASS ACBrSat
    local hResult    
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConfigLer", hb_StrToUTF8(eArqConfig))
    ::CheckResult(hResult)
    RETURN nil

METHOD ConfigGravar(eArqConfig) CLASS ACBrSat
        local hResult    
        hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConfigGravar", hb_StrToUTF8(eArqConfig))
        ::CheckResult(hResult)
        RETURN nil

METHOD ConfigLerValor(eSessao, eChave) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConfigLerValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConfigGravarValor(eSessao, eChave, eValor) CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConfigGravarValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), hb_StrToUTF8(eValor))
    ::CheckResult(hResult)
    RETURN nil

METHOD Inicializar CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_InicializarSAT")
    ::CheckResult(hResult)
    RETURN nil

METHOD DesInicializar CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_DesInicializar")
    ::CheckResult(hResult)
    RETURN nil

METHOD AssociarAssinatura(CNPJvalue, assinaturaCNPJs) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_AssociarAssinatura", hb_StrToUTF8(CNPJvalue), hb_StrToUTF8(assinaturaCNPJs), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD BloquearSAT() CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_BloquearSAT", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD DesbloquearSAT() CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_DesbloquearSAT", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD TrocarCodigoDeAtivacao(codigoDeAtivacaoOuEmergencia, opcao, novoCodigo)
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_TrocarCodigoDeAtivacao", hb_StrToUTF8(codigoDeAtivacaoOuEmergencia), opcao, hb_StrToUTF8(novoCodigo), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarSAT() CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConsultarSAT", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarStatusOperacional() CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConsultarStatusOperacional", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConsultarNumeroSessao(cNumeroDeSessao) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ConsultarNumeroSessao", cNumeroDeSessao, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD AtualizarSoftwareSAT() CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_AtualizarSoftwareSAT", @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ComunicarCertificadoICPBRASIL(certificado) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ComunicarCertificadoICPBRASIL", hb_StrToUTF8(certificado), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ExtrairLogs(eArquivo) CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ExtrairLogs", hb_StrToUTF8(eArquivo))
    ::CheckResult(hResult)
    RETURN nil

METHOD TesteFimAFim(eArquivoXmlVenda) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_TesteFimAFim", hb_StrToUTF8(eArquivoXmlVenda), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD GerarAssinaturaSAT(eCNPJSHW, eCNPJEmitente) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_GerarAssinaturaSAT", hb_StrToUTF8(eCNPJSHW), hb_StrToUTF8(eCNPJEmitente), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD CriarCFe(eArquivoIni) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_CriarCFe", hb_StrToUTF8(eArquivoIni), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD CriarEnviarCFe(eArquivoIni) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_CriarEnviarCFe", hb_StrToUTF8(eArquivoIni), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD EnviarCFe(eArquivoXml) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_EnviarCFe", hb_StrToUTF8(eArquivoXml), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD CancelarCFe(eArquivoXml) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_CancelarCFe", hb_StrToUTF8(eArquivoXml), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ImprimirExtratoVenda(eArqXMLVenda, eNomeImpressora) CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ImprimirExtratoVenda", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eNomeImpressora))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirExtratoResumido(eArqXMLVenda, eNomeImpressora) CLASS ACBrSat
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ImprimirExtratoResumido", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eNomeImpressora))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirExtratoCancelamento(eArqXMLVenda, eArqXMLCancelamento, eNomeImpressora) CLASS ACBrSat
    local hResult 
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_ImprimirExtratoCancelamento", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eArqXMLCancelamento), hb_StrToUTF8(eNomeImpressora))
    ::CheckResult(hResult)
    RETURN nil

METHOD GerarImpressaoFiscalMFe(eArqXMLVenda) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_GerarImpressaoFiscalMFe", hb_StrToUTF8(eArqXMLVenda), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD GerarPDFExtratoVenda(eArqXMLVenda, eNomeArquivo) CLASS ACBrSat
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_GerarPDFExtratoVenda", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eNomeArquivo), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD GerarPDFCancelamento(eArqXMLVenda, eArqXMLCancelamento, eNomeArquivo)
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_GerarPDFCancelamento", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eArqXMLCancelamento), hb_StrToUTF8(eNomeArquivo), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD EnviarEmail(eArqXMLVenda, sPara, sAssunto, eNomeArquivo, sMensagem, sCC, eAnexos)
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "SAT_EnviarEmail", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(sPara), hb_StrToUTF8(sAssunto), hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(sMensagem), hb_StrToUTF8(sCC), hb_StrToUTF8(eAnexos))
    ::CheckResult(hResult)
    RETURN nil


Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Bom dia, Fladimir eu havia tentado essa opção com o original que me parece ser xHarbour dos exemplos do acbr e esse seu código levemente modificado me apresentou os mesmos erros:

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_DLLLOAD'
Error: Unresolved external '_HB_FUN_DLLCALL'
Error: Unresolved external '_HB_FUN_DLLUNLOAD'
Warning: Public symbol '_HB_FUN_ACBRSAT' defined in both module

HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Boa tarde, apenas completando o HARBOUR usado é

Harbour 3.2.0dev (r1904111533)
Copyright (c) 1999-2019, https://harbour.github.io/

que vem com a Minigui Ext ok.

HASA
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

SAT ELGIN SMART

Mensagem por lucimauro »

Ola,
Aqui uso essa classe do acbr com varias dll e funciona 100%,
No seu .Hbp precisa da hbxpp.hbc para que funcione a funcao dllload()
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Bom dia, não localizei esse hbxpp.hbc, pode postar pelo conteúdo talvez me ajude ok ?

HASA
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

SAT ELGIN SMART

Mensagem por lucimauro »

Aqui esta em \hb32\contrib\hbxpp

as funções DllLoad(), DllCall() e DllUnload() existem sim e estão na lib hbxpp (libhbxpp.a) ( Aqui pelo Itamar)

viewtopic.php?f=4&t=24140&p=141760&hilit=dllload#p141760
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Acho que entendi, vcs estão falando da HMG ( Roberto Lopez ) e eu da MINIGUI Ext ( Do Grigory Filatov ), por isso não tem no pacote que uso.

HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Boa tarde, lendo o post sugerido mudei para funções hb_libLoad(), hb_DynCall() e hb_LibFree(), e o erro agora é outro, verificando, mas já é um avanço, obrigado.
HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SAT ELGIN SMART

Mensagem por HASA »

Boa tarde, pessoal não deu mesmo, fiz N combinações e a DLL não é carregada, depois dos ajustes não deu erro de chamada de função inexistente mas o retorno sempre é vazio e parece que deveria ser um NUMERO, obrigado a todos pela atenção.

HASA
Responder