========================================================= ALIGANT ERP V5 · MÓDULO INVENTARIO ========================================================= QUÉ INCLUYE - Bodegas (CRUD): empresa, sucursal opcional, nombre, tipo (Central / Sucursal / Producción / Merma / Virtual), activa. - Stock por bodega: producto, categoría, empresa, bodega, unidad de stock, stock actual, stock mínimo y estado (Normal / Bajo / Crítico / Sin stock). - Movimientos: historial completo con fecha, empresa, bodega, producto, tipo, cantidad, unidad, documento, usuario y observación. - Traspasos entre bodegas (descuenta origen, aumenta destino, genera 2 movimientos: salida + entrada). - Ajustes manuales con motivo obligatorio. - Inventario físico: conteo por bodega y aplicación de diferencias. REGLA CLAVE El stock SIEMPRE se maneja en la unidad de stock del producto (ej: merluza se compra en cajas pero su stock es en Kg). Todo cambio de stock pasa por un MOVIMIENTO (StockService): el stock nunca se edita "a mano". El stock actual es la suma firmada de todos los movimientos del producto en esa bodega. --------------------------------------------------------- DÓNDE PEGAR LOS ARCHIVOS Descomprime el ZIP DENTRO de: C:\xampp2\htdocs\aligant_erp_v5\ y acepta sobrescribir. El ZIP respeta la estructura del proyecto: app\Services\StockService.php (nuevo) app\Models\ -> Bodega, MovimientoStock (ACTUALIZADOS), Stock, Traspaso, TraspasoDetalle, Ajuste, InventarioFisico, InventarioFisicoDetalle (nuevos) app\Http\Controllers\ -> Bodega, Stock, MovimientoStock, Traspaso, Ajuste, InventarioFisico app\Http\Requests\ -> BodegaRequest, TraspasoRequest, AjusteRequest database\migrations\ -> 8 migraciones (2025_06_01_*) database\seeders\InventarioSeeder.php config\permisos.php (REEMPLAZA) routes\web.php (REEMPLAZA) resources\views\layouts\sidebar.blade.php (REEMPLAZA) resources\views\bodegas|stock|movimientos|traspasos|ajustes|fisico\* IMPORTANTE (sobrescrituras compatibles): - Bodega y MovimientoStock se ACTUALIZAN: conservan todo lo de Abastecimiento y agregan los campos nuevos. No rompen nada. - routes\web.php, config\permisos.php y sidebar.blade.php vienen COMPLETOS (todo lo anterior + inventario). Reemplázalos enteros. --------------------------------------------------------- COMANDOS (consola en C:\xampp2\htdocs\aligant_erp_v5\) php artisan migrate php artisan db:seed --class=Database\Seeders\InventarioSeeder php artisan db:seed --class=Database\Seeders\SuperAdminSeeder php artisan optimize:clear Luego en el navegador: Ctrl + F5. - migrate: crea/ajusta las tablas (bodegas, stocks, traspasos, ajustes, inventarios_fisicos, movimientos_stock). - InventarioSeeder: crea la Bodega Central (BCEN) de Supermar y RECALCULA el stock a partir de los movimientos ya existentes (incluye los ingresos por compra de Abastecimiento). - SuperAdminSeeder: regenera los permisos e incluye los nuevos módulos (bodegas, stock, movimientos, traspasos, ajustes, inventario_fisico) para el rol Super Administrador. --------------------------------------------------------- FLUJO INVENTARIO FÍSICO 1) Inventario físico > Nuevo: eliges bodega + fecha. Al crear se toma una "foto" del stock actual como líneas a contar. 2) En la ficha ingresas el stock contado y "Guardar conteo" (calcula la diferencia). 3) "Aplicar diferencias al stock": genera un ajuste por cada diferencia y cierra el inventario. REGLAS APLICADAS - No se puede traspasar más de lo disponible (se valida antes). - No se permite stock negativo (salvo el inventario físico, que puede corregir hacia abajo con permiso al aplicar). - Botón "Recalcular desde movimientos" en Stock por si necesitas reconstruir el stock cacheado. =========================================================