Pedidos

Crear nuevos pedidos

Crea uno o múltiples pedidos para una mesa o grupo específico.

Autenticación requerida: Este endpoint requiere autenticación Bearer Token. Usar el campo tokenCurrent obtenido del servicio de login (/login) en el header: Authorization: Bearer {tokenCurrent}

Proceso de creación:

  • Los pedidos se agrupan automáticamente por mesa/grupo
  • Se calculan totales incluyendo productos extras
  • Se actualiza inventario según configuración
  • Se notifica via WebSocket para actualizaciones en tiempo real

Limitaciones plan extracción: Los negocios en plan de extracción no pueden crear nuevos pedidos.

Descuentos: Puedes aplicar un descuento manual a nivel de pedido con discountPercentage (porcentaje, 0-100) o discountAmount (monto fijo). Los descuentos por promoción se aplican a nivel de producto mediante el objeto promo de cada ítem. El descuento monetario definitivo (incluyendo impuestos) se calcula al facturar el pedido (ver POST /invoices).

Ejemplos de Uso

1. Pedido simple para mesa

{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Orden 1",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 2,
      "unit_price": 15000,
      "notes": ["Sin cebolla", "Extra queso"]
    }
  ]
}

2. Pedido con productos extras

{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Orden 2",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "unit_price": 15000,
      "productsExtra": [
        {
          "product": "507f1f77bcf86cd799439020",
          "quantity": 1,
          "price": 3000
        }
      ]
    }
  ]
}

3. Pedido cortesía (gratuito)

{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Cortesía",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "complementary": {
        "isComplementary": true,
        "note": "Cortesía del chef"
      }
    }
  ]
}

4. Pedido para entrega (sin mesa)

{
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Entrega - Cliente Juan",
  "seller": "507f1f77bcf86cd799439016",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 1,
      "delivery": {
        "isDelivery": true,
        "deliveryProvider": "507f1f77bcf86cd799439017"
      }
    }
  ]
}

5. Múltiples pedidos en una sola petición

{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 8 - Familia González",
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 2,
      "unit_price": 15000,
      "notes": ["Término medio", "Sin mostaza"]
    },
    {
      "product": "507f1f77bcf86cd799439021",
      "quantity": 3,
      "unit_price": 8000,
      "notes": ["Extra hielo"]
    },
    {
      "product": "507f1f77bcf86cd799439022",
      "quantity": 1,
      "unit_price": 12000,
      "productsExtra": [
        {
          "product": "507f1f77bcf86cd799439023",
          "quantity": 2,
          "price": 2000
        }
      ]
    },
    {
      "product": "507f1f77bcf86cd799439024",
      "quantity": 1,
      "complementary": {
        "isComplementary": true,
        "note": "Postre de cumpleaños"
      }
    }
  ]
}
post/orders

Request

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

Request body

tablestring

ID de la mesa (requerido para negocios con mesas)

groupstring required

ID del grupo de pedidos

groupNamestring required

Nombre descriptivo del grupo

sellerstring

ID del vendedor/mesero (opcional, por defecto usuario autenticado)

noWSboolean

Desactivar notificación WebSocket

discountPercentagenumber

Descuento manual en porcentaje (0-100) aplicado al pedido. Se almacena en el pedido y representa un descuento a nivel de pedido. El descuento monetario efectivo se calcula al generar la factura (ver POST /invoices).

discountAmountnumber

Descuento manual de monto fijo aplicado al pedido (en la moneda del negocio). Se almacena en el pedido como alternativa a discountPercentage.

Example request

{
  "table": "507f1f77bcf86cd799439014",
  "group": "507f1f77bcf86cd799439015",
  "groupName": "Mesa 5 - Orden 1",
  "seller": "507f1f77bcf86cd799439016",
  "discountPercentage": 10,
  "discountAmount": 5000,
  "orders": [
    {
      "product": "507f1f77bcf86cd799439013",
      "quantity": 2,
      "unit_price": 15000,
      "notes": [
        "Sin cebolla",
        "Extra queso"
      ],
      "productsExtra": [
        {
          "product": "507f1f77bcf86cd799439020",
          "quantity": 1,
          "price": 3000
        }
      ],
      "complementary": {
        "note": "Cortesía del chef"
      }
    }
  ]
}

Response

Pedidos creados 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.