Skip to content

Campo Personalizado (CrmField)

Modulo: CRM Tipo: Resource Estado: Implementado Fecha: 2026-02-02


Descripcion

El recurso CrmField (Campo Personalizado) permite extender la informacion capturada en cada tipo de CRM segun las necesidades especificas del negocio. Los campos personalizados posibilitan la creacion de formularios dinamicos sin necesidad de modificaciones en la estructura de la base de datos.

Valor de negocio:

  • Permite adaptar el CRM a diferentes verticales sin desarrollo
  • Facilita la captura de informacion especifica por tipo de negocio
  • Soporta diferentes tipos de datos (texto, numero, fecha, seleccion)
  • Permite definir obligatoriedad y visibilidad por campo
  • Habilita la referencia a otros recursos del sistema (clientes, proveedores)

Ejemplos de campos personalizados:

  • Marca y modelo de vehiculo (CRM automotriz)
  • Presupuesto estimado (CRM de ventas)
  • Numero de serie (CRM de servicio tecnico)
  • Tipo de consulta (CRM basico)

Frontend (Perspectiva de Usuario)

Vistas

  1. Listado de Campos por Tipo

    • Muestra los campos configurados para un tipo de CRM
    • Indica tipo de dato, obligatoriedad y visibilidad
    • Acceso a edicion y gestion de opciones
  2. Formulario de Alta/Modificacion de Campo

    • Definicion de nombre tecnico y etiqueta
    • Seleccion de tipo de dato
    • Configuracion de obligatoriedad y visibilidad
    • Valor por defecto opcional
    • Referencia a recurso externo (si aplica)
    • Gestion de opciones para campos de seleccion
  3. Renderizado Dinamico en Formularios

    • Los campos personalizados aparecen en formularios de registro
    • El tipo de dato determina el componente de entrada
    • La obligatoriedad determina la validacion

Interacciones del Usuario

AccionDescripcion
Crear campoEl administrador agrega un nuevo campo al tipo de CRM
Editar campoEl administrador modifica las propiedades del campo
Eliminar campoEl administrador elimina un campo del tipo
Gestionar opcionesEl administrador agrega/modifica opciones de seleccion
Completar campoEl usuario operador completa el campo en el registro

Tipos de Campos Soportados

TipoDescripcionComponente de Entrada
textTexto libreInput de texto
numberValor numericoInput numerico
dateFechaSelector de fecha
selectSeleccion unicaDropdown con opciones
checkboxSi/NoCheckbox
resourceReferencia a entidadAutocomplete

Permisos

  • Visualizar campos (usuarios del CRM)
  • Configurar campos (administradores)
  • Eliminar campos (administradores)

Estados de UI

EstadoDescripcion
Campo requeridoSe marca visualmente como obligatorio
Campo opcionalSin indicador de obligatoriedad
Campo ocultoNo aparece en formularios pero se almacena
Error de validacionMensaje cuando el campo no cumple requisitos

Backend (Perspectiva de Datos de Negocio)

Entidad de Negocio: Campo Personalizado

Representa un campo adicional configurable para un tipo de CRM.

Datos Necesarios

DatoDescripcionRequeridoRestricciones
IdentificadorCodigo numerico unico del campoAuto-
Tipo CRMTipo de CRM al que pertenece el campoSiReferencia valida
Nombre de campoIdentificador tecnico unicoSi20 caracteres, unico global
EtiquetaTexto mostrado al usuarioSi50 caracteres
Tipo de datoTipo de valor que almacenaSi15 caracteres (text, number, etc.)
Es requeridoIndica si el campo es obligatorioSitrue/false
Es visibleIndica si se muestra en formularios/PDFSitrue/false
Valor por defectoValor inicial del campoNoTexto
RecursoReferencia a otra entidad del sistemaNo50 caracteres

Relaciones de Negocio

RelacionDescripcion
Tipo CRMCada campo pertenece a un tipo de CRM especifico
OpcionesUn campo de seleccion puede tener multiples opciones
Valores de campoLos registros CRM almacenan valores para cada campo

Validaciones de Negocio

ValidacionDescripcion
Nombre unicoEl nombre de campo debe ser unico en todo el sistema
Tipo dato validoEl tipo de dato debe ser uno de los soportados
Tipo CRM existenteEl tipo de CRM referenciado debe existir
Opciones coherentesSi es tipo 'select', debe tener opciones definidas
Recurso validoSi se especifica recurso, debe ser un recurso conocido

Reglas de Negocio

RN-FLD-001: Unicidad Global de Nombre de Campo

  • Condicion: Al crear un nuevo campo personalizado
  • Accion: El sistema verifica que no exista otro campo con el mismo nombre
  • Error: "El nombre de campo '[nombre]' ya existe"
  • Nota: La unicidad es global, no por tipo de CRM

RN-FLD-002: Gestion de Opciones en Creacion

  • Condicion: Al crear un campo con opciones
  • Accion: El sistema crea el campo y luego sus opciones en una transaccion
  • Nota: Si falla alguna opcion, se revierte todo

RN-FLD-003: Actualizacion con Opciones

  • Condicion: Al actualizar un campo con opciones
  • Accion: El sistema sincroniza opciones (crea nuevas, actualiza existentes, elimina faltantes)
  • Nota: La eliminacion es logica (soft delete)

RN-FLD-004: Restriccion de Modificacion de Nombre

  • Condicion: El campo ya tiene valores almacenados en registros
  • Accion: No se permite modificar el nombre de campo
  • Nota: Cambiar el nombre romperia la asociacion con valores existentes

RN-FLD-005: Tipo de Dato Inmutable

  • Condicion: El campo ya tiene valores almacenados
  • Accion: No se permite cambiar el tipo de dato
  • Nota: Cambiar el tipo causaria inconsistencias en datos existentes

RN-FLD-006: Eliminacion de Campo

  • Condicion: Al eliminar un campo personalizado
  • Accion: Se elimina el campo y sus opciones, pero no los valores almacenados
  • Nota: Los valores quedan huerfanos pero se mantienen para historico

Casos de Uso

Caso 1: Crear Campo de Texto Libre

Actor: Administrador del sistema

Precondiciones:

  • El usuario debe estar autenticado como administrador
  • El tipo de CRM debe existir

Flujo principal:

  1. El administrador accede a la configuracion de campos del tipo CRM
  2. El administrador presiona "Nuevo Campo"
  3. El administrador ingresa el nombre de campo (ej: "observaciones_tecnicas")
  4. El administrador ingresa la etiqueta (ej: "Observaciones Tecnicas")
  5. El administrador selecciona tipo de dato "text"
  6. El administrador marca como no requerido
  7. El administrador marca como visible
  8. El administrador presiona "Guardar"
  9. El sistema valida unicidad del nombre
  10. El sistema crea el campo
  11. El sistema muestra notificacion de exito

Postcondiciones:

  • El campo aparece en formularios de registro de ese tipo
  • Los usuarios pueden completar el campo al crear registros

Caso 2: Crear Campo de Seleccion con Opciones

Actor: Administrador del sistema

Precondiciones:

  • El usuario debe estar autenticado como administrador
  • El tipo de CRM debe existir

Flujo principal:

  1. El administrador accede a la configuracion de campos del tipo CRM
  2. El administrador presiona "Nuevo Campo"
  3. El administrador ingresa el nombre de campo (ej: "tipo_consulta")
  4. El administrador ingresa la etiqueta (ej: "Tipo de Consulta")
  5. El administrador selecciona tipo de dato "select"
  6. El administrador marca como requerido
  7. El administrador agrega opciones:
    • Valor: 1, Etiqueta: "Consulta de Precio", Orden: 1
    • Valor: 2, Etiqueta: "Consulta de Stock", Orden: 2
    • Valor: 3, Etiqueta: "Reclamo", Orden: 3
  8. El administrador presiona "Guardar"
  9. El sistema crea el campo y sus opciones en transaccion
  10. El sistema muestra notificacion de exito

Postcondiciones:

  • El campo aparece como dropdown en formularios
  • Las opciones se muestran en el orden definido
  • El usuario debe seleccionar una opcion al crear registros

Caso 3: Modificar Campo Existente

Actor: Administrador del sistema

Precondiciones:

  • El campo debe existir
  • El usuario debe estar autenticado como administrador

Flujo principal:

  1. El administrador accede a la configuracion de campos
  2. El administrador localiza el campo a modificar
  3. El administrador hace clic en editar
  4. El administrador modifica propiedades permitidas:
    • Etiqueta
    • Es requerido
    • Es visible
    • Valor por defecto
  5. Si el campo tiene opciones, puede:
    • Agregar nuevas opciones
    • Modificar etiquetas y orden de existentes
    • Eliminar opciones (soft delete)
  6. El administrador presiona "Guardar"
  7. El sistema sincroniza cambios
  8. El sistema muestra notificacion de exito

Postcondiciones:

  • Los cambios se reflejan en formularios existentes
  • Los valores almacenados no se modifican
  • Las opciones eliminadas quedan inactivas

Consideraciones

Seguridad

  • Solo administradores pueden crear, modificar o eliminar campos
  • Los usuarios regulares solo visualizan los campos al completar registros
  • El nombre de campo no debe contener caracteres especiales

Auditoria

  • Se debe registrar quien crea cada campo
  • Se debe registrar modificaciones en la configuracion
  • Los valores de campos se almacenan con el registro CRM

Rendimiento

  • Los campos de un tipo se cargan en conjunto
  • Se debe cachear la configuracion de campos en el frontend
  • La cantidad de campos por tipo debe ser razonable (recomendado menos de 20)

Dependencias

Funcionalidades Relacionadas

  • Tipos de CRM: Los campos pertenecen a un tipo especifico
  • Opciones de Campo: Los campos de seleccion tienen opciones
  • Registros CRM: Los registros almacenan valores de campos
  • Recursos del Sistema: Los campos pueden referenciar otras entidades

Recursos Referenciables

  • clientes
  • proveedores
  • vendedores
  • productos
  • otros definidos en el sistema

Criterios de Aceptacion

  • [ ] AC-001: El administrador puede crear un campo con nombre, etiqueta y tipo de dato
  • [ ] AC-002: El sistema rechaza nombres de campo duplicados
  • [ ] AC-003: El administrador puede definir si un campo es obligatorio
  • [ ] AC-004: El administrador puede definir si un campo es visible
  • [ ] AC-005: El administrador puede definir un valor por defecto
  • [ ] AC-006: El administrador puede crear campos de tipo seleccion con opciones
  • [ ] AC-007: Las opciones se pueden ordenar
  • [ ] AC-008: El administrador puede agregar nuevas opciones a un campo existente
  • [ ] AC-009: El administrador puede eliminar opciones (soft delete)
  • [ ] AC-010: Los campos aparecen dinamicamente en formularios de registro
  • [ ] AC-011: Los campos requeridos validan presencia de valor
  • [ ] AC-012: El tipo de dato determina el componente de entrada apropiado
  • [ ] AC-013: Los campos pueden referenciar recursos externos
  • [ ] AC-014: No se puede modificar el nombre ni tipo de dato si hay valores almacenados

Notas Adicionales

  • La unicidad global del nombre de campo simplifica las consultas y reportes
  • El valor por defecto se aplica al crear nuevos registros
  • El flag de visibilidad puede usarse para campos calculados o de sistema
  • Los campos de tipo "resource" permiten autocompletado contra otros modulos
  • La sincronizacion de opciones mantiene coherencia entre frontend y backend
  • Las opciones eliminadas se marcan con deleted_at pero no se borran fisicamente