EmmanuelTesson Posted July 15, 2015 Share Posted July 15, 2015 (edited) Bonjour, J'essaie depuis quelques temps de mettre en oeuvre une approbation des commandes pour les clients faisant partie d'un groupe particulier. J'ai créé un module qui : ajoute un nouveau staut de commande "En attente d'approbation" teste l'utilisateur courant (appartenance à un groupe) J'ai essayé de greffer mon module aux hooks suivants sans succès : hookActionValidateOrder hookActionOrderStatusUpdate hookActionObjectOrderHistoryAddAfter J'obtiens à chaque fois une boucle sans fin, puisque je mets à jour le statut, qui lui-même se met à jour ensuite. Je tente donc d'utiliser le hook "hookActionOrderStatusPostUpdate", mais lorsque je mets à jour le statut, il se place avant le staut par défaut "Préparation en cours". le code du hook : public function hookActionOrderStatusPostUpdate($params) { // var_dump($params);exit(); $newOrderStatus = $params['newOrderStatus']; $id_order = $params['id_order']; $cart = $params['cart']; $order = new Order($id_order); $groups = Customer::getGroupsStatic($cart->id_customer); $approverGroups = Configuration::get(Tools::strtoupper($this->name).'_approvergroup'); $orderHistory = new OrderHistory(); $orderHistory->id_order = $id_order; // var_dump($order); /* echo 'currentState: '.$order->getCurrentState().' Approval status '.Configuration::get('PS_OS_APPROVALORDER'); exit(); */ if(!in_array($approverGroups,$groups) && $order->getCurrentState()== Configuration::get('PS_OS_PREPARATION')){ //Si non, la commande passe en statut "attente d'approbation" + "mail Approbateur" + mail commandeur $orderHistory->changeIdOrderState(Configuration::get('PS_OS_APPROVALORDER'), (int) $id_order); $orderHistory->add(); } } Je ne vois plus comment faire maintenant ? EDIT: bon je constate que si j'utilise le hook actionOrderStatusPostUpdate (ou les autres), je fais une boucle en appelant la fonction changeIdOrderState de la classe Orderhistory. je souhaite donc modifier directement la valeur de $new_os dans le cas où l'utilisateur n'a pas les droits d'approbation, en utilisant le hook actionOrderStatusUpdate. l'idée est de changer le statut par défaut par le statut custom "En attente d'approbation". est ce que l'on peut m'aider sur ce point ? Edited July 15, 2015 by EmmanuelTesson (see edit history) Link to comment Share on other sites More sharing options...
EmmanuelTesson Posted July 15, 2015 Author Share Posted July 15, 2015 Bonjour je me réponds à moi même puisque j'ai testé une autre solution, mais avec d'autres problèmes ! j'ai tenté d'utiliser le hook OrderConfirmation. public function hookOrderConfirmation($params) { // var_dump($params);exit(); $objOrder = $params['objOrder']; $history = new OrderHistory(); $history->id_order = (int)$objOrder->id; $history->changeIdOrderState((int)(Configuration::get('PS_OS_APPROVALORDER')), (int)($objOrder->id)); } Le changement de statut est bien effectué en fin de commande et apparait bien dans la liste des commandes avec le bon statut (En attente de validation). Cependant, si je clique dans le détail de la commande, le statut est affiché comme "Préparation en cours", comme dans l'historique des commandes du client ??? cela devient un vrai mystère ! Link to comment Share on other sites More sharing options...
Alec_Eiffel Posted July 30, 2020 Share Posted July 30, 2020 voir mon com Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now