Ir para conteúdo
  • Cadastre-se

dev botao

erro 217 - MDF-e


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

Recommended Posts

  • Consultores

Boa noite Luis,

Favor anexar o XML do MDF-e rejeitado para que possamos analisar.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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