Saltearse al contenido

PrestaShop - Obtener Pedidos

Este módulo permite consultar pedidos de tu tienda PrestaShop, ya sea un pedido específico por ID o una lista filtrada por estado, cliente, fechas y otros criterios.

Usa las mismas credenciales que para otros módulos PrestaShop. Asegúrate de que la API Key tenga permisos de lectura en “orders”.

  • orders - GET (lectura)
  • order_states - GET (opcional, para filtrar por estado)
CampoTipoRequeridoDescripción
credentials_idstringID de las credenciales de PrestaShop
order_idnumberNoID de pedido específico
order_referencestringNoReferencia del pedido (ej: ABCD1234)
order_statenumberNoID del estado del pedido
customer_idnumberNoID del cliente
date_fromstringNoFecha desde (YYYY-MM-DD)
date_tostringNoFecha hasta (YYYY-MM-DD)
limitnumberNoLímite de resultados (default: 50)
sort_bystringNoCampo para ordenar (default: id)
sort_orderstringNoOrden: ASC o DESC (default: DESC)
display_fieldsstringNoCampos a mostrar: full, basic o lista separada por comas
IDEstado
1En espera de pago por cheque
2Pago aceptado
3Preparación en curso
4Enviado
5Entregado
6Cancelado
7Reembolsado
8Error de pago
9En espera pago PayPal
10Pago remoto aceptado

Nota: Los IDs pueden variar según la configuración de tu tienda.

{
"success": true,
"orders": [
{
"id": "123",
"reference": "ABCD1234",
"id_customer": "45",
"current_state": "4",
"total_paid": "89.99",
"date_add": "2024-01-15 10:30:00",
"...": "otros campos"
}
],
"total": 25,
"filters_applied": {
"order_state": 4,
"limit": 50,
"sort": "id_DESC"
}
}
{
"success": true,
"order": {
"id": "123",
"reference": "ABCD1234",
"id_customer": "45",
"current_state": "4",
"total_paid": "89.99",
"total_products": "79.99",
"total_shipping": "10.00",
"payment": "PayPal",
"date_add": "2024-01-15 10:30:00",
"associations": {
"order_rows": [...]
}
},
"total": 1
}
{
"credentials_id": "presta_tienda",
"order_id": 123
}
{
"credentials_id": "presta_tienda",
"order_reference": "ABCD1234"
}
{
"credentials_id": "presta_tienda",
"order_state": 3,
"limit": 100,
"sort_by": "date_add",
"sort_order": "ASC"
}
{
"credentials_id": "presta_tienda",
"customer_id": 456,
"limit": 20
}
{
"credentials_id": "presta_tienda",
"date_from": "2024-01-15",
"date_to": "2024-01-15",
"display_fields": "basic"
}
{
"credentials_id": "presta_tienda",
"order_state": 4,
"limit": 10,
"sort_by": "date_add",
"sort_order": "DESC"
}
{
"credentials_id": "presta_tienda",
"date_from": "2024-01-01",
"date_to": "2024-01-31",
"display_fields": "id,reference,total_paid,current_state,date_add"
}
[Schedule (diario)] -> [PrestaGetOrders] -> [Transform] -> [Google Sheets] -> [Slack]

Configuración del nodo:

{
"credentials_id": "presta_tienda",
"date_from": "{{moment().subtract(1,'day').format('YYYY-MM-DD')}}",
"date_to": "{{moment().subtract(1,'day').format('YYYY-MM-DD')}}",
"display_fields": "full"
}
[Schedule (c/15min)] -> [PrestaGetOrders] -> [Decision] -> [Email Alert]
{
"credentials_id": "presta_tienda",
"order_state": 2,
"date_from": "{{moment().subtract(2,'days').format('YYYY-MM-DD')}}"
}

Decision: data.total > 0 -> Enviar alerta

[Trigger HTTP] -> [PrestaGetOrders] -> [Loop] -> [HTTP Request a ERP] -> [Log]
// Procesar pedidos obtenidos
const pedidos = ctx.data.orders;
// Filtrar pedidos mayores a 100EUR
const pedidosGrandes = pedidos.filter(p => parseFloat(p.total_paid) > 100);
// Calcular total de ventas
const totalVentas = pedidos.reduce((sum, p) => sum + parseFloat(p.total_paid), 0);
ctx.data = {
pedidos_procesados: pedidos.length,
pedidos_grandes: pedidosGrandes.length,
total_ventas: totalVentas.toFixed(2)
};
CampoDescripción
idID del pedido
referenceReferencia única
id_customerID del cliente
current_stateEstado actual
total_paidTotal pagado
total_paid_tax_inclTotal con impuestos
total_paid_tax_exclTotal sin impuestos
total_productsTotal de productos
total_shippingCoste de envío
paymentMétodo de pago
date_addFecha de creación
date_updFecha de actualización
invoice_numberNúmero de factura
delivery_numberNúmero de albarán
  • Si especificas order_id, se ignoran el resto de filtros y se devuelve solo ese pedido
  • El campo display_fields puede ser:
    • full: Todos los campos (default)
    • basic: Solo campos esenciales (id, reference, current_state, date_add, total_paid_tax_incl, id_customer)
    • Lista personalizada: id,reference,total_paid,payment
  • Las fechas deben estar en formato ISO (YYYY-MM-DD)
  • El límite máximo recomendado es 100 para evitar timeouts
ErrorCausaSolución
”Pedido no encontrado”ID incorrectoVerifica el ID del pedido
”Timeout”Demasiados pedidosReduce el límite o añade filtros de fecha
”Sin permisos”API Key limitadaHabilita permisos de orders en el backoffice
  • PrestaUpdateProduct - Actualizar stock de productos de un pedido