Impresión html de pantallas con varios componentes

Hola a todos!

Les cuento cual es el inconveniente que no logro resolver:
Tengo en una pantalla (adjunto imagen):

  • 1 formulario que actúa como filtro.
  • 1 formulario donde se muestra un dato en base a lo ingresado en el filtro.
  • 1 formulario ml que también se carga a partir de lo ingresado en el filtro, pero además se precarga con 2 filas (esto se fijó desde las propiedades básicas del ml). Estas dos líneas se agregan vía JS (lo hago desde el cliente explícitamente ya que si mandaba ambas lineas creadas al cliente con valores por defecto, al procesarlas intentaba modificarlas y no agregarlas).

Además, agregué a nivel CI, un evento para imprimir la pantalla, pero al momento de ver la vista previa de dicha impresión el ml se muestra sin datos (ya que hasta ese momento los datos en el servidor no existen), la consulta por lo tanto es: ¿habría forma de poder imprimir esta pantalla y ver las filas de ml sin necesidad de persistir esas líneas en la BD?

Espero haber sido claro.
Espero sus comentarios.

Saludos.
Alejandro.


alta de conciliacion bancaria.jpg

alta de conciliacion bancaria.png

Hola Alejandro,

segun entiendo al momento de cambiar el filtro, tenes los datos para pre-cargar esas 2 filas que agregas en JS no?, por que no las agregas directamente al DT o lo que estes usando para mantener en memoria esos valores en ese momento?.

De dicha manera, cuando llega al conf__form_ml, ya estan los valores y los envia al cliente sin problemas… no importa que se modifiquen, porque ya los diste de “alta”.
Ademas, con eso solucionas el problema de que los datos esten en el servidor al momento de hacer la impresion.

Saludos

Hola Richard, al momento de filtrar tengo los datos necesarios para calcular el saldo (lo hago en el conf del formulario ml) que luego se coloca en el ef_importe que corresponde a la fila “Cheques pendientes de débito”, en cambio el ef_importe que corresponde a la fila “Saldo de cuenta bancaria” se inicializa en 0, por lo tanto no tengo forma, por lo menos creo yo, de agregar las filas directamente al DT.

Igualmente, si sigo agregando filas al ml e intento generar la impresión html antes de guardar los datos en la base, las nuevas filas no las imprime, ¿habría forma de poder cambiar esto para que al momento de generar la impresión html, las nuevas filas (aun no guardadas) se impriman también?

Saludos.
Alejandro.

Podes agregar la fila al DT igual, que tenga importe cero no es un inconveniente, a lo que apunto es a solucionar el problema de que las filas se modifiquen en lugar de darse de alta.
Las das de alta antes de que se llegue al conf del ML y listo, ya te quedan cargadas para enviarlas al cliente.

Igualmente, si sigo agregando filas al ml e intento generar la impresión html antes de guardar los datos en la base, las nuevas filas no las imprime, ¿habría forma de poder cambiar esto para que al momento de generar la impresión html, las nuevas filas (aun no guardadas) se impriman también?

Por que querrias imprimir datos que aun no fueron grabados?, no es una impresion que tenga mucha validez ya que esos datos quizas nunca se enviaron al sistema.
El evento de impresion no te va a enviar los datos, simplemente toma los datos que ya existen en el servidor y a partir de alli genera el resultado que vos mandas a la impresora.

Los datos tienen que viajar al servidor, se tiene que procesar el evento de modificacion del formulario y dichos datos quedar en el DT… ya que vos la configuracion del ML la estas realizando a partir del objeto de persistencia, mas alla de que luego se persistan o no en bd.

La impresion de la pagina actual la podes lanzar en JS tambien, ahi el browser envia el contenido de lo que tiene en pantalla a imprimirse.
Igual insisto, es medio raro el planteo de imprimir datos inexistentes.

Saludos

Hola Richard, buen día.
Tenés razón con lo que me decís con respecto a imprimir datos que posiblemente nunca existan en la BD, me lo voy a replantear.

Otra cuestión con respecto al formulario ml que forma parte de esta operación; en una de las columnas se obtiene la diferencia entre el saldo de la cuenta bancaria (que se muestra en el primer formulario) y el total de lo ingresado en cada fila del saldo conciliado, la diferencia se calcula vía JS y no se almacena en la BD, la consulta por lo tanto es, ¿podría calcular esa diferencia solo en la última fila del ml (la que correspondería al totalizador para la columna diferencia)?

Supongo que extendiendo el formulario puedo modificar la forma de calcular el total de una columna, pero por el momento no logro darme cuenta de cómo hacerlo, a través de qué método.

Gracias Richard por tu tiempo.

Saludos.
Alejandro.

Hola Alejandro,

el tema con las columnas sumarizadas, es que en gral se calculan en JS.
En PHP… deberias redefinir el metodo ‘generar_formulario_pie’ que es donde se saca el html correspondiente a la fila que muestra la sumarizacion.

En JS, fijate en ei_formulario_ml.js, hay dos metodos involucrados en el tema de los totales por columna.

Por un lado podrias redefinir el metodo ‘refrescar_totales’… de manera de hacerte con el total de la columna de saldos conciliados, calcular la diferencia y luego en un metodo simil a ‘cambiar_total’ … podes direccionar directamente un elemento en el DOM y dejar ahi el nro.

Todo esto en conjuncion con el cambio en PHP, con el cual sacarias ese elemento del DOM sin tener que agregar una columna extra.
Entonces podes sacar esa columna que es meramente informativa y cuyo valor… va a ser siempre el mismo en todas las filas.

Saludos