Jump to content

erro 217 - MDF-e


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

Recommended Posts

  • Consultores

Bom dia Luis,

A mensagem de rejeição que consta na imagem que você anexou na postagem anterior se refere ao envio ou a consulta?

Pois essa mensagem de rejeição só é retornada quando consultamos um MDF-e e o mesmo ainda não foi enviado.

Não sei como é a sua rotina, mas o que pode ter ocorrido:

O MDF-e foi enviado, mas ocorreu um erro, a sua rotina mascarou esse erro e em seguida realizou uma consulta, ai foi apresentado a rejeição informando que o MDF-e não consta na base de dados.

Neste caso sugiro que o MDF-e seja enviado novamente.

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro

bom dia,

Italo seguindo sua orientação fiz algumas pesquisa, mudei a forma de pegar o status de retorno e realmente creio que estava mascarando o erro verdadeiro

a forma de pegar o status de retorno que mudei está correto.

segue abaixo copia do código que utilizo:

procedure TF_Damdfe.lb_enviarClick(Sender: TObject);
var
  aChaveMDF, aRecibo, aProtocolo, aMotivo, aDThora, aCancelada, aXml, NomeArq:String;
  StatusRetorno,cancelada,aStatusDAMDFE, aStatus, aEncerrado: string;
  controle:Integer;
begin
  lb_enviar.Enabled := False;
  controle := 0;
  Me_Retorno.Clear;
  aStatus := 'DG';

  try
    F_DMdados.ACBrMDFe1.Enviar(CurrToStr(ce_numero.Value));

    aChaveMDF  := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].chMDFe;
    aProtocolo := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].nProt;
    aMotivo    := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].xMotivo;
    aRecibo    := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.nRec;
    aDThora    := DateToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].dhRecbto);
//    aStatusDAMDFE := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat);
//    StatusRetorno := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat);

    //mudei para forma abaixo
    F_DMdados.ACBrMDFe1.WebServices.Recibo.Recibo := aRecibo;
    F_DMdados.ACBrMDFe1.WebServices.Recibo.Executar;
    aStatusDAMDFE := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat);
    StatusRetorno := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat);

    aCancelada := 'N';
    aEncerrado := 'N';

    if (StatusRetorno = '100') then
      begin
        aStatus    := 'TR';
        controle   := 1;
        F_Damdfe.GravaChaveMDF(aChaveMDF,conexao,aMotivo,aProtocolo,aRecibo,aDThora,aCancelada,aStatusDAMDFE,aStatus,aEncerrado);

        ShowMessage('Dados de Retorno da MDF-e salvo com Sucesso !');

        lb_Fechar.Enabled := True;
        lb_Fechar.SetFocus;
      end;
  except
    on E:Exception do
      begin
        aStatus    := 'DG';

        Me_Retorno.Clear;
        Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].chMDFe);
        Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].nProt);
        Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].xMotivo);
        Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.nRec);
        Me_Retorno.Lines.Add(DateToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].dhRecbto));

        F_DMdados.ACBrMDFe1.WebServices.Recibo.Recibo := aRecibo;
        F_DMdados.ACBrMDFe1.WebServices.Recibo.Executar;
        Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));
        Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));
      end;
  end;

  if (StatusRetorno = '204') or (StatusRetorno = '220') then  // esta assim antes if (status = 'DG') then
    begin                                                     // creio que era isso, ele entrava novamente efetuava a consulta e omitia o erro 
      try
        XML := ed_chave.Text+ed_dv.Text+'-mdfe.xml';
        dire := Trim('C:\MDF_SAT\');
        MapeiaDiretorio(dire);

        F_DMdados.ACBrMDFe1.Manifestos.Clear;
        F_DMdados.ACBrMDFe1.Manifestos.LoadFromFile(arq_xml);
        F_DMdados.ACBrMDFe1.Consultar;

        aChaveMDF  := F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.chMDFe;
        aProtocolo := F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.nProt;
        aMotivo    := F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.xMotivo;
        aRecibo    := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.nRec; // F_DMdados.ACBrNFe1.WebServices.Retorno.Recibo;// '';
        aDThora    := DateToStr(F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.dhRecbto);
        aCancelada := 'N';
        aEncerrado := 'N';
        aStatusDAMDFE := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.cStat);
        StatusRetorno := IntToStr(F_DMdados.ACBrMDFe1.WebServices.Consulta.protMDFe.cStat);

        if (aChaveMDF <> '') then  // foi retirada vamos agusrdar
          begin
            aStatus    := 'TR';
            controle   := 1;
            F_Damdfe.GravaChaveMDF(aChaveMDF,conexao,aMotivo,aProtocolo,aRecibo,aDThora,aCancelada,aStatusDAMDFE,aStatus,aEncerrado);

            ShowMessage('Dados de Retorno da MDF-e salvo com Sucesso !');

            lb_Fechar.Enabled := True;
            lb_Fechar.SetFocus;
          end;
      except
        on E:Exception do
          begin
            ShowMessage('Erro ao Salvar os Dados da MDF-e Verifique!!! ' + E.Message);

            Me_Retorno.Clear;
            Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].chMDFe);
            Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].nProt);
            Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].xMotivo);
            Me_Retorno.Lines.Add(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.nRec);
            Me_Retorno.Lines.Add(DateToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].dhRecbto));

            F_DMdados.ACBrMDFe1.WebServices.Recibo.Recibo := aRecibo;
            F_DMdados.ACBrMDFe1.WebServices.Recibo.Executar;
            Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));
            Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));

            lb_Fechar.Enabled := True;
            lb_Fechar.SetFocus;
          end;
      end;
    end;

  if (controle = 0) then
    begin
      F_DMdados2.cdsRegrasMDF.Close;
      F_DMdados2.cdsRegrasMDF.CommandText := 'SELECT * FROM NFE_REGRASVAL WHERE CODMSG = :CODMSG';
      F_DMdados2.cdsRegrasMDF.Params[0].AsInteger := StrToInt(StatusRetorno);
      F_DMdados2.cdsRegrasMDF.Open;

      if (F_DMdados2.cdsRegrasMDF.RecordCount <> 0) then
        begin
          try
            aChaveMDF  := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].chMDFe;
            aProtocolo := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].nProt;
            aMotivo    := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].xMotivo;
            aRecibo    := F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.nRec;
            aDThora    := DateToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].dhRecbto);

            F_DMdados.ACBrMDFe1.WebServices.Recibo.Recibo := aRecibo;
            F_DMdados.ACBrMDFe1.WebServices.Recibo.Executar;
            Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));
            Me_Retorno.Lines.Add(IntToStr(F_DMdados.ACBrMDFe1.WebServices.Retorno.MDFeRetorno.ProtMDFe.Items[0].cStat));

            aCancelada := 'N';
            aEncerrado := 'N';            
            aStatus    := 'DG';

            F_Damdfe.GravaChaveMDF(aChaveMDF,conexao,aMotivo,aProtocolo,aRecibo,aDThora,aCancelada,aStatusDAMDFE,aStatus,aEncerrado);

            ShowMessage('Dados de Retorno da MDF-e salvo com Sucesso !');
          except
            on E:Exception do
              begin
                ShowMessage('Erro ao Gravar dados de Retorno - Rejeição: Uso Denegado !!! ' + E.Message);

                lb_Fechar.Enabled := True;
                lb_Fechar.SetFocus;
              end;
          end;
        end // deixar assim por enquanto 22/02/2015 agusrda
       else
        begin
          lb_Fechar.Enabled := True;
          lb_Fechar.SetFocus;
        end;
    end;


end;

 

Link to comment
Share on other sites

  • Consultores

Luis,

Por favor não poste códigos de rotinas como parte do texto, procure sempre anexar como um arquivo TXT.

Com a alteração funcionou?

 

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.