Ir para conteúdo
  • Cadastre-se

dev botao

Manifestação do Destinatário: Ciência da Operação x Confirmação


Turbo Drive
Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 890 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde

Estou manifestando as NF-e emitidas contra o CNPJ xxxxx da seguinte forma:

FPrincipal.AcbrNFe1.EventoNFe.Evento.Clear;
  with FPrincipal.AcbrNFe1.EventoNFe.Evento.Add do
    begin
      InfEvento.cOrgao       := 91;
      InfEvento.chNFe        := ChNFE;
      InfEvento.CNPJ         := DMretaguarda.TEmpresa.FieldByName('cnpj').AsString;
      InfEvento.dhEvento     := Now;
      InfEvento.tpEvento     := teManifDestConfirmacao;
    end;

  FPrincipal.AcbrNFe1.EnviarEvento( qtde_evento );

Estou conseguindo manifestar e fazer o download dos xmls sem problemas, porém ao verificar os eventos no portal da Sefaz, as NF-e estão apenas com o evento de Ciência da Operação ao invés de estarem em Confirmação.

Existe alguma sequência a ser seguida ou alguma configuração a mais para que seja feito a Ciência da Operação e depois a Confirmação da Operação ?

Outro detalhe, para cada evento é necessário incrementar o número do evento na função EnviarEvento ?

 

Desde já agradeço a atenção.

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Se está informando tpEvento = teManifDestConfirmacao será enviada a confirmação da operação e não a ciência.

Se você está enviando dessa forma e está gerando outra, verifique a sua rotina, anexe aqui os XML de envio e de retorno do envio do evento, se desejar.

O que não está correto é a aplicação enviar a confirmação por conta própria, isso deve envolver interação humana, visto que o tipo da manifestação é de responsabilidade da empresa e trará consequências legais pra mesma e pra empresa emitente.

4 minutos atrás, Turbo Drive disse:

Outro detalhe, para cada evento é necessário incrementar o número do evento na função EnviarEvento ?

O parâmetro do método EnviarEvento se refere ao número de lote de envio, ele não é validado pela SEFAZ, serve para controle da sua aplicação.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

15 horas atrás, barrys disse:

Turbo Drive, Poderia passar mais informações do procedimento do download de XML? o meu aqui não está funcionando

Após a manifestação da NF-e (função da mensagem acima), verifico o retorno da função AcbrNFe1.EnviarEvento.

Caso o retorno seja 135, 138, 140, 150 ou 573, dou continuidade ao download usando a função 

AcbrNFe1.DistribuicaoDFePorChaveNFe(codigo_UF, cnpj_empresa, chave_de_acesso).

Se o retorno for 138, realizo os procedimentos internos do meu sistema, caso contrário, exibo uma mensagem para o usuário.

Lembrando que é necessário os Schemas estarem atualizados.

Link para o comentário
Compartilhar em outros sites

15 horas atrás, BigWings disse:

Se está informando tpEvento = teManifDestConfirmacao será enviada a confirmação da operação e não a ciência.

Se você está enviando dessa forma e está gerando outra, verifique a sua rotina, anexe aqui os XML de envio e de retorno do envio do evento, se desejar.

O que não está correto é a aplicação enviar a confirmação por conta própria, isso deve envolver interação humana, visto que o tipo da manifestação é de responsabilidade da empresa e trará consequências legais pra mesma e pra empresa emitente.

O parâmetro do método EnviarEvento se refere ao número de lote de envio, ele não é validado pela SEFAZ, serve para controle da sua aplicação.

Obrigado pelo retorno @BigWings

Esse procedimento que informei é feito manualmente pelo usuário, pois não possuo rotinas automáticas de download de xml.

 

Anexei alguns Xmls para análise.

20210204100637-con-dist-dfe.xml 20210204100640-dist-dfe.xml 20210204100641-con-dist-dfe.xml 20210204100642-dist-dfe.xml 24201204747896000128550010000875831161744432-nfe.xml 24201204747896000128550010000875831161744432-resNFe.xml

eventos nfe.png

Editado por Turbo Drive
Link para o comentário
Compartilhar em outros sites

Agora, BigWings disse:

Os arquivos que anexou são do método DistribuicaoDFe, e não do envio do evento de manifestação.

Peço desculpas por parecer ignorante, mas não sei onde pegar esses outros arquivos.

Por padrão, minha aplicação salva os arquivos no diretório C:\SGA\Nfe\XMLRecebido\Mes_Ano\Evento e não há nada lá, mesmo o componente estando com a propriedade SalvarEvento setado como true.

Poderia me instruir onde é definido o salvamento desses arquivos no componente ?

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, BigWings disse:

ACbrNFe.Configuracoes.Arquivos.Salvar

ACBrNFe.Configuracoes.Arquivos.PathEvento

Salvar está setado como true e o PathEvento tbm é definido.

Sempre que minha aplicação é iniciada, eu crio o diretório de acordo com a data e defino no componente

ACBrNFe1.Configuracoes.arquivos.PathNfe := 'C:\SGA\Nfe\XMLRecebido\Mes_Ano';
ACBrNFe1.Configuracoes.arquivos.DownloadDFe.PathDownload := 'C:\SGA\Nfe\XMLRecebido\Mes_Ano';

ACBrNFe1.Configuracoes.arquivos.PathEvento := 'C:\SGA\Nfe\XMLRecebido\Mes_Ano\Evento';
ACBrNFe1.Configuracoes.arquivos.PathInu := 'C:\SGA\Nfe\XMLRecebido\Mes_Ano\Evento';

Link para o comentário
Compartilhar em outros sites

Atualizei novamente os fontes do Acbr, atualizei os Schemas e fiz a manifestação de duas NF-e, e em ambas, ocorreu o evento da confirmação da operação.

Outro detalhe é que os arquivos também estão aparecendo nos diretórios dos eventos.

Vou ficar observando alguns clientes com essa nova versão da minha aplicação e ver se ainda ocorrerá algo nesse sentido.

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

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Bom dia a todos.

Ao fazer a manifestação de Ciência da operação em um cliente, recebi o retorno 573 - rejeição duplicidade de evento.

Verifiquei no portal da NF-e e as notas após a manifestação não estão ficando com o evento Ciência da operação.

Acredito que o meu erro esteja em identificar a sequência dos eventos ao usar a função

FPrincipal.AcbrNFe1.EnviarEvento( qtde_evento );

A autorização de uso, também conta como evento ?

Existe alguma forma de saber qual o número do último evento ou listar os eventos da NF-e usando a chave de acesso ?

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
51 minutos atrás, Turbo Drive disse:

Ao fazer a manifestação de Ciência da operação em um cliente, recebi o retorno 573 - rejeição duplicidade de evento.

Verifiquei no portal da NF-e e as notas após a manifestação não estão ficando com o evento Ciência da operação.

Se houve rejeição por duplicidade é porque já foi enviado o mesmo tpEvento com o mesmo nSeqEvento para a mesma chave.

Fez a consulta completa? Tentou consultar também no portal da SEFAZ estadual autorizadora?

52 minutos atrás, Turbo Drive disse:

Acredito que o meu erro esteja em identificar a sequência dos eventos ao usar a função

FPrincipal.AcbrNFe1.EnviarEvento( qtde_evento );

Esse parâmetro é pra informar o número de lote de envio, serve apenas pra controle da sua aplicação, é irrelevante pra SEFAZ.

52 minutos atrás, Turbo Drive disse:

A autorização de uso, também conta como evento ?

Na consulta no portal vai mostrar como um evento, mas ele não segue o layout de evento descrito no manual, então, na minha opinião, não.

53 minutos atrás, Turbo Drive disse:

Existe alguma forma de saber qual o número do último evento ou listar os eventos da NF-e usando a chave de acesso ?

Não existe informação de número de evento, não existe informação sobre qual a sequência gerada na consulta por chave, provavelmente é pela data de autorização.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...

Gostaria de tirar uma dúvida, estou consultando as notas destinadas ao meu cnpj, usando o código abaixo, onde o vNSU, é igual a ZERO, sendo que li aqui no forum, quando eu faço isso, vem as notas destinadas ao meu CNPJ dos últimos 15 dias, sendo que quando fiz isso, veio do mês de julho pra cá, fiz algo de errado?

        // Consultar Notas Destinadas
        with dtmCompra.ACBRNFeTriviaDownload do
        begin
          DistribuicaoDFePorUltNSU(StrToInt(empresaInfo.PessoaInfo.EnderecoPrinc.Estado.CODESTADOIBGE),
                                            empresaInfo.pessoaInfo.cnpjCpf,
                                            vNSU);
        end;
 

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
3 minutos atrás, Márcio Antônio disse:

Gostaria de tirar uma dúvida, estou consultando as notas destinadas ao meu cnpj, usando o código abaixo, onde o vNSU, é igual a ZERO, sendo que li aqui no forum, quando eu faço isso, vem as notas destinadas ao meu CNPJ dos últimos 15 dias, sendo que quando fiz isso, veio do mês de julho pra cá, fiz algo de errado?

        // Consultar Notas Destinadas
        with dtmCompra.ACBRNFeTriviaDownload do
        begin
          DistribuicaoDFePorUltNSU(StrToInt(empresaInfo.PessoaInfo.EnderecoPrinc.Estado.CODESTADOIBGE),
                                            empresaInfo.pessoaInfo.cnpjCpf,
                                            vNSU);
        end;
 

Obrigado!

Informando 0 vai receber os últimos 90 dias. 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
7 minutos atrás, Márcio Antônio disse:

Obrigado pela informação, tem como informar algum valor e esse intervalo ser menor? por exemplo os últimos 30 dias?

Sim, tem sim. Se você ler a documentação do método, vai ver que você só deve chamar com NSU = 0 a primeira vez. A partir das próximas, vai sempre usar o ultimo NSU informado, e com isso só vai receber o que for novo.

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, douglaswf disse:

Sim, tem sim. Se você ler a documentação do método, vai ver que você só deve chamar com NSU = 0 a primeira vez. A partir das próximas, vai sempre usar o ultimo NSU informado, e com isso só vai receber o que for novo.

Isso eu sei, queria saber na primeira consulta, trazer somente dos últimos 30 dias e não dos últimos 90 dias, informando o 0 na nsu....

Link para o comentário
Compartilhar em outros sites

  • Moderadores
3 minutos atrás, Márcio Antônio disse:

Isso eu sei, queria saber na primeira consulta, trazer somente dos últimos 30 dias e não dos últimos 90 dias, informando o 0 na nsu....

Não, informando 0 vai receber os primeiros 50 documentos dos últimos 90 dias.

Pra fazer da forma que quer vai precisar filtrar o resultado pela sua aplicação.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Pessoal, não sei se estou fazendo algo de errado, mas não estou conseguindo baixar as notas, estou fazendo o seguinte:

    try
      empresainfo := dtmCheca.ChecaEmpresa(dblcbEmpresa.KeyValue);

      if empresainfo.NSUultimo = '' then
        vNSU := '0'
      else
        vNSU := empresainfo.NSUultimo;

      dtmSysMsg.Aguarde(cxgrdNFVenda,'Consultando NF-e destinadas');

      k := 0;
      repeat
        inc(k);

        // Consultar Notas Destinadas
        with dtmCompra.ACBRNFeTriviaDownload do
        begin
          DistribuicaoDFePorUltNSU(StrToInt(empresaInfo.PessoaInfo.EnderecoPrinc.Estado.CODESTADOIBGE),
                                            empresaInfo.pessoaInfo.cnpjCpf,
                                            vNSU);
        end;

        vStat := IntToStr(dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat);
        vMotivo := dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;

        if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
          vTemMais := 'N'
        else
          vTemMais := 'S';

        vUltNsu := dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

        vNSU := vUltNsu;

        // Atualizando a NSU na tabela empresa
        with dtmCompra do
        begin
          with isqAtualizaNsuEmpresa do
          begin
            ParamByName('nsu').AsString := vUltNsu;
            ParamByName('Id_Empresa').AsInteger := empresaInfo.pessoaInfo.id_pessoa;
            ExecQuery;
          end;

          isqAtualizaNsuEmpresa.Transaction.CommitRetaining;
        end;
        // Fim Atualização

        if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
        begin
          j := dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count - 1;

          for i := 0 to j do
          begin
            // Gravando as Notas Destinadas no Banco
            try
              with dtmCompra do
              begin
                if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe <> '' then
                begin
 

Normalmente, o retorno que grava na variável J, retorna 49, sendo que quando entra no laço do FOR, quase todas as chaves vem VAZIO, e não consigo prosseguir com as notas, o que será que estou fazendo de errado?

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 890 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.