Appearance
Tipo de CRM (CrmType)
Modulo: CRM Tipo: Resource Estado: Implementado Fecha: 2026-02-02
Descripcion
El recurso CrmType (Tipo de CRM) define las diferentes categorias o contextos bajo los cuales se gestionan los registros de CRM. Cada tipo representa un flujo de trabajo distinto con su propia configuracion, campos personalizados y comportamiento especifico.
Valor de negocio:
- Permite crear multiples lineas de negocio con un solo sistema
- Facilita la adaptacion a diferentes verticales (automotriz, inmobiliario, servicios)
- Proporciona configuracion flexible sin necesidad de desarrollo
- Mantiene numeracion independiente por tipo de CRM
- Permite activar/desactivar tipos segun necesidades operativas
Ejemplos de tipos:
- CRM de Ventas Automotrices
- CRM de Servicio Tecnico
- CRM Basico de Atencion
- CRM Inmobiliario
Frontend (Perspectiva de Usuario)
Vistas
Selector de Tipo de CRM
- Permite al usuario elegir el tipo de CRM con el que desea trabajar
- Muestra solo los tipos activos
- Respeta el orden configurado
Configuracion de Tipos (Administrador)
- Listado de todos los tipos de CRM
- Formulario de alta y modificacion
- Gestion de estado activo/inactivo
Interacciones del Usuario
| Accion | Descripcion |
|---|---|
| Seleccionar tipo CRM | El usuario elige el tipo de CRM para trabajar |
| Crear tipo CRM | El administrador crea un nuevo tipo de CRM |
| Editar tipo CRM | El administrador modifica la configuracion de un tipo |
| Activar/Desactivar | El administrador cambia el estado de un tipo |
| Ordenar tipos | El administrador define el orden de visualizacion |
Permisos
- Visualizar tipos de CRM (todos los usuarios CRM)
- Crear tipos de CRM (administradores)
- Modificar tipos de CRM (administradores)
Estados de UI
| Estado | Descripcion |
|---|---|
| Tipo activo | El tipo esta disponible para crear registros |
| Tipo inactivo | El tipo no aparece en selectores pero mantiene sus datos |
| Cargando tipos | Indicador mientras se obtienen los tipos disponibles |
| Sin tipos | Mensaje cuando no hay tipos configurados |
Backend (Perspectiva de Datos de Negocio)
Entidad de Negocio: Tipo de CRM
Representa una categoria o contexto de gestion de registros CRM.
Datos Necesarios
| Dato | Descripcion | Requerido | Restricciones |
|---|---|---|---|
| Identificador | Codigo numerico unico del tipo | Auto | - |
| Codigo de tipo | Identificador textual corto | Si | 30 caracteres, unico |
| Tabla externa | Nombre de tabla para datos extendidos | No | 30 caracteres |
| Etiqueta | Nombre visible para el usuario | Si | 30 caracteres |
| Estado activo | Indica si el tipo esta habilitado | Si | true/false |
| Orden | Posicion en listas de seleccion | No | Entero |
| Contador | Numerador de registros del tipo | Auto | Inicia en 1 |
| Configuracion | Opciones adicionales en formato estructurado | No | JSON |
Relaciones de Negocio
| Relacion | Descripcion |
|---|---|
| Campos personalizados | Cada tipo puede tener multiples campos personalizados |
| Registros CRM | Cada tipo agrupa multiples registros de CRM |
| Tabla externa | Referencia opcional a tabla de datos extendidos |
Validaciones de Negocio
| Validacion | Descripcion |
|---|---|
| Codigo unico | El codigo de tipo debe ser unico en el sistema |
| Etiqueta requerida | La etiqueta es obligatoria |
| Codigo inmutable | El codigo de tipo no puede modificarse despues de creado |
| Tabla coherente | Si se especifica tabla externa, debe ser una tabla valida |
Reglas de Negocio
RN-TYP-001: Unicidad de Codigo de Tipo
- Condicion: Al crear un nuevo tipo de CRM
- Accion: El sistema verifica que no exista otro tipo con el mismo codigo
- Error: "El tipo de CRM '[codigo]' ya existe"
RN-TYP-002: Contador Automatico
- Condicion: Al crear un nuevo tipo de CRM
- Accion: El sistema inicializa el contador en 1
- Nota: El contador incrementa con cada registro creado de ese tipo
RN-TYP-003: Estado Inicial Activo
- Condicion: Al crear un nuevo tipo de CRM
- Accion: El tipo se crea con estado activo por defecto
RN-TYP-004: Restriccion de Eliminacion
- Condicion: El tipo tiene registros CRM asociados
- Accion: No se permite eliminar el tipo
- Alternativa: Desactivar el tipo para ocultarlo sin perder datos
RN-TYP-005: Ordenamiento de Tipos
- Condicion: Al listar tipos activos
- Accion: Se ordenan segun el campo orden, de menor a mayor
- Nota: Tipos sin orden aparecen al final
RN-TYP-006: Inclusion de Campos
- Condicion: Al solicitar un tipo con include='fields'
- Accion: El sistema incluye los campos personalizados asociados
- Nota: Esto evita multiples consultas para obtener la configuracion completa
Casos de Uso
Caso 1: Crear Nuevo Tipo de CRM
Actor: Administrador del sistema
Precondiciones:
- El usuario debe estar autenticado como administrador
- El usuario debe tener permiso para configurar el CRM
Flujo principal:
- El administrador accede a la configuracion de tipos CRM
- El administrador presiona "Nuevo Tipo"
- El sistema muestra el formulario de alta
- El administrador ingresa el codigo de tipo (ej: "ventas_autos")
- El administrador ingresa la etiqueta (ej: "CRM Ventas Automotrices")
- Opcionalmente configura el orden de visualizacion
- Opcionalmente especifica tabla de datos extendidos
- Opcionalmente define configuracion adicional
- El administrador presiona "Guardar"
- El sistema valida unicidad del codigo
- El sistema crea el tipo con contador en 1 y estado activo
- El sistema muestra notificacion de exito
Postcondiciones:
- El nuevo tipo esta disponible para crear registros
- El tipo aparece en los selectores de tipo CRM
- Los campos personalizados pueden agregarse al tipo
Flujos alternativos:
- Codigo duplicado: El sistema muestra error indicando que el codigo ya existe
- Datos invalidos: El sistema muestra errores de validacion
Caso 2: Desactivar Tipo de CRM
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 tipos CRM
- El administrador localiza el tipo a desactivar
- El administrador edita el tipo
- El administrador cambia el estado a inactivo
- El administrador presiona "Guardar"
- El sistema actualiza el estado del tipo
- El sistema muestra notificacion de exito
Postcondiciones:
- El tipo ya no aparece en selectores para nuevos registros
- Los registros existentes del tipo permanecen accesibles
- Los reportes historicos siguen funcionando
Caso 3: Consultar Tipos con Campos
Actor: Sistema (frontend)
Precondiciones:
- El modulo CRM debe estar habilitado
Flujo principal:
- El frontend solicita la lista de tipos con include='fields'
- El sistema obtiene todos los tipos de CRM
- Para cada tipo, el sistema obtiene sus campos personalizados
- El sistema retorna la lista completa con campos incluidos
- El frontend puede renderizar formularios dinamicos segun los campos
Postcondiciones:
- El frontend tiene la configuracion completa de cada tipo
- Los formularios pueden generarse dinamicamente
Consideraciones
Seguridad
- Solo administradores pueden crear o modificar tipos
- Los usuarios regulares solo pueden visualizar tipos activos
- La configuracion de tipos afecta a todos los usuarios
Auditoria
- Se debe registrar quien crea cada tipo
- Se debe registrar cambios en la configuracion
- Se debe mantener historial de activaciones/desactivaciones
Rendimiento
- La lista de tipos es pequena (tipicamente menos de 20)
- Se puede cachear en el frontend
- La consulta con campos incluidos evita N+1 queries
Dependencias
Funcionalidades Relacionadas
- Campos Personalizados: Definen la estructura de datos de cada tipo
- Registros CRM: Los registros pertenecen a un tipo especifico
- Datos Extendidos: Tablas externas para informacion adicional
Configuraciones Requeridas
- Modulo CRM habilitado
- Permisos de administracion para gestion de tipos
Criterios de Aceptacion
- [ ] AC-001: El administrador puede crear un tipo de CRM con codigo y etiqueta
- [ ] AC-002: El sistema rechaza codigos de tipo duplicados
- [ ] AC-003: El contador se inicializa en 1 al crear un tipo
- [ ] AC-004: Los tipos nuevos se crean con estado activo
- [ ] AC-005: El administrador puede modificar etiqueta, orden y configuracion
- [ ] AC-006: El codigo de tipo no puede modificarse despues de creado
- [ ] AC-007: El administrador puede activar/desactivar tipos
- [ ] AC-008: Solo los tipos activos aparecen en selectores
- [ ] AC-009: Los tipos se ordenan segun el campo orden
- [ ] AC-010: Se pueden obtener tipos con sus campos incluidos
- [ ] AC-011: Los registros existentes permanecen al desactivar un tipo
- [ ] AC-012: No se puede eliminar un tipo con registros asociados
Notas Adicionales
- El codigo de tipo se usa internamente para identificar comportamientos especificos (ej: "ventas" activa campos de concesionario)
- La configuracion JSON permite parametros flexibles sin cambios en la estructura de datos
- El contador por tipo permite numeracion independiente (ej: VEN-001, SRV-001)
- La tabla externa permite extender datos sin modificar la estructura principal
- Los tipos predefinidos (ventas, servicio_tecnico, basico) tienen comportamientos especiales en el frontend