Pedidos

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:

  1. Obtén el _id del pedido que deseas cancelar (por ejemplo desde GET /orders).
  2. 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).
  3. 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"

put/orders

Request

  • Base URL
    https://api.pirpos.com
  • URL
    https://api.pirpos.com/orders
  • Auth
    HTTP bearer

Request body

_idstring required

ID del pedido a actualizar

status'Espera' | 'Cocina' | 'Listo' | 'Entregado' | 'Cancelada' | 'Anulada' | 'Cortesia' | 'Interno'

Nuevo estado del pedido

tablestring

ID de la mesa

notesstring[]

Notas del pedido

causeCancelstring

Motivo de cancelación. Opcional, pero se recomienda enviarlo cuando status es Cancelada/Anulada (se incluye en la notificación WebSocket)

quantitynumber

Nueva cantidad del pedido

updateQuantityboolean

Si es true, recalcula totales de productsExtra y productsCombo según la nueva cantidad

updateDinersboolean

Si es true, actualiza la cantidad de comensales con el valor de diners.quantity y lo registra en el historial

promoobject

Información de promoción aplicada

newPrintboolean

Si es true, resetea el flag de impresión del pedido

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

_idstring

ID único del pedido

businessstring

ID del negocio al que pertenece el pedido

deliveryProviderOrderstring

ID del pedido del proveedor de entrega

groupstring

ID del grupo de pedidos

groupNamestring

Nombre del grupo de pedidos

notesstring[]

Notas especiales del pedido

causeCancelstring

Motivo de cancelación del pedido

quantitynumber

Cantidad del producto

unit_pricenumber

Precio unitario

totalnumber

Total del pedido

status'Espera' | 'Cocina' | 'Listo' | 'Entregado' | 'Cancelado'

Estado del pedido

statusKitchen'Espera' | 'Preparacion' | 'Listo'

Estado en cocina

deletedboolean

Si el pedido está eliminado

createdOnstring date-time

Fecha de creación del pedido

modifiedOnstring date-time

Fecha de última modificación

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.