Jump to content

[Résolu] Récupérer la référence produit après sélection déclinaison


Recommended Posts

Bonjour,

Je suis sous Prestashop 1.5.4.0, et plutôt débutant en PHP, je rencontre un problème avec la référence des produits déclinés.
Je m'explique:

Par défaut, lorsque le stock d'un produit décliné est à 0, le hook out of stock s'affiche, permettant l'envoi d'un mail pour avertir le client du réapprovisionnement.

Or, lorsque ce mail est envoyé, s'il s'agit d'un produit à déclinaison, celle-ci n'est pas précisée dans l'e-mail.
Aussi, j'aurais aimé récupérer la référence de la déclinaison.

J'ai réussi à récupérer et à afficher assez facilement dans l'email la référence du produit en modifiant les fichiers

modules/mailsalerts/MailAlert.php (ligne 169, rajout "{reference}' => $product->reference"), et

- modules/mailsalerts/mail/fr/customer_qty.html (rajout {reference} à l'endroit voulu).

Mais la référence qui s'affiche dans l'email est celle du produit par défaut, en l'occurrence "AROME_FRUIT", et j'aimerais avoir la référence déclinée genre "AROME_FRAMBOISE" ou "AROME_BANANE", sans quoi le client peut ne plus se souvenir de sa demande passée.

Après recherches, j'en ai déduit que cela provenait probablement du hook out of stock, qui ne prenait pas en considération la déclinaison sélectionnée lorsque celle-ci a son stock à 0.


Mes compétences en php étant limitées, j'ignore si c'est simple ou complexe à résoudre, et je sollicite l'aide de la communauté... Quelqu'un aurait-il une piste?

Je suis sous prestashop 1.5.4.0
Merci d'avance! :)

Edited by GillesGuil (see edit history)

Share this post


Link to post
Share on other sites

Malheureusement non, ça aurait été trop simple... :(
.
J'avais une autre hypothèse si la récupération de la référence déclinée était impossible, ça aurait été récupérer le dernier mot de l'URL une fois la déclinaison sélectionnée.

Par défaut elle est du genre :
http://www.---.fr/categorie/19-aromes.html
Et une fois sélectionné une déclinaison l'URL devient 
http://www.---.fr/categorie/19-aromes.html#/arome-fraise

A défaut de la référence déclinée, si je pouvais récupérer que le dernier mot de l'URL (en gras), cela me suffirait. Tant que la référence déclinée est indiquée d'une manière ou d'une autre dans le mail de réapprovisionnement. Mais c'est toujours le même hook out of stock, inévitable, qui ne prévoit pas par défaut cette possibilité... :(

Et je m'en casse les dents depuis le début de l'après-midi...

Share this post


Link to post
Share on other sites

Salut,

 

Peut etre une piste :

 

C'est dynamique, ça se passe donc dans le product.js du thème

 

Tu dois avoir un bout de code qui ressemble à ça :

            if (availableLaterValue != '')
            {
                $('#availability_value').text(availableLaterValue);
                if (stock_management == 1)
                    $('#availability_statut:hidden').show('slow');
            }

Essai de le remplacer par ça :

            if (availableLaterValue != '')
            {
                $('#availability_value').text(availableLaterValue + ' ' + selectedCombination['reference']);
                if (stock_management == 1)
                    $('#availability_statut:hidden').show('slow');
            }

(Je suis sur la version 1.6 mais ca doit fonctionner pareil ^_^ )

 

PS : Je suis une quiche en javascript :P

Edited by anteverce (see edit history)

Share this post


Link to post
Share on other sites

Hello anteverce,

Malheureusement, la modification de ce script dans product.js n'a aucun effet: c'est toujours la référence par défaut qui s'affiche, et non la référence de la déclinaison... :(

Share this post


Link to post
Share on other sites

  • 11 months later...

Bonjour Okom3Pom,

 

Désolé de déterrer ce sujet, mais sur le mien, assez similaire, je n'ai eu aucune réponse.

 

Dans ton avant-dernier message, tu mets :
 

Bon du coup j'ai ouvert le fichier

 

Tu peux faire comme ça :

$ref_attrib = Db::getInstance()->getValue('SELECT reference FROM '._DB_PREFIX_.'product_attribute WHERE id_product_attribute  = '.(int)$id_product_attribute);

A placer dans : public static function sendCustomerAlert($id_product, $id_product_attribute)

 

 

Excuse-moi, mais j'ai rien compris :P

J'ai bien compris qu'il fallait placer ta ligne de code quelque part, mais dans quel fichier ? Il faut remplacer une ligne déjà écrite ou l'ajouter ? Si oui, où ?

D'avance merci pour ta réponse.

Bonne journée

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
 Share

×
×
  • Create New...

Important Information

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