Appearance
Presupuesto Base y Medios de Pago
Módulo: crm Tipo: Resource Estado: Planificado Fecha: 2026-02-02
Descripción de la Fase
La Fase 1 implementa la funcionalidad base del sistema de presupuestos, incluyendo:
- CRUD completo de presupuestos
- Asociación con registros CRM
- Gestión de medios de pago
- Flujo de aprobación
- Estados especiales: sin cargo y garantía
- Descuento general del presupuesto
Esta fase es independiente y no requiere módulos adicionales (Ventas o Compras).
Frontend (Perspectiva de Usuario)
Vistas
- Listado de presupuestos por registro CRM: Muestra todos los presupuestos asociados a un registro de atención específico, con indicadores visuales de estado (borrador, aprobado, garantía, sin cargo)
- Formulario de creación/edición de presupuesto: Pantalla principal para capturar todos los datos del presupuesto
- Modal de medios de pago: Interfaz para asignar montos a diferentes medios de pago disponibles
Componentes Esperados
- Listado de presupuestos con filtros y ordenamiento
- Formulario de presupuesto con validaciones en tiempo real
- Selector de medios de pago con monto y notas
- Botón de aprobación con confirmación
- Badges visuales para estados (borrador, aprobado, garantía, sin cargo)
Interacciones del Usuario
Gestión básica:
- Acceder al listado de presupuestos desde un registro CRM
- Crear nuevo presupuesto con datos básicos (fecha, validez, total, notas)
- Modificar presupuesto existente (solo si no está aprobado)
- Eliminar presupuesto (solo si no está aprobado y tiene permiso)
- Aprobar presupuesto (cambia a estado de solo lectura)
Medios de pago: 6. Abrir modal de medios de pago 7. Seleccionar medio de pago de lista disponible 8. Asignar monto al medio de pago seleccionado 9. Agregar notas opcionales al medio de pago 10. Reorganizar orden de visualización de medios de pago 11. Eliminar medio de pago asignado
Características especiales:
- Marcar presupuesto como "Garantía" (indicador visual)
- Marcar presupuesto como "Sin cargo" (total se establece en 0)
- Ingresar motivo obligatorio cuando es sin cargo
- Aplicar descuento general al presupuesto
- Editar pie de presupuesto para impresión
Permisos del Sistema
| Permiso | Descripción | Acciones permitidas |
|---|---|---|
| CRM_MOVIMIENTOS_PRESUPUESTO | Acceso total a la creación de presupuestos | CRUD completo |
Estados de UI
Estado del presupuesto:
- Borrador: Indicador neutro, permite todas las operaciones de edición
- Aprobado: Badge destacado con fecha de aprobación, formulario en modo solo lectura
- Garantía: Badge visual distintivo junto al estado principal
- Sin cargo: Badge visual con motivo visible en tooltip o detalle
Estados de carga:
- Cargando: Indicador de carga al obtener datos del presupuesto
- Guardando: Indicador durante operaciones de guardado
Estados de validación:
- Error de validación: Mensajes junto a campos con error
- Advertencia de suma: Alerta cuando suma de medios de pago excede el total
- Confirmación de aprobación: Diálogo de confirmación antes de aprobar
Estados de resultado:
- Éxito: Notificación de operación completada
- Error: Mensaje de error con descripción del problema
- Listado vacío: Mensaje indicando que no hay presupuestos para el registro CRM
Backend (Perspectiva de Datos de Negocio)
Entidades de la Fase 1
Presupuesto
| Dato | Descripción | Obligatorio | Reglas |
|---|---|---|---|
| Fecha y hora | Momento de creación del presupuesto | Si | Por defecto fecha/hora actual |
| Usuario creador | Quien generó el presupuesto | Si | Usuario autenticado |
| Validez | Cantidad de días de vigencia | No | Debe ser mayor a 0 si se especifica |
| Pie de presupuesto | Texto para impresión del documento | No | Texto libre |
| Descuento general | Porcentaje de descuento aplicado | No | Entre 0 y 100 |
| Aprobado | Indica si el presupuesto fue aprobado | Si | Por defecto No |
| Fecha de aprobación | Momento de la aprobación | Condicional | Obligatorio si está aprobado |
| Notas internas | Observaciones que no se imprimen | No | Texto libre |
| Es garantía | Marca de trabajo en garantía | Si | Por defecto No |
| Sin cargo | Indica si es sin cargo | Si | Por defecto No |
| Motivo sin cargo | Razón del trabajo sin cargo | Condicional | Obligatorio si es sin cargo |
| Total | Monto total del presupuesto | Si | Debe ser >= 0, debe ser 0 si es sin cargo |
| Fecha de creación | Timestamp de creación | Si | Automático |
| Fecha de modificación | Timestamp de última modificación | No | Automático |
| Fecha de eliminación | Timestamp de borrado lógico | No | Soft delete |
Relación CRM-Presupuesto
| Dato | Descripción | Obligatorio | Reglas |
|---|---|---|---|
| Identificador del registro CRM | Referencia al registro de atención | Si | UUID válido existente |
| Identificador del presupuesto | Referencia al presupuesto | Si | Entero válido existente |
Nota: Esta relación permite que un registro CRM tenga múltiples presupuestos (seguimiento de cotizaciones en el tiempo).
Medio de Pago del Presupuesto
| Dato | Descripción | Obligatorio | Reglas |
|---|---|---|---|
| Presupuesto | Referencia al presupuesto | Si | Debe existir |
| Medio de pago | Referencia al medio de pago | Si | Debe existir en catálogo |
| Monto | Cantidad asignada a este medio | Si | Debe ser mayor a 0 |
| Notas | Observaciones del medio de pago | No | Texto libre |
| Orden de visualización | Posición en la lista | Si | Por defecto 0 |
Validaciones de Negocio Fase 1
Presupuesto:
- El descuento debe estar entre 0% y 100%
- El total debe ser mayor o igual a 0
- La validez, si se especifica, debe ser mayor a 0 días
- Si es "sin cargo", el motivo es obligatorio
- Si es "sin cargo", el total debe ser 0
- Si está aprobado, la fecha de aprobación es obligatoria
- Si no está aprobado, la fecha de aprobación debe estar vacía
Medios de Pago:
- El monto de cada medio de pago debe ser mayor a 0
- La suma de todos los medios de pago no debe superar el total del presupuesto
Operaciones:
- No se puede modificar un presupuesto aprobado
- No se puede eliminar un presupuesto aprobado
- No se puede eliminar un presupuesto vinculado a prefacturas
- La aprobación es una acción irreversible
Reglas de Negocio Específicas
RN-001: Gestión de Totales (Sin Ítems)
En la Fase 1, el presupuesto NO tiene ítems, por lo tanto:
- El usuario ingresa el total manualmente
- El total puede modificarse libremente (mientras no esté aprobado)
- La suma de los montos asignados a medios de pago NUNCA debe superar el total del presupuesto
RN-002: Proceso de Aprobación
- Solo usuarios con permiso CRM_BUDGET_APPROVE pueden aprobar
- Al aprobar, el sistema registra automáticamente la fecha y hora de aprobación
- Una vez aprobado, el presupuesto queda en modo de solo lectura
- No se puede revertir una aprobación (acción irreversible)
- Presupuestos aprobados no pueden ser eliminados ni modificados
RN-003: Presupuestos Sin Cargo
- Si se marca "Sin cargo" = true, el total DEBE ser 0
- El campo "Motivo sin cargo" se vuelve OBLIGATORIO
- Los medios de pago no aplican cuando es sin cargo (suma permitida = 0)
- Se debe poder desmarcar "Sin cargo" y el total vuelve a ser editable
RN-004: Presupuestos en Garantía
- Es una marca informativa (indicador visual)
- NO afecta el flujo de aprobación ni las validaciones de total
- Se muestra como badge visual distintivo
- Puede combinarse con "Sin cargo"
RN-005: Validez del Presupuesto
- Se expresa en días desde la fecha de creación
- Es un campo informativo, no calcula fecha de vencimiento automáticamente
- El sistema NO bloquea ni alerta automáticamente por vencimiento
RN-006: Integración con CRM
- Un registro CRM puede tener MÚLTIPLES presupuestos asociados
- Al eliminar un registro CRM, se eliminan sus presupuestos asociados (cascada)
- Al eliminar un presupuesto, se mantiene el registro CRM intacto
Casos de Uso
Caso 1: Crear Presupuesto Simple
Actor: Usuario con permiso CRM_BUDGET_WRITE
Precondiciones:
- El usuario está autenticado en el sistema
- Existe un registro CRM al cual asociar el presupuesto
- El usuario tiene acceso al módulo CRM
- Existe al menos un medio de pago configurado en el sistema
Flujo principal:
- El usuario accede al detalle de un registro CRM
- El usuario selecciona la opción "Nuevo Presupuesto"
- El sistema muestra el formulario de presupuesto con fecha y hora actuales
- El usuario ingresa la validez en días (opcional)
- El usuario ingresa el total del presupuesto
- El usuario aplica un descuento general si corresponde
- El usuario abre el modal de medios de pago
- El usuario selecciona un medio de pago de la lista disponible
- El usuario ingresa el monto asignado a ese medio
- El usuario repite pasos 8-9 para adicionales medios de pago si es necesario
- El sistema valida que la suma de medios no supere el total
- El usuario cierra el modal de medios de pago
- El usuario ingresa notas internas si corresponde
- El usuario guarda el presupuesto
- El sistema valida los datos y guarda el presupuesto en estado borrador
- El sistema muestra mensaje de éxito y actualiza el listado
Postcondiciones:
- El presupuesto queda guardado en estado borrador
- El presupuesto está asociado al registro CRM
- Los medios de pago quedan registrados con sus montos
- El presupuesto aparece en el listado del registro CRM
- Se registra auditoría de la creación
Flujos alternativos:
- Error de validación: Si algún campo no cumple las reglas (ej: descuento > 100), el sistema muestra mensajes de error junto a los campos afectados y no permite guardar hasta corregir
- Suma de medios excede total: El sistema muestra advertencia y no permite guardar hasta ajustar los montos
- Presupuesto sin cargo: Si el usuario marca "Sin cargo", el total se establece en 0 y se solicita el motivo obligatoriamente
- Cancelación: Si el usuario cancela, se descarta la información ingresada y vuelve al registro CRM
Caso 4: Aprobar Presupuesto
Actor: Usuario con permiso CRM_BUDGET_APPROVE
Precondiciones:
- Existe un presupuesto en estado borrador
- El usuario tiene permiso de aprobación
- El presupuesto tiene todos los datos requeridos completos
Flujo principal:
- El usuario accede al listado de presupuestos de un registro CRM
- El usuario identifica el presupuesto a aprobar (estado: borrador)
- El usuario selecciona la acción "Aprobar"
- El sistema muestra diálogo de confirmación indicando que la acción es irreversible
- El usuario confirma la aprobación
- El sistema registra la fecha y hora de aprobación
- El sistema cambia el estado del presupuesto a "Aprobado"
- El sistema muestra mensaje de éxito
- El presupuesto se muestra ahora en modo solo lectura
Postcondiciones:
- El presupuesto queda marcado como aprobado con fecha de aprobación
- El presupuesto no puede ser modificado ni eliminado
- El badge de "Aprobado" se muestra en el listado y detalle
- Se registra auditoría de la aprobación
- El presupuesto puede ser vinculado a prefacturas
Flujos alternativos:
- Usuario cancela confirmación: Si el usuario cancela en el diálogo, el presupuesto permanece como borrador
- Error al aprobar: Si ocurre un error, el sistema muestra mensaje y el presupuesto permanece como borrador
- Presupuesto ya aprobado: Si otro usuario aprobó mientras tanto, el sistema informa que ya está aprobado
Consideraciones Técnicas Fase 1
Performance
Expectativas de tiempo de respuesta:
- Listado de presupuestos: < 2 segundos
- Guardado de presupuesto: < 3 segundos
Índices recomendados:
- Búsqueda por registro CRM
- Filtrado por estado (aprobado/borrador)
- Ordenamiento por fecha
Seguridad
- Solo usuarios con CRM_BUDGET_VIEW pueden ver presupuestos
- Solo usuarios con CRM_BUDGET_WRITE pueden crear/modificar
- Solo usuarios con CRM_BUDGET_APPROVE pueden aprobar
- Solo usuarios con CRM_BUDGET_DELETE pueden eliminar
- Un usuario solo puede ver presupuestos de los registros CRM a los que tiene acceso
- Los presupuestos aprobados son inmutables
- El borrado es lógico (soft delete), no físico
Auditoría
Operaciones a registrar:
- Creación de presupuesto (usuario, fecha, datos)
- Modificación de presupuesto (usuario, fecha, campos modificados)
- Aprobación de presupuesto (usuario, fecha)
- Eliminación de presupuesto (usuario, fecha)
- Adición/modificación/eliminación de medios de pago
Información relevante:
- Identificador del registro afectado
- Usuario que realizó la operación
- Fecha y hora de la operación
- Tipo de operación (INSERT, UPDATE, DELETE)
- Valores anteriores y nuevos (para modificaciones)
Testing
Escenarios críticos a validar:
- Creación de presupuesto con todos los campos
- Validación de suma de medios de pago vs total
- Flujo completo de aprobación
- Protección de presupuestos aprobados
- Manejo de presupuestos sin cargo
- Eliminación con y sin permisos
Criterios de Aceptación Fase 1
- [ ] AC-001: El usuario puede crear un nuevo presupuesto asociado a un registro CRM con fecha, validez, descuento y total
- [ ] AC-002: El usuario puede agregar múltiples medios de pago a un presupuesto, cada uno con su monto y notas
- [ ] AC-003: El sistema valida que la suma de medios de pago no supere el total del presupuesto
- [ ] AC-004: El usuario puede marcar un presupuesto como "Sin cargo" y debe ingresar motivo obligatoriamente
- [ ] AC-005: El usuario puede marcar un presupuesto como "Garantía" como indicador visual
- [ ] AC-006: El usuario con permiso CRM_BUDGET_APPROVE puede aprobar presupuestos, quedando en modo solo lectura
- [ ] AC-007: Un presupuesto aprobado no puede ser modificado ni eliminado
- [ ] AC-008: El sistema registra auditoría de todas las operaciones (crear, modificar, aprobar, eliminar)
- [ ] AC-009: La eliminación de presupuestos es lógica (soft delete) y solo para presupuestos no aprobados
- [ ] AC-010: Existen pruebas unitarias y de integración que validan las funcionalidades de Fase 1
Navegación
Historial de cambios
| Fecha | Versión | Autor | Descripción |
|---|---|---|---|
| 2026-02-02 | 1.0 | Claude | Creación del documento |