hbox-docs/docs/tableros/inventario.md
Leopoldo Rodríguez 02521e14f4 Inventario por sitio: pestañas, envíos en camino y kit por instalación
Una pestaña por sitio (ICAVE, TIMSA, EIT, LCT, Querétaro): lo que hay, lo que va en camino
y lo que falta del kit para instalar. Movimientos con sitio, envío/recepción, origen «fuera».
Lote 2026-10-23_inventario-sitios.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016X4CAujMuib2tDqt9JRg6X
2026-10-23 13:33:51 -06:00

48 lines
3.7 KiB
Markdown

---
title: "Inventario"
description: "Material por sitio: lo que hay en cada puerto y en Querétaro, lo que va en camino y lo que falta para instalar."
template: tablero.html
hide:
- toc
---
<link rel="stylesheet" href="/tableros/inventario.css">
<div class="tb tb-inventario tb-inv">
<header class="tb-cab">
<div class="tb-cab__t"><h1>Inventario</h1><span class="meta" id="meta">Cargando…</span></div>
<div class="tb-cab__acc"><a class="boton sec" id="inv-a-ins" href="/tableros/instalaciones/"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M3.5 15.5V9.8l2.3-3.3h6.7v9M12.5 9.5h4.2l3.8 3.4v2.6M6.5 18.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM16.5 18.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM8.5 16.5h6"/></svg>Instalaciones</a><a class="boton sec" href="/inventario/"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 4.5h11a3 3 0 0 1 3 3v12.5H8a3 3 0 0 1-3-3zM5 17a3 3 0 0 1 3-3h11"/></svg>Política de inventario</a></div>
</header>
<details class="info tb-como">
<summary>Cómo se usa</summary>
<ol>
<li><b>Una pestaña por sitio</b> (ICAVE, TIMSA, EIT, LCT y Querétaro): lo que hay ahí, lo que va en camino y, para el material de instalación, cuánto falta para instalar las unidades que pongas arriba. <b>Todo</b> es el inventario completo, con el total y dónde está cada cosa.</li>
<li>El <b>stock no se escribe a mano</b>: es la suma de los movimientos de cada sitio. Llegó material → <b>Entrada</b> en ese sitio. Se instaló, se usó o se dio de baja → <b>Salida</b>, con la unidad o el acta como referencia. Contaste y no cuadra → <b>Conteo físico</b>: lo que hay en el sitio queda exactamente en ese número.</li>
<li>Material que va de un sitio a otro → <b>Envío</b>: sale del sitio de origen y queda <b>en camino</b>. Cuando llega, quien lo recibe abre la pestaña de su sitio y le da <b>Recibir</b> con lo que llegó de verdad. Una compra que viene en camino, o material que salió de un puerto antes de contarlo, es un envío que sale de <b>«Proveedor o fuera del inventario»</b>.</li>
<li><b>Kit de instalación</b>: en <b>Editar</b>, «Por instalación» dice cuánto lleva una unidad instalada (un gabinete, dos antenas LTE…). Con eso cada sitio dice qué falta.</li>
<li>Toca el <b>código</b> para ver los movimientos de ese ítem: quién, cuándo, dónde, cuánto y por qué. <b>Alerta</b> (rojo) = el total está por debajo del mínimo.</li>
<li><b>Nuevo ítem</b> solo para cosas que se cuentan; lo de la instalación (soportes, tornillería, cable de potencia) va con categoría <b>Instalación</b>. <b>Exportar CSV</b> baja la tabla con una columna por sitio. Nada se borra: si un ítem ya no aplica, ponle «(obsoleto)» en la descripción.</li>
</ol>
</details>
<nav class="inv-tabs" id="inv-tabs" aria-label="Sitio"></nav>
<div class="acciones">
<select id="fCat"><option value="">Todas las categorías</option></select>
<select id="fVer"><option value="">Aplica a: todas</option></select>
<label><input type="checkbox" id="fAlerta" style="width:auto"> solo alertas</label>
<input type="search" id="fBuscar" placeholder="Buscar código o descripción…" style="flex:1;min-width:150px">
<button id="bMov"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>Movimiento</button>
<button id="bNuevo" class="sec"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>Nuevo ítem</button>
<a href="/api/inventario/export.csv" class="boton sec"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4v11M7.5 10.5 12 15l4.5-4.5M5 20h14"/></svg>Exportar CSV</a>
<span class="cnt" id="cnt"></span>
</div>
<div class="msg" id="aviso"></div>
<div id="cont"></div>
<dialog id="dlg"></dialog>
</div>
<script src="/tableros/inventario.js"></script>