Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Prezados,

o protoloco da nota denegada não esta retornando, ja mexi em tudo que podia, creio que o erro esteja na função abaixo... ja tentei coisas obvias, e absurdas, mas nada resolveu, e pior não consigo testar isso em modo de homologação.

Gostaria muito de ajuda dos colegas, fico no aguardo

function TRetConsSitNFe.LerXml: boolean;

var

ok: boolean;

i: integer;

begin

Result := False;

try

if leitor.rExtrai(1, 'retConsSitNFe') <> '' then

begin

(*ER03 *)FtpAmb := StrToTpAmb(ok, leitor.rCampo(tcStr, 'tpAmb'));

(*ER04 *)FverAplic := leitor.rCampo(tcStr, 'verAplic');

(*ER05 *)FcStat := leitor.rCampo(tcInt, 'cStat');

(*ER06 *)FxMotivo := leitor.rCampo(tcStr, 'xMotivo');

(*ER07 *)FcUF := leitor.rCampo(tcInt, 'cUF');

(*EP07a*)FchNFe := leitor.rCampo(tcStr, 'chNFe');

(*Darlana*)try

(*Darlana*)FProtocolo := Leitor.rCampo(tcStr, 'nProt');

(*Darlana*)except

(*Darlana*)protNFe.nProt := Leitor.rCampo(tcStr, 'nProt');

(*Darlana*)end;

// Original if FcStat in [100,101] then

(*Darlana*)if FcStat in [100,101,205,110] then // 100 Autorizada, 101 Cancelada, 205 e 110 DENEGADA

begin

if ((Leitor.rExtrai(1, 'protNFe') <> '') or (Leitor.rExtrai(1, 'infProt') <> '')) then

begin

protNFe.tpAmb := StrToTpAmb(ok, Leitor.rCampo(tcStr, 'tpAmb'));

protNFe.verAplic := Leitor.rCampo(tcStr, 'verAplic');

protNFe.chNFe := Leitor.rCampo(tcStr, 'chNFe');

protNFe.dhRecbto := Leitor.rCampo(tcDatHor, 'dhRecbto');

protNFe.nProt := Leitor.rCampo(tcStr, 'nProt');

protNFe.digVal := Leitor.rCampo(tcStr, 'digVal');

protNFe.cStat := Leitor.rCampo(tcInt, 'cStat');

protNFe.xMotivo := Leitor.rCampo(tcStr, 'xMotivo');

end;

end;

if FcStat in [101,151] then

begin

if Leitor.rExtrai(1, 'infCanc') <> '' then

begin

retCancNFe.tpAmb := StrToTpAmb(ok, Leitor.rCampo(tcStr, 'tpAmb'));

retCancNFe.verAplic := Leitor.rCampo(tcStr, 'verAplic');

retCancNFe.cStat := Leitor.rCampo(tcInt, 'cStat');

retCancNFe.xMotivo := Leitor.rCampo(tcStr, 'xMotivo');

retCancNFe.cUF := Leitor.rCampo(tcInt, 'cUF');

retCancNFe.chNFe := Leitor.rCampo(tcStr, 'chNFe');

retCancNFe.dhRecbto := Leitor.rCampo(tcDatHor, 'dhRecbto');

retCancNFe.nProt := Leitor.rCampo(tcStr, 'nProt');

end;

end;

{eventos_juaumkiko}

if Assigned(procEventoNFe) then

procEventoNFe.Free;

procEventoNFe := TRetEventoNFeCollection.Create(Self);

i:=0;

while Leitor.rExtrai(1, 'procEventoNFe', '', i + 1) <> '' do

begin

procEventoNFe.Add;

procEventoNFe.Items.RetEventoNFe.Leitor.Arquivo := Leitor.Grupo;

procEventoNFe.Items.RetEventoNFe.LerXml;

inc(i);

end;

Result := True;

end;

except

Result := False;

end;

end;

  • 1 mês depois ...
Postado

Colega, também estou enfrentando esse problema. E no meu caso é um pouco mais grave devido a esperteza dos meus usuários. :???:  Um cliente meu emitiu 3 nfe's que ficaram como denegado e como o componente não retornou o protocolo, meu sistema permitiu deletar as notas. Alguns usuários "ispertos" que tenho, foram lá e deletaram as 3 notas achando que não estava na receita. Resumindo: me f#@& pra recuperar a chave de acesso e o xml das 3 notas. Se você já conseguiu resolver esse problema, por favor poste ai a solução.

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Postado

Dica do dia:

 

depois de muito apanhar, descobri q nunca se deleta coisas do BD....

em todas as tabelas agora ponho uma flag "Deletado".  Soh mostro pro usuario o que está Deletado = false.

  • 1 mês depois ...
Postado

Boa noite. Comigo também aconteceu essa situação em um cliente que teve uma NFe denegada, sendo que ai pude fazer testes desse problema relatado pela Darlana. Na verdade eu apenas precisei mudar a linha 152 da unit pcnRetConsSitNFe.pas para "case FcStat of 100,101,110,150,151,155,301,302:".

Ou seja, adicionei as cstat de denegação que pelo que pesquisei, podem ser 110, 301 ou 302, e usei o case, já que o operador in não funciona com numeros inteiros maiores que 255. Talvez a Darlana não obteve sucesso por testar com uma NFe que tinha cstat = 301 ou 302, que ela não tinha adicionado na sua alteração.

Pelos meus testes com essa alteração até o danfe sai com a tarja "NF-e DENEGADA" após consultar a NFe assim (o que nao acontecia antes).

Segue a unit alterada em anexo para o pessoal responsável avaliar e upar, se for o caso.

Desculpem se fui exageradamente detalhista...

 

pcnRetConsSitNFe.pas

Postado

MUITO OBRIGADOOOOO !!!!! Tirou um peso das minhas costas. Só uma dúvida: Quando será utilizado o código 110 já que agora, pelo que percebi, a receita só retorna 301 e 302?

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Postado

Eu que agradeço a oportunidade André, e parabéns pelo excelente trabalho de toda a equipe. Quanto a sua dúvida Carlos, o CStat 110 é na verdade o motivo da rejeição da NFe (uso denegado), enquanto que 301 e 302 são os motivos da Denegação (irregularidade fiscal do emitente ou do destinatário). Posso estar enganado quanto a isso, mas acredito que o 110 vai dar somente na hora que vc tentar autorizar a NFe e os outros CStat quando vc depois consultar a NFe Denegada.

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