> ## Documentation Index
> Fetch the complete documentation index at: https://muveya.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Resumen del inventario

> Entiende la pantalla de existencias, los saldos y estados de cada caja, el registro inmutable de movimientos y quién puede hacer qué en el inventario

muveya cuenta las existencias por **caja**: un contenedor físico de un solo insumo, con su propio código impreso, su bodega, su estado y, cuando el insumo los controla, su lote, sus números de serie y su fecha de vencimiento. Cada cambio en una caja se escribe en un **registro de movimientos** al que solo se agregan filas, y las cantidades que ves se calculan a partir de ese registro. Nada del registro se edita ni se borra.

Esta página explica la pantalla principal del inventario, cómo funcionan las cantidades y los estados, cada movimiento que el registro puede guardar y qué permiso necesita cada acción.

## Abrir la pantalla de existencias

Selecciona **Inventario** en la navegación principal. La pantalla que se abre se titula **Existencias** ("Cajas disponibles en las bodegas que puedes ver."). También puedes ir directo a `console.muveya.com/inventory`.

La opción **Inventario** aparece para todos los miembros, pero la lista solo carga para quienes tienen el permiso `inventory.read`. Sin él, la pantalla muestra **Tu cuenta no tiene permiso para esta acción.**

### Qué muestra la lista

Cada fila es una caja.

| Columna | Qué muestra |
| - | - |
| **Insumo** | El nombre y el SKU del insumo, por ejemplo `Guantes de nitrilo M · GLV-NIT-M`. Selecciónalo para abrir la caja. |
| **Bodega** | La bodega donde está la caja ahora. |
| **En mano** | Las unidades que hay físicamente en la caja, con la unidad del insumo, por ejemplo `100 × Unidad`. |
| **Reservado** | Las unidades de esa caja apartadas para pedidos aprobados. |
| **Disponible** | En mano menos reservado: lo que todavía está libre. |

La lista incluye cajas en cualquier estado, así que una caja agotada puede seguir apareciendo con `0` en mano. El código de la caja no es una columna: abre la caja para verlo.

### Filtrar la lista

| Filtro | Opciones |
| - | - |
| **Insumo** | **Todos los insumos**, o cualquier insumo por nombre y SKU (activo o no, porque las existencias pueden contener un insumo retirado). |
| **Bodega** | **Todas las bodegas**, o una bodega por nombre (activa o no). |

Solo ves cajas de las bodegas a las que tienes acceso. La lista muestra hasta 50 cajas, de la más antigua a la más reciente, y no tiene página siguiente: si esperas más, acótala con los filtros.

### Estados y mensajes

| Mensaje | Significado |
| - | - |
| **Cargando existencias…** | La lista está cargando. |
| **Ninguna caja coincide con esta vista.** | Ninguna caja de tus bodegas coincide con los filtros. |
| **No tienes bodegas asignadas. Pide a un administrador que te dé acceso.** | Tu acceso no incluye ninguna bodega, así que no puede aparecer nada. Un administrador lo cambia en [Equipo](/docs/es/account/team). |
| **Tu cuenta no tiene permiso para esta acción.** | No tienes `inventory.read`. |

### Accesos en la parte superior de la pantalla

| Enlace | Abre | Guía |
| - | - | - |
| **Recibir** | La pantalla de recepción. Solo aparece para quienes pueden recibir. | [Recibir existencias](/docs/es/inventory/receive) |
| **Escanear un código** | El buscador de cajas. | [Cajas y etiquetas](/docs/es/inventory/boxes) |
| **Uso por box o área** | Lo que salió de las existencias hacia cada box o área. | [Registrar consumo y trasladar cajas](/docs/es/inventory/use-and-moves) |
| **Reposición** | Los insumos bajo su mínimo. | [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts) |
| **Alertas de existencias** | Alertas de existencias bajas y de vencimiento. | [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts) |
| **Retiro de lote** | Todas las cajas de un lote. | [Retiro de lote](/docs/es/inventory/lot-recall) |
| **Conteos** | Conteos pendientes, en curso y sus diferencias. | [Conteos](/docs/es/inventory/counts) |
| **Correcciones de existencias** | Correcciones que esperan aprobación. | [Correcciones](/docs/es/inventory/corrections) |

## Saldos: en mano, reservado y disponible

Cada caja tiene dos contadores, ambos calculados a partir del registro:

* **En mano** (`onHand`): las unidades que hay en la caja. Recibir las suma; consumir, despachar y las correcciones de baja las restan. Nunca puede quedar bajo cero.
* **Reservado** (`reserved`): las unidades de la caja apartadas para pedidos aprobados. Reservar nunca cambia lo que hay en mano.
* **Disponible** (`available`): `onHand` menos `reserved`. La asignación de pedidos solo reserva unidades disponibles, y separar parte de una caja solo toma unidades disponibles.

Las cantidades siempre están en la unidad base del insumo (la que se define en [Insumos del catálogo](/docs/es/catalog/items)), mostrada en tu idioma, por ejemplo `24 × Caja`. La unidad se bloquea cuando el insumo se activa en el catálogo (una recepción también la bloquea si aún no lo estaba), y cada caja conserva la unidad con la que se recibió. Una caja cuya unidad guardada no se puede confirmar muestra sus números sin unidad y el aviso **La unidad de esta caja requiere revisión. Sus cantidades se muestran sin unidad hasta que alguien la revise.**

## Estados de una caja

| Estado | Etiqueta | Qué significa | Qué admite la caja |
| - | - | - | - |
| `active` | **Activa** | En uso en su bodega. | Consumos, traslados, separaciones, correcciones, conteos, reservas para pedidos y salir de uso. |
| `quarantine` | **En cuarentena** | Apartada para revisión o por un retiro de lote. | No admite consumos ni traslados y nunca se asigna a un pedido. Todavía se puede descartar, pero la consola no tiene un botón para eso. |
| `expired` | **Vencida** | Una persona la marcó como vencida. | No admite consumos ni traslados y nunca se asigna a un pedido. Todavía se puede descartar, pero la consola no tiene un botón para eso. |
| `depleted` | **Agotada** | Lo que tenía en mano llegó a cero por consumo o por una corrección de baja. | Nada. Su historial sigue visible. |
| `disposed` | **Dada de baja** | Descartada. Estado final. | Nada. |
| `in_transit` | **En tránsito** | Despachada para un pedido y aún no recibida en el destino. | Nada hasta que se confirme la recepción. |

```mermaid theme={null}
stateDiagram-v2
    state "Activa" as Active
    state "En cuarentena" as Quarantined
    state "Vencida" as Expired
    state "Agotada" as UsedUp
    state "Dada de baja" as Disposed
    state "En tránsito" as InTransit
    [*] --> Active: Recibida
    Active --> UsedUp: En mano llega a cero
    Active --> Quarantined: Cuarentena o retiro de lote
    Active --> Expired: Marcar como vencida
    Active --> Disposed: Descartar
    Quarantined --> Disposed: Descartar
    Expired --> Disposed: Descartar
    Active --> InTransit: Pedido despachado
    InTransit --> Active: Recepción aceptada o disputada
    InTransit --> Quarantined: Recepción disputada y retenida
```

<Warning>
  Una caja no cambia de estado sola cuando pasa su fecha de vencimiento. Sigue **Activa**, pero desde el día siguiente a su vencimiento (UTC) ya no se puede consumir, trasladar ni separar, y los pedidos nunca la reservan. Sácala de uso con **Marcar como vencida**, como se explica en [Cajas y etiquetas](/docs/es/inventory/boxes).
</Warning>

## El registro de movimientos

El registro es la única fuente de verdad de las existencias. Cada movimiento guarda su tipo, la caja, el insumo, el cambio con signo en lo que hay en mano (y en lo reservado cuando corresponde), quién lo registró, cuándo ocurrió (según el reloj del servidor), la bodega de la que salió o a la que entró y, si se indicó, un motivo. Un error se corrige con un movimiento nuevo que lo compensa, nunca editando uno anterior. Los movimientos de una caja se ven en la pantalla de la caja; revisa [Cajas y etiquetas](/docs/es/inventory/boxes).

| Tipo | Etiqueta en la caja | Se crea cuando | En mano | Reservado |
| - | - | - | - | - |
| `receive` | **Recibido** | Alguien recibe una entrega ([Recibir existencias](/docs/es/inventory/receive) u [Operaciones por WhatsApp](/docs/es/whatsapp/operations)). También cuando una caja despachada para un pedido se acepta en la bodega de destino. | Suma | Sin cambio |
| `reserve` | **Reservado** | Se asigna un pedido aprobado y el sistema aparta unidades de una caja para él. También cuando la preparación del pedido separa sus unidades en un contenedor nuevo. | Sin cambio | Suma |
| `release` | **Liberado** | Se libera una reserva: se deshace una asignación, el sistema limpia una asignación atascada o la preparación pasa las unidades del pedido a un contenedor nuevo. | Sin cambio | Resta |
| `pick` | **Tomado para el pedido** | Se escanea una caja reservada durante la preparación de un pedido ([Preparar y despachar un pedido](/docs/es/deliveries/picking)). | Sin cambio | Sin cambio |
| `dispatch` | **Despachado** | Se despacha el pedido. La caja pasa a **En tránsito**. | Resta | Resta |
| `transfer_out` | **Salida por traslado** | Se traslada una caja completa a otra bodega (se registra en el origen). | Sin cambio | Sin cambio |
| `transfer_in` | **Entrada por traslado** | El mismo traslado, registrado en el destino. | Sin cambio | Sin cambio |
| `split_out` | **Separación (salida)** | Se separa parte de una caja en un contenedor nuevo (se registra en la caja original). | Resta | Sin cambio |
| `split_in` | **Separación (entrada)** | La misma separación, registrada en el contenedor nuevo. | Suma | Sin cambio |
| `consume` | **Consumido**, o **Entregado** cuando se entregó a un box o área | Alguien registra un consumo o una salida de una caja ([Registrar consumo y trasladar cajas](/docs/es/inventory/use-and-moves) o WhatsApp). | Resta | Sin cambio |
| `return` | **Devuelto** | Una caja despachada cuya recepción se disputó vuelve a su bodega de origen, activa o en cuarentena ([Confirmar la entrega, recibir y cerrar](/docs/es/deliveries/delivery-and-receipt)). | Suma | Sin cambio |
| `adjust_gain` | **Corrección (alta)** | Una corrección o un conteo encuentra más de lo registrado ([Correcciones](/docs/es/inventory/corrections), [Conteos](/docs/es/inventory/counts)). | Suma | Sin cambio |
| `adjust_loss` | **Corrección (baja)** | Una corrección o un conteo encuentra menos de lo registrado. En cero, la caja pasa a **Agotada**. | Resta | Sin cambio |
| `expire` | **Vencido** | Alguien marca la caja como vencida. | Sin cambio | Sin cambio |
| `quarantine` | **En cuarentena** | Alguien pone la caja en cuarentena, o un [retiro de lote](/docs/es/inventory/lot-recall) la retiene. | Sin cambio | Sin cambio |
| `dispose` | **Desechado** | Alguien descarta la caja. | Sin cambio | Sin cambio |

Un consumo que usa la última unidad también deja la caja **Agotada**. Los traslados, los cambios de estado y las tomas para pedido registran un cambio de `0`: la caja conserva sus unidades, solo cambia su lugar o su estado.

## FEFO y FIFO

Cuando se asigna un pedido aprobado, muveya reserva unidades caja por caja en un orden fijo:

* **FEFO** (lo primero que vence es lo primero que sale) se aplica cuando alguna caja elegible del insumo tiene fecha de vencimiento. Primero van las cajas que vencen antes; las cajas sin vencimiento van al final; los empates se resuelven por fecha de recepción.
* **FIFO** (lo primero que entra es lo primero que sale) se aplica en los demás casos. Primero va la recepción más antigua.

Solo son elegibles las cajas en estado **Activa** cuya fecha de vencimiento no ha pasado, en la bodega de origen y con la unidad que espera el pedido, y solo se reservan sus unidades disponibles. El orden lo calcula el servidor y siempre es el mismo. Cuando tú consumes o trasladas una caja, eliges la caja al escanearla; la consola no sugiere ninguna. No hay una acción en la consola para cambiar ese orden en una asignación.

## Permisos

Los permisos de inventario se otorgan uno por uno en [Equipo](/docs/es/account/team). Ningún rol los da automáticamente: un propietario o un administrador también los necesita para ver o cambiar existencias. Revisa [Roles y permisos](/docs/es/account/roles-and-permissions).

| Permiso | Etiqueta en Equipo | Qué permite |
| - | - | - |
| `inventory.read` | **Ver inventario** | Ver la lista de existencias, abrir y escanear cajas, leer movimientos, uso por box o área, retiro de lote, reposición, alertas, conteos y correcciones. Lo necesitan todas las pantallas de inventario salvo **Recibir**. |
| `inventory.receive` | **Recibir entregas** | Recibir existencias en una bodega. |
| `inventory.consume` | **Registrar consumo** | Registrar un consumo o una salida de una caja, y atribuir después una salida anterior. |
| `inventory.transfer` | **Trasladar cajas entre bodegas** | Trasladar una caja completa a otra bodega y separar parte de una caja en un contenedor nuevo. |
| `inventory.adjust` | **Ajustar y contar stock** | Correcciones, conteos, mínimos, decidir correcciones, sacar una caja de uso y poner un lote en cuarentena. **Incluye** `inventory.receive`, `inventory.consume` e `inventory.transfer`. |

<Note>
  `inventory.adjust` no incluye `inventory.read`. Otorga ambos a quien deba ver lo que corrige.
</Note>

Cada permiso aplica solo dentro del **acceso a bodegas** del miembro (todas las bodegas o una lista específica). Una caja de una bodega fuera de ese acceso se comporta exactamente como si no existiera: al escanear su código, la pantalla dice que no encontró la caja.

Trasladar una caja, sacar una caja de uso y poner un lote en cuarentena son acciones marcadas como sensibles. En la versión actual el segundo factor es opcional y no las bloquea; revisa [Seguridad de la cuenta](/docs/es/account/security).

## Mapa de las pantallas de inventario

| Pantalla | Ruta | Qué haces ahí | Guía |
| - | - | - | - |
| **Existencias** | `/inventory` | Recorrer cajas y saldos. | Esta página |
| **Recibir** | `/inventory/receive` | Recibir una entrega en una caja nueva. | [Recibir existencias](/docs/es/inventory/receive) |
| **Escanear** | `/inventory/scan` | Encontrar una caja por su código. | [Cajas y etiquetas](/docs/es/inventory/boxes) |
| Caja (con su código como título) | `/inventory/boxes/:boxId` | Ver una caja, imprimir su etiqueta, consumir, trasladar, separar, corregir o sacarla de uso. | [Cajas y etiquetas](/docs/es/inventory/boxes) |
| **Uso por box o área** | `/inventory/usage` | Revisar las salidas por box o área y atribuirlas. | [Registrar consumo y trasladar cajas](/docs/es/inventory/use-and-moves) |
| **Retiro de lote** | `/inventory/lots` | Encontrar todas las cajas de un lote y ponerlo en cuarentena. | [Retiro de lote](/docs/es/inventory/lot-recall) |
| **Reposición** | `/inventory/replenishment` | Insumos bajo su mínimo. | [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts) |
| **Mínimo por bodega** | `/inventory/replenishment/policy` | Definir mínimos y umbrales de aprobación. | [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts) |
| **Alertas de existencias** | `/inventory/alerts` | Alertas de existencias bajas y de vencimiento. | [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts) |
| **Conteos** | `/inventory/counts` | Conteos pendientes, en curso y diferencias. | [Conteos](/docs/es/inventory/counts) |
| **Contar un insumo** | `/inventory/count` | Contar las cajas de un insumo en una bodega. | [Conteos](/docs/es/inventory/counts) |
| **Conteo de** una bodega | `/inventory/count-campaigns/:campaignId` | Seguir una campaña de conteo de una bodega. | [Conteos](/docs/es/inventory/counts) |
| **Correcciones de existencias** | `/inventory/approvals` | Aprobar, rechazar o retirar correcciones. | [Correcciones](/docs/es/inventory/corrections) |

**Reposición** y **Correcciones de existencias** también aparecen en la navegación principal.

## Leer el inventario por API o MCP

Los mismos saldos y el mismo registro se pueden leer con una clave de API que tenga el scope `inventory:read`: `GET /v1/inventory/balances`, `GET /v1/inventory/boxes/{boxId}`, `GET /v1/inventory/boxes/{boxId}/balance` y `GET /v1/inventory/boxes/{boxId}/movements`. Son de solo lectura. Revisa [API para desarrolladores](/docs/es/api-reference/introduction). Por MCP, la herramienta `inventory.check` devuelve lo que hay en mano, reservado y disponible de un insumo; revisa [Herramientas MCP](/docs/es/mcp/tools).

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Recibir existencias" icon="truck-ramp-box" href="/docs/es/inventory/receive">
    Convierte una entrega en cajas etiquetadas.
  </Card>

  <Card title="Cajas y etiquetas" icon="box-open" href="/docs/es/inventory/boxes">
    Escanea, revisa, separa, etiqueta y saca de uso una caja.
  </Card>

  <Card title="Registrar consumo y trasladar cajas" icon="arrow-right-arrow-left" href="/docs/es/inventory/use-and-moves">
    Salidas, boxes y áreas, atribución y traslados.
  </Card>

  <Card title="Bodegas" icon="warehouse" href="/docs/es/locations/warehouses">
    Bodegas centrales y express.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.