Eliminar Orden
Elimina una orden del sistema. La orden solo puede ser eliminada si tiene el estado PLACED (no ha sido procesado para fulfillment).
DELETE
/v1/client/shipment/delete/:unique_order_numberEste endpoint te permite eliminar un envío. El envío debe tener únicamente el estado PLACED para poder eliminarlo. Es necesario agregar el token Bearer en los headers de la solicitud.
Encabezados
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
Authorization | string | ✅ Sí | Token Bearer obtenido del endpoint /token/generate |
Ejemplos
- cURL
- JavaScript
- Python
curl -X DELETE https://apisandbox.eonwms.com/v1/client/shipment/delete/ORDERTEST-104 \
-H "Authorization: Bearer TU_TOKEN"
const uniqueOrderNumber = 'ORDERTEST-104';
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/delete/${uniqueOrderNumber}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer TU_TOKEN'
}
}
);
const result = await response.json();
if (response.ok) {
console.log('Orden eliminada exitosamente');
} else {
console.error('Error:', result.fault.message);
}
import requests
unique_order_number = 'ORDERTEST-104'
response = requests.delete(
f'https://apisandbox.eonwms.com/v1/client/shipment/delete/{unique_order_number}',
headers={
'Authorization': 'Bearer TU_TOKEN'
}
)
result = response.json()
if response.status_code == 200:
print('Orden eliminada exitosamente')
else:
print(f'Error: {result["fault"]["message"]}')
Respuestas
200Éxito - Orden eliminada
{
"code": 200,
"fault": null,
"success": {
"arguments": {},
"type": "success",
"message": "Orden eliminada exitosamente."
}
}
401No autorizado - Token inválido
{
"code": 401,
"fault": {
"arguments": {
"Authorization": "invalid"
},
"type": "InvalidAuthorizationException",
"message": "La solicitud no está autorizada, el token de acceso es inválido."
}
}
422No procesable - La orden ya fue procesado
{
"code": 422,
"fault": {
"arguments": {
"orderStatus": "PLACED"
},
"type": "alreadyFulfilled",
"message": "La orden COD00001 ya ha sido surtido y no puede ser cancelado."
}
}
Reglas de Eliminación
Estados Permitidos para Eliminación
Solo puedes eliminar ordenes que estén en estado PLACED. Esto significa que:
- ✅ La orden fue creado pero no procesado
- ✅ No se ha verificado el inventario
- ✅ No se ha generado ninguna etiqueta
- ✅ No se ha iniciado el proceso de picking
Estados NO Permitidos
No puedes eliminar ordenes en los siguientes estados:
- ❌ READY - El inventario ya fue reservado y la orden ha comenzado su proceso de preparación
- ❌ FULFILLED - La orden ya está preparada y lista para ser enviada
- ❌ SEND - La orden ya fue enviada
- ❌ DELIVERED - La orden ya fue entregada
Casos de Uso Comunes
1. Cancelación por Cliente
async function cancelarOrdenPorCliente(orderNumber) {
// Primero verificar el estado de la orden
const statusResponse = await fetch(
`https://apisandbox.eonwms.com/shipment/client/order-status/${orderNumber}`,
{
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);
const statusData = await statusResponse.json();
const currentStatus = statusData.data.find(s => s.current).status;
if (currentStatus === 'PLACED') {
// Proceder con la eliminación
const deleteResponse = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/delete/${orderNumber}`,
{
method: 'DELETE',
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);
if (deleteResponse.ok) {
return { success: true, message: 'Orden cancelada exitosamente' };
}
} else {
return {
success: false,
message: `No se puede cancelar. Estado actual: ${currentStatus}`
};
}
}
2. Limpieza de Ordenes de Prueba
async function limpiarOrdenesPrueba(prefijo = 'TEST-') {
// Obtener lista de ordenes (este endpoint no está documentado aún)
const ordenesEliminados = [];
const ordenesNoEliminados = [];
for (const ordene of ordenesDePrueba) {
if (ordene.uniqueOrderNumber.startsWith(prefijo)) {
try {
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/delete/${ordene.uniqueOrderNumber}`,
{
method: 'DELETE',
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);
if (response.ok) {
ordenesEliminados.push(ordene.uniqueOrderNumber);
} else {
ordenesNoEliminados.push(ordene.uniqueOrderNumber);
}
} catch (error) {
console.error(`Error eliminando ${ordene.uniqueOrderNumber}`);
}
}
}
return { eliminados: ordenesEliminados, noEliminados: ordenesNoEliminados };
}
Consideraciones Importantes
Acción Irreversible
La eliminación de una ordene es permanente e irreversible. Una vez eliminado:
- No podrás recuperar la información de la orden
- No quedará registro en el historial
- Deberás crear un nueva orden si es necesario
Alternativa: Estado Cancelado
Si necesitas mantener un registro de la orden para auditoría o reportes, considera:
- Contactar a soporte para cambiar el estado a CANCELLED en lugar de eliminarlo
- Implementar un campo personalizado para marcar ordenes como "cancelados" en tu sistema
Inventario
Cuando eliminas una orden en estado PLACED:
- No se afecta el inventario porque aún no se había reservado
- Si la orden ya estaba en READY o posterior, el inventario no se libera automáticamente