Ir para conteúdo
  • Cadastre-se

Daniel Anzolin

Membros
  • Total de ítens

    9
  • Registro em

  • Última visita

Tudo que Daniel Anzolin postou

  1. 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.
  2. Posso fazer isso sem problemas, apenas levei em consideração uma opção que acredito ser muito útil para quem utiliza e somente efetua a validação dentro do sistema para fazer determinada situação e não necessitar da comparação via string. Sendo assim com o código fica mais otimizado e limpo.
  3. O método que você utiliza não foi modificado. Apenas foi adicionado um novo método para que não seja necessário fazer a comparação via string. Só é necessário saber se é valido ou não. A function ValidarDocumento que hoje é utilizada não foi modificada.
  4. Não testei no Delphi 7. Não me atentei a esse caso. Estou enviando em anexo a unit com a function atualizada e funcional. Obrigado pela atenção. Function DocumentoValido(const TipoDocto : TACBrValTipoDocto; const Documento : String): Boolean; begin Result := ValidarDocumento(TipoDocto, Documento) = ''; end; ACBrValidador.pas
  5. Function DocumentoValido(const TipoDocto : TACBrValTipoDocto; const Documento : String): Boolean; begin Result := ValidarDocumento(TipoDocto, Documento).IsEmpty; end; Foi adicionado esse método para ter um retorno booleano da validação. Com isso, é possível validar documentos de forma mais direta e prática.
  6. Bom dia, Ao utilizar o componente ACBrValidador, percebi que não há uma função que retorne diretamente um valor booleano indicando a validade de um documento. Por isso, implementei um método adicional que encapsula a validação e retorna True ou False conforme o resultado, em vez de uma String. Com isso, é possível validar documentos de forma mais direta e prática utilizando DocumentoValido(...). ACBrValidador.pas
  7. @Giovani Mazuchelli Del Col Trocando para "Id" deu certo para esse caso, vou fazer testes com envios e outros tipos de registros, assim que conclui os testes lhe informo se deu certo. Att.,
  8. @Giovani Mazuchelli Del Col Pois é, pensei em mudar, lhe questionei pois havia passado um bom tempo dessa situação. Vou seguir o conselho e alterar manualmente a informação, pois realmente ele está pegando a informação errada. Obrigado pelo retorno. Att.,
  9. Boa tarde, Chegou a essa conclusão ? Estou com minha situação onde está atribuindo o id da TEvtTotal. Att.,
×
×
  • 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.