Appearance
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
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
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
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
| Accion | Descripcion |
|---|---|
| Crear campo | El administrador agrega un nuevo campo al tipo de CRM |
| Editar campo | El administrador modifica las propiedades del campo |
| Eliminar campo | El administrador elimina un campo del tipo |
| Gestionar opciones | El administrador agrega/modifica opciones de seleccion |
| Completar campo | El usuario operador completa el campo en el registro |
Tipos de Campos Soportados
| Tipo | Descripcion | Componente de Entrada |
|---|---|---|
| text | Texto libre | Input de texto |
| number | Valor numerico | Input numerico |
| date | Fecha | Selector de fecha |
| select | Seleccion unica | Dropdown con opciones |
| checkbox | Si/No | Checkbox |
| resource | Referencia a entidad | Autocomplete |
Permisos
- Visualizar campos (usuarios del CRM)
- Configurar campos (administradores)
- Eliminar campos (administradores)
Estados de UI
| Estado | Descripcion |
|---|---|
| Campo requerido | Se marca visualmente como obligatorio |
| Campo opcional | Sin indicador de obligatoriedad |
| Campo oculto | No aparece en formularios pero se almacena |
| Error de validacion | Mensaje 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
| Dato | Descripcion | Requerido | Restricciones |
|---|---|---|---|
| Identificador | Codigo numerico unico del campo | Auto | - |
| Tipo CRM | Tipo de CRM al que pertenece el campo | Si | Referencia valida |
| Nombre de campo | Identificador tecnico unico | Si | 20 caracteres, unico global |
| Etiqueta | Texto mostrado al usuario | Si | 50 caracteres |
| Tipo de dato | Tipo de valor que almacena | Si | 15 caracteres (text, number, etc.) |
| Es requerido | Indica si el campo es obligatorio | Si | true/false |
| Es visible | Indica si se muestra en formularios/PDF | Si | true/false |
| Valor por defecto | Valor inicial del campo | No | Texto |
| Recurso | Referencia a otra entidad del sistema | No | 50 caracteres |
Relaciones de Negocio
| Relacion | Descripcion |
|---|---|
| Tipo CRM | Cada campo pertenece a un tipo de CRM especifico |
| Opciones | Un campo de seleccion puede tener multiples opciones |
| Valores de campo | Los registros CRM almacenan valores para cada campo |
Validaciones de Negocio
| Validacion | Descripcion |
|---|---|
| Nombre unico | El nombre de campo debe ser unico en todo el sistema |
| Tipo dato valido | El tipo de dato debe ser uno de los soportados |
| Tipo CRM existente | El tipo de CRM referenciado debe existir |
| Opciones coherentes | Si es tipo 'select', debe tener opciones definidas |
| Recurso valido | Si 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:
- El administrador accede a la configuracion de campos del tipo CRM
- El administrador presiona "Nuevo Campo"
- El administrador ingresa el nombre de campo (ej: "observaciones_tecnicas")
- El administrador ingresa la etiqueta (ej: "Observaciones Tecnicas")
- El administrador selecciona tipo de dato "text"
- El administrador marca como no requerido
- El administrador marca como visible
- El administrador presiona "Guardar"
- El sistema valida unicidad del nombre
- El sistema crea el campo
- 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:
- El administrador accede a la configuracion de campos del tipo CRM
- El administrador presiona "Nuevo Campo"
- El administrador ingresa el nombre de campo (ej: "tipo_consulta")
- El administrador ingresa la etiqueta (ej: "Tipo de Consulta")
- El administrador selecciona tipo de dato "select"
- El administrador marca como requerido
- 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
- El administrador presiona "Guardar"
- El sistema crea el campo y sus opciones en transaccion
- 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:
- El administrador accede a la configuracion de campos
- El administrador localiza el campo a modificar
- El administrador hace clic en editar
- El administrador modifica propiedades permitidas:
- Etiqueta
- Es requerido
- Es visible
- Valor por defecto
- Si el campo tiene opciones, puede:
- Agregar nuevas opciones
- Modificar etiquetas y orden de existentes
- Eliminar opciones (soft delete)
- El administrador presiona "Guardar"
- El sistema sincroniza cambios
- 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