Uso da Biblioteca com precisão de mais de 2 dígitos
Closed this issue · 1 comments
Olá, estou com uma dúvida com relação ao uso da biblioteca quando os campos requerem precisão de mais de dois dígitos... por exemplo, os campos abaixo do bloco IPI, requerem 4 casas decimais:
- getImposto().getIpi().getTributado().getQuantidade() >>> qUnid_IPI = N (16.4)
- getImposto().getIpi().getTributado().getValorUnidadeTributavel() >>> vUnid_IPI = N (15.4)
Entretanto, ao utilizar o método abaixo para setar os campos, com um valorUnitario = 2,5000 :
public void setValorUnidadeTributavel(final BigDecimal valorUnitario) {
if (this.valorBaseCalculo != null || this.percentualAliquota != null) {
throw new IllegalStateException("Nao pode setar valor unidade tributavel se valorBaseCalculo ou PercentualAliquota esta setado");
}
this.valorUnidadeTributavel = DFBigDecimalValidador.tamanho15comAte4CasasDecimais(valorUnitario, "Valor Unitario IPI Tributado");
}
Notamos que os métodos de validação, tanto DFBigDecimalValidador.tamanho15comAte4CasasDecimais, quanto DFBigDecimalValidador.tamanho7ComAte4CasasDecimais por exemplo, ignoram a precisão ''.setScale(4)'', removendo os zeros não significativos, com isso o número fica = 2,5 e ao prosseguir obtemos o erro abaixo:
Erro ao validar a nota: cvc-pattern-valid: O valor '2.5' não tem um aspecto válido em relação ao padrão '0|0\.[0-9]{4}|[1-9]{1}[0-9]{0,10}(\.[0-9]{4})?' do tipo 'TDec_1104'.
Como fazer nesse caso?
Olá @edudoda.
Talvez seria o caso de trocar o DFBigDecimalValidador.tamanho15comAte4CasasDecimais para DFBigDecimalValidador.tamanho15com4CasasDecimais (implementar um metodo que obriga a ter 4 casas decimais) na formatação?
Acho que pode ser uma saida valida que não deve quebrar a lógica dos demais.