Saltearse al contenido

PrestaShop - Actualizar Stock

Este módulo actualiza la cantidad de stock de un producto o combinación (variante) en una tienda PrestaShop a través de su API REST. El flujo de ejecución es:

  1. Obtiene las credenciales (apiKey y urlBase) de la tienda PrestaShop.
  2. Si se proporciona una referencia (reference) y no se tiene el ID del producto, busca automáticamente en la API de PrestaShop:
    • Primero busca en combinaciones (/api/combinations).
    • Si no encuentra, busca en productos (/api/products).
    • Verifica que no sea una opción de producto (product_option_values) que no se puede actualizar directamente.
  3. Obtiene el registro stock_available del producto (o combinación) consultando la API con filtros por id_product e id_product_attribute.
  4. Descarga el XML actual del stock, modifica la cantidad y lo envía de vuelta via PUT.
  5. Retorna confirmación con los IDs del producto, combinación, stock y cantidad actualizada.

Soporta tanto productos simples como productos con combinaciones (variantes por talla, color, etc.).

ParámetroTipoRequeridoDescripción
credentials_idcredentialsCredenciales de la API de PrestaShop (apiKey y urlBase).
is_combinationbooleanNoIndica si el producto es una combinación/variante. Default: true.
referencetextNoReferencia del producto o combinación. Se usa para buscar automáticamente el product_id.
product_idtextNoID del producto en PrestaShop. Requerido si no se proporciona reference.
product_attribute_idtextNoID de la combinación/variante. Requerido para combinaciones si no se proporciona reference.
stock_quantitynumberNueva cantidad de stock a establecer.

Se requiere credentials_id con un objeto que contenga:

  • apiKey: Clave de API de PrestaShop (generada en Backoffice > Parámetros Avanzados > Webservice).
  • urlBase: URL base de la tienda (ej: https://mitienda.com).
{
"nextModule": "siguiente-nodo",
"data": {
"success": true,
"product_id": 42,
"product_attribute_id": 15,
"is_combination": true,
"stockId": 108,
"updated_quantity": 25,
"response": "<xml>...</xml>"
}
}
{
"credentials_id": "credencial-prestashop",
"reference": "REF-CAMISETA-L-AZUL",
"stock_quantity": 50,
"is_combination": true
}
{
"credentials_id": "credencial-prestashop",
"product_id": "42",
"product_attribute_id": "15",
"stock_quantity": 25,
"is_combination": true
}
  • PrestaShop Webservice API:
    • GET {urlBase}/api/combinations?filter[reference]={ref}&display=[id,id_product] - Buscar combinación por referencia.
    • GET {urlBase}/api/products?filter[reference]={ref}&display=[id] - Buscar producto por referencia.
    • GET {urlBase}/api/stock_availables?filter[id_product]={id}&display=[id] - Obtener stock_available.
    • GET {urlBase}/api/stock_availables/{id} - Obtener XML actual del stock.
    • PUT {urlBase}/api/stock_availables/{id} - Actualizar stock (XML).
  • Autenticación: Basic Auth con apiKey.
  • La API de PrestaShop requiere que el Webservice esté habilitado y la clave tenga permisos sobre los recursos products, combinations, stock_availables y product_option_values.
  • La búsqueda por referencia primero intenta combinaciones y luego productos simples.
  • Para productos simples (sin combinaciones), usar is_combination: false o dejar product_attribute_id vacío.
  • El stock se establece como valor absoluto (no incremental). Para incrementar, se debe leer el stock actual y sumar antes de llamar al módulo.
  • Las respuestas XML se parsean internamente usando xml2js.
  • Otros módulos de ecommerce (PrestaShop, WooCommerce)
  • validate (Validador de datos - para validar datos antes de actualizar)