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

# Hook `actionOrderStatusUpdate`

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

## Descripcion

Se ejecuta cuando el estado de un pedido cambia. Se dispara ANTES de que el nuevo estado sea efectivamente guardado en la base de datos. Es ideal para validar o interceptar cambios de estado, enviar notificaciones o sincronizar con ERPs externos. Se dispara tanto desde el back office como desde procesos automaticos.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `newOrderStatus` | `OrderState` | si | Nuevo estado del pedido que se va a asignar |
| `id_order` | `int` | si | ID del pedido afectado |
| `order` | `Order` | no | Objeto Order del pedido (disponible desde PS 1.7.7) |

## Valor de retorno

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

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| OrderHistory | `OrderHistory` | `changeIdOrderState()` | `classes/order/OrderHistory.php` |

**Paginas**: `admin-orders`, `order-confirmation`

## Registro del hook

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

## Ejemplo de uso

```php
<?php
/**
 * Hook actionOrderStatusUpdate — cambio de estado del pedido
 */
public function hookActionOrderStatusUpdate(array $params)
{
    /** @var OrderState $newStatus */
    $newStatus = $params['newOrderStatus'];
    $idOrder = (int) $params['id_order'];

    // En PS >= 1.7.7 podemos usar el objeto Order directamente
    $order = isset($params['order']) ? $params['order'] : new Order($idOrder);

    // Ejemplo: Notificar al almacen cuando el pedido pasa a 'Preparacion en curso'
    if ((int) $newStatus->id === (int) Configuration::get('PS_OS_PREPARATION')) {
        $customer = new Customer($order->id_customer);
        $address = new Address($order->id_address_delivery);
        $products = $order->getProducts();

        $warehouseData = [
            'order_ref'   => $order->reference,
            'customer'    => $customer->firstname . ' ' . $customer->lastname,
            'address'     => $address->address1 . ', ' . $address->city,
            'postcode'    => $address->postcode,
            'products'    => array_map(function ($p) {
                return [
                    'reference' => $p['reference'],
                    'name'      => $p['product_name'],
                    'qty'       => $p['product_quantity'],
                ];
            }, $products),
        ];

        // Enviar a sistema de almacen
        Db::getInstance()->insert('mymodule_warehouse_queue', [
            'id_order' => $idOrder,
            'payload'  => pSQL(json_encode($warehouseData)),
            'status'   => 'pending',
            'date_add' => date('Y-m-d H:i:s'),
        ]);
    }

    // Ejemplo: Notificar por SMS cuando se envia
    if ($newStatus->shipped) {
        $carrier = new Carrier($order->id_carrier);
        $tracking = $order->shipping_number;
        // $this->sendSmsNotification($order, $tracking);
    }
}
```

## Notas y gotchas

- Este hook se ejecuta ANTES de guardar el nuevo estado — el pedido aun tiene el estado anterior en BD.
- El parametro order solo esta disponible desde PrestaShop 1.7.7. Para versiones anteriores, usa new Order($params['id_order']).
- Si necesitas actuar DESPUES de que el estado se haya guardado, usa actionOrderStatusPostUpdate.
- Se dispara en cada cambio de estado, incluyendo los automaticos (pago aceptado, envio, etc.).
- Evita cambiar el estado del pedido dentro de este hook — puede causar bucles infinitos.

## Hooks relacionados

- [`actionOrderStatusPostUpdate`](https://ayudaprestashop.es/hooks/actionOrderStatusPostUpdate)
- [`actionValidateOrder`](https://ayudaprestashop.es/hooks/actionValidateOrder)
- [`actionOrderHistoryAddAfter`](https://ayudaprestashop.es/hooks/actionOrderHistoryAddAfter)
- [`actionPaymentConfirmation`](https://ayudaprestashop.es/hooks/actionPaymentConfirmation)

## Guias relacionadas

- [modules/main-file](https://ayudaprestashop.es/modules/main-file)
- [orders/order-states](https://ayudaprestashop.es/orders/order-states)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido con newOrderStatus e id_order |
| 1.7.7 | Añadido el parametro order (objeto Order) |
| 8.0 | Sin cambios. Compatible |


---

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