6.3 KiB
RF-EST-003: Control de Anticipos y Retenciones
ID: RF-EST-003
Módulo: MAI-008
Prioridad: Alta
Story Points: 8 SP
📋 Descripción
Sistema centralizado para gestionar anticipos recibidos/otorgados, sus amortizaciones por estimación, y control de retenciones acumuladas con proyección de liberaciones.
🎯 Objetivos
- Registrar anticipos recibidos de clientes y otorgados a subcontratistas
- Calcular y aplicar amortizaciones automáticas por estimación
- Control de saldos pendientes de amortizar
- Gestión de retenciones acumuladas por tipo
- Proyección y liberación de retenciones
📐 Reglas de Negocio
Anticipos Recibidos (de Cliente)
RN-ANT-001: Registro de Anticipo
interface AnticipoRecibido {
contratoId: string;
monto: number;
porcentaje: number; // % del contrato
fechaRecepcion: Date;
referenciaBancaria: string;
// Amortización
porcentajeAmortizacionPorEstimacion: number; // 25% típico
saldoPendiente: number;
totalAmortizado: number;
}
Cálculo:
anticipo = monto_contrato × (porcentaje_anticipo / 100)
// Por estimación:
amortizacion = (porcentaje_amortizacion / 100) × anticipo_inicial
saldo_pendiente = anticipo_inicial - Σ(amortizaciones)
RN-ANT-002: Validaciones
- Anticipo <= 30% del contrato (límite legal típico)
- Solo 1 anticipo activo por contrato
- Debe amortizarse antes de finiquito
Anticipos Otorgados (a Subcontratista)
RN-ANT-003: Anticipo a Subcontratista
interface AnticipoOtorgado {
subcontratoId: string;
monto: number;
porcentaje: number; // 10-20% típico
fechaPago: Date;
garantiaId: string; // Fianza que respalda el anticipo
amortizacionProporcional: boolean; // true: por % avance
saldoPendiente: number;
}
Cálculo amortización proporcional:
// Si avance 30%:
amortizacion = (30 / 100) × anticipo_inicial
RN-ANT-004: Garantías
- Anticipo >10% requiere fianza/garantía
- Validar vigencia de garantía antes de pagar
- Liberar garantía al amorti zar 100%
Retenciones
RN-RET-001: Tipos de Retención
enum TipoRetencion {
FONDO_GARANTIA = 'fondo_garantia', // 5-10%
FIANZA_CUMPLIMIENTO = 'fianza', // 5%
ISR = 'isr', // Variable
IVA_RETENIDO = 'iva', // Casos específicos
OTRA = 'other'
}
RN-RET-002: Acumulación
interface RetencionAcumulada {
contratoId: string;
tipo: TipoRetencion;
porcentaje: number;
montoAcumulado: number;
montoLiberado: number;
saldoPendiente: number;
fechaLiberacionEstimada: Date;
condicionesLiberacion: string;
}
RN-RET-003: Liberación de Retenciones
Condiciones para liberar:
-
Fondo de garantía:
- Obra 100% terminada
- Periodo de garantía cumplido (1-2 años)
- Sin pendientes de calidad
-
Fianza cumplimiento:
- Contrato finiquitado
- Sin adeudos ni reclamaciones
-
ISR/IVA:
- Declaración fiscal presentada
- Pago de impuestos demostrado
Cálculo liberación:
// Liberación parcial proporcional
if (tipo === 'fondo_garantia' && tiempo_garantia >= meses_requeridos) {
monto_a_liberar = saldo_pendiente × (porcentaje_liberacion / 100)
}
// Liberación total
if (condiciones_cumplidas) {
monto_a_liberar = saldo_pendiente
}
📊 Dashboard de Anticipos y Retenciones
Vista para Finanzas
Anticipos Pendientes de Amortizar:
| Contrato | Anticipo Inicial | Amortizado | Saldo | % Pendiente |
|---|---|---|---|---|
| PRJ-001 | $10,000,000 | $6,000,000 | $4,000,000 | 40% |
| PRJ-002 | $5,000,000 | $5,000,000 | $0 | 0% |
Retenciones Acumuladas:
| Proyecto | Tipo | Acumulado | Fecha Est. Liberación |
|---|---|---|---|
| PRJ-001 | Fondo Garantía | $2,500,000 | 2026-12-31 |
| PRJ-001 | ISR | $150,000 | Al finiquito |
Proyección de Flujo
// Próxima estimación proyectada
estimacion_futura = {
monto_bruto: $15,000,000,
amortizacion_estimada: $2,000,000,
retencion_estimada: $650,000,
monto_neto_proyectado: $12,350,000,
fecha_cobro_estimada: '2025-12-15'
}
🧮 Ejemplo Completo
Contexto
- Contrato: $50M
- Anticipo cliente: 20% = $10M (recibido)
- Amortización: 25% por estimación
Tracking de Anticipo
| Estimación | Monto Bruto | Amortización | Saldo Anticipo |
|---|---|---|---|
| Inicial | - | - | $10,000,000 |
| EST-001 | $12,500,000 | $2,500,000 | $7,500,000 |
| EST-002 | $10,000,000 | $2,500,000 | $5,000,000 |
| EST-003 | $8,000,000 | $2,000,000 | $3,000,000 |
| EST-004 | $12,000,000 | $3,000,000 | $0 |
Análisis:
- Anticipo completamente amortizado en 4 estimaciones
- Liberación de garantía: Al completar anticipo
Tracking de Retenciones
| Estimación | Base | Retención 5% | Acumulado |
|---|---|---|---|
| EST-001 | $10,000,000 | $500,000 | $500,000 |
| EST-002 | $7,500,000 | $375,000 | $875,000 |
| EST-003 | $6,000,000 | $300,000 | $1,175,000 |
| Total acumulado al finiquito | $2,500,000 |
Liberación:
- Fecha estimada: 2027-01-01 (2 años garantía)
- Condición: Sin defectos de calidad
✅ Criterios de Aceptación
-
Registro de anticipos:
- Captura monto, fecha, referencia bancaria
- Validación porcentaje <= 30%
- Solo 1 anticipo activo por contrato
-
Amortizaciones automáticas:
- Se calculan por estimación
- Actualizan saldo pendiente
- Alertan cuando saldo = 0
-
Control de retenciones:
- Acumulan por tipo
- Proyectan fecha de liberación
- Generan recordatorios
-
Reportes:
- Estado de anticipos (amortizado vs pendiente)
- Retenciones acumuladas
- Proyección de liberaciones
-
Alertas:
- Anticipo próximo a amortizarse 100%
- Retenciones elegibles para liberación
- Garantías próximas a vencer
🔗 Referencias
Generado: 2025-11-20
Estado: ✅ Completo