Este tema de añadir nuevos campos en formularios que no se corresponden a campos de las tablas de la base de datos, lo he utilizado muchas veces en los ejemplos, pero creo que no tengo uno que sea específico de este tema y es de gran ayuda para resolver algunas funcionalidades de las aplicaciones y , además, de cara al usuario del aplicativo puede ser más simple de utilizar.
En el ejemplo, se simula que se está haciendo una factura/albarán y que al elegir el Cliente se obtienen las direcciones de envío, que está en una estructura de «Master» -> «Detail», y se muestran en una lista de check para elegir. Además, y aquí viene la funcionalidad del ejemplo, se desea que se pueda añadir una nueva dirección en el mismo formulario.
Objetivo
Explicar cómo podemos añadir nuevos campos en los formularios, y que estos no tienen que ser campos de la tabla asociada.
DEMO: https://fhumanes.com/sh/
El check de «New Address» y el campo «memo» de dirección, no son campo de la tabla INVOICE.
Solución Técnica
Para añadir campos, en el SELECT de la tabla añadimos todos los campos «DUMMY’s» que necesitemos y luego definimos que tipo de campo (controles visuales), queremos que tengan.A nivel de JavaScript programamos que el campo «dummy_address», no aparezca hasta que se selecciones el campo «dummy_check». (bloques de color amarillo y azul).
El bloque rosa, se ejecuta cuando se pulsa el botón de «Save» y lo que hace es verificar que alguna dirección se ha indicado.
En el evento «Before record added» lo que hace es (bloque amarillo), si se ha dado una nueva dirección se hace un INSERT en la tabla «Detail» de direcciones, se escoge el ID del nuevo registro para añadirlo al campo correspondiente de la tabla «Master».
En el bloque azul, lo que se hace (es obligatorio) es destruir los campos «DUMMY’s», para PHPRunner no intente insertar esos campos en la tabla «Master».
Al editar el registro veremos que este es su aspecto, por lo que ya se ve la información ajustada a la estructura de la base de datos. Si los campos «DYMMY’s» no los hemos incluido entre los campos que son visualizables de la opción/página es como si no existiera y no hay que hacer nada especial.
Espero que os guste.
Os dejo el ejemplo, para que lo podáis instalar en vuestros PC’s.