EasyFields 1: campos personalizados en pestañas sin programar

castor.agra_2284 castor.agra_2284 Noticias Plugin EasyFields Fecha de creación: 28-06-2026 17:27:22 Última actualización: 03-10-2026 Contador de visitas: 181




EasyFields 1: campos personalizados en pestañas sin programar

Manual de EasyFields

EasyFields permite añadir campos personalizados a cualquier ficha de FacturaScripts (Cliente, Producto, Factura…) sin programar, organizados en pestañas. Los datos se guardan en tablas propias del plugin (almacenamiento EAV tipado), sin modificar el esquema del core, de modo que la desinstalación es limpia y robusta ante actualizaciones.

Versión del core: FacturaScripts 2025+ (probado en 2026.x, PHP 8.1+). Idiomas: es_ES / en_EN.

Versión del plugin documentada: 1.0

Si esta versión no coincide con la del plugin instalado (Admin → Plugins), el manual podría estar desactualizado.


1. Conceptos

| Término | Significado |

|----------------|-------------|

| Target | Modelo del core al que se añaden campos: Cliente, Producto, FacturaCliente… |

| Campo | Una definición: clave, etiqueta, tipo, reglas, grupo… |

| Grupo | Nombre de la pestaña donde se agrupa el campo. Cada grupo distinto = una pestaña. |

| Catálogo | Lista de opciones reutilizable para campos select / multiselect. |

| Valor | El dato concreto guardado para un registro (p. ej. la talla del cliente nº 5). |

Cada group_name distinto genera una pestaña en la ficha del target. Los campos sin grupo caen en la pestaña por defecto "Campos personalizados", que siempre queda al final.


2. Crear un campo personalizado

Admin → Campos personalizados → Nuevo.

Crear un campo personalizado

Datos generales

  • Modelo destino (target): desplegable con los modelos del core (Cliente, Producto,

Factura de cliente, Pedido…).

  • Clave: identificador único del campo dentro del target. Sin espacios (usa

talla_zapato, no talla zapato).

  • Etiqueta: texto visible junto al campo en la ficha.
  • Grupo (pestaña): nombre de la pestaña. Vacío = pestaña "Campos personalizados".
  • Tipo: ver la tabla de tipos más abajo.
  • Orden: posición del campo dentro de su pestaña (menor = antes).
  • Activo: si está desmarcado, el campo no se muestra.
  • Obligatorio: bloquea el guardado de la pestaña si se deja vacío.
  • Filtrable en listado: añade un filtro por este campo en el listado del target

(ver sección 5).

Tipos de campo

| Tipo | Se muestra como | Notas |

|---------------|-----------------|-------|

| text | Caja de texto | Reglas de longitud / patrón. |

| textarea | Área de texto | Texto largo. |

| number | Numérico | Reglas de valor mínimo / máximo. |

| date | Selector de fecha | |

| boolean | Casilla | Sí / no. |

| select | Desplegable | Opciones desde catálogo, lista en línea o relación. |

| multiselect | Selección múltiple | Igual que select pero admite varios valores. |

| relation | Desplegable de registros | Apunta a otro modelo del core (ver sección 4). |

| file | Subida de fichero | Uno o varios adjuntos (Máximo de ficheros). |

| photo | Subida de imagen | Solo imágenes. |

Reglas de validación (pestaña Validación)

Según el tipo: longitud mínima/máxima, valor mínimo/máximo y patrón (expresión regular sin delimitadores, p. ej. ^[0-9]{9}$). La validación es de servidor y bloqueante: si algo no cumple, no se guarda nada de esa pestaña y se muestran los errores.


3. Opciones para select / multiselect

En la pestaña Opciones del campo, tres formas (excluyentes) de poblar las opciones:

  1. Catálogo: elige un catálogo reutilizable (ver sección 6).
  2. Opciones manuales: una por línea, formato valor|etiqueta

(p. ej. S|Pequeña, M|Mediana). Si omites la etiqueta, se usa el valor.

  1. Relación: rellena Modelo de la relación (entonces el tipo suele ser relation).

4. Campos de tipo relation

Un campo relation con Modelo de la relación = Proveedor muestra en la ficha un desplegable con todos los proveedores (por su nombre), y guarda el código del proveedor elegido. Funciona con cualquier modelo del core (Cliente, Agente, Almacén…).

Campo relation a Proveedor en Producto

Ejemplo: en Producto, un campo relation a Proveedor para indicar el "proveedor predeterminado" de cada artículo.


5. Filtrar listados por un campo

Marca el campo como Filtrable en listado. En el listado del target (p. ej. Productos) aparecerá un desplegable de filtro con:

  • (todos) — sin filtro.
  • ✓ \<etiqueta> — registros que tienen valor.
  • ✗ \<etiqueta> — registros sin valor.
  • Para select/multiselect/relation: una opción por cada valor posible

(cada proveedor, cada opción del catálogo…).

El filtro restringe el listado con una subconsulta sobre los valores del plugin.

Filtrar el listado por un campo personalizado


6. Catálogos (opciones reutilizables)

Admin → Campos personalizados → pestaña Catálogos.

Un catálogo es una lista de opciones con nombre que puedes reutilizar en varios campos select/multiselect. Cada opción tiene valor, etiqueta, orden y activo. Edita el catálogo y sus opciones en línea (maestro-detalle).


7. Rellenar los campos en una ficha

Rellenar y guardar un campo en la ficha

  1. Abre una ficha del target (p. ej. un Cliente). Aparece una pestaña por grupo.
  2. Rellena los campos y pulsa Guardar dentro de esa pestaña.
    • Cada pestaña es su propio formulario: tiene su botón de guardado independiente

del de la ficha nativa.

  • Si un campo obligatorio está vacío (o falla una regla), no se guarda esa

pestaña y se muestran los errores conservando lo introducido.

  1. Los valores se recargan al volver a abrir la ficha.

Nota: para campos de tipo fichero/foto, primero guarda la ficha del core (para que el registro tenga código) y luego sube los adjuntos.


8. Borrado en cascada

Al eliminar un registro del core (p. ej. borrar un Cliente), EasyFields elimina automáticamente todos sus valores personalizados y los adjuntos asociados. No quedan datos huérfanos.


9. Administración: las tres pestañas

Admin → Campos personalizados:

  • Campos: alta/edición de definiciones (lo de la sección 2).
  • Catálogos: gestión de catálogos y sus opciones (sección 6).
  • Valores: vista de los valores guardados (auditoría / depuración).

10. Preguntas frecuentes

¿Modifica las tablas del core? No. Todo vive en tablas easyfields_* propias.

¿Qué pasa al desinstalar? Las tablas easyfields_* se conservan por seguridad de datos; el borrado se gestiona aparte con aviso.

Puse una clave con espacios y algo falla. Usa claves sin espacios (identificadores). La etiqueta sí puede tener espacios y acentos; la clave no.

El campo obligatorio no bloquea el guardado de la ficha nativa. Correcto: el core guarda la ficha antes de ejecutar la lógica del plugin. El required bloquea el guardado de su pestaña, no el de la pestaña principal del core.


Amplía tus conocimientos con los cursos oficiales

Curso de usuario

Con este curso aprenderás a gestionar el día a día de tu negocio con FacturaScripts: hacer facturas, albaranes, pedidos, presupuestos, gestionar clientes, proveedores, tarifas, usuarios, además de usar el informe de impuestos. ¿A quién va dirigido? A cualquier usuario que quiera aprender rápidamente el manejo diario del programa.

383 0,00 €
Curso básico de PHP

¡Aprende a programar en PHP de manera fácil y divertida con nuestro curso básico! En este curso, te enseñaremos los conceptos fundamentales de la programación en PHP, incluyendo la sintaxis básica, el manejo de variables, estructuras de control de flujo y mucho más. Al terminar estarás listo para comenzar con el curso de creación de plugins para FacturaScripts.

63 5,99 €

Patrocinadores

Estas empresas y profesionales apoyan económicamente FacturaScripts y nos ayudan a dedicar más tiempo al desarrollo, las pruebas y la documentación.

ORO
PLATA
BRONCE
PRO
mililitrosdeperfume_lao
mililitrosdeperfume_lao
eduardo_12367
eduardo_12367
miguel.garcia_l25
miguel.garcia_l25
carlos
carlos
daniel89fg
daniel89fg
yopli2000_5
yopli2000_5
adelantia_8n
adelantia_8n
davidpujantelopez_mrf
davidpujantelopez_mrf
luis_12743
luis_12743
info-con_12812
info-con_12812
juan_pil
juan_pil
mariano_6807
mariano_6807
juancarlos_ptr
juancarlos_ptr
smartcuines_1378
smartcuines_1378
almondgroup1984_pjc
almondgroup1984_pjc
samleevoid_n58
samleevoid_n58
esteban
esteban
gestion_kw4
gestion_kw4
galonso_12031
galonso_12031
carlosmorenogil_16533
carlosmorenogil_16533
juanca_ong
juanca_ong
adrianmaes_17283
adrianmaes_17283
team_qnp
team_qnp
elgallineroelpalmar_qnq
elgallineroelpalmar_qnq
integraciondigital_pt7
integraciondigital_pt7
serranokevin22_14028
serranokevin22_14028
jmoreno_2610
jmoreno_2610
curtipiel_qnt
curtipiel_qnt
sevsatv_qo5
sevsatv_qo5
rubenmartimaza_qo4
rubenmartimaza_qo4
mariopablobarron_psq
mariopablobarron_psq
javietglez86_qoa
javietglez86_qoa
drus_9012
drus_9012
zasahora_qof
zasahora_qof
xecron_2176
xecron_2176
mistbookapp_qoh
mistbookapp_qoh
gaston.pechieu_6301
gaston.pechieu_6301
angelroldancordoba_qoq
angelroldancordoba_qoq
mcreparacionesymantenimientos_qow
mcreparacionesymantenimientos_qow
enya_qoz
enya_qoz
cruzmorenob_qp6
cruzmorenob_qp6
kateto2002_obv
kateto2002_obv
ricard.teba_qpe
ricard.teba_qpe
robertorama.gal_qi2
robertorama.gal_qi2
rubente14_qpa
rubente14_qpa
marcosclapes_qpr
marcosclapes_qpr
monthersan_20181
monthersan_20181
david.luque_pw1
david.luque_pw1
stefan.yoshovski_qpz
stefan.yoshovski_qpz
luis.saport_qpx
luis.saport_qpx
alihopeyourlove_pif
alihopeyourlove_pif
anandalor_qq6
anandalor_qq6
pielnaturacosmetica_mgo
pielnaturacosmetica_mgo
lluis_qiv
lluis_qiv
kevin._alex_ikc
kevin._alex_ikc
ahs.toscali_k1j
ahs.toscali_k1j
andres_k12
andres_k12
eneug2017elpozo_qqd
eneug2017elpozo_qqd
domingofernandez.dff_qqe
domingofernandez.dff_qqe
itacadigital_42c
itacadigital_42c
metalid.official_qeg
metalid.official_qeg
andreupear_qqk
andreupear_qqk
jesusgarcialopez1_qji
jesusgarcialopez1_qji
octaviodelineante_22415
octaviodelineante_22415
nimbi_journal3d_qr7
nimbi_journal3d_qr7
pablosateca_qr9
pablosateca_qr9
miestecodex_lvm
miestecodex_lvm
davids_qri
davids_qri
esvabavet_qrj
esvabavet_qrj
f1caroficina_qrm
f1caroficina_qrm
piensanet_21047
piensanet_21047
agujaycalma_qop
agujaycalma_qop
administracion_13337
administracion_13337
norteseo_ko2
norteseo_ko2
sitges_qmp
sitges_qmp
soporte_qrz
soporte_qrz
administracion_q4m
administracion_q4m
patitaslimpias2025_qs7
patitaslimpias2025_qs7
ancurte_1489
ancurte_1489
makeflow360_qrr
makeflow360_qrr
redsion_qs0
redsion_qs0
javi431_qsh
javi431_qsh
sosaarnaboldijuancarlos_ocx
sosaarnaboldijuancarlos_ocx
info.aeiinstitute_qsl
info.aeiinstitute_qsl
pivicdata_q89
pivicdata_q89
informaticaasgaya_qst
informaticaasgaya_qst
informestecnicosjardin_qtc
informestecnicosjardin_qtc
no-reply_qtd
no-reply_qtd
fastudo_r_qrh
fastudo_r_qrh
pintoleidy246_qts
pintoleidy246_qts
calderonpeedro_qtv
calderonpeedro_qtv
simon.isern_o5h
simon.isern_o5h
carlos_qt8
carlos_qt8
jordi.cabanes.costa_qu2
jordi.cabanes.costa_qu2
sebastiansobral_qu5
sebastiansobral_qu5
pastoracalero.m_qsg
pastoracalero.m_qsg
ramon1969_qu6
ramon1969_qu6

Si quieres impulsar nuevas mejoras y ayudar a que el proyecto siga creciendo, conviértete en patrocinador y forma parte de quienes lo hacen posible.

Patrocinar

Cookies
Usamos cookies necesarias para el funcionamiento del sitio y cookies opcionales para recordar tus preferencias y mejorar tu experiencia. Puedes aceptarlas todas, rechazarlas o configurar tus preferencias

Soporte