Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde,

estou iniciando o desenvolvimento em Contingência mas estou com dificuldades no entendimento do processo, por exemplo, 

estou gerando a NFe normalmente, com teDPEC, a Data e a Justificativa, envio, daí Mando transmitir, ele retorna com cStat 100.

Daí mudo o tpEmis para tpNormal e tento transmitir novamente, mas recebo o erro de Duplicidade com Chave de Acesso diferentes.

Qual o processo correto para transmitir em Contingência?

 

Conferi a chave logo antes do comando Enviar e é o mesmo da NF transmitida em teDPEC.

  • Moderadores
Postado
  Em 24/11/2017 at 19:18, Igor Bastos disse:

Boa tarde,

estou iniciando o desenvolvimento em Contingência mas estou com dificuldades no entendimento do processo, por exemplo, 

estou gerando a NFe normalmente, com teDPEC, a Data e a Justificativa, envio, daí Mando transmitir, ele retorna com cStat 100.

Daí mudo o tpEmis para tpNormal e tento transmitir novamente, mas recebo o erro de Duplicidade com Chave de Acesso diferentes.

Qual o processo correto para transmitir em Contingência?

 

Conferi a chave logo antes do comando Enviar e é o mesmo da NF transmitida em teDPEC.

Expandir  

O tipo de emissão é parte da chave de acesso, se você alterar o tipo de emissão a chave muda.

Eu nunca emiti NFe por EPEC, mas pelo que sei, primeiro você faz apenas o envio do evento EPEC, depois envia a NFe, com tpEmis = teDPEC.

Se você está enviando a NFe e recebendo cStat 100 quer dizer que ela já está autorizada.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
  Em 24/11/2017 at 20:26, BigWings disse:

O tipo de emissão é parte da chave de acesso, se você alterar o tipo de emissão a chave muda.

Eu nunca emiti NFe por EPEC, mas pelo que sei, primeiro você faz apenas o envio do evento EPEC, depois envia a NFe, com tpEmis = teDPEC.

Se você está enviando a NFe e recebendo cStat 100 quer dizer que ela já está autorizada.

Expandir  

 

E se está autorizando de primeira significa que não está enviado em contingencia. Tem algo errado na rotina então.

Postado

 

  Em 24/11/2017 at 20:56, carlosinfoteen disse:

 

E se está autorizando de primeira significa que não está enviado em contingencia. Tem algo errado na rotina então.

Expandir  

Então talvez já esteja funcionando perfeitamente não?

Pq como eu estou desenvolvendo a função ainda estou emitindo sem problemas na rede, ou seja, tudo perfeito para Homologação.

Postado
  Em 24/11/2017 at 22:22, Igor Bastos disse:

 

Então talvez já esteja funcionando perfeitamente não?

Pq como eu estou desenvolvendo a função ainda estou emitindo sem problemas na rede, ou seja, tudo perfeito para Homologação.

Expandir  

Então, é como se tu estivesse transmitindo direto e não em contingencia. Já que na segunda vez dar duplicidade, significando que na primeira ja foi. Logo foi direto e nao em contingencia.

 

  • Moderadores
Postado
  Em 24/11/2017 at 22:22, Igor Bastos disse:

Então talvez já esteja funcionando perfeitamente não?

Pq como eu estou desenvolvendo a função ainda estou emitindo sem problemas na rede, ou seja, tudo perfeito para Homologação.

Expandir  

Você chegou a enviar o evento EPEC antes de tentar transmitir a NFe?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
  Em 24/11/2017 at 22:42, BigWings disse:

Você chegou a enviar o evento EPEC antes de tentar transmitir a NFe?

Expandir  

Então, como eu disse, estou com dificuldades para entender o Processo, então acho que o erro é meu msm, pois estou fazendo o mesmo que sempre faço para qualquer NF (GerarNF, AssinarNF, ValidarNF e EnviarNF), mas mudando o  tpEmis, adicionando a Data e Justificativa da Contingência.

Que evento seria esse de envio em contingência?

  • Moderadores
Postado
  Em 25/11/2017 at 10:29, Igor Bastos disse:

Então, como eu disse, estou com dificuldades para entender o Processo, então acho que o erro é meu msm, pois estou fazendo o mesmo que sempre faço para qualquer NF (GerarNF, AssinarNF, ValidarNF e EnviarNF), mas mudando o  tpEmis, adicionando a Data e Justificativa da Contingência.

Que evento seria esse de envio em contingência?

Expandir  

No Manual de Orientações do Contribuinte, a partir da página 90, explica o funcionamento da contingência EPEC:

http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=URCYvjVMIzI=

O EPEC é um evento, assim como o cancelamento de NFe e a carta de correção, a diferença é que o EPEC pode ser enviado antes da emissão da NFe, daí o nome Evento Prévio de Emissão em Contingência. O EPEC também é transmitido para o webservice do ambiente nacional, assim quando houver problemas com a SEFAZ do estado ele teoricamente vai estar funcionando.

O processo seria resumidamente:

1-Gerar a NFe com tpEmis = 4.

2-Gerar e enviar o evento EPEC.

3-Imprimir o DANFE em duas vias, uma devendo ser mantida pelo emitente.

Se você consultar a chave da NFe, mesmo antes do XML da NFe ser enviado, deve constar a emissão em contingência pelo evento EPEC, caso não tenha sido enviado o evento, a NFe não é válida.

4-Assim que possível, transmitir o XML da NFE, onde não se deve mudar o tipo de emissão.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Configurei para enviar o Evento, mas como pego o protocolo, cStat e XML de retorno?

Estou tentando utilizar o msm do Cancelamento, mas estão vindo vazios (exceto cStat = 128)

IntToStr(ACBrNFe1.WebServices.EnvEvento.EventoRetorno.cStat),
ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt,
ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML

Postado

Eu só sei que deu certo o Envio do Evento em contingência pq espero mais que 10min para transmitir (com a msm Chave) e ele transmite normalmente sem aportar o Erro de 5min .

Mas infelizmente a consulta da Chave de Acesso após o envio do Evento só retorna que Não Consta...

Além de que eu não estou conseguindo armazenar nenhuma informação de retorno do evento de Contingência, pois não sei como pagá-los

  • Moderadores
Postado
  Em 27/11/2017 at 20:24, Igor Bastos disse:

Mas infelizmente a consulta da Chave de Acesso após o envio do Evento só retorna que Não Consta...

Expandir  

Qual o XML de retorno da consulta?

  Em 27/11/2017 at 20:01, Igor Bastos disse:

Estou tentando utilizar o msm do Cancelamento, mas estão vindo vazios (exceto cStat = 128)

Expandir  

Esse é o cStat do processamento do lote 128-Lote processado.

Consulte o cStat do evento:

ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;

 

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
  Em 27/11/2017 at 20:52, BigWings disse:

Qual o XML de retorno da consulta?

 

Expandir  

Gostaria de resgatar o XML de retorno de envio do Evento, pois aparentemente td Envio de Evento tem um XML de retorno.

  Em 27/11/2017 at 20:52, BigWings disse:

Esse é o cStat do processamento do lote 128-Lote processado.

Consulte o cStat do evento:

ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;

 

 

Expandir  

O cStat vem vazio consultando desta forma.

  • Moderadores
Postado
  Em 27/11/2017 at 21:02, Igor Bastos disse:

Gostaria de resgatar o XML de retorno de envio do Evento, pois aparentemente td Envio de Evento tem um XML de retorno.

Expandir  

Configure o componente para gravar os arquivos de envio e retorno:

ACBrNFe1.Configuracoes.Geral.Salvar := True;
ACBrNFe1.Configuracoes.Arquivos.PathEvento := edtPathEvento.Text;

Anexe aqui o arquivo *-ped-eve.xml e *-eve.xml gerado.

Para salvar o XML de processamento de evento:

ACBrNFe1.Configuracoes.Arquivos.SalvarEvento := True;

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado
  Em 27/11/2017 at 21:33, Igor Bastos disse:

Mas não tem como eu pegar o XML igual aos outros comandos? Como se fosse uma variável String do Objeto

Expandir  

Sim, mas você disse que está vindo em branco, então tem algo errado.

Anexe os arquivos de envio e retorno que neles deve ter o cStat retornado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado (editado)

Segue anexo os arquivos solicitados.

(2254 - Falha na validação de esquema Xml :-o)

Meu código para envio do evento está assim:

  ACBrNFe1.EventoNFe.Evento.Clear;
  with ACBrNFe1.EventoNFe.Evento.Add do
  begin
    infEvento.chNFe :=UBibliotecaWinDesktop.ClearTextToNum(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID);;
    infEvento.CNPJ := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF;
    infEvento.dhEvento := Now;
    infEvento.tpEvento := teEPECNFe;
    infEvento.detEvento.xJust := Justificativa;
    //infEvento.detEvento.nProt := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.nProt;
  end;
  ACBrNFe1.EnviarEvento(qryConsNFeC.FieldByName('NFeNumLoteEnvio').AsInteger);

  //Atualiza tabela de retornos da NF
  DM3.InserirNFeRetornoValidacaoEnvio(
    ACodNFeC, qryConsNFeC.FieldByName('NFeModelo').AsString,
    qryConsNFeC.FieldByName('NFeNumSerie').AsString,
    qryConsNFeC.FieldByName('NFeNumNFe').AsString,
    qryConsNFeC.FieldByName('NFeChaveAcesso').AsString,
    IntToStr(ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat),
    '0',
    'CONTINGENCIA DE NFe',
    ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt,
    ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML
  );

 

1-eve.xmlFetching info...

1-ped-eve.xmlFetching info...

Editado por Igor Bastos
  • Moderadores
Postado
  Em 28/11/2017 at 10:14, Igor Bastos disse:
Expandir  

Veja o retorno do erro:

<cStat>999</cStat>
<xMotivo>2254 - Falha na validação de esquema Xml</xMotivo>

Provavelmente é por falta de preenchimento das tags específicas para o EPEC no seu XML de envio:

  Em 28/11/2017 at 10:14, Igor Bastos disse:
Expandir  
<verEvento/>
<detEvento versao="1.00">
  <descEvento>EPEC</descEvento>
  <cOrgaoAutor>0</cOrgaoAutor>
  <tpAutor>1</tpAutor>
  <verAplic/>
  <dhEmi>1899-12-30T00:00:00-02:00</dhEmi>
  <tpNF>0</tpNF>
  <IE/>
  <dest>
    <UF/>
    <vNF>0.00</vNF>
    <vICMS>0.00</vICMS>
    <vST>0.00</vST>
  </dest>
</detEvento>

Tente preencher essas tags com os dados da nota e enviar novamente.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

De acordo com o Manual:

cOrgaoAutor : Código da UF
tpAutor: Informar 1=Empresa Emitente para este evento.

Ou seja, sempre terei que informar 

cOrgaoAutor := CodUF
tpAutor := 1

?

Pq vc lançou com cOrgaoAutor = 0?

Postado
  ACBrNFe1.EventoNFe.Evento.Clear;
  with ACBrNFe1.EventoNFe.Evento.Add do
  begin
    infEvento.chNFe :=UBibliotecaWinDesktop.ClearTextToNum(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID);;
    infEvento.CNPJ := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF;
    infEvento.dhEvento := Now;
    infEvento.tpEvento := teEPECNFe;

    infEvento.detEvento.cOrgaoAutor := qryConsNFeC.FieldByName('EmitcodUF').AsInteger;
    infEvento.detEvento.tpAutor := StrToTipoAutor(VReturn, '1');
    infEvento.detEvento.xJust := Justificativa;
    infEvento.detEvento.vNF := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF;
    infEvento.detEvento.vICMS := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS;
    infEvento.detEvento.vST := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vST;
  end;
  ACBrNFe1.EnviarEvento(qryConsNFeC.FieldByName('NFeNumLoteEnvio').AsInteger);

Acho que agora fiz mais certo, porem ainda está dando o msm retorno 

<xMotivo>2254 - Falha na validação de esquema Xml</xMotivo>

1-ped-eve.xml

  • Moderadores
Postado

Tente desta forma:

  ACBrNFe1.EventoACBrNFe1.Evento.Clear;
  ACBrNFe1.EventoACBrNFe1.idLote := nLote;

  with ACBrNFe1.EventoACBrNFe1.Evento.Add do
  begin
    infEvento.chNFe := chNFe;
    infEvento.cOrgao := 91; // ambiente nacional
    infEvento.CNPJ   := Copy(chNFe, 7, 14);
    infEvento.dhEvento := Now;
    infEvento.tpEvento := teEPECNFe;
    infEvento.nSeqEvento := 1;
    infEvento.versaoEvento := '1.00';
    infEvento.detEvento.cOrgaoAutor := StrToInt(Copy(chNFe, 1, 2)); // código da uf do emitente
    InfEvento.detEvento.tpAutor := taEmpresaEmitente;
    InfEvento.detEvento.dhEmi := ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.dEmi;
    InfEvento.detEvento.tpNF := ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpNF;
    InfEvento.detEvento.IE := sIE_Emitente;
    InfEvento.detEvento.dest.UF := ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.EnderDest.UF;
    InfEvento.detEvento.dest.CNPJCPF := ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF;
    InfEvento.detEvento.dest.idEstrangeiro := ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.idEstrangeiro;
    InfEvento.detEvento.dest.IE := ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.IE;
    InfEvento.detEvento.vNF := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF;
    InfEvento.detEvento.vICMS := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS;
    InfEvento.detEvento.vST := ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vST;
  end;

  ACBrNFe1.EnviarEvento(nLote);

  cStat := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
  xMotivo := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
  nProt := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;

O cStat no envio do evento deve ser "136 - Evento registrado, mas nao vinculado a NF-e".

Na consulta da NFe após o envio do evento deve retornar o cStat "124 - EPEC autorizado".

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Este tópico foi criado há 2532 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.