
TimeB256
Membros Pro-
Total de ítens
70 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que TimeB256 postou
-
Capturei o seguinte erro em um dos meus monitores de NFE e gostaria de auxilio pra uma possivel solução, visto que o erro simplesmente derruba a aplicação prejudicando o funcionamento continuo dela
-
AcbrCTeServico? acbrcteservico = null; try { if (empresacteselecaomodel.datahoraultimaconsulta.AddHours(1).AddMinutes(1) > DateTime.Now.ToSATimeZone()) return; CertificadoResumoModel certificadodigitalkeevo = _keevocentercertificadoservico.SelecionarPorParametros(empresacteselecaomodel.idempresaevocenter, empresacteselecaomodel.idmaster, AplicativoModel.en_aplicativo.Manifestacao.ToInt()); if (certificadodigitalkeevo is null || certificadodigitalkeevo.tipocertificado == en_tipocertificado.A3.ToInt() || certificadodigitalkeevo.idcertificado == Guid.Empty) return; if (certificadodigitalkeevo != null && certificadodigitalkeevo.idcertificado != Guid.Empty && certificadodigitalkeevo.datavalidade.CompareTo(DateTime.Now.Date.ToSATimeZone()) < 0) { _logger.LogInformation($"[MONITOR_CAPTURA_CTE] O certificado {certificadodigitalkeevo.nomecertificado} da empresa [{empresacteselecaomodel.idmaster}]{empresacteselecaomodel.razaosocial}:{empresacteselecaomodel.cnpj} está vencido! Validade: {certificadodigitalkeevo.datavalidade}"); } else if (certificadodigitalkeevo != null && certificadodigitalkeevo.idcertificado != Guid.Empty && certificadodigitalkeevo.tipocertificado == en_tipocertificado.A1.ToInt()) { LogarInformacaoEmpresa(empresacteselecaomodel.idmaster, empresacteselecaomodel); acbrcteservico = new AcbrCTeServico(empresacteselecaomodel, certificadodigitalkeevo); long retornoNsu = Convert.ToInt64(empresacteselecaomodel.ultimonsu); long maxNsu = 0; do { var resposta = acbrcteservico.DistribuicaoDFe(); if (!resposta.CStat.Equals(DOCUMENTO_ENCONTRADO) || resposta.CStat.Equals(CONSUMO_INDEVIDO)) { LogarInformacaoBuscaCte(empresacteselecaomodel, resposta); break; } await ProcessarRespostaDistribuicaoDFe(resposta, empresacteselecaomodel); long ultimoNsuConsulta = Convert.ToInt64(empresacteselecaomodel.ultimonsu); maxNsu = Convert.ToInt64(resposta.maxNSU); LogarInformacaoBuscaCte(empresacteselecaomodel, resposta); retornoNsu = Convert.ToInt64(resposta.ultNSU); await SalvarConfiguracaoParametrosEmpresaCte(empresacteselecaomodel, resposta.ultNSU); if (ultimoNsuConsulta == maxNsu) break; } while (retornoNsu <= maxNsu); } } catch (Exception ex) { LogarException(ex, "ProcessarEmpresa"); } finally { //acbrcteservico?.Dispose(); try { semaphoreempresa.Release(); } catch (Exception e) { LogarException(e); } } } Trcho do codigo e logs
-
Olá a todos, Estou enfrentando um problema ao processar documentos fiscais usando o Monitor de Captura CTe. A exceção ocorre ao tentar configurar o certificado digital e parece estar relacionada a uma sessão que não existe no arquivo de configuração. Aqui está a mensagem de erro completa: info: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0] [MONITOR_CAPTURA_CTE] INICIANDO PROCESSAMENTO DA EMPRESA [572455] - 21459379000172:TKW DECOR LTDA fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0] [MONITOR_CAPTURA_CTE][ProcessarEmpresa] Ocorreu uma exceção ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna: - StackTrace: at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret) at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoResumoModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53 at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 207 Alguém já se deparou com esse tipo de erro ou tem alguma ideia de como resolvê-lo? Aqui estão algumas informações adicionais: Estou usando a biblioteca ACBrLib para configurar o certificado digital. O erro parece ocorrer na função ConfigurarCertificado. Verifiquei o arquivo de configuração, mas não encontrei problemas óbvios. Ao verifiar mais percebi que o erro acontecia no Checkresult um metodo da biblioteca do acbr que esta compilado no meu projeto, resultando nos erros que estão nos prints Abaixo o trecho do meu codigo: AcbrCTeServico? acbrcteservico = null; try { if (empresacteselecaomodel.datahoraultimaconsulta.AddHours(1).AddMinutes(1) > DateTime.Now.ToSATimeZone()) return; CertificadoResumoModel certificadodigitalkeevo = _keevocentercertificadoservico.SelecionarPorParametros(empresacteselecaomodel.idempresaevocenter, empresacteselecaomodel.idmaster, AplicativoModel.en_aplicativo.Manifestacao.ToInt()); if (certificadodigitalkeevo is null || certificadodigitalkeevo.tipocertificado == en_tipocertificado.A3.ToInt() || certificadodigitalkeevo.idcertificado == Guid.Empty) return; if (certificadodigitalkeevo != null && certificadodigitalkeevo.idcertificado != Guid.Empty && certificadodigitalkeevo.datavalidade.CompareTo(DateTime.Now.Date.ToSATimeZone()) < 0) { _logger.LogInformation($"[MONITOR_CAPTURA_CTE] O certificado {certificadodigitalkeevo.nomecertificado} da empresa [{empresacteselecaomodel.idmaster}]{empresacteselecaomodel.razaosocial}:{empresacteselecaomodel.cnpj} está vencido! Validade: {certificadodigitalkeevo.datavalidade}"); } else if (certificadodigitalkeevo != null && certificadodigitalkeevo.idcertificado != Guid.Empty && certificadodigitalkeevo.tipocertificado == en_tipocertificado.A1.ToInt()) { LogarInformacaoEmpresa(empresacteselecaomodel.idmaster, empresacteselecaomodel); acbrcteservico = new AcbrCTeServico(empresacteselecaomodel, certificadodigitalkeevo); long retornoNsu = Convert.ToInt64(empresacteselecaomodel.ultimonsu); long maxNsu = 0; do { var resposta = acbrcteservico.DistribuicaoDFe(); if (!resposta.CStat.Equals(DOCUMENTO_ENCONTRADO) || resposta.CStat.Equals(CONSUMO_INDEVIDO)) { LogarInformacaoBuscaCte(empresacteselecaomodel, resposta); break; } await ProcessarRespostaDistribuicaoDFe(resposta, empresacteselecaomodel); long ultimoNsuConsulta = Convert.ToInt64(empresacteselecaomodel.ultimonsu); maxNsu = Convert.ToInt64(resposta.maxNSU); LogarInformacaoBuscaCte(empresacteselecaomodel, resposta); retornoNsu = Convert.ToInt64(resposta.ultNSU); await SalvarConfiguracaoParametrosEmpresaCte(empresacteselecaomodel, resposta.ultNSU); if (ultimoNsuConsulta == maxNsu) break; } while (retornoNsu <= maxNsu); } } catch (Exception ex) { LogarException(ex, "ProcessarEmpresa"); } finally { //acbrcteservico?.Dispose(); try { semaphoreempresa.Release(); } catch (Exception e) { LogarException(e); } } }
-
Eu no momento nao tenho ambiente linux fora do docker para testar. Vou ter que solicitar a minha TI.
-
Complementando: meu arquivo start.sh está configurado da seguinte forma: #!/bin/bash if [ -f /tmp/.X99-lock ]; then rm /tmp/.X99-lock fi Xvfb :99 -screen 0 1280x1024x24 -ac +extension GLX +render -noreset & dotnet Api.Dfe.dll
-
Daniel, obrigado pelo retorno. Meu projeto só tem as referências das bibliotecas acbr. no momento já estamos utilizando o xvfb no nosso ambiente e este erro ocorre "do nada" em algum momento na API. Utilizado o método de distribuição dfe para captura de nfe, cte, mas já retirei os métodos que geram o PDF para Danfe e Dacte que ao meu ver poderia ser o problema...
-
Bom dia, tenho um monitor rodando em um container Docker. O objetivo dele é fazer a captura de cte. Estou com o seguinte problema, capturado pelo log da aws no ecs. (dotnet:8): GLib-GObject-WARNING **: 12:10:48.286: cannot register existing type 'GdkDisplay' (dotnet:8): GLib-CRITICAL **: 12:10:48.286: g_once_init_leave: assertion 'result != 0' failed (dotnet:8): GLib-GObject-CRITICAL **: 12:10:48.286: g_type_register_static: assertion 'parent_type > 0' failed (dotnet:8): GLib-CRITICAL **: 12:10:48.286: g_once_init_leave: assertion 'result != 0' failed (dotnet:8): GLib-GObject-CRITICAL **: 12:10:48.286: g_object_new_with_properties: assertion 'G_TYPE_IS_OBJECT (object_type)' failed (dotnet:8): GLib-GObject-WARNING **: 12:10:48.285: cannot register existing type 'GdkDisplayManager' (dotnet:8): GLib-CRITICAL **: 12:10:48.285: g_once_init_leave: assertion 'result != 0' failed (dotnet:8): GLib-GObject-CRITICAL **: 12:10:48.285: g_object_new_with_properties: assertion 'G_TYPE_IS_OBJECT (object_type)' failed (dotnet:8): GLib-GObject-WARNING **: 12:10:48.285: invalid (NULL) pointer instance (dotnet:8): GLib-GObject-CRITICAL **: 12:10:48.285: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed (dotnet:8): GLib-GObject-WARNING **: 12:10:48.285: invalid (NULL) pointer instance (dotnet:8): GLib-GObject-CRITICAL **: 12:10:48.285: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed Se eu logo no container do Docker (docker container logs de94a1629f5b): (dotnet:9): GLib-GObject-WARNING **: 12:45:51.851: cannot register existing type 'GdkWindow' (dotnet:9): GLib-GObject-CRITICAL **: 12:45:51.851: g_object_new_with_properties: assertion 'G_TYPE_IS_OBJECT (object_type)' failed (dotnet:9): GLib-GObject-WARNING **: 12:45:51.851: cannot register existing type 'GdkWindowImpl' (dotnet:9): GLib-GObject-CRITICAL **: 12:45:51.851: g_type_interface_add_prerequisite: assertion 'G_TYPE_IS_INTERFACE (interface_type)' failed (dotnet:9): GLib-GObject-CRITICAL **: 12:45:51.851: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed start.sh: line 7: 9 Segmentation fault (core dumped) dotnet Dfe.Monitor.CapturaCte.dll Alguém conseguiria ajudar ?
-
Prezados, boa tarde. Tenho um monitor para capturar os conhecimentos de transporte, e começou a apresentar o seguinte erro: Exceção: Sessão não [%s] existe no arquivo de configuração O erro completo é: fail: Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker[0] [MONITOR_CAPTURA_CTE][ProcessarEmpresa] Ocorreu uma exceção ao processar documento fiscal. Exceção: Sessão não [%s] existe no arquivo de configuração - Exceção interna: - StackTrace: at Keevo.Pacotes.Infra.ACBrLib.Core.ACBrLibHandle.CheckResult(Int32 ret) at Dfe.Monitor.CapturaCte.Servicos.AcbrCTeServico.ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoResumoModel certificadodigitalkeevo) in /src/Servicos/AcbrCTeServico.cs:line 53 at Dfe.Monitor.CapturaCte.Workers.CapturaCte.CapturaCteWorker.ProcessarEmpresa(EmpresaParametrosCteSelecaoModel empresacteselecaomodel, SemaphoreSlim semaphoreempresa) in /src/Workers/CapturaCte/CapturaCteWorker.cs:line 186 Conseguem me ajudar por favor ? Desde já agradeço. **** A minha classe de serviço está configurada da seguinte forma: using Autorizacao.Infra.IntegracaoApi.Certificado; using Dfe.Pacotes.Infra.IntegracaoApi.Models.Passaporte; using Keevo.Pacotes.Infra.ACBrLib.Core.DFe; using Keevo.Pacotes.Infra.ACBrLib.CTe; using Keevo.Pacotes.Infra.ACBrLib.CTe.Models; using Keevo.Pacotes.Infra.ACBrLib.NFe; using Keevo.Pacotes.Infra.ACBrLib.NFSe; using Keevo.Pacotes.Infra.Utils.Conversao; using Keevo.Pacotes.Infra.Utils.Diretorio; namespace Dfe.Monitor.CapturaCte.Servicos { public class AcbrCTeServico : IDisposable { public ACBrCTe acbrcte { get; set; } public EmpresaParametrosCteSelecaoModel empresacte { get; set; } public CertificadoResumoModel certificadodigitalkeevo { get; set; } public AcbrCTeServico(EmpresaParametrosCteSelecaoModel empresacte, CertificadoResumoModel certificadodigitalkeevo) { acbrcte = new(); this.empresacte = empresacte; this.certificadodigitalkeevo = certificadodigitalkeevo; ConfigurarCertificado(); } public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe() => TratarDfeResposta(acbrcte.DistribuicaoDFe(empresacte.codigonfe.ToInt(), empresacte.cnpj, empresacte.ultimonsu ?? ("0").PadLeft(15, '0'), "")); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe(long ultimonsu) => DistribuicaoDFe(ultimonsu.ToString().PadLeft(15, '0')); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoDFe(string ultimonsu) => TratarDfeResposta(acbrcte.DistribuicaoDFe(empresacte.codigonfe.ToInt(), empresacte.cnpj, ultimonsu, "")); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorNSU(long nsu) => DistribuicaoCtePorNSU(nsu.ToString().PadLeft(15, '0')); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorNSU(string nsu) => TratarDfeResposta(acbrcte.DistribuicaoDFePorNSU(empresacte.codigonfe.ToInt(), empresacte.cnpj, nsu)); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorChave(string chave) => DistribuicaoCtePorChave(empresacte, chave); public DistribuicaoDFeResposta<TipoCTe> DistribuicaoCtePorChave(EmpresaParametrosCteSelecaoModel empresacte, string chave) => TratarDfeResposta(acbrcte.DistribuicaoDFePorChave(empresacte.codigonfe.ToInt(), empresacte.cnpj, chave)); public DistribuicaoDFeResposta<TipoCTe> TratarDfeResposta(string resposta) => DistribuicaoDFeResposta<TipoCTe>.LerResposta(resposta); private void ConfigurarCertificado() { ConfigurarCertificado(acbrcte, certificadodigitalkeevo); } public static void ConfigurarCertificado(ACBrCTe acbrCTe, CertificadoResumoModel certificadodigitalkeevo) { acbrCTe.Config.DFe.SSLCryptLib = GetSSLCryptLib(); acbrCTe.Config.DFe.SSLHttpLib = GetSSLHttpLib(); acbrCTe.Config.DFe.SSLXmlSignLib = SSLXmlSignLib.xsLibXml2; acbrCTe.Config.DFe.DadosPFX = certificadodigitalkeevo.arquivocertificado; acbrCTe.Config.DFe.Senha = certificadodigitalkeevo.senha; acbrCTe.Config.Ambiente = TipoAmbiente.taProducao; acbrCTe.Config.SalvarArq = false; acbrCTe.Config.SalvarGer = false; //Configurações para processamento acbrCTe.Config.SSLType = SSLType.LT_TLSv1_2; acbrCTe.Config.Timeout = 25000; acbrCTe.Config.AguardarConsultaRet = 0; acbrCTe.Config.Tentativas = 5; acbrCTe.Config.IntervaloTentativas = 1000; acbrCTe.Config.PathSchemas = KeevoDiretorio.AppPath() + @"/Schemas/CTe"; } private static SSLCryptLib GetSSLCryptLib() => ACBrCTe.IsWindows ? SSLCryptLib.cryWinCrypt : SSLCryptLib.cryOpenSSL; private static SSLHttpLib GetSSLHttpLib() => ACBrCTe.IsWindows ? SSLHttpLib.httpWinHttp : SSLHttpLib.httpOpenSSL; public void Dispose() { acbrcte.Dispose(); } } }
-
Obrigado pelo retorno, @Diego Foliene Só pra ratificar, a "Empresa Teste" gerou uma nota de saída e colocou a tag autXML com o cnpj da "Contabilidade ABC"? Quando eu chamar o método DistribuicaoDFe, neste caso eu deveria passar como parâmetro o cnpj da Empresa Teste ou da Contabilidade ABC? Como baixar estas notas de saída que a empresa teste gerou, usando as dll's da acbr? Consegue exemplificar? Falar qual método exato ? Te agradeço a paciência, rs...
-
Obrigado pelos retornos, mas ainda estou na dúvida sobre: Hoje eu uso o código abaixo para capturar as notas de entrada das minhas empresas. acbrcteservico = new AcbrCTeServico(empresacteselecaomodel, certificadodigitalkeevo); var resposta = acbrcteservico.DistribuicaoDFe(); Até aí 100%. Só que vamos no caso que ainda está pendente. Se eu sou a contabilidade, e tenho10 empresas, se eu usar a distribuição DFe por último NSU, vou conseguir baixar todos xmls com CNPJs relacionados na autXML pelos meus 10 clientes ? Desde já agradeço a atenção.
-
Eu tenho um serviço que lê todas as empresas de uma determinada contabilidade, e faz a captura das notas: Veja o código resumido: acbrcteservico = new AcbrCTeServico(empresacteselecaomodel, certificadodigitalkeevo); var resposta = acbrcteservico.DistribuicaoDFe(); Eu instancio o servico da acbr, passando a empresa e certificado, e obtenho uma resposta. Dps leio essa resposta e salvo os dados. Imagine o seguinte cenário: Empresa A vendeu algum produto para Empresa B Emitente: Empresa A Destinatário: Empresa B No xml tem a tag AutXml com os dados da Contabilidade. Então, no código citado eu passaria os dados da empresa A. Dúvida: Se eu usar o método DistribuicaoDFe, vou conseguir capturar essa nota de saída que a empresa A emitiu ? Ou o método só captura nota de entrada?qual metodo vou usar para capturar notas de saída usando a tag autxml ?