Comportamiento erróneo de un ef_editable_moneda

Buen día.

En un proyecto en Toba 2.1 (trabaja con metadatos compilados), viene migrado de la 1.5, tengo en un formulario en particular en una operación en particular, y uno de sus campos es un ef_editable_moneda (adjunto metadato compilado de la fila en cuestión) que al momento de grabar los datos (al ingresar los valores visualmente salen correctos) le agrega los dos campos decimales , es decir que si ingreso 10,27 me va a grabar 1027,00.


array (
      'objeto_ei_formulario_fila' => '82000106',
      'objeto_ei_formulario' => '82000017',
      'objeto_ei_formulario_proyecto' => 'gestion_extinv',
      'identificador' => 'monto',
      'elemento_formulario' => 'ef_editable_moneda',
      'columnas' => 'monto',
      'obligatorio' => 0,
      'oculto_relaja_obligatorio' => 0,
      'orden' => '10',
      'etiqueta' => 'Monto a transferir:',
      'etiqueta_estilo' => NULL,
      'descripcion' => NULL,
      'colapsado' => 0,
      'desactivado' => 0,
      'estilo' => NULL,
      'total' => NULL,
      'inicializacion' => NULL,
      'permitir_html' => 0,
      'deshabilitar_rest_func' => 0,
      'estado_defecto' => NULL,
      'solo_lectura' => 0,
      'solo_lectura_modificacion' => 0,
      'carga_metodo' => NULL,
      'carga_clase' => NULL,
      'carga_include' => NULL,
      'carga_dt' => NULL,
      'carga_consulta_php' => NULL,
      'carga_sql' => NULL,
      'carga_fuente' => NULL,
      'carga_lista' => NULL,
      'carga_col_clave' => NULL,
      'carga_col_desc' => NULL,
      'carga_maestros' => NULL,
      'carga_cascada_relaj' => NULL,
      'cascada_mantiene_estado' => 0,
      'carga_permite_no_seteado' => 0,
      'carga_no_seteado' => NULL,
      'carga_no_seteado_ocultar' => NULL,
      'edit_tamano' => 16,
      'edit_maximo' => 14,
      'edit_mascara' => NULL,
      'edit_unidad' => NULL,
      'edit_rango' => '[-999999999..999999999)',
      'edit_filas' => NULL,
      'edit_columnas' => NULL,
      'edit_wrap' => NULL,
      'edit_resaltar' => NULL,
      'edit_ajustable' => NULL,
      'edit_confirmar_clave' => NULL,
      'edit_expreg' => NULL,
      'popup_item' => NULL,
      'popup_proyecto' => NULL,
      'popup_editable' => NULL,
      'popup_ventana' => NULL,
      'popup_carga_desc_metodo' => NULL,
      'popup_carga_desc_clase' => NULL,
      'popup_carga_desc_include' => NULL,
      'popup_puede_borrar_estado' => NULL,
      'fieldset_fin' => NULL,
      'check_valor_si' => NULL,
      'check_valor_no' => NULL,
      'check_desc_si' => NULL,
      'check_desc_no' => NULL,
      'check_ml_toggle' => NULL,
      'fijo_sin_estado' => NULL,
      'editor_ancho' => NULL,
      'editor_alto' => NULL,
      'editor_botonera' => NULL,
      'selec_cant_minima' => NULL,
      'edit_expreg' => NULL,
      'popup_item' => NULL,
      'popup_proyecto' => NULL,
      'popup_editable' => NULL,
      'popup_ventana' => NULL,
      'popup_carga_desc_metodo' => NULL,
      'popup_carga_desc_clase' => NULL,
      'popup_carga_desc_include' => NULL,
      'popup_puede_borrar_estado' => NULL,
      'fieldset_fin' => NULL,
      'check_valor_si' => NULL,
      'check_valor_no' => NULL,
      'check_desc_si' => NULL,
      'check_desc_no' => NULL,
      'check_ml_toggle' => NULL,
      'fijo_sin_estado' => NULL,
      'editor_ancho' => NULL,
      'editor_alto' => NULL,
      'editor_botonera' => NULL,
      'selec_cant_minima' => NULL,
     'selec_cant_maxima' => NULL,
      'selec_utilidades' => NULL,
      'selec_tamano' => NULL,
      'selec_ancho' => NULL,
      'selec_serializar' => NULL,
      'selec_cant_columnas' => NULL,
      'upload_extensiones' => NULL,
      'punto_montaje' => NULL,
      'carga_consulta_php_clase' => NULL,
      'carga_consulta_php_archivo' => NULL,
    ),

Lo más extraño de todo esto es que tengo otros formularios en otras operaciones que también tienen campos ef_editable_moneda, pero no me pasa lo mismo.

Otra cuestión es que creé otro formulario en la misma operación y el comportamiento del ef_editable_moneda en cuestión, sigue siendo incorrecto al momento de grabar los datos.

¿Alguna idea de algo que pueda mirar o corroborar?

Muchas gracias.
Alejandro.

Puede ser:

  1. como tengas definido el campo en la Base de datos
  2. Mal uso de la máscara en toba_editor

Hola Jhon, gracias por tu respuesta.

  1. El campo en la base de datos lo tengo definido como numeric(14,2).
  2. No usa máscaras el ef en cuestión.

Saludos.

Hola Alejandro,

pareciera ser un inconveniente con la mascara en JS, tenes a mano Firebug o alguna herramienta de debug para ver porque no identifica correctamente la posicion de los decimales?.

De paso fijate si podes hacer un ei_arbol de los parametros que te entrega el server en PHP, para saber si es que se interpreta mal en el cliente o se interpreta mal en el server al llegar.

Saludos

Hola Richard, paso a responderte:

  1. La máscara que se aplica en JS es la correcta (es la que corresponde al ef_editable_moneda ‘$ ###.###,00’).

  2. Hice un ei_arbol desde el evento implícito del formulario y ya salen los datos incorrectos. También hice un alert desde la extensión JS del formulario y al procesar el ef en cuestión el dato sale correcto.

Sigue siendo muy raro, estoy un poco desorientado.

Saludos.

Hola Alejandro,

si, me referia a si por ahi se veia algun error JS al momento de aplicar la mascara o en el momento previo a hacer el submit, que pudiera retornar valores incorrectos.
Igual con lo que decis abajo pareciera que no hay problema.

2) Hice un ei_arbol desde el evento implícito del formulario y ya salen los datos incorrectos. También hice un alert desde la extensión JS del formulario y al procesar el ef en cuestión el dato sale correcto.

Ok, entonces el problema esta en la recepcion del ef en el server o en el camino. Lo que se me ocurre seria ver (via Firebug) en la pestaña de RED, que es lo que esta enviando al server, si eso esta correcto, la unica que queda es recuperar desde toba_ef_editable.php en el metodo cargar_estado_post el valor que recibe PHP… y entonces ver si viene correcto o incorrecto.

Si viene correcto, el problema lo tenemos nosotros internamente antes de pasarle los datos al CI (seria raro xq no salto antes), si viene mal… habria que ver porque Apache esta tergiversando en el medio el valor… quizas algun mod aunque no se me ocurre ninguno que afecte los datos del post.

Saludos

Hola Richard, buen día.
Te paso dos capturas de pantallas, la primera con el momento de la transacción y otra con el detalle del Firebug (pestaña de Red).

En la pestaña de Red ya se están enviando mal los datos, la transacción se hizo por $8.20 y se envían al server $82.

¿Qué más podría mirar?


transferencia de incisos.png

transferencia de incisos.png

Firebug red.png

Firebug red.png

Hola Alejandro,

por eso te decia si no existia algun problema en JS con la aplicacion de la mascara, el resultado ya sale mal del browser, con lo cual el metodo get_estado que se usa al hacer el submit no esta devolviendo correctamente la parte entera y la decimal, lo unico que se me ocurre es meterle un breakpoint al archivo ef_editable.js para tracear la ejecucion cuando intenta hacer el submit.

Saludos