erp-construccion/docs/02-definicion-modulos/MAI-008-estimaciones-facturacion/requerimientos/RF-EST-003-anticipos-retenciones.md

252 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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