Skip to content

Presupuesto Base y Medios de Pago

Módulo: crm Tipo: Resource Estado: Implementado 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:

  1. Acceder al listado de presupuestos desde un registro CRM
  2. Crear nuevo presupuesto con datos básicos (fecha, validez, total, notas)
  3. Modificar presupuesto existente (solo si no está aprobado)
  4. Eliminar presupuesto (solo si no está aprobado y tiene permiso)
  5. 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

Impresión:

  • Generar PDF del presupuesto para entregar al cliente

Permisos del Sistema

PermisoNombreDescripciónNivel
CRM_BUDGETPresupuestosAcceso al listado, alta y modificaciones de presupuestos2

El acceso a presupuestos está controlado por un único permiso (CRM_BUDGET, código 2025 en Permisos.php), que otorga acceso completo al módulo: listado, creación, modificación y eliminación. Este permiso es submódulo del CRM (nivel 2, padre 2001).

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
  • 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

DatoDescripciónObligatorioReglas
Fecha y horaMomento de creación del presupuestoSiPor defecto fecha/hora actual
Usuario creadorQuien generó el presupuestoSiUsuario autenticado
ValidezCantidad de días de vigenciaNoDebe ser mayor a 0 si se especifica
Pie de presupuestoTexto para impresión del documentoNoTexto libre
Descuento generalPorcentaje de descuento aplicadoNoEntre 0 y 100
AprobadoIndica si el presupuesto fue aprobadoSiPor defecto No
Fecha de aprobaciónMomento de la aprobaciónCondicionalObligatorio si está aprobado
Notas internasObservaciones que no se imprimenNoTexto libre
Es garantíaMarca de trabajo en garantíaSiPor defecto No
Sin cargoIndica si es sin cargoSiPor defecto No
Motivo sin cargoRazón del trabajo sin cargoCondicionalObligatorio si es sin cargo
TotalMonto total del presupuestoSiDebe ser >= 0, debe ser 0 si es sin cargo
Fecha de creaciónTimestamp de creaciónSiAutomático
Fecha de modificaciónTimestamp de última modificaciónNoAutomático
Fecha de eliminaciónTimestamp de borrado lógicoNoSoft delete

Relación CRM-Presupuesto

DatoDescripciónObligatorioReglas
Identificador del registro CRMReferencia al registro de atenciónSiUUID válido existente
Identificador del presupuestoReferencia al presupuestoSiEntero 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

DatoDescripciónObligatorioReglas
PresupuestoReferencia al presupuestoSiDebe existir
Medio de pagoReferencia al medio de pagoSiDebe existir en catálogo
MontoCantidad asignada a este medioSiDebe ser mayor a 0
NotasObservaciones del medio de pagoNoTexto libre
Orden de visualizaciónPosición en la listaSiPor defecto 0

Validaciones de Negocio Fase 1

Presupuesto:

  1. El descuento debe estar entre 0% y 100%
  2. El total debe ser mayor o igual a 0
  3. La validez, si se especifica, debe ser mayor a 0 días
  4. Si es "sin cargo", el motivo es obligatorio
  5. Si es "sin cargo", el total debe ser 0
  6. Si está aprobado, la fecha de aprobación es obligatoria
  7. Si no está aprobado, la fecha de aprobación debe estar vacía

Medios de Pago:

  1. El monto de cada medio de pago debe ser mayor a 0
  2. Los medios de pago son opcionales en todos los tipos de presupuesto (normal, garantía, sin cargo)
  3. La suma de los medios de pago asignados no debe superar el total del presupuesto (si se asignan)

Operaciones:

  1. No se puede modificar un presupuesto aprobado
  2. No se puede eliminar un presupuesto aprobado
  3. No se puede eliminar un presupuesto vinculado a prefacturas
  4. 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)
  • El total del presupuesto se preserva al editar un presupuesto sin ítems (no se resetea a 0)
  • Los medios de pago son opcionales e informativos; si se asignan, su suma no debe superar el total

RN-002: Proceso de Aprobación

  • Solo usuarios con permiso CRM_BUDGET 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 son opcionales cuando es sin cargo (no se valida ni requiere cobertura)
  • 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 cancelar un registro CRM, sus presupuestos asociados deben cancelarse también (pendiente de implementación — fase posterior)
  • Al eliminar un presupuesto, se mantiene el registro CRM intacto
  • Los registros CRM no se eliminan físicamente; la baja se realiza mediante cancelación con motivo (cancel_reason_id)

Casos de Uso

Caso 1: Crear Presupuesto Simple

Actor: Usuario con permiso CRM_BUDGET

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

Flujo principal:

  1. El usuario accede al detalle de un registro CRM
  2. El usuario selecciona la opción "Nuevo Presupuesto"
  3. El sistema muestra el formulario de presupuesto con fecha y hora actuales
  4. El usuario ingresa la validez en días (opcional)
  5. El usuario ingresa el total del presupuesto
  6. El usuario aplica un descuento general si corresponde
  7. El usuario abre el modal de medios de pago (opcional)
  8. El usuario selecciona un medio de pago de la lista disponible
  9. El usuario ingresa el monto asignado a ese medio
  10. El usuario repite pasos 8-9 para adicionales medios de pago si es necesario
  11. El usuario cierra el modal de medios de pago
  12. El usuario ingresa notas internas si corresponde
  13. El usuario guarda el presupuesto
  14. El sistema valida los datos y guarda el presupuesto en estado borrador
  15. 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 (si se asignaron)
  • 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: Si el usuario asignó medios de pago y su suma supera el total, el sistema muestra error de validación 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

Precondiciones:

  • Existe un presupuesto en estado borrador
  • El usuario tiene permiso CRM_BUDGET
  • El presupuesto tiene todos los datos requeridos completos

Flujo principal:

  1. El usuario accede al listado de presupuestos de un registro CRM
  2. El usuario identifica el presupuesto a aprobar (estado: borrador)
  3. El usuario selecciona la acción "Aprobar"
  4. El sistema muestra diálogo de confirmación indicando que la acción es irreversible
  5. El usuario confirma la aprobación
  6. El sistema registra la fecha y hora de aprobación
  7. El sistema cambia el estado del presupuesto a "Aprobado"
  8. El sistema muestra mensaje de éxito
  9. 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 pueden acceder a presupuestos (ver, crear, modificar, aprobar, 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

Generación de PDF

El presupuesto puede imprimirse como PDF para entregar al cliente. El documento generado incluye:

  • Datos del encabezado: fecha, validez, número de presupuesto
  • Datos del cliente/registro CRM asociado
  • Total del presupuesto con descuento general aplicado
  • Medios de pago con sus montos
  • Pie de presupuesto (texto libre configurable por el usuario)

Presupuesto con ítems

Cuando el presupuesto tiene ítems (Fase 2), el PDF es el mismo documento con una sección adicional donde cada ítem se lista uno debajo del otro, mostrando producto, cantidad, precio unitario, descuento y total por ítem.


Criterios de Aceptación Fase 1

  • [x] AC-001: El usuario puede crear un nuevo presupuesto asociado a un registro CRM con fecha, validez, descuento y total
  • [x] AC-002: El usuario puede agregar múltiples medios de pago a un presupuesto, cada uno con su monto y notas
  • [x] AC-003: Los medios de pago son opcionales; si se asignan, el sistema valida que su suma no supere el total del presupuesto
  • [x] AC-004: El usuario puede marcar un presupuesto como "Sin cargo" y debe ingresar motivo obligatoriamente
  • [x] AC-005: El usuario puede marcar un presupuesto como "Garantía" como indicador visual
  • [x] AC-006: El usuario con permiso CRM_BUDGET puede aprobar presupuestos, quedando en modo solo lectura
  • [x] AC-007: Un presupuesto aprobado no puede ser modificado ni eliminado
  • [x] AC-008: El sistema registra auditoría de todas las operaciones (crear, modificar, aprobar, eliminar)
  • [x] 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


Historial de cambios

FechaVersiónAutorDescripción
2026-02-021.0ClaudeCreación del documento
2026-03-101.1ClaudeEstado actualizado a Implementado; permisos granulares reemplazados por CRM_BUDGET único; AC-001 a AC-009 marcados cumplidos