Cómo utilizar los campos de listados con Joinmodel
Los listados basados en JoinModel son vistas que combinan datos de varias tablas a la vez (por ejemplo, las pestañas de Variantes y Stock de Productos, o los listados de plugins de terceros que muestran en cada fila información de varias tablas relacionadas).
Desde la versión 2.63, BuscadorAcumulado funciona en estos listados con todas sus capacidades.
- Qué verás:
En cualquier listado JoinModel con el buscador activado aparece el selector de campo con todos los campos de búsqueda de la vista, incluidos los que provienen de tablas relacionadas. Por ejemplo, en un listado de repostajes que combina vehículos y conductores, el selector puede mostrar campos como Matrícula o Nombre aunque pertenezcan a otras tablas.
- Cómo buscar:
Funciona exactamente igual que en cualquier otro listado:
Sin campo seleccionado: el término busca en todos los campos de búsqueda de la vista, incluidos los de las tablas relacionadas. Con un campo seleccionado: el término se aplica solo a ese campo, aunque sea de una tabla relacionada. Operadores AND, OR y NOT y grupos con paréntesis: se acumulan igual que siempre. Búsqueda de campos vacíos: selecciona un campo y escribe "" (dos comillas) para ver los registros donde ese campo está vacío o sin valor. Con NOT, lo contrario: los que sí tienen contenido. Muy útil, por ejemplo, para localizar variantes sin código de barras o stock sin ubicación.
- Nota para desarrolladores de plugins:
Si tu plugin define listados sobre JoinModel, no necesitas adaptar nada: BuscadorAcumulado detecta los campos de búsqueda de la vista (addSearchFields) aunque estén prefijados con el nombre de la tabla (vehiculos.nombre) y aunque uses alias compuestos en el modelo que no coincidan con ninguna columna del XMLView. Los campos sin columna visible también aparecen en el selector, con su etiqueta tomada de las traducciones. Lo único recomendable es aportar la traducción del nombre de cada campo de búsqueda en los archivos de traducción de tu plugin (la clave es el nombre del campo sin el prefijo de tabla, por ejemplo nombre o matricula). Si no existe traducción, se muestra el nombre del campo con la primera letra en mayúscula. Ten en cuenta que la sincronización automática entre pestañas requiere que la relación sea deducible (pestaña principal en primera posición y clave foránea con el mismo nombre que la clave primaria del padre); las pestañas basadas en JoinModel buscan perfectamente por sí solas, pero no participan de esa sincronización automática.