Matthieu.h Posted May 17, 2013 Share Posted May 17, 2013 (edited) Bonjour, J'essaye de créer un module qui empêcherai un profil employé de validé une commande si celle-ci a un prix > X. Je pense que le code qui s'occupe du changement de statut d'une commande est sité dans OrderHistory.php dans la fonction changeIdOrderState(). Donc j'ai fait beaucoup d'essais avec les hooks actionOrderStatusUpdate et actionOrderStatusPostUpdate présent au début et a la fin de la fonction, mais rien y fais public function hookActionOrderStatusUpdate($params) { // on récupère l'id du profil de l'employé connecté $employe = ($GLOBALS['employee']); $employe_idprofil = $employe->id_profile; // on récupère l'id du profil intitulé 'mon_profil_perso' $sql = 'SELECT id_profile FROM '._DB_PREFIX_.'profile_lang WHERE name= "mon_profil_perso"'; if ($result = Db::getInstance()->getRow($sql)) $mon_profil_perso_idprofil=$result['id_profile']; // on récupère le prix de la commande $sql = 'SELECT total_paid_tax_incl FROM '._DB_PREFIX_."order_invoice WHERE id_order= {$params['id_order']}"; if ($result = Db::getInstance()->getRow($sql)) $total_paid_tax_incl=$result['total_paid_tax_incl']; //Si profil employé "mon_profil_perso" ET commande > X Euro if (($mon_profil_perso_idprofil==$employe_idprofil) && ($total_paid_tax_incl > X)) { Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int)$order->id.'&vieworder&token='.$this->token); } } J'ai essayer de faire une redirection avec Tools::redirectAdmin() pour arreter l'execution de la fontion changeIdOrderState() mais ca crée un erreur parce que l'objet $order ne se charge pas Après j'ai essayer de supprimé le dernier historique du changement de statut (cette fois avec le hook actionOrderStatusPostUpdate) if (($mon_profil_perso_idprofil==$employe_idprofil) && ($total_paid_tax_incl > X)) { // 11 étant l'id de la commande que je test Db::getInstance()->delete('order_history', 'id_order = 11', 1); } mais ca marche pas J'ai aussi remarqué que le changement de statut dans la fonction changeIdOrderState() se faisait par la variable $new_os, est qu'il n'y aurait pas un moyen de modifier cette variable depuis mon module ? Est ce que quelqu'un peut m'aider svp? Edited May 17, 2013 by Matthieu.h (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted May 17, 2013 Share Posted May 17, 2013 J'ai pas tout revu en question, mais pour régler l'erreur citée plus haut: Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int)$params['id_order'].'&vieworder&token='.$this->token); Ceci utilise l'id_order passé en paramètre. Aucun objet Order n'a été instancié, donc $order->id ne peut fonctionner. Link to comment Share on other sites More sharing options...
Matthieu.h Posted May 20, 2013 Author Share Posted May 20, 2013 Merci !!! Ca marche ! Par contre, j'aimerai bien afficher un message d'erreur pour la personne qui essayerai de changer le statut pour que l'utilisateur comprenne ce qui lui arrive, j'essaye avec $this->errors[] = Tools::displayError('You do not have permission to edit this.'); j'ai essayé de changer $this par un autre objet mais ca m'affiche rien, est ce qu'il est possible de faire ca après une redirection? 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