Ir para conteúdo
  • Cadastre-se

dev botao

NFC-e não cancela


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

Recommended Posts

  • Membros Pro

Olá a todos,

Hoje em um de meus clientes ocorreram os erros 12002 em duas tentativas de cancelamentos de 2 notas. Após isso ao tentar cancelar as mesmas só recebo: "Rejeição: Duplicidade de Evento"

Visualizo a nota na SEFAZ e a mesma se encontra ainda AUTORIZADA. Copiei o certificado para a minha máquina e também tentei cancelar, mesma coisa. Tenho apenas 24 horas para resolver isso... Alguém poderia me dar uma luz?

Desde já agradeço a atenção de todos

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Se esta aparecendo a rejeição: Duplicidade de evento isso significa que a SEFAZ recebeu a solicitação de cancelamento.

Você diz que ao consultar essa nota na SEFAZ consta que a mesma só foi autorizada, não consta o evento de cancelamento, correto?

Pois bem, o evento foi enviado para qual SEFAZ?

Onde você esta realizando essa consulta, na SEFAZ-Autorizadora ou no Ambiente Nacional?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Italo... Conforme disse quase 24 horas depois, finalmente, ambas as notas apareceram canceladas. Creio ter ocorrido um atraso na SEFAZ em anunciar o cancelamento.

Pois bem,  agora preciso tratar esse tipo de problema para ocorrências futuras... Como consulto se a nota realmente foi cancelada e como recuperar o XML do cancelamento?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Vamos a uma solução para tratar esse problema:

Não existe um Web Service onde você possa consultar o processamento de um Evento, como existe para a Nota.
Se tratando de eventos lembre-se que temos 3 arquivos:

*-ped-eve.xml ====> pedido (envio) do evento
*-eve.xml  ====> retorno da SEFAZ informando se o evento foi registrado ou não.

*-procEventoNFe.xml ===> processamento do Evento da NF-e, que nada mais é do que a montagem dos dois XML acima.

Vide estrutura na Nota Técnica 2010/008 que trata sobre a CC-e.
Se ocorreu uma falha no retorno você só tem o primeiro arquivo que é a solicitação (pedido).
A solução para este caso é:

1. Consultar a situação da NF-e cuja CC-e foi emitida. (método Consultar)
2. No retorno dessa consulta teremos a situação atual da NF-e bem como todos os eventos vinculados a mesma.
3. Extrair desse retorno os dados do registro do evento desejado, que neste caso é da CC-e.
4. Montar o *-procEventoNFe.xml se utilizando do conteúdo do *-ped-eve.xml mais os dados que foram extraídos no item 3.

Pelo componente só da para executar o item 1 da lista acima, os demais você terá que montar uma rotina própria na sua aplicação.

Espero ter ajudado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Simples,

Pegue os XMLs que mencionei de uma outra nota que foi cancelada com sucesso e todos os arquivos gerados abra-os com um navegador.

Um detalhe esqueci que o seu problema era o cancelamento e o exemplo que lhe dei foi de uma CC-e, mas como ambos são eventos os passos são exatamente os mesmos e a estrutura do *-procEventoNFe é exatamente igual para todos os tipos de eventos.

O que muda é o conteúdo da área de dados que cada tipo de evento poderá ter alguma TAG a mais ou a menos.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Se você criar um arquivo em memória cujo conteúdo é:

<a>valor1</a><b>valor2</b>

e salvar com o seguinte nome:

teste.xml

você acaba de criar um XML que possui uma TAG chamada "a" cujo conteúdo é a palavra "valor1" e a TAG "b" com o conteúdo "valor2".

Como pode ver, não existe nenhum segredo.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Pra mim que nunca criei um arquivo em memória, o único segredo é como fazê-lo. :-/

Será que poderia me mostrar um exemplo?

Eu costumo criar arquivos TXT usando o seguinte código: http://www.planetadelphi.com.br/dica/6704/lendo-e-escrevendo-no-txt

Desde já agradeço a atenção

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

Olá a todos,

Italo... Estou tentando efetuar o passo 3 estudando o projeto de exemplo do ACBR, mas sempre que tento compilar o projeto recebo o erro "WARNING: Duplicate resources(s)" e não consigo executá-lo. Tentei atualizar o componente agora, revisão 10481, mas o problema ainda persiste.

Uso o Delphi 7.

erro.JPG

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Essa Unit se refere ao programa exemplo do componente ACBrNFe?

Se sim, exclua a pasta que contem os fontes do programa exemplo e baixe novamente com o Tortoise.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Feche a aplicação caso ela ainda esteja aberta no Delphi.

Vá na pasta C:\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi e exclua o arquivo: ACBrNFe_demo.RES

Abra novamente a aplicação pelo Delphi e tente compilar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Italo... Com sua dica parou de dar o problema no projeto ao compilar, agora voltando ao assunto do cancelamento...

Estava analisando as respostas obtidas no projeto de exemplo do ACBR ao consultar a NFC-e cancelada pela chave, e comparando as mesmas com um arquivo "*-procEventoNFe.xml" gerado normalmente pelo componente ACBR.

Ao observar o arquivo "*-procEventoNFe.xml" gerado normalmente, vi que ele é todo formado pela tag <procEventoNFe>, exceto apenas pela primeira linha do mesmo, que sempre vem com o conteúdo "<?xml version="1.0" encoding="UTF-8"?>".

Essa tag <procEventoNFe> também existe na resposta da consulta pela chave, seja no campo RESPOSTAS ou no campo RETORNO COMPLETO WS, e seu conteúdo a princípio é idêntico a mesma tag no arquivo "*-procEventoNFe.xml" gerado normalmente.

Isso me gerou algumas dúvidas:

1º - Realmente o arquivo "*-procEventoNFe.xml" sempre é formado na primeira linha com "<?xml version="1.0" encoding="UTF-8"?>" e o restante com a tag <procEventoNFe>?

2º - Se a resposta da primeira pergunta for SIM, o conteúdo da tag <procEventoNFe> do retorno dado pela consulta (nas guias mencionadas) sempre será igual ao conteúdo da tag <procEventoNFe> do arquivo "*-procEventoNFe.xml" gerado normalmente?

3º - Se sim para a primeira e segunda pergunta, suponho que para criar o arquivo "*-procEventoNFe.xml" basta apenas gerar um XML em que seu conteúdo na primeira linha tenha o texto "<?xml version="1.0" encoding="UTF-8"?>" e o restante tenha a tag <procEventoNFe> obtida pela consulta, sem a necessidade de utilizar o arquivo "*-ped-eve.xml" como mencionou anteriormente... Estou certo?

4º - Por fim, se sim para todas as perguntas anteriores... Como obtenho somente o texto da tag <procEventoNFe> do retorno da consulta?

Desde já agradeço a atenção sempre dada

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Todos os XML gerados pelo componente inicia com: "<?xml version="1.0" encoding="UTF-8"?>", essa linha defini a codificação de caracteres usado no XML.

Se você configurar o componente para salvar os arquivos de envio e retorno e os de validade jurídica, se tratando de eventos temos;

*-ped-eve.xml => esse arquivo é o pedido de evento ou seja o arquivo enviado a SEFAZ.

*-eve.xml => esse arquivo é o retorno da SEFAZ que contem o resultado do processamento do evento.

*-procEventoNFe.xml => esse arquivo é uma montagem usando o conteúdo dos dois acima e devemos considera-lo como sendo um arquivo com validade jurídica, pois o mesmo deve ser guardado pelo prazo lega e deve ser disponibilizado ao destinatário da mercadoria e a contabilidade.

Por outro lado ao realizar uma consulta, no arquivo de retorno temos a principio que a nota foi autorizada, depois a situação atual da mesma e por fim a lista de eventos vinculados a nota.

Não me recordo se a estrutura da lista de eventos segue a mesma estrutura do *-procEventoNFe.xml, e pelo que me recordo não existe nenhuma propriedade que retorna somente essa estrutura de um retorno da consulta.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Entendi Italo,

Mas você me orientou no passo 3. "Extrair desse retorno os dados do registro do evento desejado" e no passo 4. "Montar o *-procEventoNFe.xml se utilizando do conteúdo do *-ped-eve.xml mais os dados que foram extraídos no item 3."

Se não posso extrair a tag <procEventoNFe> desse retorno, quais dados devo extrair para concatenar com o "*-ped-eve.xml" afim de montar o "*-procEventoNFe.xml"?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Uma coisa é o componente não possuir uma propriedade que contem uma informação ou bloco de informações desejado.

Outra coisa é você montar a sua própria rotina que faça isso.

Lembre-se que o XML é um arquivo texto que não possui quebras de linhas, sendo assim você pode ler ele da forma que achar melhor e depois usar a função POS para encontrar o inicio e o fim do que deseja.

Suponha que exista no XML um grupo chamado Registro, a TAG de inicio é <Registro> e a TAG de fim é </Registro>.

O XML foi lido e encontra-se na variável XMLLido, vamos separar o grupo Registro e armazenar na variável GrupoReg.

Inicio := Pos('<Registro>', XMLLido);

Fim := Pos('</Registro>', XMLLido);

GrupoReg := Copy(XMLLido, Inicio, Fim + 10); // A variável Fim aponta para o carácter "<" mas desejo que ele aponte para o ">"

Espero ter ajudado.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Perfeito sua observação Italo...

A princípio, pelo que analisei todos os XMLs de cancelamentos são formados, como já havia dito, na primeira linha com "<?xml version="1.0" encoding="UTF-8"?>" e o restante com a tag <procEventoNFe> obtida pela consulta da chave de acesso. Farei a montagem dessa forma.

Mas alguém sabe confirma essa informação referente a montagem? Minha lógica está certa?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

A montagem do arquivo *-procEventoNFe.xml para qualquer tipo de evento tem que seguir a estrutura especificada na versão 5.00 do Manual da NF-e item 7.8.10 página 83.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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