Jump to content

création module : mettre à jour la base de donnée lorsqu'un statut de commande change hookpostupdateorderstatus


Recommended Posts

Bonjour, j'espère qu'une âme charitable pourra me donner un coup de pouce ...🙂

J'ai besoin tout simplement de mettre à jour des tables en base de donnée lorsqu'un statut de commande change.

Au regarde de ce topic, je sais maintenant comment interagir avec prestashop lorsqu'un statut de commande change ( merci 1000 fois Eolia ) :

 

Tout fonctionne très bien lorsque j'utilise une API pour envoyer des mails transactionnels.

Maintenant j'aurai besoin de mettre à jour des données lorsque le statut de la commande change mais ça ne fonctionne pas dans l'environnement prestashop... Pourtant Le script qui me permet de mettre à jour ces données fonctionne très bien lorsque j'appelle mon  script via url .php sur le navigateur.

 

Voici le script intégré dans la fonction de mon module :

 

public function hookpostUpdateOrderStatus($params)   {

 

// Si ma commande est en statut commande accepté je récupère l'id de la commande dans ma variable

if($params['newOrderStatus']->id == 2){

$id_cmd_change = $params['id_order'];

 

// Requête pour récupérer les données

 $queryCmdMsg = Db::getInstance()->executeS("
  SELECT O.reference, GROUP_CONCAT(CUSD.value) AS message_carte, CUSD.id_customization, CUSD.index, CUS.id_cart, O.id_order, O.id_cart, O.reference, O.id_customer, O.id_address_delivery, O.id_address_invoice, O.date_add, O.gift, O.gift_message, O.total_shipping_tax_incl, O.total_shipping_tax_excl,O.carrier_tax_rate, O.total_wrapping_tax_excl, O.total_wrapping_tax_incl, CR.reduction_percent, CR.reduction_amount, CR.reduction_tax, T.rate, GH.buyerName, GH.recipientName, GH.recipientMail, GH.text, GH.id_giftcard_history
  FROM ps_customized_data as CUSD
  INNER JOIN ps_customization as CUS
  ON CUSD.id_customization = CUS.id_customization
  RIGHT JOIN ps_orders as O
  ON CUS.id_cart = O.id_cart
  LEFT JOIN ps_psgiftcards_history as GH
  ON O.id_order = GH.id_order
  LEFT JOIN ps_order_cart_rule as OCR
  ON OCR.id_order = O.id_order
  LEFT JOIN ps_cart_rule as CR
  ON CR.id_cart_rule = OCR.id_cart_rule
  LEFT JOIN ps_tax as T
  ON T.id_tax = CR.reduction_tax
  WHERE GH.id_order = '$id_cmd_change'
  GROUP BY CUS.id_customization
  ");

 

// On split les données dans le tableau message_carte

 foreach ($queryCmdMsg as $res_message => $message) {

 


    $data_carte = $message['message_carte'];
    $id_carte_cadeau = $message['id_giftcard_history'];

        list($message, $prenom, $nom, $email) = explode(",", $data_carte);

 

// On update

        $client = new Client();

            $queryUpdate = $client->createRequest("
            UPDATE ps_psgiftcards_history
            SET `buyerName` = '$nom', `recipientName` = '$prenom', `recipientMail` = '$email', `text` = '$message'
            WHERE ps_psgiftcards_history.id_giftcard_history = '$id_carte_cadeau'

        ");

            $client->send($queryUpdate);

    }

}

}

 

J'ai tenté plusieurs combinaisons pour update mais rien ne fonctionne ...

Merci 1000 fois pour le coup de pouce :) ..

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...