Jump to content

Edit History

math zerman

math zerman


nouveau bug

Bonjour Eolia, en faîtes après coup je me suis rendu compte que le hookpostUpdateOrderStatus($params) pose problème 😕

Dans mon script pour le premier cas ça me créer le bug suivant :

--

Dans l'aperçu général des commandes mon état est bien mis à jour ( capture 1 )

Mais dans le détail de la commande le statut n'est pas activé. ( capture 2 )

La commande à un statut "cette commande n'a pas d'état défini" dans le compte client. ( capture 3 )

 

Par contre pour le second cas, donc après génération de la commande le statut change bien partout comme il faut ..

--

 

le script :

 

public function hookActionOrderStatusPostUpdate($params)
    {    

 

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

        $id_cmd_change = $params['id_order'];

        $res_order = Db::getInstance()->executeS("REQUETE*");

 

    foreach ($res_order as $res_order_unique=>$value) {

    // INITIER LES VARIABLES
    require_once('../vendor/autoload.php');

    $client = new \GuzzleHttp\Client();

    $ref_unique = $value['reference'];
    $adresse_livraison = $value['address_delivery'];
    $adresse_facturation = $value['address_invoice'];
    $client_site = $value['customer'];
    $mode_livraison = $value['carrier_name'];
    $date_cmd = $value["DATE_FORMAT(o.date_add,'%d/%m/%y')"];
    $email_client = $value['email'];

        $request = $client->createRequest('POST', 'https://api.sendinblue.com/v3/smtp/email', [

          'body' => "{\"sender\":{\"name\":\"Service Client\",\"email\":\"[email protected]\"},\"to\":[{\"email\":\"$email_client\",\"name\":\"$client_site\"}],\"replyTo\":{\"email\":\"[email protected]\",\"name\":\"Service Client\"},\"params\":{\"PRENOM\":\"$client_site\",\"ORDER_REF\":\"$ref_unique\",\"DATE\":\"$date_cmd\",\"DELIVERYADDRESS\":\"$adresse_livraison\",\"INVOICEADDRESS\":\"$adresse_facturation\"},\"templateId\":3}",

          'headers' => [

            'Accept' => 'application/json',

            'Content-Type' => 'application/json',

            'api-key' => 'xxxxxxxxxxxxx',

          ],
          
        ]);
        $client->send($request);       
    
}

        }

        if($params['newOrderStatus']->id == 4){
        //include('../emails-transactionnels/query-expedie.php');

        $id_cmd_change = $params['id_order'];

        $res_order = Db::getInstance()->executeS("REQUETE*

 ");

        //$i= 1;
        foreach ($res_order as $res_order_unique=>$value) {

            // INITIER LES VARIABLES
            include('../vendor/autoload.php');

            $client = new \GuzzleHttp\Client();

            $ref_unique = $value['reference'];
            $adresse_livraison = $value['address_delivery'];
            $adresse_facturation = $value['address_invoice'];
            $client_site = $value['customer'];
            $mode_livraison = $value['carrier_name'];
            $date_cmd = $value['date_add'];
            $email_client = $value['email'];
            $num_suivi = $value['tracking_number'];
            $track_num_suivi = "https://www.laposte.fr/outils/suivre-vos-envois?code=$num_suivi";


                    $request = $client->createRequest('POST', 'https://api.sendinblue.com/v3/smtp/email', [

                      'body' => "{\"sender\":{\"name\":\"Service Client\",\"email\":\"@gmail.com\"},\"to\":[{\"email\":\"$email_client\",\"name\":\"$client_site\"}],\"replyTo\":{\"email\":\"@gmail.com\",\"name\":\"Service Client\"},\"params\":{\"PRENOM\":\"$client_site\",\"ORDER_REF\":\"$ref_unique\",\"DATE\":\"$date_cmd\",\"DELIVERYADDRESS\":\"$adresse_livraison\",\"INVOICEADDRESS\":\"$adresse_facturation\",\"NUMTRACKING\":\"$num_suivi\",\"TRACKINGSUIVI\":\"$track_num_suivi\"},\"templateId\":1}",

                      'headers' => [

                        'Accept' => 'application/json',

                        'Content-Type' => 'application/json',

                        'api-key' => 'xxxxxxxxxxxxxxxxx',

                      ],
                      
                    ]);
                    $client->send($request);
                    
                   // $i++;

    
}

        }
    }
}

 

Une petite idée ?

Merci beaucoup !!

capture 3.png

capture 2.png

capture 1.png

math zerman

math zerman

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

×
×
  • Create New...