diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyTextboxDecimal.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyTextboxDecimal.java index 8978e35fe..23d69518b 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyTextboxDecimal.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyTextboxDecimal.java @@ -21,15 +21,10 @@ import org.zkoss.zul.Textbox; /** * Textbox con validaciones de valores numericos. * - * Validaciones extras: maxValue - Indica cuál es el valor máximo permitido en - * el campo precision - Cuál es la precision de número scale - Cuál es la scala - * obligatorio - Indica se es obligatorio. El valo inicial es false. allowZero - - * Indica si es permitido valor cero allowNegative -Indica si es permitido - * valores negativos defaultZero - Indica se el valor inicial es cero + * Validaciones extras: maxValue - Indica cuál es el valor máximo permitido en el campo precision - Cuál es la precision de número scale - Cuál es la scala obligatorio - Indica se es obligatorio. El valo inicial es false. allowZero - Indica si es permitido valor cero allowNegative -Indica si es permitido valores negativos defaultZero - Indica se el valor inicial es cero * * - * Además de las validaciones extras, si puede ocupar las validaciones del ZK - * (no emptu, etc) + * Además de las validaciones extras, si puede ocupar las validaciones del ZK (no emptu, etc) * * @author gleimar */ @@ -205,8 +200,8 @@ public class MyTextboxDecimal extends Textbox implements AfterCompose { setConstraint((String) null); MyTextboxDecimal.this.setText((String) null); setConstraint(c); - - throw new WrongValueException(comp, new MessageFormat(Labels.getLabel("MSG.CONSTRAINT.MyTextboxDecimalConstraint.valorMaximo")).format(new String[]{maxValue})); + + throw new WrongValueException(comp, new MessageFormat(Labels.getLabel("MSG.CONSTRAINT.MyTextboxDecimalConstraint.valorMaximo")).format(new String[] { maxValue })); } } else if ((precision != null) && (scale != null)) { BigDecimal valor = getBigDecimal(val); @@ -215,7 +210,10 @@ public class MyTextboxDecimal extends Textbox implements AfterCompose { return; } - if ((valor.precision() > precision) || (valor.scale() > scale)) { + // o decremento de -2 na precision e feito, porque o formato de precision/scale(7,2) como o oracle + // para corrigir a validação para o zk, fazemos a conta da precision - 2 mais o valor do scale + // assim nao permitindo que ultrapasse o limite de numeros inteiros. + if (((valor.precision()) > (precision - 2) + valor.scale()) || (valor.scale() > scale)) { MyTextboxDecimal.this.setRawValue((String) null); Constraint c = getConstraint(); setConstraint((String) null);