erp-construccion/docs/02-definicion-modulos/MAI-004-compras-inventarios/requerimientos/RF-PURCH-001-catalogo-proveedores.md

18 KiB
Raw Permalink Blame History

RF-PURCH-001: Catálogo de Proveedores y Cotizaciones

Épica: MAI-004 - Compras e Inventarios Versión: 1.0 Fecha: 2025-11-17 Responsable: Equipo de Producto


1. Descripción General

Sistema de gestión de proveedores con catálogo centralizado, evaluación de desempeño, comparación de cotizaciones y selección automatizada del mejor proveedor según múltiples criterios (precio, tiempo de entrega, calidad, condiciones de pago).

Objetivo: Optimizar el proceso de compras mediante la selección inteligente de proveedores basada en datos históricos y condiciones actuales.


2. Objetivos de Negocio

2.1 Centralización

  • Catálogo único de proveedores por constructora
  • Historial completo de compras y desempeño
  • Eliminar proveedores duplicados

2.2 Optimización de Costos

  • Comparación automática de 3+ cotizaciones
  • Selección del mejor precio con calidad garantizada
  • Ahorro estimado: 5-10% en costos de materiales

2.3 Evaluación Objetiva

  • Calificación automática basada en cumplimiento
  • Indicadores: precio, calidad, puntualidad, servicio
  • Proveedores certificados vs no certificados

2.4 Agilidad

  • Solicitud de cotizaciones masivas
  • Comparación en tiempo real
  • Aprobación de OC en minutos vs días

3. Alcance Funcional

3.1 Catálogo de Proveedores

Información Básica

Nombre Comercial: Cemex México S.A. de C.V.
RFC: CEM850101ABC
Razón Social: Cemex México S.A. de C.V.
Giro: Materiales de Construcción

Contacto Principal:
  Nombre: Juan Pérez López
  Cargo: Gerente de Ventas - Zona Norte
  Email: juan.perez@cemex.com
  Teléfono: +52 81 8888-1234
  Celular: +52 81 1234-5678

Categorías de Proveedor

  • Materiales: Cemento, acero, agregados, block, prefabricados, acabados
  • Servicios: Maquinaria, transporte, mano de obra especializada
  • Arrendamiento: Equipo pesado, andamios, cimbra
  • Servicios Profesionales: Laboratorios, topografía, ingeniería

Información Financiera

Condiciones de Pago:
  - Crédito: 30 días
  - Descuento pronto pago: 2% a 10 días
  - Anticipo requerido: No

Cuenta Bancaria:
  Banco: BBVA Bancomer
  Cuenta: 0123456789
  CLABE: 012180001234567890

Dirección Fiscal y de Entrega

Fiscal:
  Calle: Av. Constitución 444
  Colonia: Centro
  CP: 64000
  Ciudad: Monterrey, N.L.

Planta/Almacén Principal:
  Calle: Carretera Nacional Km 305
  Colonia: Santa Catarina
  CP: 66350
  Horario: Lun-Vie 7:00-17:00, Sáb 8:00-13:00

3.2 Evaluación de Proveedores

Sistema de Calificación (0-100 puntos)

┌─────────────────────────┬────────┬────────┬───────────┐
│ Criterio                │ Peso   │ Calif. │ Puntaje   │
├─────────────────────────┼────────┼────────┼───────────┤
│ Precio competitivo      │ 30%    │ 85     │ 25.5      │
│ Calidad de productos    │ 25%    │ 92     │ 23.0      │
│ Cumplimiento en entrega │ 25%    │ 88     │ 22.0      │
│ Servicio postventa      │ 10%    │ 90     │ 9.0       │
│ Condiciones de pago     │ 10%    │ 80     │ 8.0       │
├─────────────────────────┼────────┼────────┼───────────┤
│ TOTAL                   │ 100%   │        │ 87.5 🟢   │
└─────────────────────────┴────────┴────────┴───────────┘

Clasificación:
🟢 90-100: Excelente (Proveedor Certificado)
🟡 70-89:  Bueno (Proveedor Aprobado)
🔴 <70:    Regular (Requiere supervisión)

Indicadores Automáticos

Calculados desde órdenes de compra:

Historial Últimos 12 Meses:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Órdenes de compra:        45
Monto total:              $12,450,000
Ticket promedio:          $276,667

Cumplimiento:
  Entregas a tiempo:      40/45 (88.9%) 🟢
  Entregas incompletas:   2/45 (4.4%)
  Devoluciones:           1/45 (2.2%)

Precio:
  Competitividad:         85/100
  Descuentos aplicados:   $124,500 (1.0%)

Calidad:
  Incidencias:            3 menores
  Reclamaciones:          0 mayores
  Certificaciones:        ISO 9001, ISO 14001

3.3 Solicitud de Cotizaciones

Creación de RFQ (Request for Quotation)

┌──────────────────────────────────────────────────────┐
│ SOLICITUD DE COTIZACIÓN #RFQ-2025-145               │
├──────────────────────────────────────────────────────┤
│ Proyecto: Fraccionamiento Los Pinos                  │
│ Solicitante: Ing. Pedro Ramírez (Residente)          │
│ Fecha solicitud: 15/Nov/2025                         │
│ Fecha límite cotización: 20/Nov/2025 17:00h         │
│                                                      │
│ Materiales Requeridos:                               │
│ ┌────────────────────────┬────────┬────────┬───────┐│
│ │ Material               │ Cant.  │ Unidad │ Req.  ││
│ ├────────────────────────┼────────┼────────┼───────┤│
│ │ Cemento CPC 30R        │ 120    │ ton    │ Urg.  ││
│ │ Grava 3/4"             │ 85     │ m³     │ Norm. ││
│ │ Arena                  │ 100    │ m³     │ Norm. ││
│ │ Varilla 3/8" fy=4200   │ 8,500  │ kg     │ Urg.  ││
│ └────────────────────────┴────────┴────────┴───────┘│
│                                                      │
│ Condiciones:                                         │
│ • Entrega en obra (Fracc. Los Pinos)                │
│ • Fecha entrega: 25/Nov/2025                         │
│ • Forma de pago: 30 días                             │
│ • Incluye descarga                                   │
│                                                      │
│ Proveedores invitados: [3 seleccionados]            │
│ ☑ Cemex                                              │
│ ☑ Cruz Azul                                          │
│ ☑ Materiales del Norte                              │
│                                                      │
│                    [Cancelar]  [Enviar Solicitud]    │
└──────────────────────────────────────────────────────┘

Envío Automático

  • Email con PDF adjunto a 3 proveedores
  • Portal web para captura de cotización
  • Recordatorio automático 24h antes del cierre

3.4 Comparación de Cotizaciones

Matriz Comparativa

┌──────────────────────────────────────────────────────────────────────┐
│ COMPARACIÓN DE COTIZACIONES - RFQ-2025-145                          │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│ Material: Cemento CPC 30R (120 ton)                                 │
│                                                                      │
│ ┌────────────┬──────────┬────────┬─────────┬──────────┬──────────┐ │
│ │ Proveedor  │ Precio/  │ Total  │ Entrega │ Pago     │ Calif.   │ │
│ │            │ ton      │        │         │          │          │ │
│ ├────────────┼──────────┼────────┼─────────┼──────────┼──────────┤ │
│ │ Cemex      │ $4,350 ⭐│ $522K  │ 25/Nov ✓│ 30 días  │ 87.5 🟢  │ │
│ │ Cruz Azul  │ $4,280 🏆│ $513.6K│ 27/Nov  │ 15 días  │ 82.0 🟡  │ │
│ │ Mat. Norte │ $4,450   │ $534K  │ 25/Nov ✓│ 30 días  │ 75.0 🟡  │ │
│ └────────────┴──────────┴────────┴─────────┴──────────┴──────────┘ │
│                                                                      │
│ Análisis Automático:                                                │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  │
│ 🏆 Mejor precio:     Cruz Azul (-$8,400 vs presupuesto)            │
│ ⭐ Recomendado:      Cemex (balance precio/servicio/calidad)        │
│ ⚠️ Más caro:         Mat. Norte (+$12,000 vs promedio)             │
│                                                                      │
│ Presupuesto partida: $4,300/ton × 120 = $516,000                   │
│ Mejor oferta ahorra: $2,400 (0.5%)                                 │
│                                                                      │
│                       [Rechazar Todas]  [Aprobar Cemex]             │
└──────────────────────────────────────────────────────────────────────┘

Criterios de Selección Automática

def select_best_supplier(quotes, weights):
    scores = []
    for quote in quotes:
        price_score = 100 - ((quote.price - min_price) / min_price * 100)
        delivery_score = 100 if quote.delivery <= required_date else 50
        quality_score = quote.supplier.rating
        payment_score = 100 if quote.payment_terms >= 30 else 70

        total_score = (
            price_score * weights['price'] +
            delivery_score * weights['delivery'] +
            quality_score * weights['quality'] +
            payment_score * weights['payment']
        )
        scores.append((quote, total_score))

    return max(scores, key=lambda x: x[1])

# Pesos configurables por constructora
weights = {
    'price': 0.40,      # 40% peso del precio
    'delivery': 0.25,   # 25% cumplimiento entrega
    'quality': 0.25,    # 25% calificación proveedor
    'payment': 0.10     # 10% condiciones de pago
}

3.5 Certificación de Proveedores

Programa de Certificación

Requisitos para Certificación:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Calificación global ≥ 90 puntos
✓ Mínimo 20 OCs en últimos 12 meses
✓ 95% cumplimiento en entregas
✓ <2% devoluciones/reclamaciones
✓ Certificaciones ISO 9001 vigente
✓ Sin adeudos pendientes
✓ Inspección de planta aprobada

Beneficios Proveedor Certificado:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏆 Badge "Proveedor Certificado"
⚡ Aprobación automática OCs <$50K
📈 Prioridad en RFQs
💰 Pago preferente (7-15 días)
🤝 Contratos marco anuales

3.6 Alertas y Notificaciones

Configuración de Alertas:

Alertas Automáticas:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Calificación proveedor cae <70
   → Notificar: Gerente de Compras
   → Acción: Revisar relación comercial

2. Precio cotización >10% presupuesto
   → Notificar: Director + Ing. Costos
   → Acción: Requiere aprobación especial

3. Proveedor sin compras en 6 meses
   → Notificar: Compras
   → Acción: Actualizar catálogo

4. RFQ sin respuesta 24h antes cierre
   → Notificar: Proveedor (recordatorio)

5. Proveedor con 3+ entregas tardías
   → Notificar: Director Proyectos
   → Acción: Evaluación de desempeño

4. Casos de Uso Principales

CU-001: Registrar Nuevo Proveedor

Actor: Gerente de Compras Flujo:

  1. Accede a "Catálogo de Proveedores"
  2. Clic "+ Nuevo Proveedor"
  3. Completa formulario (3 pestañas):
    • Datos generales (RFC, razón social, giro)
    • Contactos (principal + alternos)
    • Información financiera
  4. Selecciona categorías: Materiales > Cementantes
  5. Define condiciones comerciales:
    • Crédito: 30 días
    • Descuento: 2% a 10 días
  6. Sube documentos:
    • Constancia situación fiscal (PDF)
    • Carátula bancaria
    • Certificados (ISO, etc.)
  7. Guarda proveedor
  8. Status inicial: "En evaluación"

CU-002: Solicitar Cotizaciones

Actor: Residente de Obra Flujo:

  1. Accede a proyecto "Fracc. Los Pinos"
  2. Clic "Nueva Requisición"
  3. Agrega 4 materiales desde catálogo
  4. Sistema sugiere 3 proveedores automáticamente:
    • Basado en categoría material
    • Con mejores calificaciones
    • Con entregas en la zona
  5. Ajusta proveedores manualmente (puede agregar/quitar)
  6. Define condiciones:
    • Fecha entrega: 25/Nov
    • Lugar: Obra Los Pinos
    • Forma pago: 30 días
  7. Envía RFQ
  8. Sistema envía emails + crea portal para captura

CU-003: Comparar y Aprobar Cotización

Actor: Gerente de Compras Flujo:

  1. Recibe notificación: "3 cotizaciones recibidas para RFQ-145"
  2. Accede a comparación
  3. Ve matriz con 3 proveedores
  4. Sistema recomienda: Cemex (balance precio/calidad)
  5. Revisa detalles:
    • Precio: $4,350/ton (vs presupuesto $4,300)
    • Desviación: +1.2% (dentro tolerancia 5%)
    • Calificación: 87.5 puntos (Excelente)
    • Entrega: A tiempo
  6. Aprueba cotización Cemex
  7. Sistema genera OC automáticamente
  8. Notifica a residente: "OC-2025-00145 aprobada"

CU-004: Evaluar Desempeño de Proveedor

Actor: Director de Proyectos Flujo:

  1. Accede a perfil proveedor "Aceros del Norte"
  2. Ve indicadores últimos 12 meses:
    • 28 OCs, $8.5M total
    • Cumplimiento: 71.4% (20/28 a tiempo) 🟡
    • Calificación actual: 68 puntos 🔴
  3. Genera reporte de incidencias:
    • 8 entregas tardías
    • 2 materiales rechazados
  4. Convoca reunión con proveedor
  5. Acuerda plan de mejora
  6. Actualiza status: "En plan de mejora"
  7. Programa revisión en 3 meses

5. Modelo de Datos Simplificado

// Tabla: suppliers (Proveedores)
{
  id: UUID,
  constructoraId: UUID,

  // Identificación
  taxId: VARCHAR(13), // RFC
  legalName: VARCHAR(255),
  commercialName: VARCHAR(255),
  businessType: VARCHAR(100), // Giro

  // Categorías (array)
  categories: VARCHAR[], // ['materials', 'services', 'rental']

  // Contacto principal
  contactName: VARCHAR(255),
  contactPosition: VARCHAR(100),
  contactEmail: VARCHAR(255),
  contactPhone: VARCHAR(20),

  // Financiero
  paymentTermsDays: INTEGER DEFAULT 30,
  earlyPaymentDiscount: DECIMAL(5,2),
  requiresAdvance: BOOLEAN DEFAULT false,

  // Bancario
  bankName: VARCHAR(100),
  accountNumber: VARCHAR(20),
  clabe: VARCHAR(18),

  // Evaluación
  rating: DECIMAL(5,2) DEFAULT 0, // 0-100
  certificationStatus: ENUM('none', 'in_evaluation', 'certified'),

  // Auditoría
  status: ENUM('active', 'inactive', 'blocked'),
  createdAt: TIMESTAMP,
  updatedAt: TIMESTAMP
}

// Tabla: rfqs (Solicitudes de cotización)
{
  id: UUID,
  code: VARCHAR(20), // RFQ-2025-145
  projectId: UUID,
  requestedBy: UUID,

  // Fechas
  requestDate: DATE,
  quoteDueDate: TIMESTAMP,
  deliveryDate: DATE,

  // Items
  items: JSONB, // [{materialId, quantity, unit, urgency}]

  // Condiciones
  deliveryAddress: TEXT,
  paymentTerms: VARCHAR(50),
  includesUnloading: BOOLEAN,

  // Proveedores invitados
  invitedSuppliers: UUID[],

  status: ENUM('draft', 'sent', 'closed', 'cancelled'),
  createdAt: TIMESTAMP
}

// Tabla: quotes (Cotizaciones)
{
  id: UUID,
  rfqId: UUID,
  supplierId: UUID,

  items: JSONB, // [{materialId, unitPrice, total, leadTime}]
  totalAmount: DECIMAL(15,2),

  deliveryDate: DATE,
  paymentTerms: VARCHAR(50),
  validUntil: DATE,

  notes: TEXT,
  attachments: VARCHAR[],

  status: ENUM('pending', 'submitted', 'accepted', 'rejected'),
  submittedAt: TIMESTAMP
}

// Tabla: supplier_ratings (Evaluaciones)
{
  id: UUID,
  supplierId: UUID,
  evaluationPeriod: VARCHAR(7), // 2025-11

  priceScore: DECIMAL(5,2),
  qualityScore: DECIMAL(5,2),
  deliveryScore: DECIMAL(5,2),
  serviceScore: DECIMAL(5,2),
  paymentScore: DECIMAL(5,2),

  overallRating: DECIMAL(5,2),

  // Métricas calculadas
  totalOrders: INTEGER,
  totalAmount: DECIMAL(15,2),
  onTimeDeliveries: INTEGER,
  lateDeliveries: INTEGER,
  returns: INTEGER,

  createdAt: TIMESTAMP
}

6. Criterios de Aceptación

  • CRUD completo de proveedores
  • Catálogo con categorización
  • Sistema de calificación automática (5 criterios)
  • Solicitud de cotizaciones a múltiples proveedores
  • Comparación automática con recomendación
  • Certificación de proveedores (programa)
  • Alertas configurables
  • Historial completo de compras por proveedor
  • Portal web para captura de cotizaciones
  • Exportación de reportes

7. Métricas de Éxito

  • Ahorro: 5-10% en costos de materiales
  • Eficiencia: -60% tiempo proceso de cotización (2 días vs 5 días)
  • Calidad: 80% de proveedores con calificación >80 puntos
  • Competitividad: Mínimo 3 cotizaciones por RFQ

Estado: Ready for Development