Ir para conteúdo
  • Cadastre-se

dev botao

Retorno de Rejeições e Erros de Validação


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

Recommended Posts

Boa noite pessoal

Estou saindo do D7+Firebird+cds para D2010+Firebird+cds

Eu sempre tratei as mensagens de retorno através de uma função com as mensagens enumeradas sendo pesquisadas pelo codigo de retorno da SEFAZ.

Com a mudança para o D2010, o mesmo está se recusando a aceitar uma função muito grande, o que é o caso dessa função.

Estive procurando soluções dentro do acbr e encontrei o método "acbrNFe.NotasFiscais.Items.ErroRegrasdeNegocios", percebi que o danado pega até papo de boi no pasto.

Por acaso alguem poderia me ajudar a montar uma função tipo

Function RetMsg(aComponente:TAcbrNFe;aIndice:Integer):String;

Begin

   Result:=aComponente.NotasFiscais.item[aIndice].ErroRegradeNegocios;

End;

Ou algo parecido com essa funcionalidade

Pois assim me parece que poderia usar para qualquer tipo de captura da mensagem de erro, Rejeição ou de sucesso ex:

NFE retorno = 100 - Autorizado o uso da NF-e

Mensagem_a_Ser_Mostrada_ao_Usuario:=RetMsg(dm.acbrnfe,0);

NFE Retorno = 101 - Cancelamento Homologado

Mensagem_a_Ser_Mostrada_ao_Usuario:=RetMsg(dm.acbrnfe,0);

NFE Retorno = 204 - Duplicidade

Mensagem_a_Ser_Mostrada_ao_Usuario:=RetMsg(dm.acbrnfe,0);

Pelo que notei, essa ErroRegraDeNegocios tem para NFe,CF-e,NFS-e, ou seja, com apenas uma pequena função, já poderiamos resolver todos os nossos problemas.

Me perdoem se estou atrasado e não ter encontrado algo caso já exista essa facilidade.

Abraço a todos

Link para o comentário
Compartilhar em outros sites

Na verdade se vc observar a rotina de regra de negócios, não tem todas as validações, por exemplo, se o NCM estiver errado, não vai passar ai.

A rotina que valida as regras de negócios é muito bom, mas a grosso modo, são rotinas que poderiam, ou pelo menos, deveriam estar dentro do seu fonte. Atente também para usar a rotina nfe.NotasFiscais.Validar, onde ele não irá pegar as regras de negócios, mas os erros relacionados a validação dos XSDs, dai sim acho que valeria a pena uma tratamento com mensagens de correções de erros personalizadas..isso é apenas o que acho...abraço.

Link para o comentário
Compartilhar em outros sites

Boa tarde Ricardo

Dá sim, da erro e diz que a procedure é muito grande

{

Checking project dependencies...
Compiling CAAPCOM.dproj (Debug configuration)
[DCC Error] U_FUNCOES.pas(6561): E2283 Too many local constants.  Use shorter procedures
[DCC Fatal Error] APLICATIVO.dpr(333): F2063 Could not compile used unit 'U_FUNCOES.pas'
Failed
Elapsed time: 00:00:03.2

}

São apenas 517 linhas, por enquanto pois se a SEFAZ inventar mais alguns codigos de retono, ain só vai piorando kkkk

Se eu não estiver sabendo fazer, não sei. Só digo que isso funciona desse jeito no D7 desde 2004.

Function RespDaConsultaNFE(CodigoResposta:integer):String;
Var
  i:integer;
  r:string;
begin
  Case CodigoResposta of
  0:r:='Ambiente do Sefaz se encontra Instável. Tente Mais Tarde';
  100:r:='Autorizado o uso da NF-e';
  101:r:='Cancelamento de NF-e homologado';
  102:r:='Inutilização de número homologado';
  103:r:='Lote recebido com sucesso';
  104:r:='Lote processado';
  105:r:='Lote em processamento';
  106:r:='Lote não localizado';
  107:r:='Serviço em Operação';
  108:r:='Serviço Paralisado Momentaneamente (curto prazo)';
  109:r:='Serviço Paralisado sem Previsão';
  110:r:='Uso Denegado';
  111:r:='Consulta cadastro com uma ocorrência';
  ...
  ...
  ...
  999:r:='Rejeição: Erro não catalogado';
  Else
    r:='('+IntToStr(CodigoResposta)+') Erro não Identificado pelo Sistema';
  End;
  RespDaConsultaNFE:=r;
end;

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Consultores

Bom dia Marcelo,

Pra que tudo isso?

Me diz uma coisa a sua função RespDaConsultaNFe possui um parâmetro de entrada chamado CodigoResposta, correto?

Esse código resposta é o valor retornado na propriedade cStat, correto?

Pois bem, da mesma forma que você lê o valor de cStat se mudar para xMotivo terá a descrição do código.

Veja este exemplo:

   Codigo        := ACBrNFe.WebServices.Enviar.cStat;      // Codigo é uma variável do tipo Integer.
   Descricao   := ACBrNFe.WebServices.Enviar.xMotivo;  // Descricao é uma variável do tipo String.

Resumindo não precisa criar uma função como você fez, e depois ter que realizar alterações nela a cada código que a SEFAZ venha criar.

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

Boa noite

Owww rapá, você é o cara, não desmerecendo ninguém dos moderadores e colaboradores, mas você faz parte da minha lista de pessoas especiais, mesmo sem conhece-lo.

Se um dia tivermos oportunidade de nós reunirmos, "não pra falar de programação", o que vai ser muiiiiito difícil, com certeza darei uma abraço de irmão em cada um de vocês que estão sempre dispostos e coerentes.

 

Muito obrigado

 

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

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

The popup will be closed in 10 segundos...