# Revisión de pedidos ya asignados a un transportista

Antes de evaluar cualquier asignación *nueva*, el dispatcher revisa todos los pedidos que **ya están con un transportista externo de un ciclo anterior**, es decir, aquellos que un transportista tiene adjudicados pero con los que todavía no ha salido de la tienda.

Esto ocurre en el paso 1 de [El ciclo de asignación, paso a paso](/books/console/page/el-ciclo-de-asignacion-paso-a-paso), para cada tienda y en cada ciclo. Nunca afecta a pedidos nuevos ni a pedidos ya asignados a tu flota propia.

## Las tres preguntas, en orden

Para cada pedido en manos de un transportista se hacen hasta tres preguntas. La primera que resuelve el pedido detiene la secuencia.

### 1. ¿El transportista lleva demasiado tiempo con este pedido?

Lo rige **Tiempo máximo para aceptar** (configurado por tienda y por transportista — ver [Dónde vive cada ajuste](/books/console/page/donde-vive-cada-ajuste)).

- Límite superado **y** existe una alternativa real ahora mismo → el pedido se cancela con el transportista de inmediato y queda libre para reasignarse en este mismo ciclo.
- Límite superado pero **no existe alternativa** → el pedido se deja exactamente como está. Cancelarlo solo lo dejaría peor, sin ningún sitio mejor al que enviarlo.
- Límite no alcanzado → se pasa a la pregunta 2.

### 2. ¿La propia estimación del transportista para llegar a la tienda se está desviando demasiado?

Lo rige **Tiempo máximo para llegar a la tienda** (por tienda y por transportista).

Si la hora estimada de llegada del transportista a la tienda se ha desviado más allá de este límite, el pedido se cancela de inmediato, exista o no una alternativa. Una estimación poco fiable del propio transportista es motivo suficiente para desistir.

### 3. ¿Seguimos dentro de la ventana de cancelación gratuita y nuestra flota propia tiene hueco?

Lo rige **Ventana de cancelación gratuita** (por transportista, para toda la empresa).

Si la respuesta a ambas es sí, el pedido se marca como **sin asignar**, pero solo en la memoria de trabajo del dispatcher. No se guarda nada y no se cancela nada con el transportista todavía. El pedido simplemente **vuelve a entrar en el proceso normal de asignación de esa tienda**, igual que cualquier otro pedido sin asignar de ese ciclo.

> No es una rutina especial de "probar con flota propia". A partir de aquí el dispatcher no tiene ninguna noción de que ese pedido estuviera con un transportista: pasa por Modo PG, Google OR-Tools y transportistas externos como todo lo demás, con las mismas reglas.

**Si el proceso normal le asigna un repartidor propio,** ocurren dos cosas en orden estricto:

1. Se envía una cancelación real al transportista externo original.
2. **Solo si esa cancelación tiene éxito**, se guarda la nueva asignación al repartidor interno.

Si la cancelación falla, el paso 2 no llega a ocurrir: no cambia nada y el pedido sigue con el transportista. Así se evita un estado confuso en el que un mismo pedido parece asignado en dos sitios a la vez.

**Si el proceso normal no lo coloca con ningún repartidor propio,** se descarta la marca en memoria. El pedido vuelve a estar exactamente como estaba —válidamente asignado al transportista— como si nada hubiera pasado. En este caso nunca se envía ninguna cancelación.

## Las preguntas 1 y 2 se parecen pero comparan cosas distintas

Es la principal fuente de confusión de esta página.

| Pregunta | Qué compara realmente | Consecuencia |
|---|---|---|
| **Tiempo máximo para aceptar** | **Tiempo real transcurrido**: ahora, frente al momento en que se entregó el pedido al transportista. Solo falla cuando ha pasado de verdad suficiente tiempo de reloj. | Cancela, pero solo si existe una alternativa |
| **Tiempo máximo para llegar a la tienda** | **La promesa del propio transportista**: su estimación de llegada, frente al momento en que se le entregó el pedido. Nunca mira la hora actual. Puede fallar a los pocos segundos si su propia estimación ya es demasiado lejana. | Cancela haya o no alternativas |
| **Ventana de cancelación gratuita** | El mismo tipo de comparación que *Tiempo máximo para aceptar* (ahora frente al momento de asignación), pero con otra consecuencia: superarla no cancela nada por sí misma. Solo abre la puerta al intento sin compromiso con la flota propia descrito arriba. | Habilita el reintento sin riesgo |

## Qué pasa si el intento con flota propia no sale bien

El pedido se **excluye deliberadamente de la pasada de respaldo a transportistas de ese mismo ciclo**: no se vuelve a evaluar frente a transportistas en esta ejecución.

Es intencionado. El pedido ya está válidamente asignado a un transportista, así que repetir la pasada de respaldo sería redundante en el mejor de los casos, y podría generar una segunda asignación en conflicto para un pedido que ya tiene una. El pedido continúa con su asignación existente hasta la siguiente comprobación relevante: un ciclo futuro, o un fallo real en el tiempo de entrega.

## Por qué esto importa

Sin esta revisión, un pedido podría quedarse indefinidamente con un transportista lento o que no responde, o seguir ahí incluso después de que tu flota propia hubiera quedado libre para llevarlo antes.

El intento con flota propia es deliberadamente libre de riesgo: si no cuaja, el pedido se queda exactamente como estaba, el transportista ni se entera, y nunca se cancela nada sin tener ya un sustituto confirmado.