Jump to content

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.

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

Link to comment
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+

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

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