erp-construccion/docs/02-definicion-modulos/MAI-004-compras-inventarios/README.md

783 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MAI-004: Compras e Inventarios
**ID:** MAI-004
**Fase:** 1 - Alcance Inicial
**Presupuesto:** $35,000 MXN
**Story Points:** 48 SP
**Sprint:** Sprint 11-14 (Semanas 21-28)
**Prioridad:** P1
**Estado:** Documentado
**Reutilización Core ERP:** 80% (MAE-012, MAE-013)
---
## Resumen Ejecutivo
El módulo **MAI-004: Compras e Inventarios** gestiona el ciclo completo de adquisición y control de materiales en obras de construcción, desde la requisición hasta el consumo en campo. Especializado para la industria de la construcción, extiende los módulos core del ERP (MAE-012 Compras y MAE-013 Inventarios) con funcionalidades específicas como almacenes por obra, control presupuestal por partidas, y seguimiento de consumos en tiempo real.
### Problema que Resuelve
Las constructoras enfrentan desafíos críticos en la gestión de materiales:
- **Múltiples obras simultáneas** con almacenes independientes
- **Control presupuestal estricto** por partida presupuestal
- **Coordinación compleja** entre residentes, compras y almacenistas
- **Falta de visibilidad** del inventario en tiempo real
- **Mermas y desperdicios** no controlados
- **Paros de obra** por falta de materiales
**Sin este módulo:** Requisiciones en papel, Excel para control de inventarios, falta de trazabilidad, desperdicios no detectados, compras no planificadas.
**Con este módulo:** Requisiciones digitales con aprobación automática, inventarios en tiempo real por obra, alertas de existencias bajas, trazabilidad completa, control vs presupuesto.
---
## Objetivos
1. **Optimizar compras** mediante requisiciones digitales y flujos de aprobación eficientes
2. **Control en tiempo real** de inventarios por almacén y obra
3. **Trazabilidad completa** desde requisición hasta consumo final
4. **Integración presupuestal** para validar disponibilidad de recursos
5. **Movilidad** con app para almacenistas en campo (MOB-002)
---
## Alcance Funcional
### 1. Requisiciones de Material
- Creación de requisiciones vinculadas a obras y partidas presupuestales
- Flujo de aprobación multinivel (Residente → Superintendente → Compras)
- Validación automática contra presupuesto disponible
- Conversión de requisiciones aprobadas en órdenes de compra
- Estados: borrador, enviada, aprobada, rechazada, convertida
- Notificaciones automáticas por email y en app
### 2. Órdenes de Compra
- Generación automática desde requisiciones o manual
- Selección de proveedor con condiciones comerciales
- Gestión de precios, descuentos e impuestos
- Generación de PDF con formato profesional
- Control de estados: borrador, enviada, confirmada, recibida (parcial/total), cancelada
- Registro de recepciones parciales y totales
- Control de presupuesto comprometido
### 3. Almacenes por Obra
- Múltiples almacenes por obra de construcción
- Definición de ubicaciones y áreas dentro de cada almacén
- Asignación de responsable/almacenista
- Control de existencias por almacén y ubicación
- Niveles mínimos y máximos de inventario
- Alertas automáticas de existencias bajas
- Inventario cíclico y físico
### 4. Movimientos de Inventario
- **Entradas:** Desde órdenes de compra con registro de lote y ubicación
- **Salidas:** Consumo en obra vinculado a partidas presupuestales
- **Transferencias:** Entre almacenes de diferentes obras
- **Ajustes:** Mermas, devoluciones, correcciones con justificación
- Trazabilidad completa por material
- Cálculo automático de costos (PEPS, promedio ponderado)
- Validación de existencias antes de salidas
---
## Reutilización del Core ERP (80%)
### Módulos Core Base
| Módulo Core | Funcionalidad Reutilizada | Adaptación para Construcción |
|-------------|---------------------------|------------------------------|
| **MAE-012 Compras** | Sistema de requisiciones y OCs, gestión de proveedores, catálogo de materiales | Vinculación con partidas presupuestales, aprobaciones por obra, control de presupuesto comprometido |
| **MAE-013 Inventarios** | Control de almacenes, movimientos de inventario, kardex, valorización PEPS | Almacenes por obra, salidas vinculadas a partidas, transferencias entre obras, app móvil |
### Componentes Reutilizados
**Backend (NestJS):**
- Servicios base de compras y proveedores
- Servicios de inventarios y almacenes
- Sistema de aprobaciones workflow
- Cálculo de costos y valorización
- Generación de PDFs
**Frontend (React):**
- Componentes UI de formularios y tablas
- Sistema de notificaciones
- Dashboard de métricas
- Exportación de reportes
**Base de Datos:**
- Schemas: `purchasing_management`, `inventory_management`
- Triggers para actualización automática de stock
- Stored procedures para PEPS y costos
- Políticas RLS para multi-tenancy
### Extensiones Específicas para Construcción
- **Vinculación presupuestal:** Integración con MAI-002 (Presupuestos y Costos)
- **Control por partidas:** Salidas vinculadas a conceptos presupuestales
- **Almacenes por obra:** Múltiples almacenes independientes por proyecto
- **App móvil MOB-002:** Interfaz móvil para almacenistas en campo
- **Reportes especializados:** Consumo vs presupuesto, materiales por frente
---
## Requerimientos Funcionales
### RF-COMP-001: Requisiciones de Material
Gestión de solicitudes de material para obras de construcción con flujo de aprobación multinivel.
**Especificaciones clave:**
- Crear requisiciones vinculadas a obras y partidas presupuestales
- Definir cantidad, unidad de medida y fecha requerida
- Flujo de aprobación: Residente → Superintendente → Compras
- Conversión a órdenes de compra
[Ver detalle completo](./requerimientos/RF-PURCH-001-catalogo-proveedores.md)
### RF-COMP-002: Órdenes de Compra
Gestión completa de órdenes de compra a proveedores con control de recepciones.
**Especificaciones clave:**
- Creación manual o desde requisiciones
- Selección de proveedor y condiciones comerciales
- Generación de PDF y envío por email
- Control de recepciones parciales y totales
[Ver detalle completo](./requerimientos/RF-PURCH-002-requisiciones-ordenes-compra.md)
### RF-COMP-003: Almacenes por Obra
Gestión de almacenes y ubicaciones de inventario en cada obra.
**Especificaciones clave:**
- Múltiples almacenes por obra
- Ubicaciones y áreas dentro de almacenes
- Asignación de responsables
- Niveles de inventario y alertas
[Ver detalle completo](./requerimientos/RF-PURCH-003-almacenes-inventarios.md)
### RF-COMP-004: Movimientos de Inventario
Registro y control de entradas, salidas y transferencias de inventario.
**Especificaciones clave:**
- Entradas desde órdenes de compra
- Salidas para consumo en obra
- Transferencias entre almacenes
- Ajustes de inventario con trazabilidad
[Ver detalle completo](./requerimientos/RF-PURCH-004-kardex-alertas.md)
---
## Integración con App Móvil MOB-002 (Almacenista)
### Descripción General
**MOB-002: Almacenista** es una aplicación móvil especializada para el personal de almacén en obra, permitiendo gestión de inventario en tiempo real con capacidades offline.
### Funcionalidades Móviles
| Funcionalidad | Descripción | Prioridad |
|---------------|-------------|-----------|
| **Recepción de materiales** | Registro de entradas con escaneo de códigos y fotos | P0 |
| **Salida de materiales** | Procesamiento de entregas con firma digital | P0 |
| **Consulta de inventario** | Existencias en tiempo real por almacén | P0 |
| **Conteo físico** | Inventario cíclico con captura móvil | P1 |
| **Escaneo de códigos** | Barcode y QR scanner para trazabilidad | P1 |
| **Modo offline** | Trabajo sin conexión con sincronización automática | P0 |
| **Transferencias** | Envío/recepción de materiales entre obras | P2 |
| **Fotografías** | Evidencia fotográfica de materiales recibidos | P1 |
### Stack Tecnológico Móvil
```yaml
framework: React Native 0.73+
platform: Expo 50
language: TypeScript 5.3+
state_management: Zustand 4.x
navigation: React Navigation 6.x
offline_storage: WatermelonDB
sync: Background fetch + Queue
camera: expo-camera
barcode: expo-barcode-scanner
location: expo-location
push: Firebase Cloud Messaging
```
### User Stories Móviles
**US-MOB002-001: Recibir materiales**
- Escanear código o buscar material
- Ingresar cantidad recibida
- Tomar foto de evidencia
- Asociar a orden de compra
- Registrar con ubicación GPS
**US-MOB002-002: Entregar materiales a obra**
- Seleccionar material del inventario
- Ingresar cantidad a entregar
- Seleccionar destino (frente/cuadrilla)
- Registrar quien recibe con firma digital
- Actualizar inventario automáticamente
**US-MOB002-003: Realizar conteo físico**
- Iniciar conteo de almacén
- Escanear o buscar items
- Registrar cantidades físicas
- Generar diferencias automáticamente
- Crear ajustes de inventario
**US-MOB002-004: Consultar existencias**
- Buscar material por nombre o código
- Ver existencia actual y ubicación
- Consultar movimientos recientes
- Verificar materiales en tránsito
### Sincronización Offline
La app MOB-002 implementa una arquitectura robusta para trabajo offline:
1. **Almacenamiento local:** WatermelonDB para datos relacionales
2. **Queue de cambios:** Registro de operaciones pendientes
3. **Sincronización automática:** Al recuperar conectividad
4. **Resolución de conflictos:** Estrategia configurable (server-wins, client-wins, manual)
5. **Notificaciones:** Push cuando hay datos nuevos
[Ver especificación completa en EPIC-MAI-019](../../08-epicas/EPIC-MAI-019-mobile-apps.md)
---
## Dependencias con Otros Módulos
### Dependencias Directas
| Módulo | Relación | Datos Compartidos |
|--------|----------|-------------------|
| **MGN-001** Usuarios | Asignación de almacenistas y responsables | Usuarios, roles, permisos |
| **MGN-002** RBAC | Control de permisos por rol | Políticas de acceso |
| **MGN-003** Multi-tenancy | Separación por constructora | Tenant ID, RLS |
| **MGN-005** Catálogos | Catálogo de materiales y proveedores | Materiales, unidades, proveedores |
| **MAI-001** Proyectos | Vinculación con obras | Obras, ubicaciones |
| **MAI-002** Presupuestos | Control presupuestal y partidas | Partidas, presupuesto disponible |
### Integraciones Futuras
| Módulo | Integración | Datos Compartidos |
|--------|-------------|-------------------|
| **MAI-005** Control de Obra | Consumos en avances de obra | Salidas por frente, partidas |
| **MAI-008** Estimaciones | Validación de materiales en obra | Materiales aplicados |
| **MAE-014** Finanzas | Cuentas por pagar a proveedores | Órdenes autorizadas, pagos |
| **MAI-012** Contratos | Subcontratos con materiales | Materiales contratados |
---
## Arquitectura del Módulo
### Diagrama de Arquitectura
```
┌─────────────────────────────────────────────────────────────────┐
│ CAPA DE PRESENTACIÓN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Web App (React) │ │ Mobile (RN) │ │
│ │ │ │ │ │
│ │ - Requisiciones │ │ - Recepciones │ │
│ │ - Órdenes │ │ - Salidas │ │
│ │ - Almacenes │ │ - Inventario │ │
│ │ - Movimientos │ │ - Conteos │ │
│ │ - Reportes │ │ - Transferencias│ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ │ REST API │ │
│ └───────────┬───────────┘ │
└───────────────────────┼─────────────────────────────────────────┘
┌───────────────────────┼─────────────────────────────────────────┐
│ │ CAPA DE NEGOCIO │
├───────────────────────┼─────────────────────────────────────────┤
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ NestJS Backend Services │ │
│ │ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ Purchasing │ │ Inventory │ │ │
│ │ │ Module │ │ Module │ │ │
│ │ │ │ │ │ │ │
│ │ │ - Requisitions │ │ - Warehouses │ │ │
│ │ │ - Purchase Orders│ │ - Stock │ │ │
│ │ │ - Suppliers │ │ - Movements │ │ │
│ │ │ - Approvals │ │ - Kardex │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ │ │ │ │
│ │ └───────────┬───────────┘ │ │
│ └───────────────────────┼──────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────┼──────────────────────────────────┐ │
│ │ Shared Services ▼ │ │
│ │ │ │
│ │ - Budget Validation - Notification Service │ │
│ │ - Workflow Engine - File Upload │ │
│ │ - PDF Generator - Audit Logging │ │
│ └───────────────────────────────────────────────────────────┘ │
└───────────────────────────┼─────────────────────────────────────┘
┌───────────────────────────┼─────────────────────────────────────┐
│ ▼ CAPA DE DATOS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ PostgreSQL 15+ │ │
│ │ │ │
│ │ ┌───────────────────┐ ┌──────────────────┐ │ │
│ │ │ purchasing_ │ │ inventory_ │ │ │
│ │ │ management │ │ management │ │ │
│ │ │ │ │ │ │ │
│ │ │ - requisiciones │ │ - almacenes │ │ │
│ │ │ - ordenes_compra │ │ - inventario │ │ │
│ │ │ - recepciones │ │ - movimientos │ │ │
│ │ │ - aprobaciones │ │ - kardex │ │ │
│ │ └───────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ Features: │ │
│ │ - Row Level Security (RLS) │ │
│ │ - Triggers para stock automático │ │
│ │ - Stored procedures PEPS │ │
│ │ - Funciones de cálculo de costos │ │
│ │ - Auditoría automática │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ SERVICIOS EXTERNOS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Email/SMS │ │ File Storage │ │ Push │ │
│ │ (SendGrid) │ │ (S3/MinIO) │ │ (FCM) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### Schema de Base de Datos
**Schema: `purchasing_management`**
Tablas principales:
- `requisiciones` - Cabecera de requisiciones
- `requisiciones_detalle` - Items de requisiciones
- `requisiciones_aprobaciones` - Flujo de aprobación
- `requisiciones_partidas` - Vinculación presupuestal
- `ordenes_compra` - Cabecera de órdenes
- `ordenes_compra_detalle` - Items de órdenes
- `ordenes_compra_recepciones` - Registro de recepciones
- `ordenes_compra_documentos` - Archivos adjuntos
**Schema: `inventory_management`**
Tablas principales:
- `almacenes` - Almacenes por obra
- `almacenes_ubicaciones` - Zonas y ubicaciones
- `inventario_por_almacen` - Stock actual
- `niveles_inventario` - Min/max por material
- `movimientos_inventario` - Registro de movimientos
- `entradas_inventario` - Detalle de entradas
- `salidas_inventario` - Detalle de salidas
- `transferencias_inventario` - Traspasos entre almacenes
- `ajustes_inventario` - Ajustes y correcciones
- `kardex` - Historial de movimientos
### Backend: NestJS
**Módulos principales:**
```typescript
// Purchasing Module
@Module({
imports: [
TypeOrmModule.forFeature([
Requisicion,
RequisicionDetalle,
OrdenCompra,
OrdenCompraDetalle,
Recepcion
])
],
providers: [
RequisicionService,
OrdenCompraService,
RecepcionService,
ApprovalWorkflowService,
BudgetValidationService
],
controllers: [
RequisicionController,
OrdenCompraController,
RecepcionController
]
})
export class PurchasingModule {}
// Inventory Module
@Module({
imports: [
TypeOrmModule.forFeature([
Almacen,
Stock,
Movimiento,
Entrada,
Salida,
Transferencia,
Kardex
])
],
providers: [
AlmacenService,
StockService,
MovimientoService,
KardexService,
AlertService,
CostCalculationService
],
controllers: [
AlmacenController,
MovimientoController,
KardexController
]
})
export class InventoryModule {}
```
### Frontend: React + TypeScript
**Componentes principales:**
```typescript
// Requisiciones
- RequisicionesListView
- RequisicionFormModal
- RequisicionDetailView
- RequisicionApprovalPanel
- RequisicionItemsTable
- RequisicionWorkflowTimeline
// Órdenes de Compra
- OrdenesCompraListView
- OrdenCompraFormModal
- OrdenCompraDetailView
- OrdenCompraItemsTable
- OrdenCompraRecepcionModal
- OrdenCompraPDFPreview
- OrdenCompraStatusBadge
// Almacenes
- AlmacenesListView
- AlmacenFormModal
- AlmacenDetailView
- UbicacionesTreeView
- InventarioAlmacenTable
- ExistenciasBajasAlert
- AlmacenResponsableSelector
// Movimientos
- MovimientosInventarioListView
- EntradaInventarioFormModal
- SalidaInventarioFormModal
- TransferenciaInventarioFormModal
- AjusteInventarioFormModal
- KardexMaterialView
- SolicitudesSalidaPanel
- ValuacionInventarioReport
- MovimientoDetailView
```
---
## Stack Tecnológico
### Backend
```yaml
framework: NestJS 10+
language: TypeScript 5.3+
database: PostgreSQL 15+
orm: TypeORM 0.3+
validation: class-validator + class-transformer
authentication: Passport + JWT
authorization: CASL (RBAC)
notifications: EventEmitter2 + SendGrid/AWS SES
files: Multer + S3/MinIO
pdf: PDFKit / Puppeteer
scheduling: @nestjs/schedule (CRON)
testing: Jest + Supertest
```
### Frontend Web
```yaml
framework: React 18+
language: TypeScript 5.3+
build: Vite 5+
state: Zustand 4.x
forms: React Hook Form + Zod
tables: TanStack Table v8
charts: Chart.js / Recharts
ui: Tailwind CSS + shadcn/ui
api: Axios + React Query
routing: React Router 6
pdf: jsPDF / react-pdf
excel: xlsx
testing: Vitest + Testing Library
```
### Mobile (MOB-002)
```yaml
framework: React Native 0.73+
platform: Expo 50
language: TypeScript 5.3+
state: Zustand 4.x
navigation: React Navigation 6.x
offline: WatermelonDB
sync: Background fetch + Queue
camera: expo-camera
barcode: expo-barcode-scanner
location: expo-location
signature: react-native-signature-canvas
push: Firebase Cloud Messaging
storage: AsyncStorage + SecureStore
```
### Base de Datos
```yaml
database: PostgreSQL 15+
schemas:
- purchasing_management
- inventory_management
features:
- Row Level Security (RLS)
- Triggers automáticos
- Stored procedures
- Functions para cálculos
- JSONB para flexibilidad
- Full-text search
- Particionamiento (futuro)
```
---
## Flujos de Trabajo Clave
### Flujo 1: Requisición a Orden de Compra
```
1. [Residente] Crea requisición de materiales
- Selecciona obra y partida presupuestal
- Agrega materiales del catálogo
- Especifica cantidades y fecha requerida
- Envía a aprobación
2. [Sistema] Valida presupuesto disponible
- Verifica saldo en partida presupuestal
- Rechaza automáticamente si no hay presupuesto
- Notifica al residente
3. [Superintendente] Revisa y aprueba
- Recibe notificación de requisición pendiente
- Revisa justificación y cantidades
- Aprueba o rechaza con comentarios
- Notifica al solicitante
4. [Jefe de Compras] Convierte a OC
- Selecciona proveedor
- Define condiciones comerciales
- Genera orden de compra
- Envía PDF por email al proveedor
- Marca requisición como convertida
5. [Sistema] Compromete presupuesto
- Registra monto comprometido en partida
- Actualiza saldo disponible
- Genera notificación a residente y finanzas
```
### Flujo 2: Recepción de Material (App Móvil)
```
1. [Almacenista] Recibe notificación de material en tránsito
- App móvil muestra órdenes pendientes
- Selecciona orden a recibir
2. [Almacenista] Escanea o busca material
- Usa cámara para escanear código de barras/QR
- O busca manualmente en catálogo
- Verifica coincidencia con orden
3. [Almacenista] Registra recepción
- Ingresa cantidad recibida
- Toma foto de evidencia
- Registra lote y ubicación en almacén
- Captura firma del proveedor (si aplica)
- Documenta diferencias o daños
4. [App Móvil] Sincroniza con servidor
- Guarda datos localmente (offline)
- Sincroniza cuando hay conectividad
- Actualiza estado de orden
5. [Sistema] Genera entrada de almacén
- Crea movimiento de entrada
- Actualiza stock en almacén
- Calcula costo según PEPS
- Actualiza kardex
- Notifica a residente y compras
```
### Flujo 3: Salida de Material a Obra
```
1. [Residente] Solicita material desde web
- Selecciona partida/frente de obra
- Especifica materiales y cantidades
- Envía solicitud a almacenista
2. [Almacenista] Recibe solicitud en app móvil
- Notificación push
- Verifica existencias disponibles
- Aprueba o rechaza solicitud
3. [Almacenista] Prepara material
- Ubica material en almacén
- Prepara cantidad solicitada
- Registra salida en app móvil
4. [Almacenista] Entrega material
- Selecciona quien recibe
- Captura firma digital
- Toma foto de evidencia
- Confirma salida
5. [Sistema] Registra consumo
- Genera movimiento de salida
- Actualiza stock de almacén
- Vincula con partida presupuestal
- Actualiza consumo vs presupuesto
- Actualiza kardex
- Notifica a residente
```
---
## Indicadores Clave (KPIs)
### KPIs Operativos
| Métrica | Descripción | Objetivo | Fórmula |
|---------|-------------|----------|---------|
| **Tiempo aprobación requisiciones** | Tiempo promedio de aprobación | < 24 horas | AVG(fecha_aprobacion - fecha_solicitud) |
| **Tasa rechazo requisiciones** | Porcentaje de requisiciones rechazadas | < 10% | (rechazadas / total) × 100 |
| **Cumplimiento entregas** | Órdenes entregadas a tiempo | > 90% | (entregadas_a_tiempo / total) × 100 |
| **Exactitud inventario** | Diferencia físico vs sistema | > 95% | (1 - ABS(diferencia) / stock_sistema) × 100 |
| **Rotación inventario** | Veces que rota el inventario | > 2 veces/mes | costo_ventas / inventario_promedio |
| **Valor inmovilizado** | Material sin movimiento > 90 días | < 5% del total | valor_sin_movimiento / valor_total × 100 |
### KPIs Financieros
| Métrica | Descripción | Objetivo |
|---------|-------------|----------|
| **Presupuesto comprometido** | Monto en órdenes pendientes | Visibilidad 100% |
| **Desviación vs presupuesto** | Diferencia consumo real vs presupuestado | ± 5% |
| **Ahorro en compras** | Por comparación de cotizaciones | > 5% |
| **Costo de mermas** | Valor de desperdicios y ajustes | < 2% |
---
## Documentos Relacionados
### Requerimientos Funcionales
- [RF-COMP-001: Requisiciones de Material](./requerimientos/RF-PURCH-001-catalogo-proveedores.md)
- [RF-COMP-002: Órdenes de Compra](./requerimientos/RF-PURCH-002-requisiciones-ordenes-compra.md)
- [RF-COMP-003: Almacenes por Obra](./requerimientos/RF-PURCH-003-almacenes-inventarios.md)
- [RF-COMP-004: Movimientos de Inventario](./requerimientos/RF-PURCH-004-kardex-alertas.md)
### Especificaciones Técnicas
- [ET-PURCH-001: Implementación de Proveedores](./especificaciones/ET-PURCH-001-implementacion-proveedores.md)
- [ET-PURCH-002: Implementación de Requisiciones y OCs](./especificaciones/ET-PURCH-002-implementacion-requisiciones.md)
- [ET-PURCH-003: Implementación de Almacenes](./especificaciones/ET-PURCH-003-implementacion-almacenes.md)
- [ET-PURCH-004: Implementación de Kárdex y Alertas](./especificaciones/ET-PURCH-004-implementacion-kardex-alertas.md)
### Historias de Usuario
- [US-PURCH-001: Registro de Proveedor](./historias-usuario/US-PURCH-001-registro-proveedor.md)
- [US-PURCH-002: Solicitar Cotizaciones (RFQ)](./historias-usuario/US-PURCH-002-solicitud-cotizaciones.md)
- [US-PURCH-003: Crear Requisición desde Obra](./historias-usuario/US-PURCH-003-crear-requisicion-obra.md)
- [US-PURCH-004: Aprobar y Generar Orden de Compra](./historias-usuario/US-PURCH-004-aprobar-generar-orden-compra.md)
- [US-PURCH-005: Recibir Material en Almacén](./historias-usuario/US-PURCH-005-recibir-material-almacen.md)
- [US-PURCH-006: Control de Almacenes y Movimientos](./historias-usuario/US-PURCH-006-control-almacenes-movimientos.md)
- [US-PURCH-007: Kárdex y Análisis de Consumo](./historias-usuario/US-PURCH-007-kardex-analisis-consumo.md)
- [US-PURCH-008: Dashboard de Inventarios y Alertas](./historias-usuario/US-PURCH-008-dashboard-inventarios-alertas.md)
### Otros Documentos
- [RESUMEN-EPICA-MAI-004.md](./RESUMEN-EPICA-MAI-004.md) - Resumen ejecutivo completo
- [TRACEABILITY.yml](./implementacion/TRACEABILITY.yml) - Matriz de trazabilidad
- [EPIC-MAI-019: Apps Móviles](../../08-epicas/EPIC-MAI-019-mobile-apps.md) - Detalle de MOB-002
---
## Puntos Críticos
1. **Sincronización offline-online (App Móvil)** Pérdida de datos si falla sincronización
2. **Validación presupuestal** Requisiciones sin presupuesto generan paros de obra
3. **Exactitud de inventarios** Diferencias afectan decisiones de compra
4. **Cálculo de costos PEPS** Errores impactan valuación contable
5. **Control de aprobaciones** Flujo roto puede generar compras no autorizadas
6. **Alertas de stock mínimo** Fallas en alertas causan faltantes de material
---
## Roadmap de Implementación
### Sprint 11 (13 SP) - Proveedores y Cotizaciones
- US-PURCH-001: Registro de Proveedor (5 SP)
- US-PURCH-002: Solicitar Cotizaciones RFQ (8 SP)
### Sprint 12 (18 SP) - Requisiciones y OCs
- US-PURCH-003: Crear Requisición desde Obra (5 SP)
- US-PURCH-004: Aprobar y Generar Orden de Compra (8 SP)
- US-PURCH-005: Recibir Material en Almacén (5 SP)
### Sprint 13 (12 SP) - Almacenes y Kárdex
- US-PURCH-006: Control de Almacenes y Movimientos (7 SP)
- US-PURCH-007: Kárdex y Análisis de Consumo (5 SP)
### Sprint 14 (5 SP) - Dashboard y Alertas
- US-PURCH-008: Dashboard de Inventarios y Alertas (5 SP)
**Total:** 48 Story Points | 8 semanas | 4 sprints
---
## Roles y Permisos
| Rol | Permisos |
|-----|----------|
| **Residente de Obra** | Crear requisiciones, solicitar salidas, consultar inventario |
| **Superintendente** | Aprobar requisiciones, consultar órdenes, ver reportes |
| **Jefe de Compras** | Crear/editar órdenes, gestionar proveedores, aprobar requisiciones |
| **Almacenista** | Gestionar almacén, registrar entradas/salidas, conteos físicos |
| **Jefe de Almacén** | Todos los permisos de almacenista + transferencias + ajustes |
| **Contador** | Consultar valuación, kardex, reportes financieros |
| **Director** | Vista ejecutiva, aprobación de ajustes mayores, todos los reportes |
---
**Generado:** 2025-12-06
**Estado:** Completo
**Mantenedores:** @tech-lead @backend-team @frontend-team @mobile-team