> ## 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 de entregas

> Entiende la pantalla Entregas, los pasos de custodia desde un pedido aprobado hasta uno cerrado y quién puede dar cada paso.

Una **entrega** es el recorrido físico de un pedido aprobado: muveya reserva cajas de existencias para él, alguien las toma y las despacha desde la bodega de origen, alguien confirma la entrega y el destino las recibe y cierra el pedido. muveya registra cada paso como custodia de cajas completas, así que siempre puedes saber qué caja salió de qué bodega, quién la entregó y quién la recibió.

En la API y en el código este proceso se llama *fulfillment*. En la consola está en **Entregas**.

## Dónde encontrarla

* **Entregas**, en la navegación principal, abre `console.muveya.com/fulfillment`. La opción solo aparece para integrantes que tienen al menos un permiso de custodia (consulta [Permisos de cada paso](#permisos-de-cada-paso)).
* **Inicio** muestra las tarjetas **Pedidos por preparar**, **Entregas por confirmar**, **Pedidos por recibir** y **Pedidos por cerrar** cuando algo te espera. Cada tarjeta abre **Entregas**.
* En la página de un pedido, **Seguir la entrega** abre el detalle de custodia de ese pedido. Consulta [Crear y seguir pedidos](/docs/es/orders/create-and-track).

<Note>
  muveya no envía correos ni mensajes de WhatsApp cuando una entrega cambia de paso. Revisa **Inicio** y **Entregas** para ver lo que te espera.
</Note>

## La pantalla Entregas

La pantalla se titula **Entregas** ("Pedidos de tus clínicas por preparar, entregar, recibir o cerrar.") y muestra una sección por cada paso de custodia en el que participas. Solo ves las secciones que tus permisos permiten.

| Sección | Pedidos que lista (estado) | Se muestra a quien tiene | El enlace del pedido abre |
| - | - | - | - |
| **Por preparar** | `allocated`, `picking` | `fulfillment.pick` o `fulfillment.dispatch` | La pantalla de preparación, `/fulfillment/:orderId/pick` |
| **Por entregar** | `dispatched` | `delivery.confirm` | La pantalla de entrega, `/fulfillment/:orderId/delivery` |
| **Por recibir** | `delivered` | `receipt.confirm` | La pantalla de recepción, `/fulfillment/:orderId/receipt` |
| **Por cerrar** | `received`, `partially_fulfilled` | `fulfillment.close` | El detalle de custodia, `/fulfillment/:orderId` |
| **Problemas de entrega** | `exception` | `fulfillment.read` | El detalle de custodia, `/fulfillment/:orderId` |

Cada sección es una tabla con estas columnas:

| Columna | Qué muestra |
| - | - |
| **Pedido** | El número del pedido, por ejemplo `#1042`. Selecciónalo para abrir el paso. |
| **Estado** | El estado actual del pedido, con su etiqueta en la consola (consulta la tabla más abajo). |
| **Clínica** | La sede a la que pertenece el pedido. |
| **Entregar en** | La bodega de destino. |

Reglas de la lista:

* Ves los pedidos de las sedes incluidas en tu **Acceso a sedes**. Con **Todas las sedes de esta cuenta** ves los pedidos de todas.
* Cada sección muestra hasta 50 pedidos, del más reciente al más antiguo. Si hay más, la sección dice "Se muestran los primeros 50. Termina estos para ver el resto."
* Una sección vacía dice "No hay nada aquí por ahora."
* Si no tienes ningún permiso de custodia, la pantalla dice "No participas en las entregas. Pregunta al administrador de tu clínica si deberías preparar, entregar o recibir pedidos."

## El ciclo de custodia

Un pedido entra en custodia cuando se aprueba, ya sea por una persona en [Aprobación de pedidos](/docs/es/orders/approvals) o automáticamente por la [política de aprobación](/docs/es/orders/approval-policy). Desde ahí, el registro de custodia pasa por estos estados:

```mermaid theme={null}
stateDiagram-v2
    approved: Pedido aprobado
    allocating: Reservando existencias
    allocated: Existencias reservadas
    picking: En preparación
    dispatched: Despachado
    delivered: Entregado
    exception: Problema de entrega
    received: Recibido
    partially_fulfilled: Recibido en parte
    closed: Cerrado
    [*] --> approved
    approved --> allocating: reserva automática
    allocating --> allocated: todas las líneas reservadas
    allocating --> approved: faltan existencias, no se reserva nada
    allocated --> picking: primera caja escaneada
    picking --> dispatched: despacho
    dispatched --> delivered: entrega confirmada
    dispatched --> exception: problema de entrega informado
    delivered --> received: todas las cajas aceptadas
    delivered --> partially_fulfilled: al menos una caja disputada
    received --> closed: cierre
    partially_fulfilled --> closed: cierre
    closed --> [*]
```

| Estado | Etiqueta en la consola | Qué significa | Siguiente paso |
| - | - | - | - |
| `allocating` | **Reservando existencias** | muveya está reservando cajas para el pedido. Solo el registro de custodia tiene este estado: el pedido sigue mostrando **Aprobado**. | Automático. |
| `allocated` | **Existencias reservadas** | Todas las líneas del pedido tienen cajas reservadas. | Tomar las cajas. |
| `picking` | **En preparación** | Se escaneó al menos una caja reservada. | Tomar el resto y despachar. |
| `dispatched` | **Despachado** | Las cajas tomadas salieron de la bodega de origen. Están **En tránsito**. | Confirmar la entrega. |
| `delivered` | **Entregado** | Se confirmó la entrega en el destino. | Confirmar la recepción. |
| `exception` | **Problema de entrega** | Se informó un problema en lugar de una entrega normal. El pedido se detiene aquí. | Ninguno en la consola por ahora (consulta [Problemas de entrega](/docs/es/deliveries/delivery-and-receipt#cuando-se-informa-un-problema-de-entrega)). |
| `received` | **Recibido** | El destino aceptó todas las cajas. | Cerrar el pedido. |
| `partially_fulfilled` | **Recibido en parte** | El destino disputó al menos una caja, que volvió al origen. | Cerrar el pedido. |
| `closed` | **Cerrado** | La custodia terminó. | Ninguno. |

El estado del pedido sigue los mismos pasos (`allocated`, `picking`, `dispatched`, `delivered`, `exception`, `received`, `partially_fulfilled`, `closed`), así que las pantallas **Pedidos** y **Entregas** siempre coinciden (consulta [Crear y seguir pedidos](/docs/es/orders/create-and-track)).

### Paso 1: el sistema reserva las existencias

Nadie reserva existencias a mano. Cuando se aprueba un pedido, muveya lo reserva por su cuenta:

1. Para cada línea del pedido revisa las cajas utilizables de ese insumo: cajas en estado **Activa**, que no pasaron su fecha de vencimiento y que se miden en la misma unidad que la línea.
2. Si el pedido indica una bodega de origen (**Tomar existencias de**, en el pedido), solo cuentan las cajas de esa bodega.
3. Ordena las cajas por **FEFO** (primero en vencer, primero en salir: la fecha de vencimiento más cercana primero, las cajas sin vencimiento al final y luego la recepción más antigua) cuando al menos una caja candidata tiene fecha de vencimiento, y por **FIFO** (la recepción más antigua primero) en los demás casos.
4. Reserva de la primera caja, luego de la siguiente, hasta cubrir la cantidad de la línea. Una línea puede tomar de varias cajas, y una caja puede quedar reservada solo por una parte de su contenido.
5. La reserva es de todo o nada. Si alguna línea no se puede cubrir, muveya libera todo lo que había reservado para ese pedido y lo deja en **Aprobado**.

Estas reservas aparecen en el historial del pedido como movimientos **Reservado** hechos por **Muveya (automático)**.

<Warning>
  Si el pedido quedó con **Cualquier bodega central**, la reserva no se limita a una bodega: muveya ordena todas las cajas utilizables de ese insumo en la cuenta de clínica dental. Antes de preparar, revisa la columna **Tomar de** de la lista para ver dónde está realmente cada caja.
</Warning>

Si un pedido aprobado no se pudo reservar:

* No aparece en **Entregas**, y su página sigue diciendo "El pedido está pasando a su siguiente paso. Esta pantalla se actualiza sola en unos segundos."
* muveya vuelve a intentarlo cada vez que se aprueba otro pedido de la misma cuenta de clínica dental. Por ahora no hay un botón para reintentar en la consola.
* Recibe o mueve las existencias que faltan ([Recibir existencias](/docs/es/inventory/receive), [Registrar consumo y trasladar cajas](/docs/es/inventory/use-and-moves)). Si el pedido sigue en **Aprobado**, escribe a [team@muveya.com](mailto:team@muveya.com) con el número del pedido.

## Custodia por caja completa

muveya mueve la custodia una **caja completa** a la vez. Una caja (cualquier contenedor etiquetado con un código como `BX-000123`) se toma, se despacha, se entrega y se recibe como una sola unidad. En la práctica:

* **Una caja del tamaño del pedido** viaja tal como está.
* **Una caja que tiene más de lo que el pedido necesita** se divide al escanearla: muveya separa exactamente la cantidad reservada en un contenedor nuevo con su propia etiqueta, y solo ese contenedor viaja. El resto queda en la caja original, en su bodega. Consulta [Separar una caja al preparar](/docs/es/deliveries/picking#separar-una-caja-al-preparar).
* **La recepción es por caja.** El destino acepta o disputa cada caja completa. No se puede aceptar una parte de una caja. Si una caja llegó con menos unidades de las que indica su etiqueta, consulta [Cantidades parciales](/docs/es/deliveries/delivery-and-receipt#cantidades-parciales).
* **Mientras una caja viaja** está **En tránsito**. Ya no cuenta en la bodega de origen y no cuenta en la de destino hasta que se acepta.

Para saber cómo se etiquetan y siguen las cajas en general, consulta [Cajas y etiquetas](/docs/es/inventory/boxes).

## Permisos de cada paso

Cada paso de custodia tiene su propio permiso. Los permisos nunca se heredan del nombre de un rol: un integrante solo puede dar un paso si un administrador le otorgó ese permiso exacto en la pantalla **Equipo**. Consulta [Roles y permisos](/docs/es/account/roles-and-permissions).

| Permiso | Etiqueta en la pantalla Equipo | Qué permite | Parte |
| - | - | - | - |
| `fulfillment.read` | **Ver abastecimiento** | Abrir el detalle de custodia y ver **Problemas de entrega**. | Cualquiera |
| `fulfillment.pick` | **Preparar pedidos** | Abrir la pantalla de preparación, ver la lista y escanear cajas. | Origen |
| `fulfillment.dispatch` | **Despachar pedidos** | Despachar las cajas tomadas. | Origen |
| `delivery.confirm` | **Confirmar entrega** | Confirmar la entrega o informar un problema de entrega. | Origen |
| `receipt.confirm` | **Confirmar recepción** | Aceptar o disputar las cajas entregadas. | Destino |
| `fulfillment.close` | **Cerrar abastecimiento** | Cerrar un pedido recibido o recibido en parte. | Destino |

Algunas pantallas de la consola necesitan dos permisos juntos:

* **Despachar** se hace en la pantalla de preparación, que solo se abre con `fulfillment.pick`. Un integrante que solo tiene `fulfillment.dispatch` ve el pedido en **Por preparar**, pero no puede despacharlo desde la consola.
* **Recibir** caja por caja necesita `receipt.confirm` y `fulfillment.read`. Sin `fulfillment.read`, la pantalla de recepción dice "Para recibir caja por caja también necesitas permiso para ver entregas. Pídelo al administrador de tu clínica."
* **Cerrar** se hace en el detalle de custodia, que necesita `fulfillment.read`. Un integrante que solo tiene `fulfillment.close` no llega al botón **Cerrar pedido**.

<Info>
  Los pasos de custodia nunca piden verificación con la app de autenticación (TOTP).
</Info>

## Parte de origen y parte de destino

Cada entrega tiene dos partes, y muveya revisa cada paso según la parte a la que pertenece.

* **Parte de origen**: las personas que preparan, despachan y entregan las cajas. muveya compara su **Acceso a sedes** con la sede a la que pertenece la **bodega de origen**. Cuando el origen es una bodega central, o el pedido no indicó origen, compara con la sede del pedido.
* **Parte de destino**: las personas que reciben y cierran. muveya compara su **Acceso a sedes** con la sede a la que pertenece la **bodega de destino**, o con la sede del pedido cuando el destino es una bodega central.

Reglas adicionales:

* **Preparar y ver** se revisan contra la sede del pedido.
* **El acceso a bodegas importa en el origen.** Para escanear una caja, tu **Acceso a bodegas** debe incluir la bodega donde está la caja; una caja fuera de él se trata como "no reservada para este pedido". Despachar también necesita acceso a la bodega de cada caja.
* **Separación de funciones entre sedes.** Cuando las bodegas de origen y de destino pertenecen a dos sedes distintas, un integrante cuyo **Acceso a sedes** incluye la sede de origen no puede recibir ni cerrar ese pedido. muveya responde "Tu cuenta no tiene permiso para esta acción." Esta regla no bloquea a quienes tienen **Todas las sedes de esta cuenta**; en ese caso deciden solo sus permisos.
* Un pedido fuera de tus sedes se comporta como si no existiera: el detalle de custodia y la pantalla de recepción dicen "Esta entrega no existe o no puedes verla.", y las pantallas de preparación y de entrega dicen "Este registro no está disponible en la cuenta de clínica dental activa."

## Qué registra el sistema

| Paso | Movimientos registrados | Estado del pedido después | Registro de auditoría |
| - | - | - | - |
| Reserva | **Reservado** en cada caja (no cambia la cantidad disponible) | `allocated` | `fulfillment.allocated` |
| Preparación | **Tomado para el pedido** en cada caja (no cambia la cantidad); **Separación (salida)** y **Separación (entrada)** cuando se divide una caja | `picking` | `fulfillment.picked` |
| Despacho | **Despachado** en cada caja (la cantidad sale de la bodega de origen) | `dispatched` | `fulfillment.dispatched` |
| Entrega | Ninguno: las cajas siguen **En tránsito** | `delivered` o `exception` | `fulfillment.delivered` o `fulfillment.delivery_exception` |
| Recepción | **Recibido** en el destino por cada caja aceptada; **Devuelto** en el origen por cada caja disputada | `received` o `partially_fulfilled` | `fulfillment.received` o `fulfillment.received.disputed` |
| Cierre | Ninguno | `closed` | `fulfillment.closed` |

Al registro de movimientos solo se agregan filas: una caja disputada no se borra del despacho, sino que recibe un movimiento nuevo **Devuelto**. El detalle de custodia muestra todo esto para un pedido; consulta [Historial de custodia](/docs/es/deliveries/custody-history). Por ahora no hay una pantalla de auditoría en la consola.

Todas las acciones de custodia se pueden repetir sin riesgo. Despachar, confirmar una entrega, confirmar una recepción o cerrar un pedido por segunda vez no cambia nada: la pantalla responde que ya estaba registrado.

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Preparar y despachar" icon="barcode" href="/docs/es/deliveries/picking">
    Escanea las cajas reservadas, divide las cajas grandes y despacha el pedido.
  </Card>

  <Card title="Entrega y recepción" icon="clipboard-check" href="/docs/es/deliveries/delivery-and-receipt">
    Confirma la entrega, recibe o disputa cada caja y cierra el pedido.
  </Card>

  <Card title="Historial de custodia" icon="clock-rotate-left" href="/docs/es/deliveries/custody-history">
    Revisa quién hizo qué y cuándo, para auditorías y disputas.
  </Card>

  <Card title="Aprobación de pedidos" icon="check-double" href="/docs/es/orders/approvals">
    Cómo se aprueba un pedido y entra en custodia.
  </Card>

  <Card title="Cajas y etiquetas" icon="box" href="/docs/es/inventory/boxes">
    Códigos de caja, estados y movimientos de cada caja.
  </Card>

  <Card title="Roles y permisos" icon="user-shield" href="/docs/es/account/roles-and-permissions">
    Otorga los permisos de custodia y el acceso a sedes.
  </Card>
</CardGroup>


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