Jump to content

Véhiculer l'ancien prix dans hook updateProduct


Recommended Posts

Bonjour,

 

Y a t-il un moyen d'avoir dans le hook updateProduct l'ancien prix (avant modif donc) ?

 

S'il faut faire des modifs, pouvez-vous m'expliquer comment marche l'update d'un produit, je ne comprends pas assez bien la mécanique.

 

Pour le moment j'ai créé un champ hidden dans l'onglet AdminProduct :

 

<input name="oldprice" type="hidden" value="'.$oldprice = $this->getFieldValue($obj, 'price').'" />

 

Puis dans la fonction submitAddProduct, ligne 1177 j'ai rajouté :

$object-> oldprice = Tools::getValue('oldprice');

juste avant :

Hook::updateProduct($object);

 

Pour affecter 'oldprice' à l'objet produit en cours et donc au hook updateProduct.

 

J'essaye ensuite de faire en sorte d'alerter les clients lorsque le prix a baissé.

 

Ensuite dans mon module, je crée une fonction du type :

public function hookUpdateProduct($params)
{
if ($params['product']->oldprice > $params['product']->price)
$this->sendCustomerAlert((int)$params['product']->id, 0);
}

(code recopié en partie à partir du module mailalerts)

 

Pouvez-vous m'aider ?

 

Merci

Link to comment
Share on other sites

Je me pose une question :

Puisque tu utilises un champ pour stocker ta valeur oldprice, pourquoi ne pas tenter de la récupérer directement depuis le hook du module ?

A priori , s'il n'y a pas de redirection avant l'appel au hook updateProduct , tu devrais avoir conservé les données get/post du formulaire , tu as testé ?

 

if( (float)Tools::getValue('oldprice') < ..... )

Link to comment
Share on other sites

Disons que pour le moment j'essaye de pouvoir envoyer des mails (je suis en local, sous Zend server, mon FAI est free et malgré tous les tests de config de php.ini ou de smtp dans B.O => Préférences => email), je n'arrive pas à envoyer de mail.

 

Par la fonction mail() de php j'ai un message comme quoi le message a été envoyé, mais je ne reçois rien.

Via le paramétrage SMTP, ça tourne en boucle et rien ne se passe.

 

J'ai essayé les ports 25, 465 et 587.

 

Avec ou sans utilisateur et mdp.

 

sendmail_from paramétré ou pas.

 

Et toujours pas de mail envoyé.... :(

 

Si je veux tester que tout fonctionne correctement (notamment la réception de cet attribut oldprice de l'objet dans le hook), pourrais-tu me donner un exemple de ce que je pourrais faire dans la fonction hook de mon module pour tester si je reçois bien la données oldprice :

 

public function hookUpdateProduct($params){
if($params['product']->oldprice > $params['product']->price)
// FAIRE UN TEST ICI POUR ME MONTRER LA VALIDITE DE MON PARAMETRAGE ET DU PROCESSUS
}

J'ai essayé de faire un return product.tpl mais lorsque je fais la mise à jour du produit en baissant le prix, ça ne fonctionne pas.

 

a+ et merci de ton aide.

Link to comment
Share on other sites

Disons que pour le moment j'essaye de pouvoir envoyer des mails (je suis en local, sous Zend server, mon FAI est free et malgré tous les tests de config de php.ini ou de smtp dans B.O => Préférences => email), je n'arrive pas à envoyer de mail.

 

Par la fonction mail() de php j'ai un message comme quoi le message a été envoyé, mais je ne reçois rien.

Via le paramétrage SMTP, ça tourne en boucle et rien ne se passe.

 

J'ai essayé les ports 25, 465 et 587.

 

Avec ou sans utilisateur et mdp.

 

sendmail_from paramétré ou pas.

 

Et toujours pas de mail envoyé.... :(

 

Si je veux tester que tout fonctionne correctement (notamment la réception de cet attribut oldprice de l'objet dans le hook), pourrais-tu me donner un exemple de ce que je pourrais faire dans la fonction hook de mon module pour tester si je reçois bien la données oldprice :

 

public function hookUpdateProduct($params){
if($params['product']->oldprice > $params['product']->price)
// FAIRE UN TEST ICI POUR ME MONTRER LA VALIDITE DE MON PARAMETRAGE ET DU PROCESSUS
}

J'ai essayé de faire un return product.tpl mais lorsque je fais la mise à jour du produit en baissant le prix, ça ne fonctionne pas.

 

a+ et merci de ton aide.

 

Tu as configuré comment ton php.ini ?

En fait sur l'host ce n'est pas localhost qu'il faut mettre mail le fqdn du smtp de ton fai :

eg :

 

[mail function]

; For Win32 only.

; http://php.net/smtp

SMTP = smtp.free.fr

; http://php.net/smtp-port

smtp_port = 25

 

 

et sinon ben ce que tu peux faire pour savoir si tu reçois bien les données get/post du formulaire dans le hook , fais un die :

 

public function hookUpdateProduct($params)
{
   die(Tools::getValue('oldprice'));
}

Link to comment
Share on other sites

Tu as configuré comment ton php.ini ?

En fait sur l'host ce n'est pas localhost qu'il faut mettre mail le fqdn du smtp de ton fai :

eg :

 

[mail function]

; For Win32 only.

; http://php.net/smtp

SMTP = smtp.free.fr

; http://php.net/smtp-port

smtp_port = 25

Oui c'est bien ce que j'ai fait, mais rien ne passe, à part avoir le message de bon envoi en utilisant la fonction mail() et rien en smtp.

J'ai vérifié la freebox, je ne bloque pas de flux sortant, d'ailleurs mon client mail (outlook express) est paramétré de la même façon et il marche nickel.

J'ai même essayé d'appeler l'exe de outlook express dans la variable sendmail_path, mais que dalle.

 

et sinon ben ce que tu peux faire pour savoir si tu reçois bien les données get/post du formulaire dans le hook , fais un die :

 

public function hookUpdateProduct($params)
{
die(Tools::getValue('oldprice'));
}

OK je te remercie je testerais ce soir.

 

Merci énormément pour ton 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...