6.9 KiB
6.9 KiB
RF-EST-002: Estimaciones hacia Subcontratistas
ID: RF-EST-002
Módulo: MAI-008
Prioridad: Alta
Story Points: 13 SP
📋 Descripción
Sistema para generar y gestionar estimaciones de pago a subcontratistas y proveedores basadas en avances físicos de subcontratos, con control de anticipos, retenciones y calendario de pagos.
🎯 Objetivos
- Generar estimaciones desde avances de subcontratos verificados
- Calcular automáticamente amortizaciones y retenciones según subcontrato
- Workflow de autorización adaptado a subcontratistas
- Control de calendario de pagos programados
- Portal para que subcontratistas vean estatus
📐 Reglas de Negocio
RN-SUB-001: Cálculo de Monto Bruto
// Por porcentaje de avance
monto_bruto = monto_subcontrato × (porcentaje_avance / 100)
// O por partidas
monto_bruto = Σ(partidas_ejecutadas × precio_unitario)
Validaciones:
- Avance físico verificado por residente
- No exceder monto total del subcontrato
- Validar contra calendario de obra pactado
RN-SUB-002: Amortización de Anticipo
// Típico: Anticipo 10-20%
anticipo_inicial = monto_subcontrato × (porcentaje_anticipo / 100)
// Amortización proporcional al avance
amortizacion = min(
saldo_anticipo,
(porcentaje_avance / 100) × anticipo_inicial
)
Ejemplo:
- Subcontrato plomería: $2,000,000
- Anticipo 10%: $200,000
- Avance 30%: Amortiza 30% × $200,000 = $60,000
RN-SUB-003: Retenciones
base_retenciones = monto_bruto - amortizacion
retenciones = {
fondo_garantia: base_retenciones × 0.10, // 10% típico
fianza_cumplimiento: base_retenciones × (tasa_fianza / 100) || 0,
otras: monto_especificado || 0
}
total_retenciones = Σ(retenciones)
Reglas:
- Retención típica: 10% (más alta que a cliente)
- Se liberan al finiquitar y cumplir garantías
- Retención máxima: Configurable por subcontrato
RN-SUB-004: Numeración
EST-[PROYECTO]-[SUBCONTRATO]-[AÑO]-[CONSECUTIVO]
Ejemplo:
- EST-PRJ001-SUB-PLOM-2025-001
- EST-PRJ001-SUB-PLOM-2025-002
RN-SUB-005: Calendario de Pagos
// Fecha programada según términos
fecha_pago_programada = fecha_autorizacion + dias_pago_contrato
// Ejemplo: Pago a 30 días
fecha_autorizacion = 2025-11-20
fecha_pago_programada = 2025-12-20
Alertas:
- 5 días antes: Alerta a finanzas
- Día de vencimiento: Notificación urgente
- Pasado vencimiento: Alerta a director + subcontratista
🏛️ Estructura de Datos
Estimación a Subcontratista
interface EstimacionSubcontratista {
id: string;
numero: string;
// Relaciones
proyectoId: string;
subcontratoId: string;
subcontratistaId: string;
// Periodo y avance
periodoInicio: Date;
periodoFin: Date;
numeroEstimacion: number;
porcentajeAvanceFisico: number;
porcentajeAvanceAcumulado: number;
// Montos
montoBruto: number;
amortizacionAnticipo: number;
totalRetenciones: number;
montoNeto: number;
// Retenciones específicas
retencionFondoGarantia: number;
retencionFianza: number;
// Estado y pagos
status: EstimationStatus;
fechaProgramadaPago: Date;
fechaPagoReal: Date;
referenciaPago: string;
// Workflow
verificadoPorResidente: boolean;
verificadorId: string;
autorizadoPorFinanzas: boolean;
autorizadorId: string;
observaciones: string;
documentos: string[];
}
🔄 Estados del Workflow
Borrador → Enviada por Subcontratista
→ Verificada por Residente
→ Revisada por Ingeniero
→ Autorizada por Finanzas
→ Programada para Pago
→ Pagada
Diferencias vs estimación a cliente:
- Requiere verificación física por residente
- Finanzas programa fecha de pago
- Subcontratista puede ver estatus en portal
📊 Casos de Uso
CU-001: Subcontratista Genera Estimación
Actor: Subcontratista (Usuario Externo)
Flujo:
- Subcontratista accede a portal con credenciales
- Selecciona su subcontrato activo
- Indica avance físico alcanzado (%)
- Carga evidencias (fotos, reportes)
- Sistema calcula monto neto preliminar
- Subcontratista envía a revisión
- Sistema notifica a residente
CU-002: Residente Verifica Avance
Actor: Residente de Obra
Flujo:
- Residente recibe notificación de estimación pendiente
- Accede a detalle de estimación
- Revisa evidencias cargadas
- Verifica avance físico en campo
- Confirma o ajusta porcentaje de avance
- Sistema recalcula montos si hubo ajuste
- Residente autoriza y envía a ingeniero
CU-003: Programar Pago
Actor: Finanzas
Flujo:
- Finanzas revisa estimaciones autorizadas
- Valida disponibilidad de flujo de caja
- Programa fecha de pago
- Sistema genera orden de pago
- Registra en calendario de flujo de caja
- Notifica a subcontratista fecha programada
🧮 Ejemplo Completo
Contexto
- Subcontrato: Instalaciones eléctricas
- Monto: $3,000,000 MXN
- Anticipo: 15% = $450,000 (ya pagado)
- Retención: 10% fondo garantía
- Plazo de pago: 30 días
Estimación 1 - Avance 25%
Monto bruto:
$3,000,000 × 25% = $750,000
Amortización anticipo:
25% × $450,000 = $112,500
Saldo anticipo: $450,000 - $112,500 = $337,500
Base retenciones:
$750,000 - $112,500 = $637,500
Retención 10%:
$637,500 × 10% = $63,750
Acumulado retenciones: $63,750
Monto neto a pagar:
$750,000 - $112,500 - $63,750 = $573,750
Fecha autorización: 2025-11-20
Fecha programada pago: 2025-12-20 (30 días)
Estimación 2 - Avance adicional 30% (55% acumulado)
Monto bruto nuevo trabajo:
$3,000,000 × 30% = $900,000
Amortización:
30% × $450,000 = $135,000
Saldo anticipo: $337,500 - $135,000 = $202,500
Base retenciones:
$900,000 - $135,000 = $765,000
Retención 10%:
$765,000 × 10% = $76,500
Acumulado retenciones: $63,750 + $76,500 = $140,250
Monto neto:
$900,000 - $135,000 - $76,500 = $688,500
✅ Criterios de Aceptación
-
Portal de subcontratistas:
- Pueden ver sus subcontratos activos
- Generar estimaciones
- Ver estatus en tiempo real
- Descargar documentos
-
Verificación física:
- Residente debe aprobar avance antes de pago
- Sistema bloquea pago sin verificación
-
Calendario de pagos:
- Fecha programada calculada automáticamente
- Alertas 5 días antes
- Dashboard de pagos comprometidos
-
Retenciones acumuladas:
- Por subcontrato, ver total retenido
- Proyección de liberación
- Reporte de retenciones
-
Trazabilidad:
- Evidencias fotográficas vinculadas
- Historial de ajustes de avance
- Registro de verificaciones
🔗 Referencias
Generado: 2025-11-20
Estado: ✅ Completo