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

# Confirmar la entrega, recibir y cerrar

> Confirma la entrega de un pedido despachado o informa un problema, acepta o disputa cada caja entregada y cierra el pedido.

Después del despacho, una entrega necesita tres actos más, a cargo de dos partes distintas:

1. La **parte de origen** confirma que entregó las cajas, o informa un problema de entrega.
2. La **parte de destino** revisa cada caja y la acepta o la disputa.
3. La **parte de destino** cierra el pedido.

Para saber quién es cada parte, consulta [Parte de origen y parte de destino](/docs/es/deliveries/overview#parte-de-origen-y-parte-de-destino).

## Confirmar la entrega

### Quién puede hacerlo

* Permiso `delivery.confirm` (**Confirmar entrega**).
* La sede de origen en tu **Acceso a sedes** (la sede del pedido cuando el origen es una bodega central o el pedido no indicó origen).
* Para ver las cajas entregadas por código también necesitas `fulfillment.read`. Sin él, la pantalla lista los insumos pedidos.

Sin `delivery.confirm` la pantalla dice "No puedes confirmar entregas. Pide el permiso al administrador de tu clínica."

### Dónde

* En **Entregas**, sección **Por entregar**, selecciona el número del pedido. La sección lista los pedidos en **Despachado** (`dispatched`).
* Justo después de despachar, el enlace **Confirmar la entrega** en la pantalla de preparación.
* Desde el detalle de custodia, **Confirmar la entrega**.
* Ruta directa: `console.muveya.com/fulfillment/:orderId/delivery`.

La pantalla se titula **Entrega del pedido #1042**. En **Qué se entrega** muestra las cajas (**Código de caja**, **Insumo**, **Cantidad**) o, sin `fulfillment.read`, los insumos pedidos (**Insumo** como "nombre · SKU", **Cantidad** como "10 × unidad").

### Confirmar una entrega sin problemas

<Steps>
  <Step title="Revisa las cajas">
    Compara las cajas que entregas con **Qué se entrega**.
  </Step>

  <Step title="Confirma">
    Selecciona **Confirmar entrega**. No hay un diálogo de confirmación adicional.
  </Step>

  <Step title="Lee la respuesta">
    "Entrega confirmada. Ahora el destino confirma la recepción." El pedido pasa a **Entregado** (`delivered`) y aparece en **Por recibir** para la parte de destino.
  </Step>
</Steps>

### Informar un problema de entrega

Úsalo cuando las cajas no se pudieron entregar como corresponde.

<Steps>
  <Step title="Abre el formulario del problema">
    Selecciona **Informar un problema**.
  </Step>

  <Step title="Di qué pasó">
    Elige una opción en **Qué pasó** (obligatorio) y agrega contexto en **Detalles (opcional)**, hasta 2000 caracteres.
  </Step>

  <Step title="Envía y confirma">
    Selecciona **Informar problema**. Un diálogo advierte: "El pedido se detiene como problema de entrega y su resolución queda pendiente con el dueño de la clínica." Selecciona **Informar problema** otra vez para enviarlo, o **Volver** para dejar el pedido como está.
  </Step>
</Steps>

| Opción en **Qué pasó** | Código guardado |
| - | - |
| **No se pudo entregar** | `not_delivered` |
| **Llegó dañado** | `damaged` |
| **Fue a un lugar equivocado** | `wrong_destination` |
| **Otra cosa** | `other` |

La respuesta es "El problema quedó registrado. El pedido ahora es un problema de entrega." El pedido pasa a **Problema de entrega** (`exception`).

### Qué registra el sistema

* Un registro de entrega con quién confirmó, cuándo, qué cajas se entregaron y, si hubo un problema, el código del motivo y los detalles. Se escribe una sola vez y no se puede cambiar: volver a confirmar solo dice "Esta entrega ya estaba registrada."
* Ningún movimiento de existencias. Las cajas siguen **En tránsito** hasta que el destino las recibe.
* El estado del pedido (`delivered` o `exception`) y el registro de auditoría `fulfillment.delivered` o `fulfillment.delivery_exception`.

### Cuando se informa un problema de entrega

Un problema de entrega detiene el pedido:

* Sus cajas siguen **En tránsito**. No cuentan ni en la bodega de origen ni en la de destino.
* El pedido no se puede recibir ni cerrar. El detalle de custodia dice "La resolución está pendiente con el dueño de la clínica. Por ahora no se puede hacer nada más aquí."
* Aparece en **Problemas de entrega** para quienes tienen `fulfillment.read`.

Por ahora no hay una pantalla para resolver un problema de entrega en la consola, y un problema informado no se puede retirar. El propietario de la cuenta debe escribir a [team@muveya.com](mailto:team@muveya.com) con el número del pedido y lo que pasó.

## Recibir el pedido

### Quién puede hacerlo

* Permiso `receipt.confirm` (**Confirmar recepción**) y permiso `fulfillment.read` (**Ver abastecimiento**).
* La sede de destino en tu **Acceso a sedes** (la sede del pedido cuando el destino es una bodega central).
* Si las bodegas de origen y de destino pertenecen a dos sedes distintas, tu **Acceso a sedes** no debe incluir la sede de origen, salvo que tengas **Todas las sedes de esta cuenta**.

La pantalla explica qué falta: "No puedes recibir pedidos. Pide el permiso al administrador de tu clínica." o "Para recibir caja por caja también necesitas permiso para ver entregas. Pídelo al administrador de tu clínica."

### Dónde

* En **Entregas**, sección **Por recibir**, selecciona el número del pedido. La sección lista los pedidos en **Entregado** (`delivered`).
* Desde el detalle de custodia, **Recibir el pedido**.
* Ruta directa: `console.muveya.com/fulfillment/:orderId/receipt`.

La pantalla se titula **Recibir el pedido #1042**. Muestra una tarjeta por cada caja entregada, con su código, su insumo y "Cantidad: 10". Si el pedido no está en **Entregado**, dice "Este pedido todavía no se entregó, así que no hay nada por recibir."

### Pasos

<Steps>
  <Step title="Revisa cada caja">
    La pantalla te lo recuerda: "Revisa cada caja. Acepta lo que llegó bien; disputa lo que llegó dañado o falta." Todas las cajas empiezan en **Aceptar**.
  </Step>

  <Step title="Disputa las cajas con problemas">
    Para cada caja con un problema, cambia **Decisión para la caja BX-000123** a **Disputar** y completa sus campos (consulta la tabla más abajo).
  </Step>

  <Step title="Describe la evidencia">
    En cuanto disputas una caja, aparece **Evidencia del problema**, que es obligatoria: "Describe lo que viste y dónde están las fotos. Es obligatoria cuando disputas una caja." Hasta 2000 caracteres.
  </Step>

  <Step title="Confirma">
    Selecciona **Confirmar recepción**. La respuesta es "Recepción confirmada: se aceptaron todas las cajas." o "Recepción confirmada con cajas disputadas. Vuelven a la bodega de donde salieron." Un enlace abre la página de seguimiento del pedido.
  </Step>
</Steps>

Campos de una caja disputada:

| Campo | Valores | Valor inicial |
| - | - | - |
| **Motivo de la caja BX-000123** | **Dañada** (`damaged`), **Falta** (`missing`), **Insumo equivocado** (`wrong_item`), **Vencida** (`expired`), **Otro** (`other`) | **Dañada** |
| **Dejar la caja BX-000123 en cuarentena cuando vuelva** | Marcado o no | Marcado |
| **Nota para la caja BX-000123 (opcional)** | Texto libre, hasta 2000 caracteres | Vacío |

<Note>
  Por ahora no se pueden adjuntar fotos en la consola. Indica en la evidencia dónde se guardan las fotos.
</Note>

### Qué pasa con cada caja

| Decisión | Movimiento de existencias | Dónde termina la caja | Estado de la caja |
| - | - | - | - |
| **Aceptar** | **Recibido**: la cantidad se suma a la bodega de destino. | La bodega de destino. | **Activa** |
| **Disputar** con cuarentena marcada | **Devuelto**: la cantidad vuelve a sumarse en la bodega de origen, con el código del motivo. | La bodega de origen. | **En cuarentena** (excluida de reservas y consumos) |
| **Disputar** sin cuarentena | **Devuelto**, igual que arriba. | La bodega de origen. | **Activa** |

Una caja disputada queda registrada de vuelta en la bodega de donde salió, así que envíala de regreso físicamente. El movimiento original **Despachado** sigue en el registro: la devolución es un movimiento nuevo que compensa, nunca una edición. Para revisar después una caja en cuarentena, consulta [Cajas y etiquetas](/docs/es/inventory/boxes) y [Retiro de lote](/docs/es/inventory/lot-recall); ninguna acción saca una caja de la cuarentena.

El pedido pasa a **Recibido** (`received`) cuando se aceptaron todas las cajas, o a **Recibido en parte** (`partially_fulfilled`) cuando se disputó al menos una. El registro de auditoría es `fulfillment.received` o `fulfillment.received.disputed`.

### Cantidades parciales

La recepción es por caja completa: cada caja se acepta o se disputa como una unidad, y no hay un campo para la cantidad recibida. Si una caja llegó con menos unidades de las esperadas, elige una de estas opciones:

* Disputa la caja (por ejemplo con **Falta** u **Otro**) y describe la diferencia en la evidencia. La caja completa queda registrada de vuelta en el origen, donde se puede corregir el conteo.
* Acepta la caja y luego corrige su cantidad en el destino con una corrección (consulta [Correcciones de existencias](/docs/es/inventory/corrections)).

### Reglas y límites

* Solo se puede recibir un pedido en **Entregado**.
* La recepción debe cubrir exactamente las cajas entregadas, cada una una sola vez. La consola la prepara por ti; si la entrega cambió mientras la página estaba abierta, recárgala.
* Una recepción puede incluir hasta 200 cajas aceptadas y 200 cajas disputadas.
* La primera recepción es la que vale. Volver a confirmar solo dice "Esta recepción ya estaba registrada."
* El texto de la evidencia se guarda con la recepción, pero por ahora no se muestra en el detalle de custodia ni lo devuelve la API. Las notas de cada caja las devuelve la API, pero no se muestran en la consola.

## Cerrar el pedido

Cerrar es el último paso, administrativo. No mueve existencias: cada caja ya se recibió en el destino o se devolvió al origen.

### Quién puede hacerlo

* Permiso `fulfillment.close` (**Cerrar abastecimiento**) y permiso `fulfillment.read` (**Ver abastecimiento**), porque el botón está en el detalle de custodia.
* Las mismas reglas de sede que para recibir: cierra la parte de destino.

### Pasos

<Steps>
  <Step title="Abre el pedido">
    En **Entregas**, sección **Por cerrar**, selecciona el número del pedido. La sección lista los pedidos en **Recibido** y **Recibido en parte**.
  </Step>

  <Step title="Ciérralo">
    El detalle de custodia muestra "Todo se recibió o se devolvió. Cierra el pedido para terminarlo." Selecciona **Cerrar pedido**.
  </Step>

  <Step title="Lee la respuesta">
    "Pedido cerrado." El pedido pasa a **Cerrado** (`closed`). Un segundo intento dice "Este pedido ya estaba cerrado."
  </Step>
</Steps>

Qué registra el sistema: un registro de cierre con quién cerró y cuándo, el estado `closed` del pedido y el registro de auditoría `fulfillment.closed`.

### Reglas

* Solo se pueden cerrar pedidos en **Recibido** o **Recibido en parte**. Un pedido con **Problema de entrega** no se puede cerrar.
* **Una caja que sigue en tránsito impide el cierre.** Después de una recepción, muveya mueve cada caja al destino o de vuelta al origen. Si alguno de esos pasos de existencias no terminó, la caja sigue **En tránsito** y el cierre responde "Este pedido todavía no se puede cerrar." muveya reintenta el paso pendiente en segundo plano; revisa la tabla **Cajas** del detalle de custodia y vuelve a intentarlo más tarde. Si una caja sigue **En tránsito**, escribe a [team@muveya.com](mailto:team@muveya.com).

## Qué puede salir mal

| Mensaje | Código | Qué hacer |
| - | - | - |
| "Este pedido no va en camino." | `fulfillment.not_dispatched` | El pedido no está en **Despachado**, o su sede de origen está fuera de tu **Acceso a sedes**. Revisa el estado en el detalle de custodia. |
| "Elige qué pasó." | | Selecciona una opción en **Qué pasó** antes de enviar. |
| "Di qué pasó en 200 caracteres o menos." | `fulfillment.invalid_delivery_exception` | Acorta el motivo del problema. |
| "No hay nada por recibir de este pedido aquí." | `fulfillment.nothing_to_receive` | El pedido no está en **Entregado**, o su sede de destino está fuera de tu **Acceso a sedes**. |
| "La decisión debe cubrir exactamente las cajas entregadas. Recarga la página y vuelve a revisar." | `fulfillment.over_receipt` | Recarga la página y decide de nuevo para cada caja. |
| "Describe la evidencia antes de disputar una caja." | | Completa **Evidencia del problema**. |
| "Una caja disputada necesita evidencia. Describe lo que viste." | `fulfillment.discrepancy_requires_evidence` | Completa **Evidencia del problema** y confirma de nuevo. |
| "Este texto puede tener hasta 2000 caracteres." | | Acorta la nota o la evidencia. |
| "Un motivo o una nota es demasiado largo." | `fulfillment.invalid_receipt` | Acorta las notas de las cajas o la evidencia. |
| "Este pedido todavía no se puede cerrar." | `fulfillment.nothing_to_close` | El pedido no está en **Recibido** ni en **Recibido en parte**, una caja sigue **En tránsito**, o la sede de destino está fuera de tu **Acceso a sedes**. |
| "Esta entrega no existe o no puedes verla." (pantalla de recepción) o "Este registro no está disponible en la cuenta de clínica dental activa." (pantalla de entrega) | `common.not_found`, `orders.not_found` | El pedido no existe o está fuera de tus sedes. |
| "Tu cuenta no tiene permiso para esta acción." | `common.forbidden` | Te falta el permiso del paso, o perteneces a la sede de origen de un traslado entre dos sedes y no puedes recibirlo ni cerrarlo. Pídeselo a un integrante de la sede de destino. |
| "Revisa los datos ingresados antes de volver a intentar." | `common.invalid_request` | Demasiadas cajas en una recepción, o un campo no es válido. Recarga e intenta de nuevo. |
| "No pudimos completar la solicitud. Intenta nuevamente." | | Si después de recargar la pantalla de recepción dice "Esta recepción ya estaba registrada.", la recepción es válida y muveya termina los pasos de existencias en segundo plano. |

## Páginas relacionadas

<CardGroup cols={2}>
  <Card title="Resumen de entregas" icon="truck" href="/docs/es/deliveries/overview">
    Ciclo de custodia, custodia por caja completa y permisos.
  </Card>

  <Card title="Historial de custodia" icon="clock-rotate-left" href="/docs/es/deliveries/custody-history">
    Revisa los registros de entrega, recepción y cierre.
  </Card>

  <Card title="Correcciones de existencias" icon="scale-balanced" href="/docs/es/inventory/corrections">
    Corrige la cantidad de una caja después de aceptar una entrega.
  </Card>

  <Card title="Retiro de lote" icon="triangle-exclamation" href="/docs/es/inventory/lot-recall">
    Pon en cuarentena y sigue las cajas de un lote.
  </Card>
</CardGroup>


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