Ir al contenido

Historial Stock

Consulta el historial completo de movimientos de stock de un producto con fecha, cantidad, motivo y usuario.

  1. En la página de detalle del producto, ve a la sección “Historial de Stock”.
  2. (Opcional) Filtra por tipo de movimiento o rango de fechas.
  3. Revisa la tabla de movimientos ordenada por fecha.

Nota: El historial muestra los últimos 50 movimientos por defecto. Usa filtros para consultas específicas.

ColumnaDescripciónEjemplo
TipoEntrada/Salida/Ajuste/Devolución/TransferenciaEntrada
CantidadUnidades movidas (+/-)+50
MotivoRazón del movimientoCompra a proveedor
NotasInformación adicionalFactura #001
FechaTimestamp del movimiento2024-01-15 10:30
UsuarioQuien registró el movimientoJuan Pérez
Ubicación OrigenUbicación de salida (transferencias)A1-E2-C3
Ubicación DestinoUbicación de entrada (transferencias)B2-E1-C5
IconoTipoColorDescripción
EntradaVerdeIncrementa el stock
SalidaRojoReduce el stock
AjusteAmarilloCorrección de inventario
DevoluciónAzulDevolución de cliente
TransferenciaMoradoMovimiento entre ubicaciones
  • El historial muestra todos los movimientos en orden cronológico.
  • Los movimientos coinciden con los cambios de stock del producto.
  • Puedes identificar quién y cuándo se realizó cada movimiento.
🔧 Detalles Técnicos — Historial Stock

Tablas involucradas:

TablaColumnas claveFK
stock_movementsid, product_id, business_id, movement_type, quantity, reason, notes, created_at, created_by, warehouse_location_from_id, warehouse_location_to_idproducts, warehouse_locations

Tipo de dato:

interface StockMovement {
id: string;
movement_type: 'entrada' | 'salida' | 'ajuste' | 'devolucion' | 'transferencia';
quantity: number;
reason?: string;
notes?: string;
created_at: string;
created_by?: string;
warehouse_location_from_id?: string;
warehouse_location_to_id?: string;
}

Componente:

  • ProductStockHistory.tsx
  • Tabla con iconos y badges de color por tipo
  • Formato de fecha con date-fns (locale español)

Queries de diagnóstico:

-- Historial completo de un producto
SELECT sm.movement_type, sm.quantity, sm.reason, sm.notes, sm.created_at,
wlf.code as ubicacion_origen, wlt.code as ubicacion_destino
FROM stock_movements sm
LEFT JOIN warehouse_locations wlf ON wlf.id = sm.warehouse_location_from_id
LEFT JOIN warehouse_locations wlt ON wlt.id = sm.warehouse_location_to_id
WHERE sm.product_id = '<product_id>'
ORDER BY sm.created_at DESC
LIMIT 50;
-- Resumen de movimientos por tipo
SELECT movement_type, COUNT(*) as total, SUM(quantity) as total_quantity
FROM stock_movements
WHERE product_id = '<product_id>'
GROUP BY movement_type;

Schema de validación:

  • Ubicación: /src/schemas/validation.ts (líneas 151-165)
  • stockMovementSchema — Validación de movimientos