# 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