Skip to main content
POST
Crea un detalle de orden (OrderDetails) a partir de un producto del catálogo (ArticulosMeta) y lo asocia a una orden existente. Permite adjuntar extras del producto y, opcionalmente, un precio personalizado por extra. Notifica el cambio en tiempo real al canal correspondiente de la orden.

Autenticación

Requiere el encabezado x-api-key con el App Key del negocio. Consulta Autenticación.

Body

number
required
ID de la orden a la que se agregará el producto.
number
required
ID del producto (ArticulosMeta) a agregar a la orden.
number
default:"1"
Cantidad del producto a agregar.
object[]
required
Lista de extras del producto. Envía un arreglo vacío ([]) si el producto no lleva extras.

Comportamiento

  • Valida que exista el producto (articleId) y la orden (orderId); si alguno no existe, responde 400.
  • Registra el evento product_picked en StatsWaEcommerce.
  • Determina el tipo del detalle de orden: "delivery_coupon" si el producto es de tipo free_delivery o delivery; de lo contrario "item".
  • Crea el OrderDetails con quantity (por defecto 1), retailer_id del producto y el tipo determinado.
  • Por cada elemento de extras:
    • Registra el evento extra_picked en StatsWaEcommerce.
    • Si el extra existe en ProductExtra, crea un OrderDetailsExtra asociado al detalle recién creado.
    • Si el extra trae customPrice y picked, guarda un precio personalizado dentro de order.extra_data (estructura versionada, indexada por orden y por extraId:orderDetailId) y guarda la orden.
  • Emite un evento en tiempo real del cambio en la orden: usa el canal Soketi/Pusher para órdenes de tipo app/web, y el canal estándar para el resto de tipos (p. ej. wa).

Respuesta

string
"Producto añadido a la orden" cuando el producto se agregó correctamente.