Daniel Anzolin Postado 31 Março Postado 31 Março Boa tarde. Ao realizar a validação de uma nota, notei que a mensagem de alerta gerada na Unit ACBrNFeNotasFiscais está exibindo a tag %TAGNIVEL% de forma literal para o usuário final. Estamos implementando um controle melhor das mensagens de rejeição e identifiquei essa situação no momento em que a Unit ACBrNfeNotasFiscais faz a verificação se a nota é valida. if EstaVazio(AXML) then begin Erro := ACBrStr('NFe não encontrada no XML'); NotaEhValida := False; end else NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); if not NotaEhValida then begin FErroValidacao := ACBrStr('Falha na validação dos dados da nota: ') + IntToStr(NFe.Ide.nNF) + sLineBreak + FAlertas; FErroValidacaoCompleto := FErroValidacao + sLineBreak + Erro; raise EACBrNFeException.CreateDef( IfThen(Configuracoes.Geral.ExibirErroSchema, ErroValidacaoCompleto, ErroValidacao)); end; Identificação: No constructor da classe TACBrXmlWriterOptions.Create, a variável FFormatoAlerta é inicializada com: 'TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.' No entanto, na procedure wAlerta, o processamento da mensagem não realiza o StringReplace para a tag %TAGNIVEL%, resultando em mensagens "sujas" como no exemplo abaixo: Msg: Falha na validação... TAG:%TAGNIVEL% ID:X17/cMunFG(Código do Município FG) - Conteúdo inválido. Sugestão de Melhoria: Alterar o valor padrão de FFormatoAlerta no constructor para um formato que utilize apenas as tags que são efetivamente tratadas pelo componente, tornando a leitura mais amigável. Novo Formato Sugerido: FFormatoAlerta := 'TAG: %TAG% (ID:%ID%) - %DESCRICAO% -> %MSG%'; Resultado esperado com a alteração: Msg: Falha na validação... TAG: cMunFG (ID:X17) - Código do Município FG -> Conteúdo inválido. Obrigado e tenha um ótimo dia.
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora