Crear informes con phpSpreadsheet (actualización 24/07/2024)

En esta actualización se ha intentado mejorar la seguridad y la información que se facilita al usuario para indicar que el informe se está elaborando.

En concreto, se ha puesto un gráfico de progreso para indicar que el informe se está elaborando o se está descargando.

El botón de 3 estado queda codificado:

  • Client (before):
Swal.fire({
    // icon: 'info',
   title: 'El Informe se ha inciado y se está ejecutando',
   text: '',
   imageUrl: "MyCode/images/calculated.gif",
   imageHeight: 200,
   imageAlt: "Estamos trabajando",
   timer: 60000,
   timerProgressBar: true,
   toast: true,
   showConfirmButton: false,
   position:  'center', // "top-start",
   footer: ''
  })
  • Server:
$_SESSION['report_fase'] = 1;
$_SESSION['report_file'] = '';

include "MyCode/Report001/report.php";

$_SESSION['report_fase'] = 2;
$result['report_file'] = $_SESSION['report_file']
  • Cient (after):
window.open("MyCode/Report001/report.php","_blank" ); 

Swal.fire({
    // icon: 'info',
   title: 'El Informe se ha descargado',
   text: '',
   imageUrl: "MyCode/images/download.gif",
   imageHeight: 200,
    imageAlt: "Estamos trabajando",
   timer: 4000,
   timerProgressBar: true,
   toast: true,
   showConfirmButton: false,
   position:  'center', // "top-start",
   footer: ''
  })

 

Con este sistema el proceso de elaboración del informe se fracciona en 2 fases (la obtención y la descarga). A nivel de seguridad, no se puede ejecutar el informe aunque se conozca la URL del mismo y al usuario se le facilita el gráfico indicando que se está elaborando el informe.

DEMO: https://fhumanes.com/reports/

Si te interesa este tema o deseas disponer del ejemplo, sigue este enlace.

PHP vs. Java: ¿Cuál es el adecuado para su aplicación?

PHP vs Java Leí este artículo porque he trabajado muchas veces en Java y en PHP y deseaba confrontar si mi opinión al respecto coincidía con el artículo.

En general, salvo alguna apreciación sobre el rendimiento, donde se ha valorado un excelente rendimiento a PHP, con todo me sentía totalmente identificado.

No tengo que olvidar que llevo unos cuantos años “alejado” de Java y por ocio, “cerca” de PHP. También, no se me olvida que el artículo es de una autor que trabaja en Zend (mantenedora de la actualizaciones de PHP), por lo que seguro está un poco sesgado.

Artículo de Zend

Es corto, directo e interesante.

Traducción un apartado del artículo:

PHP vs. Java: diferencias clave

Existen varias diferencias importantes al comparar PHP con Java. Son tan importantes que me pregunto si existe una comparación justa: si bien ambas son herramientas muy poderosas, es algo así como comparar un taladro eléctrico con una sierra de mesa. Aún así, ambos ofrecen excelentes resultados para aplicaciones web modernas y los desarrolladores a menudo se encuentran atrapados entre los dos lenguajes.

Seguir leyendo PHP vs. Java: ¿Cuál es el adecuado para su aplicación?

Guía 86 – Gestión de aplicaciones grandes

¿Qué es una aplicación grande en el entorno de PHPrunner? Que yo conozca no existe una definición concreta. Para mí, es grande cuando genera más de 3000 ficheros o cuando tiene más de 50 tablas. Espero que este criterio os sirva.

Yo he estado trabajando con aplicaciones PHPRunner que tenían ambos criterios, e incluso, éramos varias personas desarrollando el aplicativo.

En este artículo deseo comentaros los criterios y formas de trabajar con este tipo de aplicaciones, criterios y formas, que veo razonables independientemente de la herramienta de codificación. Con ello no quiero significar que la versión 11 de PHPRunner, no sea positiva, sino que para muchos, muchos casos, no era esencial para gestionar proyectos grandes o con varios desarrolladores.

Objetivo:

Explicar criterios y soluciones, a emplear, para poder gestionar aplicaciones grandes.

  1. Dividir aplicaciones en módulos e interconectarlos, para facilitar la gestión de acceso a los usuarios.
  2. La librerías externas, ubicarlas fuera del proyecto de PHPRunner.
  3. Trabajo de varios desarrolladores en el proyecto. División de actividades y forma de escribir el código.

DEMO de división de aplicaciones en módulos.
https://fhumanes.com/app1/
https://fhumanes.com/app2/

Usuarios:
– user1/user1 . Tiene perfil de grupo en las dos APP
– user2/user2. Tiene perfil de grupo en una APP

Si te interesa este artículo, sigue leyéndolo en este link.

Guía 85 – Relacionar 2 tablas de forma muy visual y rápida

Este ejemplo también lo he iniciado para ayudar a Rubén.
Me explicó que estaba diseñando un sistema de Gestión de Tesorería y que tenía que conciliar las previsiones de pago con los pagos reales, de cara a realizar las previsiones de saldos de sus cuentas corrientes a medio plazo.

Él imaginó un sistema que por arrastre de registros de un panel (de previsión)  a otro (pagos reales), se fueran cancelando los registros de previsión.

Si no queda clara esta explicación, os resumo, es relacionar unos registros de una tabla con otros registros de otra tabla, pero a ser posible de forma muy visual.

Objetivo

De forma muy visual, sencilla y rápida, relacionar registros de la tabla de previsión con los registros de la tabla de pagos reales.

En este caso, es para una gestión de Tesorería, pero puede usarse para multitud de situaciones, como:

  • Albaranes y facturas.
  • Facturas y movimientos bancarios de pagos.
  • Alumnos y clases.
  • Alumnos y asignaturas optativas.
  • Etc.

DEMO:  https://fhumanes.com/reconcile y https://fhumanes.com/reconcile2

Si estás interesado en este artículo sigue leyéndolo haciendo clic aquí.

Actualización 1/07/2024
Se ha hecho corrección en:

  • Cuando se produce error en sincronismo del orden de ejecución de los botones en ambos paneles en botón “Data Concile”, el proceso se resuelve automáticamente volviéndose a ejecutar, sin la intervención del usuario
  • En los botones del panel “REAL” se elimina el prefijo de la tabla, para que estos botones puedan estar dentro o fuera de la tabla, en dicho panel.
Ampliación 3/07/2024
Se ha ampliado la funcionalidad incluyendo un formulario de filtro sobre los paneles del DashBoard.

Esta nueva versión la he llamado “concile2”.
El formulario es una página ADD que se crea con una tabla ficticia. Creo que es una excelente alternativa  para filtrar las páginas de este tipo.

Guía 84 – Resaltar elementos en páginas LIST

Mi compañero Rubén, me pidió algunos ejemplos para resaltar celdas, filas,  columnas y agrupaciones de celdas, para información mostrada en páginas LIST y aunque puede haber multitud de formas de resaltar la información, yo he elegido 4 formas y he hecho este ejemplo para mostrárselas a él y a vosotros.

En casi todos los casos, el resaltado se produce cuando el ratón se posiciona encima de las celdas de la tabla del GRID. Ya conocéis que la función “hover” para los equipos que no disponen de un ratón, mejor no utilizarla.

Es un buen ejemplo de referencia cuando se requiera trabajar con JQUERY.

Objetivo:

Cuando una página LIST muestra muchas columnas, resulta poco claro la presentación por defecto, así pues estos ejemplos sirven para reforzar el interface y hacer más fácil la visualización de los datos.

He realizado 4 ejemplos:

  • versión 1.- Mostrar coordenadas X e Y (filas y columnas) coloreando el fondo de las celdas.
  • versión 2.- Hacer el rayado de tipo “cebra” en vertical y resaltar el registro seleccionado.
  • versión 3.- Hacer el rayado de acuerdo a las celdas agrupadas, para así identificar mejor la información de los grupos.
  • versión 4.- La misma representación que versión 1, pero en paginas LIST del tipo “maestro” y “detalle”.

DEMO: https://fhumanes.com/guia84/

Si estás interesado en este tema, sigue leyendo el articulo en este enlace.

Blog personal para facilitar soporte gratuito a usuarios de PHPRunner