Ir para conteúdo
  • Cadastre-se

dev botao

Alteração do XML de NFCe para contingência


Paulo Tenório
  • Este tópico foi criado há 2401 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde amigos,

Implementei a NFCe com o recuros do componente ACBrECFVirtualNFCe. Sinto falta de um demo, exemplo ou documentação mais abrangente mas tenho conseguido contornar minhas dificuldades com gambiarras e experiências do tipo "tentativa e erro". Está tudo em pleno funcionamento atualmente, exceto, a contingência off-line. Depois de sai tentanto interceptar o melhor momento para alterar o tipo de emissão, descobri que o melhor momento é no evento OnTransmitError, só que esbarrei no problema de ter que gerar novamente o XML para conseguir fazer as mudanças necessárias:

      Tratado := True;
     ACBrNFCe.Configuracoes.Geral.FormaEmissao := teOffLine;
      ACBrNFCe.NotasFiscais[0].NFe.Ide.tpEmis   := teOffLine;
      ACBrNFCe.NotasFiscais[0].NFe.Ide.xJust    := 'Problemas técnicos no envio do documento eletrônico';
      ACBrNFCe.NotasFiscais[0].NFe.Ide.dhCont   := now;

      ACBrNFCe.NotasFiscais.GerarNFe; // <--- gero o novo xml alterado

Perfeito, problema 90% resolvido!!! Só que a tag de totais ficou toda zerada, não herdou nada do XML anterior.

Perguntas:

1- É isso mesmo que precisa acontecer, zerar os totais e precisar atribuir novamente?

2 - Tentei alterar os valores já armazenados em ACBrNFCe.NotasFiscais mas não surtiu efeito algum. Existe alguma forma de fazer essas alterações sem chamar o GerarNFe e perder o totalizador?

Obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não vejo porque deveria zerar os totais...
Deixe um BkPoint em algum método interno do ACBrNFe, onde esteja zerando os valores... e quando chegar nele, use o CallStack para descobrir quem chamou...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Paulo Tenório disse:

Boa tarde amigos,

Implementei a NFCe com o recuros do componente ACBrECFVirtualNFCe. Sinto falta de um demo, exemplo ou documentação mais abrangente mas tenho conseguido contornar minhas dificuldades com gambiarras e experiências do tipo "tentativa e erro". Está tudo em pleno funcionamento atualmente, exceto, a contingência off-line. Depois de sai tentanto interceptar o melhor momento para alterar o tipo de emissão, descobri que o melhor momento é no evento OnTransmitError, só que esbarrei no problema de ter que gerar novamente o XML para conseguir fazer as mudanças necessárias:

      Tratado := True;
     ACBrNFCe.Configuracoes.Geral.FormaEmissao := teOffLine;
      ACBrNFCe.NotasFiscais[0].NFe.Ide.tpEmis   := teOffLine;
      ACBrNFCe.NotasFiscais[0].NFe.Ide.xJust    := 'Problemas técnicos no envio do documento eletrônico';
      ACBrNFCe.NotasFiscais[0].NFe.Ide.dhCont   := now;

      ACBrNFCe.NotasFiscais.GerarNFe; // <--- gero o novo xml alterado

Perfeito, problema 90% resolvido!!! Só que a tag de totais ficou toda zerada, não herdou nada do XML anterior.

Perguntas:

1- É isso mesmo que precisa acontecer, zerar os totais e precisar atribuir novamente?

2 - Tentei alterar os valores já armazenados em ACBrNFCe.NotasFiscais mas não surtiu efeito algum. Existe alguma forma de fazer essas alterações sem chamar o GerarNFe e perder o totalizador?

Obrigado.

 

Paulo, não necessita alterar a configuração para OFF-LINE (ACBrNFCe.Configuracoes.Geral.FormaEmissao := teOffLine;) a não ser que depois de uma entrar em contingência você emita todas as demais em contingência, mas isso não é recomentado.

Tente gravar o XML antes de cada comando para ver onde é que está gerando a falta dos valores.

Mas, a minha rotina é semelhante e nunca tive problemas parecidos.

Faço assim :

            memoLog.Lines.Add('>>Gera NFCe OFF-Line');

            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.tpEmis := teOffLine;
            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.dhCont := now;
            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.xJust  := 'Problemas com a conexão de internet';

            memoLog.Lines.Add('>>GerarNFe ');
            DM.ACBrNFe1.NotasFiscais.GerarNFe;
            memoLog.Lines.Add('>>Assinar');
            DM.ACBrNFe1.NotasFiscais.Assinar;
            memoLog.Lines.Add('>>Validar');
            DM.ACBrNFe1.NotasFiscais.Validar;

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Na abertura do "cupom", o componente grava um XML temporário apenas com dados do emitente, destinatário, totais zerados.

Se ocorrer erro na trasmissão, esse XML praticamente em branco é carregado e causa o problema de erro de validação, inclusive.

Eu contornei esse problema colocando, no evento QuandoGravarArquivoIni:

procedure TForm1.ACBrECFVirtualNFCe1QuandoGravarArqINI(ConteudoINI: TStrings; var Tratado: Boolean);
begin
  if not Assigned(ACBrECFVirtualNFCe1.ACBrNFCe) then
    Exit;
  if ACBrECFVirtualNFCe1.ACBrNFCe.NotasFiscais.Count > 0 then
    ACBrECFVirtualNFCe1.ACBrNFCe.NotasFiscais.GerarNFe;
end;

Assim o XML temporário é atualizado a cada item vendido.
 

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 horas atrás, Paulo Tenório disse:

Resolvido com a dica do BigWings. Removi meus remendos. Merece ser implementado automaticamente no componente, evitando situações como a minha.

 

Obrigado!!!

Estranho pois senão me engano o @Régys Silveira fez algo assim e não precisou . deixa eu conversar com ele.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Juliomar, talvez o Regys faça a verificação de disponibilidade de internet/SEFAZ antes de iniciar o processo de geração ou tenha criado outro caminho para evitar o referido problema. O vídeo de demonstração dele é excelente e instigante mas existem muitos detalhes e situações adicionais que não foram mostrados e que precisam de intervenções para funcionar corretamente. No início ele me deu muita atenção e orientação sobre essas implementações adicionais e o local correto de fazer as capturas e complementos. Com esse apoio fui avançando bem mas hoje em dia ele nem me responde mais de tantas dúvidas e problemas que relatei no Telegram kkkk. Foi uma pena a Live dele sobre o assunto não ter sido realizada e nem remarcada. Segundo ele, um exemplo mais completo seria apresentado e no final haveria um espaço para questionamentos e dúvidas.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Reconheço que os ECFsVirtuais precisam de ajustes e melhorias... apesar de ter escrito a primeira versão do ECFVirtualSAT, em mesmo não utilizo ele em produção...

No meu caso, optei por criar um componente interno, um ECFVirtual, que herda de "TACBrECFVirtualBufferClass".. Optamos por esse caminho, pois desenvolvemos um middleware que fala como SAT, NFCe e MFE (semelhante ao ACBrMonitorPLUS)... então nosso ECFVirtual, fala na verdade com o esse Serviço...

@BigWings e @Paulo Tenório, fiquem a vontade para propor melhoria nos fontes... que na medida do possível, eu analiso e subo...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores
Em 15/09/2017 at 12:51, Paulo Tenório disse:

Juliomar, talvez o Regys faça a verificação de disponibilidade de internet/SEFAZ antes de iniciar o processo de geração ou tenha criado outro caminho para evitar o referido problema. O vídeo de demonstração dele é excelente e instigante mas existem muitos detalhes e situações adicionais que não foram mostrados e que precisam de intervenções para funcionar corretamente. No início ele me deu muita atenção e orientação sobre essas implementações adicionais e o local correto de fazer as capturas e complementos. Com esse apoio fui avançando bem mas hoje em dia ele nem me responde mais de tantas dúvidas e problemas que relatei no Telegram kkkk. Foi uma pena a Live dele sobre o assunto não ter sido realizada e nem remarcada. Segundo ele, um exemplo mais completo seria apresentado e no final haveria um espaço para questionamentos e dúvidas.

Bom, eu tenho isso funcionando hoje em vários clientes com SAT e NFC-e sem modificações, somente utilizando o que o componente dispõe.

Quanto a não responder no Telegram, eu ajudo no meu tempo livre quando me sobra, o mesmo se aplica as lives no youtube, teu tento ajudar sempre que posso, mas sinceramente não posso parar meus afazeres e minha empresa para responder a todos que me procuram no Telegram, whatsapp e outros canais, como disse, faço isso no meu tempo livre e é puramente para ajudar.

As pessoas que precisam de uma ajuda melhor e mais focada sempre me procuram para consultoria.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2401 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.

The popup will be closed in 10 segundos...