252 lines
6.3 KiB
Markdown
252 lines
6.3 KiB
Markdown
# 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
|
||
|
||
1. Registrar anticipos recibidos de clientes y otorgados a subcontratistas
|
||
2. Calcular y aplicar amortizaciones automáticas por estimación
|
||
3. Control de saldos pendientes de amortizar
|
||
4. Gestión de retenciones acumuladas por tipo
|
||
5. Proyección y liberación de retenciones
|
||
|
||
---
|
||
|
||
## 📐 Reglas de Negocio
|
||
|
||
### Anticipos Recibidos (de Cliente)
|
||
|
||
**RN-ANT-001: Registro de Anticipo**
|
||
```typescript
|
||
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:**
|
||
```typescript
|
||
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**
|
||
```typescript
|
||
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:**
|
||
```typescript
|
||
// 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**
|
||
```typescript
|
||
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**
|
||
```typescript
|
||
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:
|
||
1. **Fondo de garantía:**
|
||
- Obra 100% terminada
|
||
- Periodo de garantía cumplido (1-2 años)
|
||
- Sin pendientes de calidad
|
||
|
||
2. **Fianza cumplimiento:**
|
||
- Contrato finiquitado
|
||
- Sin adeudos ni reclamaciones
|
||
|
||
3. **ISR/IVA:**
|
||
- Declaración fiscal presentada
|
||
- Pago de impuestos demostrado
|
||
|
||
**Cálculo liberación:**
|
||
```typescript
|
||
// 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
|
||
|
||
```typescript
|
||
// 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
|
||
|
||
1. **Registro de anticipos:**
|
||
- Captura monto, fecha, referencia bancaria
|
||
- Validación porcentaje <= 30%
|
||
- Solo 1 anticipo activo por contrato
|
||
|
||
2. **Amortizaciones automáticas:**
|
||
- Se calculan por estimación
|
||
- Actualizan saldo pendiente
|
||
- Alertan cuando saldo = 0
|
||
|
||
3. **Control de retenciones:**
|
||
- Acumulan por tipo
|
||
- Proyectan fecha de liberación
|
||
- Generan recordatorios
|
||
|
||
4. **Reportes:**
|
||
- Estado de anticipos (amortizado vs pendiente)
|
||
- Retenciones acumuladas
|
||
- Proyección de liberaciones
|
||
|
||
5. **Alertas:**
|
||
- Anticipo próximo a amortizarse 100%
|
||
- Retenciones elegibles para liberación
|
||
- Garantías próximas a vencer
|
||
|
||
---
|
||
|
||
## 🔗 Referencias
|
||
|
||
- [ET-EST-003: Sistema de anticipos y retenciones](../especificaciones/ET-EST-003-anticipos-retenciones.md)
|
||
- [US-EST-003: Aplicar anticipos y amortizaciones](../historias-usuario/US-EST-003-aplicar-anticipos.md)
|
||
|
||
---
|
||
|
||
**Generado:** 2025-11-20
|
||
**Estado:** ✅ Completo
|