Ir para conteúdo
  • Cadastre-se

dev botao

Notas destinadas!


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

Recommended Posts

Olá pessoal, sei que o assunto é antigo, mas eu tenho um código que estava consultando normalmente as notas destinadas contra um cnpj, mas de uns tempos para ca, alguns clientes começaram a reclamar que algumas notas não estavam aparecendo na consulta, e quando ele ia no ambiente nacional, a mesma estava lá...  pedi para eles verificarem com a sefaz, e a mesma respondeu isso:

Então as empresas destinatárias poderão fazer download de todas as NF-e de seus fornecedores?

Não. O emitente da NF-e tem obrigação de enviar o arquivo XML para o destinatário da mercadoria, conforme definido pela legislação vigente. O sistema só permitirá o download, pelo destinatário, de um percentual da média mensal do volume total de suas NF-e.

isso mudou? alguém sabe alguma coisa sobre isso?

Obrigado desde já!

Link para o comentário
Compartilhar em outros sites

Abaixo o meu código da consulta...

  if ConexaoAtiva then
  begin
    try
      empresainfo := dtmCheca.ChecaEmpresa(dblcbEmpresa.KeyValue);

      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
                  vChave := dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe;

                  with iqrConsChaveNFeDestinadas do
                  begin
                    Close;
                    ParamByName('Id_Empresa').AsInteger := empresaInfo.pessoaInfo.id_pessoa;
                    ParamByName('Chave').AsString := vChave;
                    Open;
                  end;
                  
                  if iqrConsChaveNFeDestinadas.IsEmpty then
                  begin
                    idsNFeDestinadas.Open;
                    idsNFeDestinadas.Insert;
                    dtmGeral.CheckEditState(idsNFeDestinadas);

                    idsNFeDestinadasID_PESSOA_EMP.AsInteger  := empresaInfo.pessoaInfo.id_pessoa;
                    idsNFeDestinadasCHAVENFE.AsString := vChave;
                    idsNFeDestinadasDIGCHAVENFE.AsString := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.digVal;
                    idsNFeDestinadasNSU.AsString := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].NSU;
                    idsNFeDestinadasVALORNFE.AsFloat := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.vNF;
                    idsNFeDestinadasDATARECEB.AsDateTime := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.dhRecbto;
                    idsNFeDestinadasDATAMANIFESTO.AsDateTime := dtmGenIbx.GetDBNow;
                    idsNFeDestinadasPENDENTEDOWNLOAD.AsInteger := 0;
                    idsNFeDestinadasDATAEMISSAO.AsDateTime := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.dhEmi;
                    idsNFeDestinadasNUMNF.AsString := Copy(vChave, 26, 9);
                    idsNFeDestinadasSERIENF.AsString := Copy(vChave, 23, 3);
                    idsNFeDestinadasCNPJEMITENTE.AsString := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.CNPJCPF;
                    idsNFeDestinadasINSCESTEMITENTE.AsString := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.IE;
                    idsNFeDestinadasRAZAOSOCIALEMITENTE.AsString := ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.xNome;

                    case ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.tpNF of
                      tnEntrada: idsNFeDestinadasTIPONOTA.AsString := 'E';
                      tnSaida:   idsNFeDestinadasTIPONOTA.AsString := 'S';
                    end;

                    case ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.cSitDFe of
                      snAutorizado: idsNFeDestinadasID_NFESTATUS.AsInteger := Integer(snfvAutorizada);
                      snDenegado:   idsNFeDestinadasID_NFESTATUS.AsInteger := Integer(snfvDenegada);
                      snCancelado:  idsNFeDestinadasID_NFESTATUS.AsInteger := Integer(snfvCancelada);
                    end;

                    idsNFeDestinadasID_NFESTATUSMANISFESTO.AsInteger := Integer(smdtIndefinida);
                    idsNFeDestinadasLANCCOMPRAS.AsInteger := 0;

                    idsNFeDestinadas.Post;

                    idsNFeDestinadas.Transaction.CommitRetaining;

                    // Manifestação Destinatário
                    vIdLote := 1;
                    vCNPJ := empresainfo.pessoaInfo.cnpjCpf;
                    vOrgao := 91; // Nacional
                    nSeqEvento := 1;

                    dtmCompra.ACBRNFeTriviaDownload.NotasFiscais.Clear;
                    dtmCompra.ACBRNFeTriviaDownload.EventoNFe.Evento.Clear;

                    with dtmCompra.ACBRNFeTriviaDownload.EventoNFe.Evento.Add do
                    begin
                      InfEvento.cOrgao := vOrgao; // Nacional
                      InfEvento.chNFe := vChave;
                      InfEvento.CNPJ := vCNPJ;
                      InfEvento.nSeqEvento := nSeqEvento;
                      InfEvento.dhEvento := dtmGenIbx.GetDBNow;
                      InfEvento.tpEvento := teManifDestCiencia;
                    end;

                    dtmCompra.ACBRNFeTriviaDownload.EnviarEvento(vIdLote);
                    // Fim Manifestação

                    // Atualizando o status da NFEDestinadas
                    with dtmCompra do
                    begin
                      with isqAlteraStatusNFeDestinadas do
                      begin
                        ParamByName('id_nfestatusmanisfesto').AsInteger := Integer(smdtCiente);
                        ParamByName('pendentedownload').Clear;
                        ParamByName('Id_Empresa').AsInteger := empresainfo.pessoaInfo.id_pessoa;
                        ParamByName('Chave').AsString := vChave;
                        ParamByName('lanccompras').Clear;
                        ExecQuery;
                      end;

                      isqAlteraStatusNFeDestinadas.Transaction.CommitRetaining;
                    end;
                    // Fim Atualização
                  end;
                end;
              end;
            except
              On E: Exception do
              begin
                if dtmCompra.idsNFeDestinadas.Transaction.Active then
                  dtmCompra.idsNFeDestinadas.Transaction.RollbackRetaining;
              end;
            end;
          end;
          // Fim Gravação
        end
        else if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 656 then
        begin
          dtmSysMsg.FimAguarde;
          ShowWarningMessage('Rejeição: Consumo Indevido!', Self.Caption);
          Exit;
        end
        else if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 593 then
        begin
          dtmSysMsg.FimAguarde;
          ShowWarningMessage('Rejeição: CNPJ-Base consultado difere do CNPJ-Base do Certificado Digital!', Self.Caption);
          Exit;
        end
        else if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then
        begin
          dtmSysMsg.FimAguarde;
          ShowWarningMessage('Nenhum documento localizado!', Self.Caption);
          Exit;
        end
        else
        begin
          dtmSysMsg.FimAguarde;
          ShowWarningMessage('Não foi possível realizar a consulta, erro: ' + vStat + ' - ' + vMotivo + '!', Self.Caption);
          Exit;
        end;

        dtmSysMsg.FimAguarde;

      until (vTemMais = 'S');
    except
      on E : Exception do
      begin
        dtmSysMsg.FimAguarde;
        ShowErrorMessage(E.Message, Self.Caption);
      end;
    end; // try

    ExecutaBusca;
  end;  // if
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Boa noite,

Em 24/04/2023 at 14:27, Márcio Antônio disse:

tenho um código que estava consultando normalmente as notas destinadas contra um cnpj

Se baixa alguns registros, provavelmente seu código está ok.

Por via das dúvidas, crie um log para armazenar todos os NSUs recebidos, se não falhar a sequência, está ok.

Obs: não cole conteúdos grandes de fontes, dificulta a leitura do tópico, quando necessário, anexe um arquivo com o conteúdo.

Em 24/04/2023 at 14:27, Márcio Antônio disse:

alguns clientes começaram a reclamar que algumas notas não estavam aparecendo na consulta, e quando ele ia no ambiente nacional, a mesma estava lá.

A sefaz pode ter demorado para distribuir a NFe para o seu cliente, talvez aguardando mais um tempo ela esteja disponível.

Em 24/04/2023 at 14:27, Márcio Antônio disse:

isso mudou? alguém sabe alguma coisa sobre isso?

Não houve, que me lembre, nenhuma NT com esta informação.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

11 horas atrás, Renato Rubinho disse:

Boa noite,

Se baixa alguns registros, provavelmente seu código está ok.

Por via das dúvidas, crie um log para armazenar todos os NSUs recebidos, se não falhar a sequência, está ok.

Obs: não cole conteúdos grandes de fontes, dificulta a leitura do tópico, quando necessário, anexe um arquivo com o conteúdo.

A sefaz pode ter demorado para distribuir a NFe para o seu cliente, talvez aguardando mais um tempo ela esteja disponível.

Não houve, que me lembre, nenhuma NT com esta informação.

Perdão pela cola do código grande...

Na minha tabela, eu gravo o nsu da nota recebida, e vez ou outra, não fica na sequência... mas eu fico na dúvida, pq eu só gravo na tabela se atender essa minha condição abaixo:

if dtmCompra.ACBRNFeTriviaDownload.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].resDFe.chDFe <> '' then

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
5 horas atrás, Márcio Antônio disse:

Na minha tabela, eu gravo o nsu da nota recebida, e vez ou outra, não fica na sequência... mas eu fico na dúvida, pq eu só gravo na tabela se atender essa minha condição

Com isso você não tem todos os NSUs, a rotina devolve outros tipos de registros também, veja no exemplo, retorna também resumo de eventos e eventos.

Melhor gerar um log para acompanhar tudo.

4 horas atrás, Márcio Antônio disse:

Será que esse ".items" está quebrando?

Não, retorna a mesma informação.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Este tópico foi criado há 369 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.

The popup will be closed in 10 segundos...