Jump to content

Module pour empêcher un profil de valider le statut d'une commande si prix > X


Recommended Posts

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 :wacko:

 

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 by Matthieu.h (see edit history)
Link to comment
Share on other sites

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

Merci !!! Ca marche ! :D

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

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