Ir para conteúdo
  • Cadastre-se

dev botao

Cancelamento NFE


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

Recommended Posts

Quando cancelo uma NF-e o tratamento do retorno está gerando uma string vazia, embora a resposta da sefaz com cancelamento da nfe homologado. Debugando a aplicação, verifiquei que na linha FPRetWS := SeparaDados(FPRetornoWS, 'nfeRecepcaoEventoResult') do procedimento TNFeEnvEvento.TratarResposta da unit ACBrNfeWebServices, esta retornando vazio. Alguem já passou por isso? Tem alguma correção?

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...
  • Membros Pro

Estou com o Mesmo problema debugando observei que ACBrNFeWebServices, na função :

function TNFeEnvEvento.TratarResposta: Boolean; 

Nesta Linha Abaixo :

 if FEvento.Evento.Items.InfEvento.chNFe =
            EventoRetorno.retEvento.Items[J].RetInfEvento.chNFe then

 

'EventoRetorno.retEvento.Items[J].RetInfEvento.chNFe '

Esta sendo retornado vazio o que faz  com que não entre na condição e não preencha o campo Status e Motivo da Rejeição.

 

Minha Sugestão é que essas Duas Linhas fiquem fora do laço :

            FEvento.Evento.Items.RetInfEvento.cStat :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.cStat;
            FEvento.Evento.Items.RetInfEvento.xMotivo :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.xMotivo;

 

Isso deve resolver o problema;

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Giovanne Fontenele Trevia disse:

Estou com o Mesmo problema debugando observei que ACBrNFeWebServices, na função :

function TNFeEnvEvento.TratarResposta: Boolean; 

Nesta Linha Abaixo :

 if FEvento.Evento.Items.InfEvento.chNFe =
            EventoRetorno.retEvento.Items[J].RetInfEvento.chNFe then

 

'EventoRetorno.retEvento.Items[J].RetInfEvento.chNFe '

Esta sendo retornado vazio o que faz  com que não entre na condição e não preencha o campo Status e Motivo da Rejeição.

 

Minha Sugestão é que essas Duas Linhas fiquem fora do laço :

            FEvento.Evento.Items.RetInfEvento.cStat :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.cStat;
            FEvento.Evento.Items.RetInfEvento.xMotivo :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.xMotivo;

 

Isso deve resolver o problema;

Boa tarde Giovanne, você fez testes retirando a condição?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

não mas fiz teste colocando os campos abaixo da seguinte maneira :

function TNFeEnvEvento.TratarResposta: Boolean;
var
  Leitor: TLeitor;
  I, J: integer;
  NomeArq, PathArq, VersaoEvento, Texto: String;
begin
  FEvento.idLote := idLote;

  FPRetWS := SeparaDadosArray(['nfeRecepcaoEventoResult',
                               'nfeRecepcaoEventoNFResult',
                               'nfeResultMsg'],FPRetornoWS );


  EventoRetorno.Leitor.Arquivo := ParseText(FPRetWS);
  EventoRetorno.LerXml;

  FcStat := EventoRetorno.cStat;
  FxMotivo := EventoRetorno.xMotivo;
  FPMsg := EventoRetorno.xMotivo;
  FTpAmb := EventoRetorno.tpAmb;

  Result := (FcStat = 128);

  //gerar arquivo proc de evento
  if Result then
  begin
    Leitor := TLeitor.Create;
    try
      for I := 0 to FEvento.Evento.Count - 1 do
      begin
        for J := 0 to EventoRetorno.retEvento.Count - 1 do
        begin
          if FEvento.Evento.Items.InfEvento.chNFe =
            EventoRetorno.retEvento.Items[J].RetInfEvento.chNFe then
          begin
            FEvento.Evento.Items.RetInfEvento.tpAmb :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.tpAmb;
            FEvento.Evento.Items.RetInfEvento.nProt :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.nProt;
            FEvento.Evento.Items.RetInfEvento.dhRegEvento :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.dhRegEvento;
            FEvento.Evento.Items.RetInfEvento.cStat :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.cStat;
            FEvento.Evento.Items.RetInfEvento.xMotivo :=
              EventoRetorno.retEvento.Items[J].RetInfEvento.xMotivo;

            Texto := '';

            if EventoRetorno.retEvento.Items[J].RetInfEvento.cStat in [135, 136, 155] then
            begin
              VersaoEvento := TACBrNFe(FPDFeOwner).LerVersaoDeParams(LayNfeEvento);

              Leitor.Arquivo := FPDadosMsg;
              Texto := '<procEventoNFe versao="' + VersaoEvento + '" xmlns="' + ACBRNFE_NAMESPACE + '">' +
                        '<evento versao="' + VersaoEvento + '">' +
                         Leitor.rExtrai(1, 'infEvento', '', I + 1) +
                         '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">' +
                          Leitor.rExtrai(1, 'SignedInfo', '', I + 1) +
                          Leitor.rExtrai(1, 'SignatureValue', '', I + 1) +
                          Leitor.rExtrai(1, 'KeyInfo', '', I + 1) +
                         '</Signature>'+
                        '</evento>';

              Leitor.Arquivo := FPRetWS;
              Texto := Texto +
                         '<retEvento versao="' + VersaoEvento + '">' +
                          Leitor.rExtrai(1, 'infEvento', '', J + 1) +
                         '</retEvento>' +
                        '</procEventoNFe>';

              if FPConfiguracoesNFe.Arquivos.Salvar then
              begin
                NomeArq := OnlyNumber(FEvento.Evento.Items.InfEvento.Id) + '-procEventoNFe.xml';
                PathArq := PathWithDelim(GerarPathEvento(FEvento.Evento.Items.InfEvento.CNPJ));

                FPDFeOwner.Gravar(NomeArq, Texto, PathArq);
                FEventoRetorno.retEvento.Items[J].RetInfEvento.NomeArquivo := PathArq + NomeArq;
                FEvento.Evento.Items.RetInfEvento.NomeArquivo := PathArq + NomeArq;
              end;

              { Converte de UTF8 para a String nativa e Decodificar caracteres HTML Entity }
              Texto := ParseText(Texto);
            end;

            // Se o evento for rejeitado a propriedade XML conterá uma string vazia
            FEventoRetorno.retEvento.Items[J].RetInfEvento.XML := Texto;
            FEvento.Evento.Items.RetInfEvento.XML := Texto;

            break;
          end;
            FEvento.Evento.Items.RetInfEvento.cStat :=  EventoRetorno.retEvento.Items[J].RetInfEvento.cStat;
            FEvento.Evento.Items.RetInfEvento.xMotivo :=   EventoRetorno.retEvento.Items[J].RetInfEvento.xMotivo;

        end;
      end;
    finally
      Leitor.Free;
    end;
  end;
end;

 

 

Link para o comentário
Compartilhar em outros sites

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