Una aplicación de escritorio desarrollada en Flutter con FluentUI para la gestión de inventario multi-artículo bajo el modelo QR (Quantity-Reorder point) con restricciones.
- Modelo QR de Inventario: Implementación completa del modelo Quantity-Reorder point
- Gestión Multi-Artículo: Soporte para múltiples artículos con diferentes parámetros
- Restricciones del Sistema: Validación de espacio, presupuesto y número de pedidos
- Importación/Exportación Excel: Manejo completo de archivos
.xlsxy.xls - Interfaz FluentUI: Diseño moderno optimizado para Windows Desktop
- Cálculos Automáticos: Evaluación automática del modelo con resultados detallados
- Demanda Anual (D): Demanda esperada por año
- Costo por Pedido (K): Costo fijo por realizar un pedido
- Costo de Mantenimiento (h): Costo anual por mantener una unidad en inventario
- Costo por Faltante (p): Penalización por unidad faltante
- Costo Unitario (c): Precio de compra por unidad
- Espacio por Unidad (s): Espacio requerido por unidad (m²)
- Desviación Estándar Diaria (σ): Variabilidad de la demanda diaria
- Punto de Reorden (R): Nivel de inventario para reordenar
- Tamaño de Lote (Q): Cantidad a ordenar
- Espacio: Σ(sᵢ × Rᵢ) ≤ S_max
- Presupuesto: Σ(cᵢ × Rᵢ) ≤ C_max
- Número de Pedidos: Σ(Dᵢ/Qᵢ) ≤ N_max
lib/
├── models/
│ ├── articulo.model.dart # Modelo de datos para artículos
│ └── resultado.model.dart # Modelo de resultados del cálculo
├── repositories/
│ ├── inventario.repository.dart # Lógica de negocio del modelo QR
│ └── excel.repository.dart # Manejo de archivos Excel
├── providers/
│ └── inventario.provider.dart # Gestión de estado con Provider
├── screens/
│ ├── home_screen.dart # Pantalla principal
│ ├── resultados_screen.dart # Visualización de resultados
│ └── configuracion_screen.dart # Configuración del sistema
├── utils/
│ └── math_utils.dart # Utilidades matemáticas
└── main.dart # Punto de entrada de la aplicación
Screens → Providers → Repositories → Models
TC = Σ( Dᵢ/Qᵢ × Kᵢ
+ (Qᵢ/2 + max(0, Rᵢ − μLᵢ) − E[Bᵢ]) × hᵢ
+ (Dᵢ/Qᵢ) × E[Bᵢ] × pᵢ )
- Demanda en Lead Time: μ_L = D × (L/365)
- Desviación en Lead Time: σ_L = σ × √L
- Z-Score: z = (R - μ_L) / σ_L
- Backorders Esperados: E[B] = σ_L × L(z)
- Autocalcular Q y R cuando falten datos
- Q*: sqrt(2·D·S/H)
- R: d·L + z·σL, con d = D/365 y z configurable
Donde L(z) es la función de pérdida normal estándar.
- Flutter SDK 3.0.0 o superior
- Windows 10/11 para desarrollo de escritorio
# Clonar el repositorio
git clone <repository-url>
cd inventario_qr
# Instalar dependencias
flutter pub get
# Ejecutar la aplicación
flutter run -d windows- Cargar Datos: Usar "Datos de Ejemplo" o "Importar Datos" desde Excel
- Configurar Parámetros: Ajustar restricciones en la pantalla de configuración
- Ejecutar Cálculos: Los resultados se calculan automáticamente
- Ver Resultados: Revisar resultados detallados en la pantalla correspondiente
- Exportar: Guardar resultados en formato Excel
| Columna | Descripción | Ejemplo |
|---|---|---|
| Nombre | Nombre del artículo | "Artículo 1" |
| DemandaAnual | Demanda anual (unidades) | 1200 |
| CostoPedido | Costo por pedido ($) | 100 |
| CostoMantenimiento | Costo anual de mantenimiento ($) | 2 |
| CostoFaltante | Penalización por faltante ($) | 5 |
| CostoUnitario | Precio unitario ($) | 20 |
| EspacioUnidad | Espacio por unidad (m²) | 0.5 |
| DesviacionDiaria | Desviación estándar diaria | 2 |
| PuntoReorden | Punto de reorden (unidades) | 120 |
| TamanoLote | Tamaño de lote (unidades) | 200 |
- Hoja 1: Resumen del sistema
- Hoja 2: Resultados por artículo
- Hoja 3: Detalles de restricciones
- Diseño Nativo de Windows: Interfaz que sigue las directrices de Microsoft
- Navegación Intuitiva: Uso de CommandBar y PageHeader
- Componentes Modernos: Cards, Buttons, TextFormBox optimizados para escritorio
- Responsive Design: Adaptado específicamente para pantallas de escritorio
- Accesibilidad: Soporte completo para lectores de pantalla y navegación por teclado
- Home Screen: Dashboard principal con resumen y navegación
- Resultados Screen: Visualización detallada de cálculos y estadísticas
- Configuración Screen: Ajuste de parámetros del sistema
- Lead Time: Tiempo de entrega en días (default: 36.5)
- Espacio Máximo: Capacidad del almacén en m² (default: 150.0)
- Presupuesto Máximo: Presupuesto total disponible en $ (default: 10,000.0)
- Número Máximo de Pedidos: Límite de pedidos por año (default: 100.0)
- Z-Score: Indica el nivel de servicio (mayor = mejor servicio)
- Backorders Esperados: Cantidad promedio de faltantes
- Costo Total: Suma de costos de pedidos, mantenimiento y faltantes
- Espacio Usado: Espacio total requerido por el inventario
- ✅ Verde: Restricción cumplida
- ❌ Rojo: Restricción violada
⚠️ Amarillo: Restricción en el límite
dependencies:
fluent_ui: ^4.7.4 # Interfaz de usuario para Windows
provider: ^6.1.1 # Gestión de estado
excel: ^2.1.0 # Manejo de archivos Excel
file_picker: ^8.0.0+1 # Selección de archivos
path_provider: ^2.1.2 # Acceso al sistema de archivosclass InventarioProvider extends ChangeNotifier {
List<Articulo> articulos = [];
ResultadoSistema? resultado;
bool isLoading = false;
String? error;
// ... configuración del sistema
}