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

6.3 KiB
Raw Permalink Blame History

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

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:

  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:

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

  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


Generado: 2025-11-20
Estado: Completo