Jump to content
nat@dev

Modifier le groupe du client après une première commande

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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);
}
}
?>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 .

Share this post


Link to post
Share on other sites

En l'occurence je pense qu'une surcharge de controller suffira, mais je ne sais pas lequel ni à quel endroit...

Share this post


Link to post
Share on other sites

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+

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Pourquoi ne faites-vous pas appel à des professionnels directement ?

Ca reste des modifications faciles pour un développeur.

 

A+

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More