Cancelar o actualizar un pedido
Actualiza los datos de un pedido existente: estado, notas, causa de cancelación, cortesía, cantidad, comensales, entre otros. Este es el endpoint utilizado para cancelar o anular un pedido.
🚫 Cómo cancelar (o anular) un pedido
Cancelar un pedido no es una ruta aparte: se hace con este mismo PUT /orders cambiando el estado del pedido. Sigue estos pasos:
- Obtén el _id del pedido que deseas cancelar (por ejemplo desde GET /orders).
- Envía el cuerpo de la petición con:
- _id: el ID del pedido a cancelar (obligatorio).
- status: "Cancelada" (también se acepta el valor equivalente "Anulada").
- causeCancel: el motivo de la cancelación (opcional pero recomendado).
- Resultado: el pedido queda con el nuevo estado y se emite una notificación WebSocket con el evento orderCancelled que incluye el producto cancelado, la cantidad, la mesa y el motivo (causeCancel) cuando están disponibles.
Ejemplo mínimo del cuerpo para cancelar:
{
"_id": "507f1f77bcf86cd799439011",
"status": "Cancelada",
"causeCancel": "El cliente cambió de opinión"
}
Nota: "Cancelada" y "Anulada" son equivalentes: ambos valores cancelan el pedido siguiendo exactamente el mismo flujo. Si el _id no corresponde a un pedido del negocio, la respuesta será 404.
Otros comportamientos:
- Si el pedido se marca como cortesía (complementary.isComplementary = true) el precio y total se establecen en 0.
- Si updateDiners es true se actualiza la cantidad de comensales (validada entre 1 y 999) y se registra en el historial.
- Si updateQuantity es true se recalculan los totales de productsExtra y productsCombo según la nueva cantidad.
- Si el estado cambia a "Entregado" se descuenta del inventario.
- Cualquier cambio notifica al negocio via WebSocket (ordersUpdated).
Autenticación requerida: Bearer Token en header Authorization: Bearer {tokenCurrent}
Permiso requerido: OR_PUT - "Cancelar Pedidos"
Request
- Base URLhttps://api.pirpos.com
- URLhttps://api.pirpos.com/orders
- AuthHTTP bearer
Request body
Example request
{
"_id": "507f1f77bcf86cd799439011",
"status": "Cancelada",
"table": "507f1f77bcf86cd799439014",
"notes": [
"Sin sal"
],
"causeCancel": "Error del cliente",
"complementary": {
"isComplementary": true,
"note": "Cortesía del chef"
},
"quantity": 2,
"diners": {
"quantity": 4
}
}Response
Pedido actualizado exitosamente
Example response
{
"_id": "507f1f77bcf86cd799439011",
"business": "507f1f77bcf86cd799439012",
"product": {
"name": "Hamburguesa Clásica",
"price": 15000
},
"table": {
"name": "Mesa 5"
},
"deliveryProviderOrder": "507f1f77bcf86cd799439014",
"group": "507f1f77bcf86cd799439015",
"groupName": "Grupo Mesa 5",
"seller": {
"name": "Carlos",
"lastName": "Pérez",
"urlImage": "https://ejemplo.com/vendedor.jpg"
},
"notes": [
"Sin cebolla",
"Extra queso"
],
"causeCancel": "Cliente canceló",
"quantity": 2,
"unit_price": 15000,
"total": 30000,
"status": "Espera",
"statusKitchen": "Espera",
"productsExtra": [
{
"product": {
"name": "Papas fritas",
"price": 5000
},
"quantity": 1
}
],
"modifiedBy": {
"name": "Admin"
},
"createdOn": "2025-08-05T10:30:00.000Z",
"modifiedOn": "2025-08-05T10:30:00.000Z"
}Changes
No recorded changes to this operation across all 1 revision of this API.