Saltar al contenido principal

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_number

Este 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ámetroTipoRequeridoDescripción
Authorizationstring✅ SíToken Bearer obtenido del endpoint /token/generate

Ejemplos

curl -X DELETE https://apisandbox.eonwms.com/v1/client/shipment/delete/ORDERTEST-104 \
-H "Authorization: Bearer TU_TOKEN"

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