265 lines
8.9 KiB
Markdown
265 lines
8.9 KiB
Markdown
# RF-PURCH-002: Requisiciones y Órdenes de Compra
|
|
|
|
**Épica:** MAI-004 - Compras e Inventarios
|
|
**Versión:** 1.0
|
|
**Fecha:** 2025-11-17
|
|
|
|
---
|
|
|
|
## 1. Descripción General
|
|
|
|
Sistema de requisiciones desde obra y generación automatizada de órdenes de compra con flujos de aprobación, vinculación a presupuesto, control de entregas parciales y registro de facturas.
|
|
|
|
---
|
|
|
|
## 2. Objetivos de Negocio
|
|
|
|
- **Trazabilidad:** Cada compra vinculada a proyecto, partida presupuestal y requisición
|
|
- **Control:** Flujos de aprobación según montos
|
|
- **Eficiencia:** Generación automática de OC desde cotizaciones
|
|
- **Transparencia:** Historial completo de autorizaciones
|
|
|
|
---
|
|
|
|
## 3. Alcance Funcional
|
|
|
|
### 3.1 Requisiciones desde Obra
|
|
|
|
**Formulario:**
|
|
```
|
|
┌──────────────────────────────────────────────┐
|
|
│ NUEVA REQUISICIÓN │
|
|
├──────────────────────────────────────────────┤
|
|
│ Proyecto: [Fracc. Los Pinos ▼] │
|
|
│ Solicitante: Ing. Pedro Ramírez (Residente) │
|
|
│ Fecha necesaria: [25/Nov/2025] │
|
|
│ Urgencia: [●] Normal [ ] Urgente │
|
|
│ │
|
|
│ Materiales: [+ Agregar] │
|
|
│ ┌────────────────┬────────┬──────┬─────────┐│
|
|
│ │ Material │ Cant. │ Unid │ Presup. ││
|
|
│ ├────────────────┼────────┼──────┼─────────┤│
|
|
│ │ Cemento CPC 30R│ 120 │ ton │ $516K ││
|
|
│ │ Grava 3/4" │ 85 │ m³ │ $32.3K ││
|
|
│ └────────────────┴────────┴──────┴─────────┘│
|
|
│ │
|
|
│ Justificación: * │
|
|
│ [Cimentación etapa 2 según programa] │
|
|
│ │
|
|
│ [Guardar Borrador] [Enviar] │
|
|
└──────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Validaciones:**
|
|
- Material existe en presupuesto del proyecto
|
|
- Cantidad no excede pendiente por ejercer
|
|
- Fecha necesaria >= hoy + lead time proveedor
|
|
|
|
### 3.2 Flujos de Aprobación
|
|
|
|
**Matriz de Autorización:**
|
|
| Monto | Aprobador 1 | Aprobador 2 | Aprobador 3 |
|
|
|-------|-------------|-------------|-------------|
|
|
| <$50K | Residente | - | - |
|
|
| $50K-$200K | Residente | Gerente Compras | - |
|
|
| $200K-$500K | Residente | Gerente Compras | Director Proyectos |
|
|
| >$500K | Residente | Gerente Compras | Dirección General |
|
|
|
|
**Estados de Requisición:**
|
|
```
|
|
draft → pending_approval → approved → quoted → ordered → received
|
|
↓
|
|
rejected (con motivo)
|
|
```
|
|
|
|
### 3.3 Órdenes de Compra
|
|
|
|
**Generación Automática:**
|
|
- Desde cotización aprobada
|
|
- Datos pre-llenados: proveedor, materiales, precios, condiciones
|
|
- Numeración secuencial: OC-2025-00145
|
|
|
|
**Estructura de OC:**
|
|
```
|
|
╔═══════════════════════════════════════════════════════╗
|
|
║ ORDEN DE COMPRA #OC-2025-00145 ║
|
|
╠═══════════════════════════════════════════════════════╣
|
|
║ Fecha: 15/Nov/2025 Folio: OC-2025-00145 ║
|
|
║ Proveedor: Cemex México S.A. ║
|
|
║ RFC: CEM850101ABC ║
|
|
║ Contacto: Juan Pérez - 81-8888-1234 ║
|
|
║ ║
|
|
║ Proyecto: Fraccionamiento Los Pinos ║
|
|
║ Lugar entrega: Av. Los Pinos #100, Monterrey, N.L. ║
|
|
║ Fecha entrega requerida: 25/Nov/2025 ║
|
|
║ ║
|
|
╠═══════════════════════════════════════════════════════╣
|
|
║ Partida │ Descripción │ Cant │ U │ PU │ Total║
|
|
╠═════════╪════════════════════╪══════╪═══╪══════╪══════╣
|
|
║ 1 │ Cemento CPC 30R │ 120 │ton│$4,350│$522K ║
|
|
║ 2 │ Grava 3/4" │ 85 │m³ │$380 │$32.3K║
|
|
║ 3 │ Arena │ 100 │m³ │$295 │$29.5K║
|
|
╠═════════╧════════════════════╧══════╧═══╧══════╧══════╣
|
|
║ Subtotal: $583,800 ║
|
|
║ IVA (16%): $93,408 ║
|
|
║ TOTAL: $677,208 ║
|
|
╠═══════════════════════════════════════════════════════╣
|
|
║ Condiciones: ║
|
|
║ • Forma de pago: 30 días fecha factura ║
|
|
║ • Entrega: LAB (libre a bordo) en obra ║
|
|
║ • Descuento pronto pago: 2% a 10 días ║
|
|
║ • Garantía: 30 días ║
|
|
║ ║
|
|
║ Autorizado por: Gerente de Compras ║
|
|
║ Firma: _______________________ ║
|
|
╚═══════════════════════════════════════════════════════╝
|
|
```
|
|
|
|
### 3.4 Recepción de Material
|
|
|
|
**Proceso:**
|
|
1. Proveedor entrega material
|
|
2. Almacenista registra entrada
|
|
3. Vincula a OC
|
|
4. Puede ser parcial o completa
|
|
|
|
**Ejemplo Recepción Parcial:**
|
|
```
|
|
OC-2025-00145: Cemento CPC 30R
|
|
Ordenado: 120 ton
|
|
Recibido: 80 ton (66.7%)
|
|
Pendiente: 40 ton
|
|
|
|
Status: Parcialmente recibida
|
|
Próxima entrega: 22/Nov/2025
|
|
```
|
|
|
|
### 3.5 Registro de Facturas
|
|
|
|
**Vinculación OC → Factura:**
|
|
```
|
|
Factura: A-12345
|
|
Proveedor: Cemex
|
|
Fecha: 20/Nov/2025
|
|
UUID: 1234-5678-90AB-CDEF
|
|
|
|
Vinculada a:
|
|
OC-2025-00145: $677,208
|
|
Recibido: 80 ton (entrega parcial)
|
|
Monto factura: $451,472 (80/120 de $677K)
|
|
|
|
Status pago:
|
|
Fecha vencimiento: 20/Dic/2025 (30 días)
|
|
Descuento PP (2%): Disponible hasta 30/Nov
|
|
Status: Pendiente
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Casos de Uso Principales
|
|
|
|
### CU-001: Crear Requisición
|
|
**Actor:** Residente de Obra
|
|
**Flujo:**
|
|
1. Accede a proyecto
|
|
2. Crea requisición con 3 materiales
|
|
3. Sistema valida contra presupuesto
|
|
4. Envía a aprobación
|
|
5. Gerente Compras aprueba en 2h
|
|
6. Genera RFQ automáticamente
|
|
|
|
### CU-002: Aprobar OC
|
|
**Actor:** Gerente de Compras
|
|
**Flujo:**
|
|
1. Recibe 3 cotizaciones
|
|
2. Compara y selecciona mejor
|
|
3. Sistema genera OC-2025-00145
|
|
4. Revisa condiciones
|
|
5. Aprueba OC
|
|
6. Sistema envía email a proveedor con PDF
|
|
|
|
---
|
|
|
|
## 5. Modelo de Datos
|
|
|
|
```typescript
|
|
// requisitions
|
|
{
|
|
id: UUID,
|
|
code: VARCHAR(20),
|
|
projectId: UUID,
|
|
requestedBy: UUID,
|
|
requiredDate: DATE,
|
|
urgency: ENUM('normal', 'urgent'),
|
|
items: JSONB,
|
|
status: ENUM('draft', 'pending', 'approved', 'rejected', 'ordered'),
|
|
approvalFlow: JSONB, // [{level, userId, status, date}]
|
|
}
|
|
|
|
// purchase_orders
|
|
{
|
|
id: UUID,
|
|
code: VARCHAR(20),
|
|
supplierId: UUID,
|
|
projectId: UUID,
|
|
requisitionId: UUID,
|
|
rfqId: UUID,
|
|
quoteId: UUID,
|
|
|
|
items: JSONB,
|
|
subtotal: DECIMAL(15,2),
|
|
tax: DECIMAL(15,2),
|
|
total: DECIMAL(15,2),
|
|
|
|
deliveryDate: DATE,
|
|
deliveryAddress: TEXT,
|
|
paymentTerms: VARCHAR(50),
|
|
|
|
status: ENUM('pending', 'approved', 'sent', 'partially_received', 'received', 'cancelled'),
|
|
approvedBy: UUID,
|
|
approvedAt: TIMESTAMP,
|
|
}
|
|
|
|
// purchase_order_receipts
|
|
{
|
|
id: UUID,
|
|
purchaseOrderId: UUID,
|
|
receiptDate: DATE,
|
|
receivedBy: UUID,
|
|
items: JSONB, // [{itemId, quantityReceived}]
|
|
notes: TEXT,
|
|
attachments: VARCHAR[],
|
|
}
|
|
|
|
// invoices
|
|
{
|
|
id: UUID,
|
|
supplierId: UUID,
|
|
purchaseOrderId: UUID,
|
|
invoiceNumber: VARCHAR(50),
|
|
fiscalUUID: VARCHAR(36),
|
|
invoiceDate: DATE,
|
|
dueDate: DATE,
|
|
amount: DECIMAL(15,2),
|
|
status: ENUM('pending', 'approved', 'paid'),
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Criterios de Aceptación
|
|
|
|
- [ ] Requisiciones desde obra
|
|
- [ ] Flujos de aprobación configurables
|
|
- [ ] Generación automática de OC desde cotización
|
|
- [ ] Numeración secuencial de OCs
|
|
- [ ] Recepción parcial/completa
|
|
- [ ] Vinculación OC → Recepción → Factura
|
|
- [ ] Alertas de vencimiento de pago
|
|
- [ ] Dashboard de OCs pendientes
|
|
- [ ] Exportación de OC a PDF
|
|
|
|
---
|
|
|
|
**Estado:** ✅ Ready for Development
|