> ## 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.

# Correcciones de existencias

> Corrige lo que contiene una caja según lo que hay en el estante, y revisa, aprueba, rechaza o retira las correcciones que necesitan a una segunda persona

Una **corrección** indica que el registro estaba equivocado: la caja en el estante tiene más o menos unidades de las que muveya dice. Una corrección nunca edita un movimiento anterior. Agrega al registro de movimientos un asiento nuevo, con signo, que compensa la diferencia, así el historial siempre muestra lo que se registró primero y lo que lo corrigió.

Las correcciones pequeñas se aplican en cuanto las registras. Una corrección por encima de su **umbral de aprobación** no se aplica: espera en **Correcciones de existencias** hasta que otra persona con permiso la apruebe desde su propia sesión.

## Quién puede hacerlo

| Acción | Permiso (etiqueta en la consola) |
| - | - |
| Ver una caja y la lista de **Correcciones de existencias** | `inventory.read` (**Ver inventario**) |
| Registrar una corrección en una caja | `inventory.adjust` (**Ajustar y contar stock**) |
| Aprobar o rechazar una corrección pendiente | `inventory.adjust`, y no haberla solicitado tú |
| Retirar una corrección pendiente | La persona que la solicitó, mientras siga teniendo `inventory.adjust` |
| Cambiar el umbral de aprobación de un insumo en una bodega | `inventory.adjust` (consulta [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts)) |

Cada acción también se limita a las bodegas a las que tienes acceso: nunca ves ni decides una corrección de una caja de otra bodega.

<Note>
  `inventory.adjust` incluye recibir, registrar consumo y trasladar cajas, pero **no** incluye `inventory.read`. Un miembro que corrige existencias necesita ambos permisos para abrir las pantallas que listan cajas. Los permisos se explican en [Roles y permisos](/docs/es/account/roles-and-permissions).
</Note>

## Corregir una caja

El formulario de corrección está en la página de la caja. Solo lo ven los miembros con `inventory.adjust`, y solo mientras la caja está **Activa**: una caja en cuarentena, vencida, dada de baja, agotada o en tránsito no admite correcciones.

<Steps>
  <Step title="Abre la caja">
    Ve a **Inventario** y selecciona la caja en la lista, o usa **Escanear un código** y lee su etiqueta (consulta [Cajas y etiquetas](/docs/es/inventory/boxes)). La página es `console.muveya.com/inventory/boxes/` seguida de la caja.
  </Step>

  <Step title="Completa Corregir esta caja">
    En la sección **Corregir esta caja**, elige la **Corrección**, escribe la **Cantidad** y elige el **Motivo**.
  </Step>

  <Step title="Regístrala">
    Selecciona **Registrar corrección**. El botón queda deshabilitado hasta que la cantidad sea un número entero de al menos 1.
  </Step>

  <Step title="Lee el resultado">
    Debajo del botón, el formulario dice **Corrección registrada.** cuando la corrección se aplicó, o **Enviada para aprobación. Otra persona con permiso para corregir existencias debe aprobarla.** con el enlace **Ver correcciones de existencias** cuando debe esperar a una segunda persona.
  </Step>
</Steps>

### Campos

| Campo | Opciones y reglas |
| - | - |
| **Corrección** | **Restar del registro** (una baja, la opción predeterminada) o **Sumar al registro** (un alta). |
| **Cantidad** | Número entero de 1 a 1.000.000, en la unidad base del insumo (la misma unidad que muestra **En mano** en la caja). Una baja nunca puede dejar la caja por debajo de cero. |
| **Motivo** | Uno de los códigos de motivo de abajo. Obligatorio. El predeterminado es **Corrección de conteo**. |

Junto al formulario, el enlace **Contar este insumo aquí** abre un conteo rápido de ese insumo en la bodega de la caja. Si no tienes certeza de cuántas unidades hay realmente, cuéntalas en lugar de estimar: consulta [Conteos físicos](/docs/es/inventory/counts).

Si la misma corrección llega dos veces a muveya (un doble toque o un reintento tras perder la conexión), se registra una sola vez y el formulario dice **Ya estaba registrado.** Después de una corrección exitosa la cantidad se borra, y la siguiente corrección que registres se trata como nueva.

## Motivos

Una corrección siempre lleva un código de motivo. La consola ofrece una lista cerrada, para que todas las correcciones se puedan comparar entre sí. La misma lista se usa para las diferencias de conteo.

| Código de motivo | Etiqueta en la consola |
| - | - |
| `count_correction` | **Corrección de conteo** |
| `damaged` | **Dañado** |
| `unrecorded_use` | **Uso no registrado** |
| `other` | **Otro** |

El motivo queda guardado en el movimiento del registro (y en la solicitud pendiente, cuando la hay). Una corrección no tiene campo de texto libre.

## Cuándo una corrección necesita a una segunda persona

Cada insumo en cada bodega tiene un **umbral de aprobación efectivo**. Una corrección cuya cantidad es **mayor** que ese umbral no se aplica: se convierte en una solicitud pendiente.

| Situación | Umbral efectivo | Resultado |
| - | - | - |
| No hay umbral definido para el insumo en esa bodega | 100 | Una corrección de 100 se aplica; una de 101 espera. |
| Umbral definido en el formulario de mínimo (0 a 100) | El valor definido | Con 5, una corrección de 5 se aplica; una de 6 espera. |
| Umbral definido en 0 | 0 | Toda corrección espera. |
| El insumo está marcado como **Insumo de alto valor** en el catálogo | 0 | Toda corrección espera, diga lo que diga el umbral. |
| muveya no puede leer el insumo | 0 | Toda corrección espera. |

Un umbral solo puede hacer la regla más estricta: ningún ajuste permite una corrección de más de 100 sin una segunda persona. El umbral se define en el campo **Umbral de aprobación** del formulario de mínimo, descrito en [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts). En las diferencias de conteo, la cantidad que se compara es la diferencia entre lo contado y lo esperado.

Otras dos reglas se aplican a las correcciones pendientes:

* **Una a la vez por caja.** Mientras una corrección de una caja espera, otra corrección de la misma caja que también necesite aprobación se rechaza con **Esta caja ya tiene una corrección esperando aprobación.**
* **Lo que vio quien la solicitó queda congelado.** La solicitud guarda la cantidad en mano de la caja, su último movimiento físico y el umbral vigente al momento de crearla. La aprobación solo se aplica si la caja no cambió físicamente desde entonces.

```mermaid theme={null}
flowchart TD
  A[Registrar corrección] --> B{¿Cantidad sobre el umbral?}
  B -- No --> C[Se escribe el movimiento de corrección]
  B -- Sí --> D[Pendiente en Correcciones de existencias]
  D --> E{Otra persona decide}
  E -- Aprueba, caja sin cambios --> C
  E -- Aprueba, caja cambió --> F[Desactualizada: no se escribe nada]
  E -- Rechaza --> G[Rechazada: no se escribe nada]
  D -- Quien la solicitó la retira --> H[Retirada: no se escribe nada]
```

## La pantalla Correcciones de existencias

Selecciona **Correcciones de existencias** en la navegación principal, o el enlace **Correcciones de existencias** en la pantalla **Existencias**. La página es `console.muveya.com/inventory/approvals`. Su descripción dice: "Las correcciones por encima de su umbral esperan aquí hasta que otra persona con permiso las apruebe."

Todos los miembros ven la entrada; la lista solo carga para los miembros con `inventory.read`, y solo para las bodegas a las que tienen acceso.

### Filtro y columnas

Usa **Mostrar** para cambiar entre **Pendientes** (la opción predeterminada) y **Decididas**. Las solicitudes se listan de la más reciente a la más antigua, de 20 en 20. Cuando hay más, la pantalla dice **Hay más solicitudes de las que se muestran. Decide estas para ver las siguientes.**

| Columna | Qué muestra |
| - | - |
| **Insumo** | El nombre y el SKU del insumo, por ejemplo `Guantes de nitrilo M · GLV-NIT-M`. |
| **Bodega** | La bodega de la caja. |
| **Caja** | El código impreso de la caja, por ejemplo `BX-000123`. |
| **Cambio** | La cantidad con signo y la unidad, por ejemplo `−12 Unidad` para una baja o `+3 Unidad` para un alta. |
| **Origen** | **Corrección** para una corrección registrada en la página de la caja, o **Conteo: contado 88, esperado 100** para una diferencia de conteo. |
| **Motivo** | La etiqueta del motivo. |
| **Solicitado por** | El nombre de quien la solicitó, o **Un miembro del equipo** cuando el nombre no está disponible. |
| **Cuándo** | Cuándo se solicitó la corrección. |
| **Decisión** | Lo que puedes hacer, o lo que se decidió. |

### Qué te ofrece la columna Decisión

| Eres | Ves |
| - | - |
| Un miembro con `inventory.adjust` que no la solicitó | **Aprobar** y **Rechazar** |
| Quien la solicitó | **Esperando a otra persona** y **Retirar** |
| Un miembro sin `inventory.adjust` | **Solo un miembro que puede corregir existencias la decide** |

### Aprobar

<Steps>
  <Step title="Revisa la solicitud">
    Lee el insumo, la caja, el cambio, el origen y el motivo. Si puedes, mira la caja en el estante.
  </Step>

  <Step title="Selecciona Aprobar">
    muveya vuelve a comprobar, en ese momento, que la caja sigue activa, en la misma bodega y sin movimientos físicos desde la solicitud. En un conteo, también comprueba que el conteo siga en curso y que su ventana de medición siga siendo válida.
  </Step>

  <Step title="Lee el resultado">
    **Aprobada. La corrección quedó registrada.** La solicitud pasa a **Decididas** como **Aprobada por** seguido de tu nombre.
  </Step>
</Steps>

Si la caja cambió después de la solicitud, no se escribe nada: la solicitud queda desactualizada y ves **La caja cambió; hay que volver a solicitar la corrección o volver a contar.** Solo cuentan como cambio los movimientos físicos (recepciones, consumos, traslados, separaciones, tomas para un pedido, despachos, devoluciones, correcciones, cuarentena, vencimiento y baja). Reservar o liberar unidades para un pedido no desactualiza una solicitud.

### Rechazar

Selecciona **Rechazar**. Se abre un diálogo titulado **Rechazar esta corrección** con un campo opcional **Motivo (opcional)** de hasta 500 caracteres. Selecciona **Rechazar** otra vez para confirmar, o **Cancelar** para volver. El resultado es **Rechazada. No cambió nada en las existencias.**

El motivo del rechazo se guarda con la decisión y en la auditoría, pero la lista **Decididas** no lo muestra.

### Retirar

Si solicitaste la corrección y ya no hace falta (por ejemplo, encontraste las unidades que faltaban), selecciona **Retirar**. El resultado es **Retirada. No cambió nada en las existencias.** Solo quien la solicitó puede retirarla.

### Solicitudes decididas

| Se muestra como | Estado | Qué pasó |
| - | - | - |
| **Aprobada por** y un nombre | `approved` | Se escribió un movimiento de corrección. |
| **Rechazada por** y un nombre | `rejected` | No se escribió nada. |
| **Retirada** | `withdrawn` | Quien la solicitó la retiró. No se escribió nada. |
| **Desactualizada: la caja cambió** | `stale` | Alguien intentó aprobarla después de que la caja cambió. No se escribió nada; vuelve a solicitar la corrección o vuelve a contar la caja. |

Estados vacíos: **No hay nada esperando aprobación.** y **Todavía no hay correcciones decididas.**

## Separación de funciones

* **Dos personas, dos sesiones.** Quien aprueba es siempre la persona con sesión iniciada que selecciona **Aprobar**. Nadie puede ser designado como aprobador de antemano, y la solicitud no se envía a una persona específica: cualquier persona habilitada puede decidirla.
* **No puedes aprobar tu propia solicitud.** Si lo intentas (por ejemplo, desde otra pestaña), muveya lo rechaza con **No puedes aprobar tu propia solicitud.** y registra el intento rechazado en la auditoría.
* **Quien aprueba necesita la misma autoridad.** Debe tener `inventory.adjust` y acceso a la bodega de la caja.
* **Ambas personas quedan en el registro.** El movimiento de corrección indica a quien la solicitó como la persona que la registró y a quien aprobó como segunda persona.
* **Gana una sola decisión.** Si dos personas aprueban al mismo tiempo, se escribe una sola corrección. La otra persona ve **Alguien ya decidió esta solicitud.**

## Qué queda en el registro

* **Un movimiento de corrección.** Un alta se escribe como `adjust_gain` y aparece en **Movimientos** de la caja como **Corrección (alta)**; una baja se escribe como `adjust_loss` y aparece como **Corrección (baja)**. El movimiento lleva la cantidad, el código de motivo, la bodega, quién lo registró y, si fue aprobado, quién lo aprobó.
* **Nunca una edición.** Para deshacer una corrección equivocada, registra la corrección contraria con un motivo. La primera sigue en el historial.
* **Nada mientras espera.** Una solicitud pendiente, rechazada, retirada o desactualizada no escribe nada en el registro.
* **Una caja que llega a cero.** Una baja que deja la caja con 0 en mano la marca como **Agotada**. Una caja agotada no admite más movimientos, así que no se puede corregir después. Si más tarde aparecen unidades de esa caja, regístralas con **Recibir** (consulta [Recibir existencias](/docs/es/inventory/receive)).
* **Auditoría.** Cada paso deja un registro de auditoría:

| Acción de auditoría | Cuándo |
| - | - |
| `inventory.adjust` | Se escribió un movimiento de corrección (directo o tras la aprobación). |
| `inventory.adjust.requested` | Se envió una corrección para aprobación. |
| `inventory.adjust.approved` | Otra persona la aprobó. |
| `inventory.adjust.rejected` | Otra persona la rechazó. |
| `inventory.adjust.withdrawn` | Quien la solicitó la retiró. |
| `inventory.adjust.stale` | Una aprobación encontró que la caja había cambiado. |
| `inventory.adjust.denied` | Alguien intentó aprobar su propia corrección. |

Los registros de auditoría solo llevan identificadores, cantidades, códigos de motivo y fechas, nunca costos ni datos de pacientes.

## Bajas y reservas

Una baja reduce lo que la caja tiene en mano. **No** cancela las unidades que la caja tiene apartadas para pedidos aprobados (su cantidad **Reservado**), y muveya nunca inventa unidades para cubrirlas.

* Una baja no puede ser mayor que la cantidad en mano de la caja. Una baja dentro del umbral se rechaza de inmediato con **La caja no tiene esa cantidad.**; una baja que espera aprobación se comprueba al aprobarla, y si la caja ya no tiene esa cantidad la solicitud termina desactualizada.
* Una baja puede dejar la caja con menos unidades en mano que las reservadas. En la pantalla **Existencias**, **Disponible** (en mano menos reservado) muestra entonces un número negativo: ese es el **déficit** que enfrentan esos pedidos.
* La pantalla **Reposición** (consulta [Reposición y alertas](/docs/es/inventory/replenishment-and-alerts)) cuenta una caja con déficit como cero unidades utilizables, nunca como un número negativo, para que el excedente de otra caja no lo oculte.
* Una caja se despacha completa, así que una caja cuya cantidad en mano ya no coincide con lo que un pedido reservó no se puede despachar para ese pedido (consulta [Preparar y despachar un pedido](/docs/es/deliveries/picking)). Revisa los pedidos que dependen de esa caja en **Pedidos** (consulta [Crear y seguir pedidos](/docs/es/orders/create-and-track)).

## Qué puede salir mal

| Mensaje | Código | Qué hacer |
| - | - | - |
| **Esta caja ya tiene una corrección esperando aprobación.** | `inventory.adjustment_already_pending` | Abre **Correcciones de existencias**. Quien la solicitó puede retirarla; cualquier otra persona habilitada puede aprobarla o rechazarla. Luego registra la corrección otra vez. |
| **La caja no tiene esa cantidad.** | `inventory.insufficient_stock` | Revisa **En mano** en la caja. Cuenta la caja si el número parece incorrecto. |
| **No puedes aprobar tu propia solicitud.** | `inventory.second_actor_required` | Pide a otro miembro con **Ajustar y contar stock** que la decida. |
| **La caja cambió; hay que volver a solicitar la corrección o volver a contar.** | `inventory.adjustment_request_stale` | Revisa los movimientos de la caja y luego vuelve a registrar la corrección o cuenta la caja. |
| **Alguien ya decidió esta solicitud.** | `inventory.adjustment_request_not_pending` | Cambia **Mostrar** a **Decididas** para ver el resultado. |
| **Tu cuenta no tiene permiso para esta acción.** | `common.forbidden` | Te falta `inventory.read` o `inventory.adjust`. Pídelo a un administrador. |
| **Este registro no está disponible en la cuenta de clínica dental activa.** | `inventory.box_not_found`, `inventory.adjustment_request_not_found` | La caja o la solicitud no existe en tus bodegas. Revisa la clínica dental activa y tu acceso en el equipo. |
| **El registro cambió o ya existe. Revísalo antes de volver a intentar.** | Por ejemplo `inventory.box_state_conflict`, `inventory.measurement_unverified` | La caja ya no está activa o su unidad necesita revisión. Recarga la página de la caja antes de volver a intentar. |
| **Revisa los datos ingresados antes de volver a intentar.** | `common.invalid_request` | Revisa la cantidad y el motivo. |
| **No pudimos completar la solicitud. Intenta nuevamente.** | Cualquier otra falla | Vuelve a intentar. Si persiste, escribe a [team@muveya.com](mailto:team@muveya.com). |

<Note>
  Registrar una corrección y decidirla son acciones marcadas como sensibles. En la versión actual la verificación en dos pasos es opcional y no las bloquea. De todos modos puedes activarla en [Seguridad de la cuenta](/docs/es/account/security).
</Note>

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Resumen del inventario" icon="boxes-stacked" href="/docs/es/inventory/overview">
    Saldos de las cajas, estados y todos los movimientos del registro.
  </Card>

  <Card title="Cajas y etiquetas" icon="box" href="/docs/es/inventory/boxes">
    Encuentra una caja, lee sus movimientos y sácala de uso.
  </Card>

  <Card title="Conteos físicos" icon="clipboard-list" href="/docs/es/inventory/counts">
    Cuenta un insumo y convierte las diferencias en correcciones.
  </Card>

  <Card title="Reposición y alertas" icon="bell" href="/docs/es/inventory/replenishment-and-alerts">
    Define mínimos y el umbral de aprobación.
  </Card>

  <Card title="Roles y permisos" icon="user-shield" href="/docs/es/account/roles-and-permissions">
    Qué permite **Ajustar y contar stock**.
  </Card>

  <Card title="Crear y seguir pedidos" icon="cart-shopping" href="/docs/es/orders/create-and-track">
    Pedidos que tienen unidades reservadas.
  </Card>
</CardGroup>


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