erp-construccion/docs/02-definicion-modulos/MAI-004-compras-inventarios/requerimientos/RF-PURCH-003-almacenes-inventarios.md

10 KiB

RF-PURCH-003: Almacenes y Control de Inventarios

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


1. Descripción General

Sistema multi-almacén con control de entradas, salidas, traspasos, devoluciones y ajustes de inventario. Incluye trazabilidad completa, valorización por método PEPS y control por ubicaciones.


2. Objetivos de Negocio

  • Control: Inventario exacto en tiempo real
  • Reducción de pérdidas: Mermas <2% del valor total
  • Optimización: Stock justo (ni exceso ni faltantes)
  • Trazabilidad: Cada movimiento rastreado a proyecto/partida

3. Alcance Funcional

3.1 Estructura de Almacenes

Tipos de Almacén:

1. Almacén General (Oficina Central)
   - Materiales comunes
   - Stock para múltiples obras
   - Control estricto

2. Almacenes de Obra (1 por proyecto)
   - Materiales específicos del proyecto
   - Control por residente
   - Semiautomático

3. Almacenes Temporales
   - Áreas de obra temporales
   - Sin control estricto (registro manual)

Ejemplo:

┌──────────────────────────────────────┐
│ ALMACENES ACTIVOS (5)                │
├──────────────────────────────────────┤
│ 📦 Almacén General                   │
│    Ubicación: Oficina Central        │
│    Items: 1,247                      │
│    Valor: $8,450,000                 │
│                                      │
│ 🏗️ Fracc. Los Pinos - Almacén Obra  │
│    Proyecto: Los Pinos               │
│    Items: 342                        │
│    Valor: $1,850,000                 │
│                                      │
│ 🏗️ Torre Central - Almacén Obra     │
│    Proyecto: Torre Central           │
│    Items: 198                        │
│    Valor: $980,000                   │
└──────────────────────────────────────┘

3.2 Tipos de Movimientos

A. Entradas de Almacén

Fuentes:

  1. Recepción de OC: Entrada desde proveedor
  2. Traspaso de otro almacén
  3. Devolución de obra (material no usado)
  4. Ajuste positivo (corrección de inventario)

Ejemplo Entrada desde OC:

ENTRADA #ENT-2025-00234
Fecha: 20/Nov/2025
Almacén: Fracc. Los Pinos
Origen: OC-2025-00145 (Cemex)

┌──────────────────┬────────┬────────┬──────────┐
│ Material         │ Cant.  │ PU     │ Total    │
├──────────────────┼────────┼────────┼──────────┤
│ Cemento CPC 30R  │ 80 ton │ $4,350 │ $348,000 │
│ Grava 3/4"       │ 85 m³  │ $380   │ $32,300  │
└──────────────────┴────────┴────────┴──────────┘

Recibió: Almacenista José García
Documentos: Remisión R-12345, Factura A-12345

B. Salidas de Almacén

Destinos:

  1. Consumo en obra: Asignado a partida presupuestal
  2. Traspaso a otro almacén
  3. Devolución a proveedor (material defectuoso)
  4. Baja por merma/robo

Ejemplo Salida para Obra:

SALIDA #SAL-2025-00456
Fecha: 21/Nov/2025
Almacén: Fracc. Los Pinos
Destino: Cimentación Etapa 2

┌──────────────────┬────────┬──────────────────┐
│ Material         │ Cant.  │ Partida Presup.  │
├──────────────────┼────────┼──────────────────┤
│ Cemento CPC 30R  │ 15 ton │ 02-Cimentación   │
│ Grava 3/4"       │ 20 m³  │ 02-Cimentación   │
│ Arena            │ 25 m³  │ 02-Cimentación   │
└──────────────────┴────────┴──────────────────┘

Autorizó: Ing. Pedro Ramírez (Residente)
Vale: VALE-2025-789

C. Traspasos

TRASPASO #TRA-2025-00078
Fecha: 22/Nov/2025
Origen: Almacén General
Destino: Fracc. Los Pinos

Material: Varilla 3/8" fy=4200
Cantidad: 500 kg
Motivo: Faltante en obra

Status:
  ✓ Salida de Almacén General
  ⏳ En tránsito
  ⬜ Recibido en Los Pinos

3.3 Valorización de Inventario

Método PEPS (Primeras Entradas, Primeras Salidas):

Ejemplo Cemento CPC 30R:

Entradas:
  01/Nov: 100 ton @ $4,200 = $420,000
  15/Nov: 120 ton @ $4,350 = $522,000
  ──────────────────────────────────
  Total: 220 ton, Valor: $942,000

Salida 21/Nov: 150 ton
  Consume primero: 100 ton @ $4,200 = $420,000
  Consume después:  50 ton @ $4,350 = $217,500
  ──────────────────────────────────
  Costo salida: $637,500

Inventario Restante:
  70 ton @ $4,350 = $304,500

3.4 Ubicaciones y Zonas

Almacén con Ubicaciones:

Almacén General:
├─ Zona A (Cementantes)
│  ├─ A-01: Cemento CPC 30R
│  ├─ A-02: Cemento blanco
│  └─ A-03: Cal hidratada
├─ Zona B (Agregados)
│  ├─ B-01: Grava 3/4"
│  ├─ B-02: Arena
│  └─ B-03: Tezontle
└─ Zona C (Acero)
   ├─ C-01: Varilla 3/8"
   ├─ C-02: Varilla 1/2"
   └─ C-03: Varilla 5/8"

Beneficios:

  • Localización rápida
  • Control de espacio
  • Inventarios cíclicos por zona

3.5 Inventario Físico

Proceso:

  1. Programar conteo: Mensual/trimestral
  2. Generar listas por zona
  3. Conteo físico (1 o 2 personas)
  4. Captura de cantidades
  5. Comparación: Físico vs Sistema
  6. Ajustes (con autorización)

Ejemplo:

INVENTARIO FÍSICO #IF-2025-11
Almacén: Fracc. Los Pinos
Fecha: 30/Nov/2025
Responsable: José García

┌──────────────┬─────────┬──────────┬──────────┬────────┐
│ Material     │ Sistema │ Físico   │ Diferenc.│ Status │
├──────────────┼─────────┼──────────┼──────────┼────────┤
│ Cemento CPC  │ 70 ton  │ 68 ton   │ -2 ton   │ ⚠️ -2.9%│
│ Grava 3/4"   │ 65 m³   │ 65 m³    │ 0        │ ✓ OK   │
│ Varilla 3/8" │ 850 kg  │ 900 kg   │ +50 kg   │ ⚠️ +5.9%│
└──────────────┴─────────┴──────────┴──────────┴────────┘

Ajustes requeridos:
  • Cemento: Baja 2 ton (merma)
  • Varilla: Alta 50 kg (no registrada)

Autorización: Gerente Operaciones

4. Casos de Uso Principales

CU-001: Registrar Entrada desde OC

Actor: Almacenista Flujo:

  1. Proveedor llega con material
  2. Almacenista busca OC-2025-00145
  3. Verifica material contra remisión
  4. Registra entrada parcial: 80 ton (de 120 ordenadas)
  5. Sistema:
    • Crea movimiento ENT-2025-00234
    • Actualiza inventario: +80 ton
    • Valoriza: $4,350/ton
    • Actualiza status OC: Parcialmente recibida
  6. Imprime comprobante de entrada

CU-002: Salida de Material para Obra

Actor: Residente Flujo:

  1. Solicita material para cimentación
  2. Almacenista verifica existencia
  3. Registra salida: 15 ton cemento
  4. Vincula a partida: 02-Cimentación
  5. Sistema:
    • Valora salida por PEPS
    • Reduce inventario
    • Afecta costo real del proyecto
    • Genera vale de salida
  6. Residente firma vale

CU-003: Traspaso entre Almacenes

Actor: Gerente de Almacén Flujo:

  1. Obra Los Pinos requiere varilla urgente
  2. Verifica: Almacén General tiene stock
  3. Crea traspaso: 500 kg
  4. Almacenista General prepara material
  5. Transporta a obra
  6. Almacenista Obra recibe y confirma
  7. Sistema completa traspaso

5. Modelo de Datos

// warehouses
{
  id: UUID,
  code: VARCHAR(20),
  name: VARCHAR(255),
  type: ENUM('general', 'project', 'temporary'),
  projectId: UUID NULLABLE,
  address: TEXT,
  managedBy: UUID,
  isActive: BOOLEAN,
}

// warehouse_locations
{
  id: UUID,
  warehouseId: UUID,
  zone: VARCHAR(10), // A, B, C
  position: VARCHAR(10), // 01, 02, 03
  code: VARCHAR(20), // A-01
  description: VARCHAR(255),
}

// inventory_movements
{
  id: UUID,
  code: VARCHAR(20),
  warehouseId: UUID,
  movementType: ENUM('entry', 'exit', 'transfer_out', 'transfer_in', 'adjustment'),
  movementDate: DATE,
  
  sourceType: ENUM('purchase_order', 'transfer', 'return', 'adjustment'),
  sourceId: UUID,
  
  projectId: UUID NULLABLE,
  budgetItemId: UUID NULLABLE,
  
  items: JSONB, // [{materialId, quantity, unitCost, totalCost, lotId}]
  totalValue: DECIMAL(15,2),
  
  notes: TEXT,
  authorizedBy: UUID,
  recordedBy: UUID,
}

// inventory_stock
{
  id: UUID,
  warehouseId: UUID,
  materialId: UUID,
  locationId: UUID NULLABLE,
  
  quantity: DECIMAL(12,4),
  reservedQuantity: DECIMAL(12,4),
  availableQuantity: DECIMAL(12,4), // quantity - reserved
  
  averageCost: DECIMAL(12,2),
  totalValue: DECIMAL(15,2),
  
  lastMovementDate: DATE,
  updatedAt: TIMESTAMP,
}

// inventory_lots (para PEPS)
{
  id: UUID,
  warehouseId: UUID,
  materialId: UUID,
  
  lotNumber: VARCHAR(50),
  entryDate: DATE,
  quantity: DECIMAL(12,4),
  remainingQuantity: DECIMAL(12,4),
  unitCost: DECIMAL(12,2),
  
  sourceType: VARCHAR(20),
  sourceId: UUID,
}

6. Criterios de Aceptación

  • Multi-almacén (general + por obra)
  • 4 tipos de movimientos (entrada, salida, traspaso, ajuste)
  • Valorización PEPS
  • Ubicaciones por zona
  • Inventario físico con ajustes
  • Reservas de material
  • Trazabilidad completa
  • Dashboard de stock por almacén
  • Reportes de movimientos

Estado: Ready for Development