Jump to content

Realizar una acción justo después de un nuevo pedido.


Recommended Posts

Hola,

 

Estoy realizando un pequeño modulo y necesito soporte en un par de detalles.

 

Actualmente estoy utilizando hookActionValidateOrder pero este hook no me permite actualizar un valor del order que justo se esta insertando.

 

Lo que intento es que en el order que se este insertando editar un campo de esa misma tabla (ps_orders) de ese mismo order.

 

Ejemplo:

 

  1. Se inserta un order con id 100.
  2. Una vez insertado el order, justo después, editar una columna de la tabla ps_orders del id = 100.

 

En la función del hook puedo actualizar cualquier order MENOS el que se esta insertando en ese momento no entiendo porque.

 

Muchísimas gracias de antemano,

 

Un abrazo

Link to comment
Share on other sites

Estás intentado modificar la tabla directamente?

Porqué no tratas de crear el objeto order y modificarlo?

 

 

Seria de bastante ayuda que indicaras como lo estas haciendo

 

    public function hookActionValidateOrder($params)
    {

       $id_cart = (int)$params["cart"]->id;

       if ($row = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'orders` WHERE id_cart = '.$id_cart)){

            $up = Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'orders` SET gift = 2 WHERE id_cart = '.(int)$row["id_cart"]);

            $order = new Order((int)$row["id_order"]);
            $order->gift = 2;
            $order->save();

        }

    }

@ventura @Gabriel Perez

 

Lo hago con objeto también y nada... y si, quiero editar la tabla directamente.

 

No me funciona ni con objeto ni editando la tabla con getInstance.

 

Ahora lo tengo modificando la tabla gift pero la tabla es lo de menos la cosa es que actualice el order que se esta insertando.

 

El problema esta en el order que justo se esta insertando por que si el WHERE id_cart lo pongo manualmente a un id anterior se actualiza perfectamente y cuando le pongo el id que le sigue ya no actualiza.

 

Ejemplo:

 

  • Va por el id_cart 10.
  • Yo antes de crear el id_cart 11 pongo manualmente where id_cart = 11 y justo ese id ya no se actualiza (que es el que se ha insertado).

 

Muchisimas gracias de antemano.

Edited by d33x (see edit history)
Link to comment
Share on other sites

 

En $params, viene también el pedido, no necesitas buscarlo a traves del carrito. 

 $params['order']

 

¡Muchas gracias! Pero independientemente de eso... ¿Por que no actualiza el mismo order que se esta insertando?.

 

Muchas gracias de antemano.

 

Un saludo

Link to comment
Share on other sites

No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple

$id_cart = (int)$params["cart"]->id;
$order = $params['order'];
$order->id_cart = $id_cart;
if ($order->id_cart){
$order->gift = 2;
$order->update();
}
Link to comment
Share on other sites

 

No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple

$id_cart = (int)$params["cart"]->id;
$order = $params['order'];
$order->id_cart = $id_cart;
if ($order->id_cart){
$order->gift = 2;
$order->update();
}

 

Voy a probarlo en seguida pero me vuelvo a explicar visto que no me he explicado bien.

 

Yo necesito que cuando una persona haga un pedido (o cuando se inserte un order, da igual) en ese mismo momento (despues de que se haya insertado el order en la tabla ps_order) actualizar un valor en la tabla de ese mismo order.

 

Hago una simulación:

 

  1. Se hace un pedido.
  2. Se inserta el pedido en sus correspondientes tablas.
  3. Justo en ese momento (después de que el pedido se haya añadido el order con éxito) actualizo un valor de la tabla ps_order de ese mismo order que se ha añadido.
    1. Se que el hook es hookActionValidateOrder.

 

Imaginate...

 

El order se añade automáticamente con la referencia "DDDDD0" pues justo en ese momento, una vez el order este insertado, actualizar la referencia a "XXXXXX0".

 

¿Me he explicado mejor?

 

Muchisimas gracias señor @ventura

Link to comment
Share on other sites

 

No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple

$id_cart = (int)$params["cart"]->id;
$order = $params['order'];
$order->id_cart = $id_cart;
if ($order->id_cart){
$order->gift = 2;
$order->update();
}

 

No realiza ninguna actualización de la tabla gift del order que se inserta en ese momento.

 

De echo hasta lanza error 500.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...