nat@dev Posted June 25, 2013 Share Posted June 25, 2013 Bonjour, Je voudrais faire en sorte que lorsqu'un client à effectué son première achat, il soit automatiquement classé comme "client confirmé", après que j'ai accepté son paiement, et ce sans avoir à le faire manuellement. Je vois à peu près le code que je dois écrire, mais je ne sais absolument pas où l'écrire, si c'est dans un controller ou non, dans une fonction déjà éxistente, ou si je dois en créer une nouvelle. Pourriez-vous m'éclairer ? Merci d'avance pour votre aide. Link to comment Share on other sites More sharing options...
nat@dev Posted June 26, 2013 Author Share Posted June 26, 2013 Personne ne sais où cela se trouve ? Link to comment Share on other sites More sharing options...
vermich Posted June 26, 2013 Share Posted June 26, 2013 je le fait au moment de l'inscription et je pense que le principe est le même. Tu crée un module relié au hook de sortie de commande. Voici mon code (ici je suis sur le hook :createAccount) : <?php if (!defined('_PS_VERSION_')) exit; class LierCustomerCe extends Module { public function __construct() { $this->name = 'liercustomerce'; $this->tab = 'administration'; $this->version = '1.0'; $this->author = 'Romain Vermeeren '; $this->need_instance = 0; $this->ps_versions_compliancy = array('min' => '1.5', 'max' => '1.6'); $this->dependencies = array('codece'); parent::__construct(); $this->displayName = $this->l('Lier customer'); $this->description = $this->l('Lier le client à son CE'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); } public function install() { if (Shop::isFeatureActive()) Shop::setContext(Shop::CONTEXT_ALL); return parent::install() && $this->registerHook('createAccount'); } public function uninstall() { return parent::uninstall() ; } public function setDefaultGroupId($customer_id,$id_default_group) { Db::getInstance()->update('customer', array( 'id_default_group' => $id_default_group, ), '`id_customer` = '.(int)$customer_id); } public function hookcreateAccount($params) { //this is the customer object $customer = $params['newCustomer']; $codece = Tools::getValue('codece'); // code compagny from registration $sql = "SELECT id_group FROM ps_group_lang WHERE code = '$codece'"; // $id_default_group = (int)Db::getInstance()->getValue($sql); $groupsToAdd=array(); array_push($groupsToAdd,$id_default_group); $customer->updateGroup($groupsToAdd); $this->setDefaultGroupId($customer->id,$id_default_group); } } ?> Link to comment Share on other sites More sharing options...
nat@dev Posted June 26, 2013 Author Share Posted June 26, 2013 Oui, je vois le code, mais comme je l'ai dis je ne sais pas où le mettre pour qu'il soit pris en compte après que la première commande ai été validée Link to comment Share on other sites More sharing options...
vermich Posted June 26, 2013 Share Posted June 26, 2013 si tu fait un module le code sera appelé sur le hook de ton choix. Il faut juste que tu trouve celui qui se lance au moment de la validation de la commande et ça executera le code . Link to comment Share on other sites More sharing options...
nat@dev Posted June 27, 2013 Author Share Posted June 27, 2013 En l'occurence je pense qu'une surcharge de controller suffira, mais je ne sais pas lequel ni à quel endroit... Link to comment Share on other sites More sharing options...
DevNet Posted June 27, 2013 Share Posted June 27, 2013 En l'occurence je pense qu'une surcharge de controller suffira, mais je ne sais pas lequel ni à quel endroit... Regardez dans ./classes/order/OrderHistory.php OrderHistory->changeIdOrderState(.. Vous avez le hook actionPaymentConfirmation de dispo pour les modules ou tout simplement faire un override de cette classe. A+ Link to comment Share on other sites More sharing options...
nat@dev Posted July 1, 2013 Author Share Posted July 1, 2013 Bon, et bien, après plus d'une semaine à m'occuper de ça, et sans pouvoir trouver la solution, je me vois obliger de passer à autre chose, sous peine de ne pas finir mon projet à temps. Je remercie ceux m'ayant fournit leur aide. Link to comment Share on other sites More sharing options...
DevNet Posted July 1, 2013 Share Posted July 1, 2013 Pourquoi ne faites-vous pas appel à des professionnels directement ? Ca reste des modifications faciles pour un développeur. A+ 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