Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. Boa tarde, meu amigo. Fiz um teste com o BaixaXml e achei fantástico. Acho que conseguirei adaptá-lo para o meu sistema. Parabéns pelo trabalho e obrigado. Eu tentei baixar um XML emitido pelo próprio cliente e deu esse erro: NFE.DistribuicaoDFePorChaveNFe("SP","35968671000125","35210135968671000125550000000001021090001029") ERRO: Rejeicao: CNPJ-Base consultado difere do CNPJ-Base do Certificado Digital Isso significa que eu não conseguirei baixar os XML emitidos pelo próprio cliente?
  2. Não fiz a NFCe ainda. Só fiz NFe, SAT e CTe
  3. Muito boa a sua dica Vilian. Eu preferi utilizar classes e não tive esse problema, mas, quem for utilizar função vai precisar dessa sua informação. Obrigado meu amigo. O erro que estava dando resolveu?
  4. Depois que eu passei a configurar o certificado usando as funções do ACBrLib o erro acabou. Dentro do programa eu faço desse jeito: Uma única vez eu crio o parâmetro, assim: oDll:=ACBrNFe():New(pDado+"ACBrLib.ini") ///////////////////////// // PRINCIPAL // ///////////////////////// oDll:ConfigGravarValor("Principal", "LogPath", cPastaTmp) oDll:ConfigGravarValor("Principal", "LogNivel", "0") // 0-Nenhum 4-Mostra Tudo oDll:ConfigGravarValor("Principal", "CodificacaoResposta", "0") // 0-UTF8 1-ANSI ///////////////////////// // DF-e // ///////////////////////// oDll:ConfigGravarValor("DFe", "ArquivoPFX", Alltrim(pDFeCerti) ) // pCertDig oDll:ConfigGravarValor("DFe", "Senha", Alltrim(pDFeSenha) ) // pCertSen oDll:ConfigGravarValor("DFe", "NumeroSerie", Alltrim(pDFeNumSer)) // É necessário ter gravado o certificao antes oDll:ConfigGravarValor("DFe", "VerificarValidade", "1") oDll:ConfigGravarValor("DFe", "SSLCryptLib", "3") // Default=1 -> 0=cryNone 1=cryOpenSSL "3=cryWinCrypt" oDll:ConfigGravarValor("DFe", "SSLHttpLib", "2") // Default=3 -> 0=httpNone 1=httpWinINet "2=httpWinHttp" 3=httpOpenSSL oDll:ConfigGravarValor("DFe", "SSLXmlSignLib", "4") // Defailt=4 -> 0=xsNone "4=xsLibXml2" oDll:ConfigGravarValor("DFe", "UF", pEstado) oDll:ConfigGravarValor("DFe", "TimeZone.Modo", "0") oDll:ConfigGravarValor("DFe", "TimeZone.Str", "") ///////////////////////// // NF-e // ///////////////////////// oDll:ConfigGravarValor("NFe", "Visualizar", "0") // 1-Mostra as mensagens de retorno 0-Não mostra oDll:ConfigGravarValor("NFe", "Ambiente", "0") // 0-producao 1-homologação oDll:ConfigGravarValor("NFe", "FormaEmissao", "0") // 0-Normal 4-Contingência SVC oDll:ConfigGravarValor("NFe", "PathArquivoMunicipios", cPastACBr+"MunIBGE") // Criar uma pasta com esses Schemas e incluir no instalador oDll:ConfigGravarValor("NFe", "PathSchemas", cPastACBr+"Schemas") // oDll:ConfigGravarValor("NFe", "IniServicos", cPastACBr+"INIS") oDll:ConfigGravarValor("NFe", "PathNFe", cPastaXml) oDll:ConfigGravarValor("NFe", "PathEvento", cPastaXml) oDll:ConfigGravarValor("NFe", "PathInu", cPastaXml) oDll:ConfigGravarValor("NFe", "PathSalvar", cPastaTmp) oDll:ConfigGravarValor("NFe", "Download.PathDownload", cPastaXml) oDll:ConfigGravarValor("NFe", "Download.SepararPorNome", "0") oDll:ConfigGravarValor("NFe", "SalvarGer", "1") oDll:ConfigGravarValor("NFe", "ExibirErroSchema", "1") oDll:ConfigGravarValor("NFe", "RetirarAcentos", "1") oDll:ConfigGravarValor("NFe", "RetirarEspacos", "1") oDll:ConfigGravarValor("NFe", "IdentarXML", "1") oDll:ConfigGravarValor("NFe", "ValidarDigest", "0") oDll:ConfigGravarValor("NFe", "IdCSC", "000001") oDll:ConfigGravarValor("NFe", "CSC", "92052b84-e609-436c-8c27-a3922e509922") oDll:ConfigGravarValor("NFe", "ModeloDF", "0") // 0=NFe 1=NFCe oDll:ConfigGravarValor("NFe", "VersaoDF", "3") // 3=Versao 4.00 oDll:ConfigGravarValor("NFe", "AtualizarXMLCancelado", "1") oDll:ConfigGravarValor("NFe", "VersaoQRCode", "2") oDll:ConfigGravarValor("NFe", "CamposFatObrigatorios", "1") // adicionar tag oDll:ConfigGravarValor("NFe", "TagNT2018005", "1") // 0 nunca 1 producao 2 somente homologacao 3 sempre oDll:ConfigGravarValor("NFe", "SalvarWS", "1") oDll:ConfigGravarValor("NFe", "Timeout", "5000") oDll:ConfigGravarValor("NFe", "TimeoutPorThread", "0") oDll:ConfigGravarValor("NFe", "SSLType", "5") // Default=0 -> 0=LT_all 1=LT_SSLv2 2=LT_SSLv3 3=LT_TLSv1 4=LT_TLSv1_1 5=LT_TLSv1_2 6=LT_SSHv2 oDll:ConfigGravarValor("NFe", "AjustaAguardaConsultaRet", "1") //sim oDll:ConfigGravarValor("NFe", "AguardarConsultaRet", "0") oDll:ConfigGravarValor("NFe", "IntervaloTentativas", "1000") oDll:ConfigGravarValor("NFe", "Tentativas", "5") oDll:ConfigGravarValor("NFe", "SalvarArq", "1") // ARQUIVOS DE EVENTOS oDll:ConfigGravarValor("NFe", "AdicionarLiteral", "0") oDll:ConfigGravarValor("NFe", "SepararPorCNPJ", "0") oDll:ConfigGravarValor("NFe", "SepararPorModelo", "0") oDll:ConfigGravarValor("NFe", "SepararPorAno", "0") oDll:ConfigGravarValor("NFe", "SepararPorMes", "0") oDll:ConfigGravarValor("NFe", "SepararPorDia", "0") oDll:ConfigGravarValor("NFe", "SalvarEvento", "1") oDll:ConfigGravarValor("NFe", "SalvarApenasNFeProcessadas", "1") oDll:ConfigGravarValor("NFe", "EmissaoPathNFe", "0") // por data de emissão oDll:ConfigGravarValor("NFe", "NormatizarMunicipios", "1") oDll:ConfigGravarValor("NFe", "IdCSRT", "") oDll:ConfigGravarValor("NFe", "CSRT", "") // NF-e - DANFE - Configuração da Impressão // oDll:ConfigGravarValor("DANFE", "Impressora", Alltrim(pNFeImpr)) oDll:ConfigGravarValor("DANFE", "MostraPreview", iif(pNFePrev,"1","0")) oDll:ConfigGravarValor("DANFE", "MostraSetup", "0") oDll:ConfigGravarValor("DANFE", "MostraStatus", "0") oDll:ConfigGravarValor("DANFE", "PathLogo", Alltrim(pNFeLogo)) oDll:ConfigGravarValor("DANFE", "PathPDF", cPastaTmp) oDll:ConfigGravarValor("DANFE", "UsaSeparadorPathPDF", "0") oDll:ConfigGravarValor("DANFE", "NomeDocumento", "") oDll:ConfigGravarValor("DANFE", "Copias", "") oDll:ConfigGravarValor("DANFE", "MargemInferior", "0,10") oDll:ConfigGravarValor("DANFE", "MargemSuperior", "0,00") oDll:ConfigGravarValor("DANFE", "MargemEsquerda", "0,00") oDll:ConfigGravarValor("DANFE", "MargemDireita", "0,00") // oDll:ConfigGravarValor("DANFE", "CasasDecimais.Formato", "0,00") // oDll:ConfigGravarValor("DANFE", "CasasDecimais.MaskqCom", "0,00") // oDll:ConfigGravarValor("DANFE", "CasasDecimais.MaskvUnCom","0,00") // oDll:ConfigGravarValor("DANFE", "CasasDecimais.qCom", "0,00") // oDll:ConfigGravarValor("DANFE", "CasasDecimais.vUnCom", "0,00") // oDll:ConfigGravarValor("DANFE", "TipoDANFE", "1") // oDll:ConfigGravarValor("DANFE", "ImprimeTotalLiquido", "") // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca", "1") // 0-expande 1-nao // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Altura", "0") // Define a altura da logo marca expandida. // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Esquerda", "0") // Define a posição a esquerda da logomarca expandida. // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Topo", "0") // Define a posição ao topo da logomarca expandida. // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Largura", "0") // Define a largura da logomarca expandida. // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Dimensionar","0") // Define a logomarca expandida deve esticar no tamanho total ou não. 0 = Não 1 = Sim // oDll:ConfigGravarValor("DANFE", "ExpandeLogoMarca.Esticar", "0") // Define a logomarca expandida deve esticar no tamanho total ou não. 0 = Não 1 = Sim // NF-e - Configuração do Email // oDll:ConfigGravarValor("Email", "Nome", Alltrim(TrocAcentos(pNome))) oDll:ConfigGravarValor("Email", "Servidor", pSmtp) oDll:ConfigGravarValor("Email", "Conta", pEmail) oDll:ConfigGravarValor("Email", "Usuario", pEmail) oDll:ConfigGravarValor("Email", "Senha", pSenhMail) oDll:ConfigGravarValor("Email", "Porta", Alltrim(Str(pPortMail))) oDll:ConfigGravarValor("Email", "SSL", iif(pSsl="S","1","0")) oDll:ConfigGravarValor("Email", "Codificacao", "") oDll:ConfigGravarValor("Email", "TLS", "0") oDll:ConfigGravarValor("Email", "Timeout", "0") oDll:ConfigGravarValor("Email", "Confirmacao", "0") oDll:ConfigGravarValor("Email", "ConfirmacaoEntrega", "0") oDll:ConfigGravarValor("Email", "SegundoPlano", "0") oDll:ConfigGravarValor("Email", "Tentativas", "1") oDll:ConfigGravarValor("Email", "IsHTML", "0") oDll:ConfigGravarValor("Email", "Priority", "1") oDll:ConfigGravarValor("Emissor", "CNPJ", StrNum(pCGC,.F.)) oDll:ConfigGravarValor("Emissor", "RazaoSocial", Alltrim(TrocAcentos(pNome ))) oDll:ConfigGravarValor("Emissor", "NomeFantasia", Alltrim(TrocAcentos(pAbrev))) // Salva as configurações // oDll:ConfigGravar(pDado+"ACBrLib.ini") // Finaliza a DLL // oDll:Destroy() oDll:=nil Depois, eu consulto o SERVIÇO SEFAZ assim: ////////////////////////////////////// // INICIA A NFe COM O ACBrNFe32.DLL // ////////////////////////////////////// nfe:=ACBrNFe():New(pDado+"ACBrLib.ini") ////////////////////////////////////// // CONSULTA O SERVIÇO SEFAZ // ////////////////////////////////////// lRet := "" nfe:ConfigGravarValor("NFE", "Visualizar", "1") // 1-Mostra as mensagens de retorno 0-Não mostra lRet:=nfe:StatusServico()
  5. Eu tive esse erro no início e era o certificado digital que eu não estava conseguindo configurar.
  6. Essa classe está redondinha. Se preferir, trabalhe com ela. ACBrNFe.prg
  7. Tente deixar essa opção com o número 4 que ele mostra tudo o que está acontecendo e retorna o erro em detalhes. oDll:ConfigGravarValor("Principal", "LogNivel", "4") // 0-Nenhum 4-Mostra Tudo Eu uso assim e está funcionando: nfe:ConfigGravarValor("NFE", "Visualizar", "1") // 1-Mostra as mensagens de retorno 0-Não mostra lRet:=nfe:StatusServico()
  8. Crie em tempo de execução oDll:=ACBrNFe():New(pDado+"ACBrLib.ini") ///////////////////////// // PRINCIPAL // ///////////////////////// oDll:ConfigGravarValor("Principal", "LogPath", cPastaTmp) oDll:ConfigGravarValor("Principal", "LogNivel", "0") // 0-Nenhum 4-Mostra Tudo oDll:ConfigGravarValor("Principal", "CodificacaoResposta", "0") // 0-UTF8 1-ANSI ///////////////////////// // DF-e // ///////////////////////// oDll:ConfigGravarValor("DFe", "ArquivoPFX", Alltrim(pDFeCerti) ) // pCertDig oDll:ConfigGravarValor("DFe", "Senha", Alltrim(pDFeSenha) ) // pCertSen oDll:ConfigGravarValor("DFe", "NumeroSerie", Alltrim(pDFeNumSer)) // É necessário ter gravado o certificao antes oDll:ConfigGravarValor("DFe", "VerificarValidade", "1") oDll:ConfigGravarValor("DFe", "SSLCryptLib", "3") // Default=1 -> 0=cryNone 1=cryOpenSSL "3=cryWinCrypt" oDll:ConfigGravarValor("DFe", "SSLHttpLib", "2") // Default=3 -> 0=httpNone 1=httpWinINet "2=httpWinHttp" 3=httpOpenSSL oDll:ConfigGravarValor("DFe", "SSLXmlSignLib", "4") // Defailt=4 -> 0=xsNone "4=xsLibXml2" oDll:ConfigGravarValor("DFe", "UF", pEstado) oDll:ConfigGravarValor("DFe", "TimeZone.Modo", "0") oDll:ConfigGravarValor("DFe", "TimeZone.Str", "") A senha precisa ser gravada pelo ACBrLib, pois ela é criptografada
  9. Vilian, tudo bem? O ACBrLib cria um arquivi .INI padrão e funcional. Daí você só altera o que precisar.
  10. Boa tarde, Rochinha. Eu baixei os fontes do ACBrLib e compilei com o Lazarus. Está tudo funcionando perfeitamente, inclusive o envio direto para a impressora, sem o preview. Aqui as LIBs do ACBr de NF-e, CT-e, SAT e Mail estão rodando 100% É muito fácil baixar os fontes e criar as DLLs com o Lazarus.
  11. Configurei as três classes NF-e, SAT e CT-e para xHarbour seguindo o exemplo do site do ACBr. Está tudo rodando perfeitamente. É muito mais rápido e funcional que o ACBrMonitor por não haver troca de arquivos.
  12. Só precisa das DLLs e dos Schemas atualizados da NF-e
  13. Ariston, Monte um exemplo completo que pode ser compilado lá no c:\fwh\samples\ usando o buildx.bat. Com esse exemplo completo poderemos trabalhar nele, melhorá-lo e disponibilizar para todos. Obrigado.
  14. Pessoal, As bibliotecas do ACBr estão funcionando 100%. É tudo muito mais prático e rápido comparado ao ACBrMonitor. Estou rodando NF-e, SAT-e e CT-e com as DLLs. Se precisarem de ajuda é só avisar.
  15. Pessoal, Não consigo imprimir NFe e SAT dentro do mesmo programa usando as DLL. Não sei se é um problema local ou se é na DLL. É possível vocês testarem aí e me dizer se o problema acontece aí também? Se possível, compilem o ACBrTest.prg no seu Fivewin para xHarbour e veja se consegue imprimir a NFe e o SAT sem fechar o programa. Coloquem na mesma pasta o ACBrNFe32.dll e o ACBrS?AT32.dll. Obrigado. #include 'FIVEWIN.CH' #define DLL_CDECL 0x08 #define DLL_STDCALL 0x20 #define DLL_SYSTEM 0x04 #define STR_LEN 256 function Main() local oWnd define window oWnd from 5,5 to 30,85 title "ACBrLib Teste" @ 3,10 BUTTON "Imprime NF-e" size 100,50 OF oWnd ACTION ImprimirNFE() @ 3,40 BUTTON "Imprime SAT" size 100,50 OF oWnd ACTION ImprimirSAT() set message of oWnd to "Teste ACBrLib" date time noinset activate window oWnd centered return nil static function ImprimirNFE(eArquivoOuXml, cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) local hResult, bufferLen, buffer, oErr local oDll := DllLoad( 'ACBrNFe32.dll' ) eArquivoOuXml := if(eArquivoOuXml=nil, "acbrnfe.xml", eArquivoOuXml) cImpressora := if(cImpressora=nil, "", cImpressora) nNumCopias := if(nNumCopias=nil, 1, nNumCopias) cProtocolo := if(cProtocolo=nil, "", cProtocolo) bMostrarPreview := if(bMostrarPreview=nil, "True", bMostrarPreview) cMarcaDagua := if(cMarcaDagua=nil, "", cMarcaDagua) bViaConsumidor := if(bViaConsumidor=nil, "", bViaConsumidor) bSimplificado := if(bSimplificado=nil, "", bSimplificado) hResult := DllCall(oDll, DLL_STDCALL, "NFE_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8("")) hResult := DllCall(oDll, DLL_STDCALL, "NFE_CarregarXML", hb_StrToUTF8(eArquivoOuXml)) hResult := DllCall(oDll, DLL_STDCALL, "NFE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado)) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := DllCall(oDll, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen) MsgStop(buffer, "Erro: "+Str(hResult)) endif DllCall(oDll, DLL_STDCALL, "NFE_Finalizar") DllUnload(oDll) return nil static function ImprimirSAT(eArquivoOuXml, cImpressora) local hResult, bufferLen, buffer, oErr local oDll := DllLoad( 'ACBrSat32.dll' ) eArquivoOuXml := if(eArquivoOuXml=nil, "acbrsat.xml", eArquivoOuXml) cImpressora := if(cImpressora=nil, "", cImpressora) hResult := DllCall(oDll, DLL_STDCALL, "SAT_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8("")) hResult := DllCall(oDll, DLL_STDCALL, "SAT_ImprimirExtratoVenda", hb_StrToUTF8(eArquivoOuXml), hb_StrToUTF8(cImpressora)) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := DllCall(oDll, DLL_STDCALL, "SAT_UltimoRetorno", @buffer, @bufferLen) MsgStop(buffer, "Erro: "+Str(hResult)) endif DllCall(oDll, DLL_STDCALL, "SAT_Finalizar") DllUnload(oDll) return nil ACBrTest.zip
  16. Lá no fórum esse assunto está em alta. Tem vários programadores usando e testando. Acho que em breve teremos uma LIB dessa função. Se você compilar os fontes acho que já dá para usar.
  17. Jorge, tentei o nfe_limparlista e o nfe_limparlistaeventos mas o erro na impressão persiste. Algo fica configurado na memória depois da impressão da nota que impede a impressão do sat e vice-versa.
  18. Obrigado. Qual é a sua sugestão? Se possível, me aceite no Skype
  19. Pessoal, estou terminando as rotinas para uso das DLL do ACBr para (NFe, SAT e CTe). Agora apenas com alguns poucos erros. Se precisarem de ajuda, conte comigo. Já trilhei o caminho mais difícil com a ajuda do Jorge.
  20. O comando de limpar a memória é o SAT_Finalizar e NFE_Finalizar ?
  21. As rotinas são as das DLLs correspondentes. Não faço nada de diferente. Se eu só imprimo SAT não dá erro. Se eu só imprimo NFe não dá erro. Mas se eu imprimo um e depois vou imprimir o outro dá erro -10 retorno do comando e não imprime. Segue: SAT METHOD ImprimirExtratoVenda(eArqXMLVenda, eNomeImpressora) CLASS ACBrSat local hResult eNomeImpressora := if(eNomeImpressora=nil, "", eNomeImpressora) hResult := DllCall(::hHandle, DLL_STDCALL, "SAT_ImprimirExtratoVenda", hb_StrToUTF8(eArqXMLVenda), hb_StrToUTF8(eNomeImpressora)) ::CheckResult(hResult) RETURN nil NFE METHOD Imprimir(cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) CLASS ACBrNFe local hResult cImpressora := if(cImpressora=nil, "", cImpressora) nNumCopias := if(nNumCopias=nil, 1, nNumCopias) cProtocolo := if(cProtocolo=nil, "", cProtocolo) bMostrarPreview := if(bMostrarPreview=nil, "True", bMostrarPreview) cMarcaDagua := if(cMarcaDagua=nil, "", cMarcaDagua) bViaConsumidor := if(bViaConsumidor=nil, "", bViaConsumidor) bSimplificado := if(bSimplificado=nil, "", bSimplificado) hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado)) ::CheckResult(hResult) RETURN nil
  22. Depois de imprimir o SAT uma vez, a biblioteca dá erro quando tento imprimir o próximo SAT. Se eu saio do sistema e entro novamente ele volta a imprimir. Alguém já passou por isso?
  23. Pessoal, Estou com as rotinas do ACBrNFe32.Dll e ACBrSAT32.Dll funcionando, vou trabalhar agora com o ACBrCTe32.Dll. Daí eu deixarei o ACBrMonitorPLUS no banco de reservas. Se precisarem de ajuda. Avisem.
×
×
  • Create New...