Ir para conteúdo
  • Cadastre-se

Paulo Tenório

Membros
  • Total de ítens

    274
  • Registro em

  • Última visita

Tudo que Paulo Tenório postou

  1. Agora normalizou, removi o componente acbrnfe e inseri novamente e, além de solicitar o comando de envio do XML com o parâmetro para assinar, para garantir, coloquei um comando nfe.assinar.. Euzébio, veja você mesmo. Eu anexei dois XMLs no início do post, os dois autorizados pela SEFAZ. Um tem a tag signature o outro não. Experimentei fazer o download pelo portal e o arquivo veio idêntico. [RESOLVIDO]
  2. Instalou os drivers do leitor do cartão? Se for A3 da Certisign, eles têm um aplicativo que confere tudo, versão do JAVA, atualizações do sistema, cadeias de Certificados e drivers necessárias para o perfeito funcionamento. Ele instala e configura quase tudo. Se já conferiu tudo, sugiro que ligue para o suporte de onde o Certificado foi adquirido. Eles saberão exatamente onde e como deve configurar. Sofri muito com isso quando usava o A3. É mais barato mas tem um monte de limitações e problemas. Agora, com o Certificado A1 e OpenSSL só tenho alegrias.
  3. Informe o Sistema Operacional, o tipo do Certificado e a versão SSL que está usando para poder ter uma ajuda mais específica..
  4. Olhei os XML sim. Realmente os gerados pelas filiais estão sem a TAG Signature. Custei a acreditar que a SEFAZ autoriza XMLs sem essa TAG, só não sei se eles podem alegar que esses arquivos não têm valor em caso de fiscalização, uma vez que foram emitidos recibos, protocolos e autorizações de uso..
  5. Boa tarde amigos, O contador da empresa em que trabalho começou a nos enviar e-mails sobre falha na validação do arquivo de algumas NF-es. Essas notas estão classificadas como rejeitadas pelos servidores deles, que utilizam os mesmos recursos da SEFAZ-RS (https://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx). Inicialmente rebati a alegação, afirmando que as referidas notas foram enviadas e, como estão devidamente autorizadas pela SEFAZ, são válidas. Comparando os arquivos XML das notas rejeitadas com as notas validadas, a única diferença que encontrei foi o local de geração do arquivo XML. As filiais geram localmente os arquivos XML e copiam para um Servidor na Matriz onde roda o ACBrNFeMonitor Plus (atualmente a versão 0.3.04.1), responsável pelo envio à SEFAZ. Todas as geradas na própria Matriz recebem a tag: <signature xmlns="http://www.w3.org/2000/09/xmldsig#"> e todas as geradas na filiais remotas ficam sem. Em anexo dois XMLs de mesma natureza, um emitido pela matriz e outro por uma filial e ambos transmitidos pelo mesmo servidor e, abaixo, os resultados das validações: Matriz Resultado da Validação do Schema e de Regras de Negócio: Parser XML: Nenhum erro encontrado Tipo de Mensagem: Documento de Processamento da NF-e Schema XML: Nenhum erro encontrado NF-e 32160427550193000100550010000212511859537000 Certificado Digital do Titular: CN=OTICAS PARIS LTDA [Visualizar] Assinatura Digital: Válida Filial: Resultado da Validação do Schema e de Regras de Negócio: Parser XML: Nenhum erro encontrado Tipo de Mensagem: Documento de Processamento da NF-e Schema XML: The element 'NFe' in namespace 'http://www.portalfiscal.inf.br/nfe' has incomplete content. List of possible elements expected: 'infNFeSupl' in namespace 'http://www.portalfiscal.inf.br/nfe' as well as 'Signature' in namespace 'http://www.w3.org/2000/09/xmldsig#'. Caminho: nfeProc/NFe[1]/ Em nenhuma parte do processo ocorre erro e os dois XMLs estão autorizados. A assinatura ocorre somente no momento do envio, através do parâmetro no comando: Modulo.SolicitaMonitor('Nfe.Enviarnfe("' + Trim(NOTASFISCAIS.FieldByName('Nfe_Arqxml').Asstring) + '", ' + NOTASFISCAIS.FieldByName('NUMERO_SEQUENCIAL_NF').Asstring + ', 1, 1)'); Alguma sugestão ou orientação para solucionar o caso? Obrigado. 32160427550193000100550010000212511859537000-nfe.xml 32160427550193001859550010000014841000014847-nfe.xml
  6. Bom dia amigos, Retorno hoje 04/04/2016 para confirmar a feliz migração de servidor e troca de certificado. Está rodando lisinho o ACBrNFeMonitor Plus no Windows Server 2012 R2 com Certificado A1 (OpenSSL) desde a última sexta-feira. Obrigado Daniel, pelo incentivo e orientação. Obrigado Equipe ACBr.
  7. Desculpe, é o Plus mesmo. Nem considero mais a refererência ao anterior.
  8. Boa tarde Maurício, rodo com inicialização automático de usuário. É necessário logar como usuário no servidor, o ACBRNfeMonitor não roda como serviço.
  9. Mais uma vez, obrigado Daniel. Já vou providenciar a compra do A1 e instalação do Server.
  10. Corrigindo, a Versão do Server é 2008 R2 e não 2012 R2.
  11. Bom dia Daniel, obrigado pela resposta. Me diga mais uma coisa, o A1 com OpenSSL vai funcionar bem tanto no Server 2012 R2 quanto no Windows 10 Pro?
  12. Boa noite amigos, Atualmente centralizo todos os processos de Documentos Eletrônicos com o ACBrNFeMonitor Plus em um Servidor com windows 2003 Standard, rodando num hardware já ultrapassado e limitado a 4Gb de RAM pela versão do Windows Server. Compramos uma máquina mais parruda, i5 com 16 Gb de RAM, HD SSD, etc. Compramos também uma licença de Windows Server 2012 R2 mas deparei-me com um problema sério. Não existe suporte nem recomendação para usar o Certificado A3 em servidores (embora existam meios de realizar isso com alguns ajustes ocultos mas só consegui fazer isso no Server 2003). Segundo a Certisign, isso não pode nem deve ser feito, não existindo suporte para tal instalação... Parece que o Windows Server não roda uns ActiveX necessários. Será que dará certo desistir do servidor e instalar o Windows 10 Pro nessa máquina para realizar as solicitações de toda a rede, via TCP/IP, ou terei problemas com limitação de acessos simultâneos e compartilhamentos? Vou renovar nosso certificado nos próximos dias. É recomendável migrar para o A1 e usar SSL ou devo manter o A3 com Capicom? Já vi casos de pessoas que usam o server 2008 R2 mas em conexões TS, copiando o certificado A1 para cada máquina e usando Terminal Service, não é o meu caso. Os usuários remotos entram por VPN e, juntamente com os usuários locais, acessam os servições do monitor por TCP/IP. Alguém já passou por isso e conseguiu encontrar uma solução? Obrigado.
  13. Boa tarde. Obrigado pela confiança depositada em mim para ajuda-lo. Vou fazer meus comentários mas sugiro que não deixe de ouvir outras opiniões, assim como você sou um simples membro e usuário do fórum. Sendo você um usuário SAC, pode se comunicar diretamente com os criadores do componente e do ACBrMonitor. Respondendo às suas perguntas: "Sim", eu faço todo o trabalho que envolve Documentos Fiscais Eletrônicos através do Componente ACBrNFe em conjunto com o ACBrMonitor Plus. Em cada terminal que precisa gerar um documento é criado o XML inicial, alimentado pelos usuários utilizando meu sistema, através do componente ACBrNFe e com preview exibido pelo DANFE para Fortes Report. Depois de criado o registro no banco de dados, alimentado o componente, visualizado e considerado pronto, o usuário dispara um procedimento que copia o XML para a pasta de trabalho do ACBrNFeMonitor. Deste ponto em diante, tudo é comandado pelo Monitor, que assina, envia à SEFAZ, armazena e envia o e-mail para a outra parte envolvida, com cópias para a contabilidade e para um endereço nosso (uma espécie de backup dos XML). Finalizando, o XML segue regras impostas não pelo ACBrMonitor mas sim pela SEFAZ. O componente NFe e o Monitor não vão exigir nada que não seja obrigatório pela legislação e te darão liberdade e flexibilidade no que se refere à personalização do uso e preenchimento da classe. A autorização do XML e correspondente autorização do documento vai depender exclusivamente da qualidade e coerência dos dados que você utilizará para alimentar cada propriedade do componente ou parâmetro do Monitor. Utilize o ACBr sem medo, tudo o que imaginar e precisar, conseguirá implementar.
  14. Concordo plenamente com o Isaque, quanto à postura do ACBr. As regras são da SEFAZ e não cabe aos desenvolvedores mexerem ou burlarem os mecanismos regulamentados. Sobre o assunto, meu único descontentamento é com relação ao acesso à eventos anteriores à manifestação do destinatário por fora do portal. Se uma nota é emitida para meu CNPJ e cancelada em seguida, eu consulto as destinadas e recebo o resumo da nota mas nunca receberei o cancelamento da mesma, pois, mesmo que eu manifeste ciência da operação, apenas os eventos à partir desta manifestação estarão disponíveis nas consultas. Eu tinha um controle perfeito das notas, que funcionava baseado nos código de situação e confirmação e sinto falta disso..
  15. No meu sistema, cada usuário gera seu XML localmente. Depois envia por TCP/IP para o servidor central da empresa para assinar, validar e enviar para a SEFAZ. Pelo que entendi é isso que você quer fazer. Vai funcionar.
  16. Ainda bem que compilei uma versão atualizada com a versão 1.4 antes de instalar a 1.6. Estou com o mesmo problema. Será que é incompatibilidade com a versão 64 bits? Eu usava a 1.4 32 bits antes.
  17. A responsabilidade de encaminhar as respostas é do servidor. No meu caso, nunca aconteceu de um terminal receber resposta de outro. Qual o componente de comunicação você utilizou nos testes?
  18. Eduardo, Se está começando, sugiro que implemente por socket em TCP/IP. A comunicação é mais rápida e dispensa a manipulação de arquivos. Eu tinha esse problema, meu log ficava cheio de mensagens de falha de acesso aos arquivos... Com TCP/IP, o log fica limpinho, as operações fluem com mais rapidez. Tenho um único servidor trabalhando para gerenciar as notas fiscais da matriz e de 10 filiais em tempo real sem nenhum problema.
  19. Não sei se é o seu caso mas comigo acontecem duas situações, que não são culpa do componente: 1 - Durante a autenticação, a locaweb (onde se encontra meu domínio) demora para responder. Por esse motivo, a aplicação aguarda até que o tempo limite seja atingido ou que o servidor de envio aceite o logon. 2 - Quando a quantidade de arquivos à anexar é muito alta, a aplicação aguarda até que cada arquivo da lista seja devidamente inserido. Com apenas um ou com poucos arquivos esse processo é extremamente rápido mas, dependendo do tamanho e da quantidade, pode demorar bastante. Em ambos os casos, ao clicar em qualquer parte da tela surge essa mensagem, levando o operador a pensar que a aplicação travou. Passei a aumentar o time-out e a desligar o teclado e o mouse até que haja uma falha de tempo excedido (trato com try except) ou que o processamento dos anexos tenha sido concluído. (finally).
  20. Antonio, As poucas linhas que apresentei são de um projeto de testes, onde estudo os comportamentos e etapas antes de realizar a migração de .txt para TCP/IP. Me baseei no exemplo, em Lazarus, que o Juliomar sugere e nos resultados de longas tentativas e erros. Cheguei ao projeto final e já finalizei a comunicação com todas as situações funcionando: Envio comandos para o servidor, trato as respostas vindas do servidor, envio arquivos XML para o servidor, recebo arquivos XML do servidor, copio e apago arquivos existentes dentro do servidor. Componentes envolvidos: TBlockSocket da unit blcksock; para conexão; TStringList para armazenar as respostas com vários itens do servidor e depois salvar num arquivo .ini para tratar os dados; Variável String para armazenar as respostas simples do servidor; TXMLDocument para armazenar XML envolvido no envio ou recepção; Fragmentos de código com exemplos, acho que é mais do que suficiente para você estudar e adaptar ao seu trabalho. Boa sorte: Conexão: fSocket := TBlockSocket.Create; fSocket.Connect(Modulo.Nfe_MonitorServidor, Modulo.Nfe_MonitorTCP_Porta); RetornoACBr := UpperCase(Trim(fSocket.RecvTerminated(5000, #3))); Verificar NFe no Servidor e imprimir: fSocket.SendString('NFe.FileExists(' + Modulo.sPathNFE + '\' + Trim(Dsadnotasai.Dataset.Fieldbyname('Nfe_Arqxml').Asstring) + ')' + #13#10 + '.' + #13#10); RetornoACBr := UpperCase(Trim(fSocket.RecvTerminated(5000, #3))); IF (RetornoACBr = 'OK:') THEN BEGIN hLog.Add(DateTimeToStr(now) + ' - Carregar o arquivo XML...'); fSocket.SendString('NFe.LoadfromFile(' + Modulo.sPathNFE + '\' + Trim(Dsadnotasai.Dataset.Fieldbyname('Nfe_Arqxml').Asstring) + ', 3)' + #13#10 + '.' + #13#10); ACBrNFe1.NotasFiscais.LoadFromString(fSocket.RecvTerminated(5000, #3)); ACBrNFe1.Notasfiscais.Imprimir; END ELSE BEGIN hLog.Add(DateTimeToStr(now) + ' - Não encontrado o arquivo XML: ' + Modulo.sPathNFE + '\' + Trim(Dsadnotasai.Dataset.Fieldbyname('Nfe_Arqxml').Asstring)); ShowMessage('ATENÇÃO!!! ' + #10#13 + 'O arquivo XML deste documento não foi localizado no servidor.' + #10#13 + RetornoACBr); END; PROCEDURE Tmodulo.VerificaStatusWS; VAR RespostaMonitor :TStringList; OK :Boolean; Ini :TIniFile; BEGIN hLog.Add(DateTimeToStr(now) + ' - VerificaStatusWS (INÍCIO).'); RespostaMonitor := TStringList.Create; hLog.Add(DateTimeToStr(now) + ' - Envio de Status...'); TRY RespostaMonitor := SolicitaMonitor('NFe.StatusServico'); EXCEPT ON E :Exception DO BEGIN Mensagem := 'Falha ao consultar o Status do WebServer SEFAZ.' + sLineBreak + E.Message; hLog.Add(DateTimeToStr(now) + ' - ' + Mensagem); RAISE Exception.Create(Mensagem); END; END; hLog.Add(DateTimeToStr(now) + ' - Resposta de Status recebida.'); WHILE FileExists(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini') DO BEGIN DeleteFile(PChar(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini')); END; RespostaMonitor.SaveToFile(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini'); WHILE NOT FileExists(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini') DO BEGIN sleep(100); END; Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini'); DataHoraSEFAZ := Trim(Ini.ReadString('STATUS', 'DhRecbto', '')); WHILE FileExists(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini') DO BEGIN DeleteFile(PChar(ExtractFilePath(Application.ExeName) + 'VerificaStatusWS.ini')); END; hLog.Add(DateTimeToStr(now) + ' - VerificaStatusWS (FIM).'); END; Enviar arquivo para o servidor: // ler para uma variável XMLDocument1.LoadFromFile(Modulo.Nfe_Local + '\' + ExtractFileName(Modulo.AdNotaSai.Fieldbyname('Nfe_ArqXML').Asstring)); //enviar conteúdo salvando pelo TCP Modulo.SolicitaMonitor('ACBR.SaveToFile(' + Modulo.sPath + '\' + ExtractFileName(Modulo.AdNotaSai.Fieldbyname('Nfe_ArqXML').Asstring) + ',"' + XMLDocument1.XML.Text + '")'); FUNCTION Tmodulo.SolicitaMonitor(Comando :STRING) :TStringList; VAR RetornoACBr :TStringList; RespostaACBrMonitor :STRING; OK :Boolean; BEGIN hLog.Add(DateTimeToStr(now) + ' - SolicitaMonitor (Ínício).'); // ******************************************************************************* hLog.Add(DateTimeToStr(now) + ' - Conectar no Servidor de Documentos Fiscais...'); fSocket := TBlockSocket.Create; fSocket.Connect(Modulo.Nfe_MonitorServidor, Modulo.Nfe_MonitorTCP_Porta); RespostaACBrMonitor := fSocket.RecvTerminated(5000, #3); OK := (Copy(RespostaACBrMonitor, 1, 11) = 'ACBrMonitor'); IF OK THEN BEGIN hLog.Add(DateTimeToStr(now) + ' - Conectado ao Servidor de Documentos Fiscais.'); END ELSE BEGIN hLog.Add(DateTimeToStr(now) + ' - Não Conectado ao Servidor de Documentos Fiscais.'); RAISE Exception.Create(User + ', Não foi possível conectar ao Servidor de Documentos Fiscais.' + #10#13 + 'Provavelmente nossa conexão internet ou o próprio Servidor estejam sobrecarregados ou inativos.' + #10#13 + 'Espere alguns instantes e tente novamente.'); END; // ******************************************************************************* // ******************************************************************************* hLog.Add(DateTimeToStr(now) + ' - Enviar comando: ' + Comando); fSocket.SendString(Comando + #13#10 + '.' + #13#10); RespostaACBrMonitor := fSocket.RecvTerminated(5000, #3); OK := (Trim(RespostaACBrMonitor) <> ''); IF OK THEN BEGIN RetornoACBr := TStringList.Create; hLog.Add(DateTimeToStr(now) + ' - Recebida resposta do WebServer da SEFAZ.'); END ELSE BEGIN hLog.Add(DateTimeToStr(now) + ' - Recebida resposta inválida do Servidor de Documentos Fiscais.'); RAISE Exception.Create(User + ', Não foi possível receber uma resposta válida do WebServer da SEFAZ.' + #10#13 + 'Provavelmente ele esteja sobrecarregado ou enfrentando período de instabilidade' + #10#13 + 'Espere alguns instantes e tente novamente.'); END; RetornoACBr.Add('[Resposta]' + #13#10 + RespostaACBrMonitor); hLog.Add(DateTimeToStr(now) + ' - Resposta do comando: ' + Comando + ' recebida.'); // ******************************************************************************* fSocket.CloseSocket; hLog.Add(DateTimeToStr(now) + ' - Servidor de Documentos Fiscais desconectado.'); Result := RetornoACBR; hLog.Add(DateTimeToStr(now) + ' - SolicitaMonitor (Fim)'); END;
  21. O problema envolvido no download das notas de venda, principalmente para pessoas físicas, é que existe a exigência do destinatário/remetente ter realizado a confirmação da operação ou, no mínimo, a ciência da operação e ainda que a emissão da nota esteja dentro do limite estabelecido pela SEFAZ. Sem o registro de manifestação da outra parte ou extrapolado o limite da data de emissão, resta somente entrar no portal da nfe e baixar manualmente. Existem meios "alternativos" de fazer este download mas esses "meios" não são recomendáveis e nem incentivados aqui pela comunidade ACBr.
  22. Encontrei a solução para o meu problema. Bastou enviar aspas duplas antes e depois do conteúdo a ser gravado no arquivo destino: EdComando.Text := 'ACBR.SaveToFile(' + OpenDialog1.FileName + ',"' + RichEdit1.text + '")'; fSocket.SendString(Trim(EdComando.Text) + ' ' +#13 + #10 + '.' + #13 + #10);
  23. Bom dia senhores, Prosseguindo com minha migração de TXT para TCP/IP, travei na etapa de enviar um arquivo .XML gerado na máquina precisando ser enviado para o servidor onde lo ACBrNFeMonitorPlus sendo executado. Seleciono o arquivo, carrego num componente richedit e monto a string de transmissão num TEdit para acompanhar: EdComando.Text 'NFe.SaveToFile(' + OpenDialog1.FileName + ',' + RichEdit1.text + ')' Em seguida envio: fSocket.SendString(Trim(EdComando.Text) + ' ' +#13 + #10 + '.' + #13 + #10); Monitorando a transmissão não consegui encontrar o problema, a string de comando é montada corretamente, a recepção no servidor exibe o conteúdo correto na tela do ACBrNFeMonitorPlus mas, o arquivo gravado perde alguns caracteres iniciais, retornando a mensagem de arquivo corrompido ao ser aberto no destino. Nas etapas anteriores não tive este problema porque estava apenas enviando a string de comandos e recebendo as respostas em texto puro. em anexo os dois arquivos .XML, o original perfeito e o gravado no servidor sem os primeiros caracteres: Alguém já passou por isso ou pode me ajudar com outra forma? teste-nfe(gravado no servidor).xml teste-nfe(original, antes de ser enviado).xml
  24. Eu estou migrando de TXT para TCP. Como o processamento de comandos você já entendeu, acho que a sua dúvida agora é: como enviar os dados que alimentarão a nota e depois, como receber o XML de volta para a máquina solicitante, é isso?
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.