/* Santos OS — Almacén (inventory across branches) */ function Almacen({ onToast }) { const T = window.T; const [tab, setTab] = React.useState('inventario'); const [loc, setLoc] = React.useState('all'); const [query, setQuery] = React.useState(''); const tabs = [['inventario','Inventario'],['compras','Compras'],['pedidos','Pedidos'],['narcoticos','* Narcóticos']]; const locs = [['all','Todos'],['copan','Fcia. Copán'],['jordan','El Jordán'],['rita','Sta. Rita']]; const stockColor = (q,d)=> q===0?T.danger : d<7?T.danger : d<14?T.warning : T.success; const stockBg = (q,d)=> q===0?T.dangerLight : d<7?T.dangerLight : d<14?T.warningLight : T.successLight; const expiryDot = {critical:T.danger, near:T.warning, normal:T.success}; const list = window.PRODUCTS.filter(p=> !query || p.nombre.toLowerCase().includes(query.toLowerCase()) || p.sku.includes(query) || p.lab.toLowerCase().includes(query.toLowerCase())); return (
{/* main tabs */}
{tabs.map(([k,l])=>( ))}
{tab==='inventario' && <>
setQuery(e.target.value)} placeholder="Producto, SKU o laboratorio…" style={{flex:1, border:'none', outline:'none', background:'transparent', fontSize:14, color:T.fg1, fontFamily:T.font}} /> onToast('▣ Escáner de código de barras')}>▣
{locs.map(([k,l])=>( ))}
{list.map(p=>{ const cells = loc==='all' ? [['Copán',p.copan],['Jordán',p.jordan],['S.Rita',p.rita]] : [[locs.find(l=>l[0]===loc)[1], p[loc==='rita'?'rita':loc]]]; return (
{p.nombre}
SKU {p.sku} · {p.lab} · {p.cat}
{cells.map(([name,v])=>(
{v.q}
{name}
{v.q===0?'Sin stock':`~${v.d}d`}
))}
); })}
} {tab==='compras' && (
PO-2026-0182 En tránsito
Proveedor: Droguería Bonima · CEDI → Copán Ruinas
14 SKUs · L. 18,420 · ETA 2 días
PO-2026-0181 Recibido
Proveedor: Lafage · entrega directa
8 SKUs · L. 9,640 · recibido ayer
)} {tab==='pedidos' && (
Traslado interno · Jordán → Copán
Metformina 850mg x10 · Ibuprofeno 400mg x12
onToast('Traslado rechazado')}>Rechazar onToast('✓ Traslado confirmado')}>Confirmar envío
)} {tab==='narcoticos' && (
* Acceso restringido — Regente
Libro de control de sustancias controladas (ARSA). Cada entrada queda registrada con responsable y receta.
{[['Tramadol 50mg','Receta #R-4421 · Dr. Ramírez','-3 unid','2026-05-30'],['Clonazepam 2mg','Receta #R-4419 · Dra. Fuentes','-1 unid','2026-05-29']].map(([m,r,q,d])=>(
{m}{q}
{r} · {d}
))}
)}
); } window.Almacen = Almacen;