Cancel delivery service
DELETE/company/delivery/:service_code
Cancela un envío existente cambiando su estado a 'canceled' y rejectedBy a 'cia'. Solo se pueden cancelar envíos en estados 'planned' o 'replanned'.
Objective
Permitir a las empresas cancelar envíos planificados cuando ya no se realizarán, procesando automáticamente las acciones necesarias en Stripe y auctions.
Use Cases
- Cancelar un envío planificado que ya no se realizará
- Detener un envío replanificado por problemas logísticos o de negocio
- Revertir un envío mal planificado antes de que inicie
- Cancelar por cambios en la carga o destino
Side Effects
- Cambia status a 'canceled'
- Establece rejectedBy='cia'
- Cancela el payment_intent en Stripe (procesa reembolso si corresponde)
- Cancela la subasta asociada si existe
Validation Flow
flowchart TD
A[Receive Cancel Request] --> B{Delivery Exists?}
B -->|No| C[404 NOT_FOUND]
B -->|Yes| D{Company Owns Delivery?}
D -->|No| E[403 NOT_ALLOWED]
D -->|Yes| F{Is Final Status?}
F -->|Yes| G[401 NOT_ALLOWED]
F -->|No| H{Status is Cancelable?}
H -->|No| I[401 NOT_ALLOWED]
H -->|Yes| J[Set status=canceled]
J --> K[Set rejectedBy=cia]
K --> L{Cancel Stripe Payment}
L -->|Error| M[403 CANT_CANCEL_PAYMENT]
L -->|Success| N{Cancel Auction}
N -->|Success| O[Save - 200]
Notes
- Solo se pueden cancelar envíos en estados 'planned' o 'replanned'
- No se puede cancelar un envío en estado final (delivered, claimed, canceled)
- Si falla la cancelación del pago en Stripe, toda la operación se cancela
- La subasta asociada también se cancela automáticamente
Request
Responses
- 200
- 401
- 403
- 404
- 503
Envío cancelado con éxito
No autorizado. El estado del envío no permite cancelación.
No se puede cancelar el pago en Stripe.
Envío no encontrado. El service_code proporcionado no existe o no pertenece a la empresa del usuario autenticado.
Error al guardar los cambios.