function PageInventory({pushToast}){ const I = window.Icons; const D = window.FLUXData; const [tab, setTab] = React.useState('all'); const [selected, setSelected] = React.useState(null); const filtered = D.skus.filter(s=>{ if(tab==='low') return s.stock < s.threshold; if(tab==='out') return s.stock===0; if(tab==='risk') return s.risk>0.6; return true; }); return ( <>

Inventario

6,842 SKUs activos en 8 tiendas. Reabastecimiento sugerido por IA, transferencias inter-tienda y alertas de quiebre.

{[ {l:'Total SKUs', v:'6,842', d:'+124 este mes', icon:'Box'}, {l:'Valor inventario', v:'$48.2M', d:'+5.4% vs. anterior', icon:'Database'}, {l:'Stock crítico', v:'42', d:'requieren acción', icon:'Alert', color:'red'}, {l:'Rotación promedio', v:'21 días', d:'-2 días vs. anterior', icon:'Refresh'}, ].map((k,i)=>{ const Ic = I[k.icon]; return (
{k.l}
{k.v}
{k.d}
); })}
Recomendación IA Mover 25 unidades de SKU-8872 desde GDL → MTY equilibraría inventario y evitaría quiebre con 88% de probabilidad.
setTab('all')}>Todos {D.skus.length}
setTab('low')}>Stock bajo {D.skus.filter(s=>s.stock
setTab('out')}>Sin stock {D.skus.filter(s=>s.stock===0).length}
setTab('risk')}>Riesgo de quiebre {D.skus.filter(s=>s.risk>0.6).length}
{filtered.map(s=>{ const sparkData = Array.from({length:8},(_,i)=>Math.max(0,s.sold30/8 + Math.sin(i)*15 + (Math.random()*10-5))); return ( setSelected(s)} style={{cursor:'pointer'}}> ); })}
SKUProductoCategoríaTiendaStockMín.Vendido (30d)TendenciaRiesgo IAAcciones
{s.sku} {s.name} {s.category} {s.store} {s.stock} {s.threshold} {s.sold30}
0.7?'var(--red)':s.risk>0.4?'var(--amber)':'var(--green)'}}/>
{Math.round(s.risk*100)}%
{selected && (
setSelected(null)}>
e.stopPropagation()}>
{selected.sku}
{selected.name}
Stock
{selected.stock}
Precio
${selected.price.toLocaleString()}
Riesgo
{Math.round(selected.risk*100)}%
SugerenciaSolicitar {Math.max(50, Math.round(selected.forecast30 - selected.stock))} u. a {selected.supplier} para cubrir demanda proyectada de 30 días.
)} ); } window.PageInventory = PageInventory;