---
title: actionUpdateQuantity
section: hooks
slug: actionUpdateQuantity
hook_type: action
category: stock
location: FO+BO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/actionUpdateQuantity"
---

# Hook `actionUpdateQuantity`

| Propiedad | Valor |
| --- | --- |
| Tipo | Action |
| Localizacion | FO+BO |
| Categoria | stock |
| Desde version | 1.5 |

## Descripcion

Se ejecuta cuando la cantidad de stock de un producto es actualizada. Se dispara tanto por ventas (reduccion automatica), como por edicion manual en el back office o por importaciones. Es el hook principal para implementar alertas de stock bajo, sincronizar inventario con almacenes o ERP, y controlar la disponibilidad de productos.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_product` | `int` | si | ID del producto cuyo stock cambio |
| `id_product_attribute` | `int` | si | ID de la combinacion (0 si es producto simple) |
| `quantity` | `int` | si | Nueva cantidad de stock |
| `id_shop` | `int` | si | ID de la tienda afectada |
| `operator` | `string` | no | Operacion realizada: 'up' o 'down' (no siempre disponible) |

## Valor de retorno

- **Tipo**: `void`
- **Descripcion**: Este hook no espera valor de retorno

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| StockAvailable | `StockAvailable` | `updateQuantity()` | `classes/stock/StockAvailable.php` |

**Paginas**: `admin-products`, `admin-stock`, `order-confirmation`

## Registro del hook

```php
<?php
public function install()
{
    return parent::install()
        && $this->registerHook('actionUpdateQuantity');
}
```

## Ejemplo de uso

```php
<?php
/**
 * Hook actionUpdateQuantity — stock actualizado
 */
public function hookActionUpdateQuantity(array $params)
{
    $idProduct = (int) $params['id_product'];
    $idAttribute = (int) $params['id_product_attribute'];
    $quantity = (int) $params['quantity'];
    $idShop = (int) $params['id_shop'];

    // Ejemplo: Alerta de stock bajo
    $threshold = (int) Configuration::get('MYMODULE_LOW_STOCK_THRESHOLD');
    if ($threshold > 0 && $quantity <= $threshold && $quantity > 0) {
        $product = new Product($idProduct, false, Configuration::get('PS_LANG_DEFAULT'));
        $reference = $idAttribute
            ? $product->reference . '-' . Combination::getAttributeName($idAttribute)
            : $product->reference;

        Mail::send(
            (int) Configuration::get('PS_LANG_DEFAULT'),
            'low_stock_alert',
            sprintf('Stock bajo: %s (quedan %d)', $product->name, $quantity),
            [
                '{product_name}' => $product->name,
                '{reference}'    => $reference,
                '{quantity}'     => $quantity,
                '{threshold}'    => $threshold,
            ],
            Configuration::get('PS_SHOP_EMAIL'),
            null, null, null, null, null,
            _PS_MODULE_DIR_ . $this->name . '/mails/'
        );
    }

    // Ejemplo: Desactivar producto sin stock
    if ($quantity <= 0 && Configuration::get('MYMODULE_AUTO_DISABLE_OOS')) {
        // Verificar si TODAS las combinaciones estan sin stock
        $totalStock = StockAvailable::getQuantityAvailableByProduct($idProduct);
        if ($totalStock <= 0) {
            $product = new Product($idProduct);
            $product->active = 0;
            $product->update();
        }
    }
}
```

## Notas y gotchas

- El parametro quantity es la cantidad ACTUAL (nueva), no la cantidad modificada.
- El parametro operator no siempre esta disponible — no dependas de el.
- Se dispara con mucha frecuencia durante los pedidos — evita operaciones pesadas.
- Para tiendas multistock, verifica el id_shop antes de actuar.
- En importaciones masivas, este hook se dispara para cada producto — considera usar un sistema de cola.

## Hooks relacionados

- [`actionProductUpdate`](https://ayudaprestashop.es/hooks/actionProductUpdate)
- [`actionProductSave`](https://ayudaprestashop.es/hooks/actionProductSave)
- [`actionObjectProductUpdateAfter`](https://ayudaprestashop.es/hooks/actionObjectProductUpdateAfter)

## Guias relacionadas

- [modules/main-file](https://ayudaprestashop.es/modules/main-file)
- [stock/stock-management](https://ayudaprestashop.es/stock/stock-management)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido con Advanced Stock Management |
| 1.7 | Sin cambios significativos. Compatible |
| 8.0 | Sin cambios. Compatible |


---

*Fuente: [https://ayudaprestashop.es/hooks/actionUpdateQuantity](https://ayudaprestashop.es/hooks/actionUpdateQuantity). Version Markdown generada automaticamente para consumo por LLMs.*
