- Este debate está vacío.
-
AutorEntradas
-
6 mayo, 2010 a las 8:11 pm #31401Javier AderParticipante
Buenas. Emitiendo una orden de pago usando Trans. Bancaria como medio me aparecieron un par de errores severos (el pago se realiza igual correctamente). Posiblemente ya lo hayan visto, pero bueno, por las dudas lo pongo:
Code:===========> MPayment.set_Value: CreditCardExpMM=0 – MinValue=1(1) – compared with Numeric Value=0(0) – results in 1 [11]
===========> MPayment.set_Value: CreditCardExpYY=0 – MinValue=3(3) – compared with Numeric Value=0(0) – results in 1 [11]
===========> MPayment.set_Value: CreditCardExpMM=0 – MinValue=1(1) – compared with Numeric Value=0(0) – results in 1 [11]
===========> MPayment.set_Value: CreditCardExpYY=0 – MinValue=3(3) – compared with Numeric Value=0(0) – results in 1 [11]
===========> MPayment.set_Value: CreditCardExpMM=0 – MinValue=1(1) – compared with Numeric Value=0(0) – results in 1 [11]
===========> MPayment.set_Value: CreditCardExpYY=0 – MinValue=3(3) – compared with Numeric Value=0(0) – results in 1 [11]Basicamante es un error de validación de minimo/máximo que esta tirando PO.set_value (se esta queriendo setear por ej, el mes, MM, con cero). Mirando un poco el codigo de MPayment se ve que tiene redefinido setCreditCardExpMM (y YY), y si el valor que se esta queriendo setear no esta entre 1..12, simplemente no hace nada; el el valor esta en ese rango se llama a a super.setCredidCardExpMM (es va a llevar a la validación en set_value de PO, pero en este caso no debería tirar error. Entonces segui mirando un poco mas y vi que en el unico lugar en que se llama sin a super.setCreditCardExpMM (y YY), es en MPayment.clearTenderTypeFields(), que a su vez es solo llamado desde MPayment.beforeSave().
Las columnas en la base de datos permiten NULL (tiene sentido, no siempre se usan) pero seguro que a nivel de metadatos estas estan definidas como no solo requeridas ni no también con un restricción de limites (no lo chequie pero casi seguro). No se cual sería la modificación para que clearTenderTypeFields no genere estos errores “severos” pero me imagino: o no se llama a super.setCreditCardExp, o se permiten null sobre esta columns a nivel de metadatos, se se llama directamente al “setValue” especial que “saltea” las restricciones.También encontré otro pequeño detalle (lo pongo aca para que para no hacer otro thread y que seguramente también ya lo han visto) que esta asociada a la lógica de plugins cuando se intenta buscar un proceso asociada a un boton que