Jump to content

Problème Alerte mail (réapprovisionnement du stock)


Recommended Posts

Bonjour à tous,

Un client pour lequel j'ai confectionné une magnifique boutique en ligne a émit le désir d'activer l'option pour les clients de recevoir un email au cas où ceux-ci voudraient savoir si un produit désiré serait réapprovisionné en stock ... Rien de plus simple à priori, de la routine quoi ...

J'ai donc activé tout naturellement l'option "Gives the customer the option of receiving a notification when an out-of-stock product is available again" pour "Customer notifications" du module "mail alerts". Jusqu'ici, tout va bien ...

Version mail alerts : 3.6.0.
Version prestashop : 1.6.1.4 (la dernière au moment où j'écris ces lignes)

Or, quand je vais sur une page produit pour un produit en rupture de stock, l'option pour le client n'apparait pas (et je précise que je suis connecté comme client). J'ai regardé avec firebug, le #oosHook est en "display:none" et, même si j'active le display via firebug, rien n'existe de toute façon dans la div. Je sais que c'est pourtant bien là que doit apparaitre l'option.

Bien sûr vous allez me demander si l'alert mails a bien été positionnée dans l'actionProductOutOfStock des positions de module (back end), la réponse est oui.

A mon avis le problème vient de mon template. Un beau template que j'ai acheté (je ne sais pas si je peu citer son nom ici), parfaitement compatible avec la dernière version de prestashop. Sauf peut-être pour ça ...

Voilà voilà .. Quelqu'un a-t-il une idée de piste ? Comment m'y prendre pour solutionner le problème et avoir enfin cette belle option d'alerts mail disponible dans les pages de produit hors-stock pour les clients ?

Merci ! :-)

JM

Link to comment
Share on other sites

Bonjour,

 

je vous expose mon soucis sur mon site prestashop.

 

quand un client m'envoit un message avec une piece joint, j'arrive pas à ouvrir cette joint.

avez vous une piste pour regler cette erreur.?

 

PS: l'erreur que je reçois après que je Click sur la pièce joint est :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

 

merci d avance 

cordialement 

 

Link to comment
Share on other sites

Bonjour,

 

je vous expose mon soucis sur mon site prestashop.

 

quand un client m'envoit un message avec une piece joint, j'arrive pas à ouvrir cette joint.

avez vous une piste pour regler cette erreur.?

 

PS: l'erreur que je reçois après que je Click sur la pièce joint est :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

 

merci d avance 

cordialement 

Vous auriez du ouvrir un autre post, le problème n'étant pas le même, ni le sujet...

 

Activez l'affichage des erreurs pour en savoir plus, en modifiant cette ligne au début du fichier config/defines.inc.php :
 
define('_PS_MODE_DEV_', false);
 
par
 
define('_PS_MODE_DEV_', true);
 
Et donnez-nous l'erreur après avoir retenté d'ouvrir la pièce-jointe.
Link to comment
Share on other sites

Bonjour Eolia .. Merci pour cette réponse très rapide !

 

1) J'imagine que c'est le product.tpl de mail alert (il possède un fichier du même nom, tout pour nous embrouiller les pinceaux ...) que je dois regarder aussi ? Je ne dois pas regarder les fichiers PHP ? De plus, il y a le module mail alerts de base mais aussi le même module dans le répertoire du template .. Savez-vous lequel des deux je dois regarder ?

 

2) Ca c'est une chose ... Mais j'ai peut être trouvé une autre piste (à moins que ce soit lié). Dans le fichier product.tpl "normal" (celui à la racine du thème, pas celui de mail alerts), voici ce que je trouve :

 

***

 

<!-- Out of stock hook -->
            <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>
                {$HOOK_PRODUCT_OOS}
            </div>
            {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}
            {if !$content_only}
                <!-- usefull links-->
                <ul id="usefull_link_block" class="clearfix no-print">
                    {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}
                    <li class="print">
                        <a href="javascript:print();">
                            {l s='Print'}
                        </a>
                    </li>
                </ul>
            {/if}

 

***

 

C'est étrange parce que le produit dont je consulte la page (en rupture de stock) a, vu avec firebug, son div oosHook toujours branché sur display: none. Or, la condition dit que ça ne peut se mettre ainsi que quand la quantité est supérieure à 0 !! Je viens de vérifier dans le backend aussi, pas de probs, la quantité est pourtant bien de 0.

 

j'en déduis que le problème viendrait peut être de la variable quantity (après je ne connais pas très bien la programmation OO) ... Est-ce que ce bug (car je suppose que ça en est un) vous dit quelque chose ?

Edited by jihem (see edit history)
Link to comment
Share on other sites

 

Vous auriez du ouvrir un autre post, le problème n'étant pas le même, ni le sujet...

 

Activez l'affichage des erreurs pour en savoir plus, en modifiant cette ligne au début du fichier config/defines.inc.php :
 
define('_PS_MODE_DEV_', false);
 
par
 
define('_PS_MODE_DEV_', true);
 
Et donnez-nous l'erreur après avoir retenté d'ouvrir la pièce-jointe.

 

Bonjour,

désolé d'avoir exposé mon problème qui ne correspond pas aux precidents.

apres modification de define('_PS_MODE_DEV_', false); par define('_PS_MODE_DEV_', true); l'erreur est toujours la meme !! 

 

merci :) 

Link to comment
Share on other sites

Bonjour Eolia .. Merci pour cette réponse très rapide !

 

1) J'imagine que c'est le product.tpl de mail alert (il possède un fichier du même nom, tout pour nous embrouiller les pinceaux ...) que je dois regarder aussi ? Je ne dois pas regarder les fichiers PHP ? De plus, il y a le module mail alerts de base mais aussi le même module dans le répertoire du template .. Savez-vous lequel des deux je dois regarder ?

 

2) Ca c'est une chose ... Mais j'ai peut être trouvé une autre piste (à moins que ce soit lié). Dans le fichier product.tpl "normal" (celui à la racine du thème, pas celui de mail alerts), voici ce que je trouve :

 

***

 

<!-- Out of stock hook -->

            <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>

                {$HOOK_PRODUCT_OOS}

            </div>

            {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}

            {if !$content_only}

                <!-- usefull links-->

                <ul id="usefull_link_block" class="clearfix no-print">

                    {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}

                    <li class="print">

                        <a href="javascript:print();">

                            {l s='Print'}

                        </a>

                    </li>

                </ul>

            {/if}

 

***

 

C'est étrange parce que le produit dont je consulte la page (en rupture de stock) a, vu avec firebug, son div oosHook toujours branché sur display: none. Or, la condition dit que ça ne peut se mettre ainsi que quand la quantité est supérieure à 0 !! Je viens de vérifier dans le backend aussi, pas de probs, la quantité est pourtant bien de 0.

 

j'en déduis que le problème viendrait peut être de la variable quantity (après je ne connais pas très bien la programmation OO) ... Est-ce que ce bug (car je suppose que ça en est un) vous dit quelque chose ?

Il faudrait voir votre configuration. Utilisez-vous les stocks avancés ? $product->quantity doit refléter la quantité dispo de ce produit.

 

Bonjour,

désolé d'avoir exposé mon problème qui ne correspond pas aux precidents.

apres modification de define('_PS_MODE_DEV_', false); par define('_PS_MODE_DEV_', true); l'erreur est toujours la meme !! 

 

merci :) 

Donc le problème ne vient pas de Prestashop mais de votre serveur. Comme le dit le message, consultez votre error.log ou demandez à votre hébergeur

Link to comment
Share on other sites

Voilà ... Désolé de ne pas avoir répondu plutôt du fait des fêtes ... Je me suis donc remis à ce problème ce matin.

 

Il faudrait voir votre configuration. Utilisez-vous les stocks avancés ? $product->quantity doit refléter la quantité dispo de ce produit.

 

Rebonjour Eolia.

 

Je viens d'activer et chipoter à fond dans cette option, aucun changement .. Je l'ai donc désactivée (il n'y a que la gestion des stocks normale qui est activée).

 

Ensuite j'ai essayé une autre option de "Préférences > Produits" : "Afficher les attributs indisponibles sur la fiche produit". Et là : bingo !! Le "Notify me when available" apparait enfin en "display:none;display:block;" (un display block apparait juste après le display none, ce qui annule donc le none, mais c'est bizarre que block ne remplace pas directement le none mais bon ..) .. au moins ça marche.

 

... ou presque.

 

1) l'option apparait enfin mais pas sur toutes les fiches produits hors-stock, je ne trouve pas d'explication ... Sinon sur la plupart des produits hors-stock elle apparait bien mais c'est quand même bizarre que pas sur tous ... Et dans le rare cas de figure où ça ne marche pas, c'est parce qu'il n'y a pas de "Notify me when available" dans le div #oosHook.

 

2) cette option apparait (quand elle apparait, cfr point 1)  à l'état brut, sans style. Ce n'est pas un gros problème puisque je peu à présent la décorer au css mais c'est quand même étrange que rien n'était prévu.

 

3) cette option apparaît (quand elle apparait, cfr point 1) en anglais. Je suis donc allé dans les traductions du front office (et autres) pour essayer de la retrouver et, comme je m'en doutais, elle ne s'y trouve pas. Comme si elle n'était pas censé exister. Au pire je peu aller l'éditer dans le fichier *.tpl concerné et la traduire directement dans le code en français mais bon .. si quelqu'un a une meilleure idée ...

 

voilà ... Il y doit donc y avoir toujours un problème quelque part, si quelqu'un voit de quoi je parle.

Link to comment
Share on other sites

la question du point 1 est résolue : il s'agissait de produits hors-stock que j'avais déjà enregistré dans mes alertes en trichant ... Donc ça c'est bon.

 

... ou presque car ce problème ne s'est pas résolu sans malheureusement en apporter un autre : quand je vais dans "my alerts" de mon compte, impossible de supprimer mes produits ajouté dans la liste (pour recevoir email si réapprovisionnement de stock). Quand je clique sur la croix de suppression, rien ne se passe, le curseur ne se transforme même pas en index.

 

Voici le bout de code de cette croix de "suppression" :

 

***

<span class="remove">
    <i class="icon-remove" rel="ajax_id_mailalert_5355_0"></i>
</span>

***

 

:-( je vais devenir fou. Peut-être que c'est à cause de mon template qui a complètement baclé cette option

Edited by jihem (see edit history)
Link to comment
Share on other sites

je viens de résoudre le problème de traduction : c'était tout bête, j'avais oublié de regarder dans les traductions de modules ... Et j'ai fais le css de l'option donc maintenant tout est nickel ...

 

... Sauf le point que nous abordons à présent : pouvoir supprimer les produits de la liste "My Alerts" sur son compte. Je pense aussi que ça sent le problème JS mais ça sent l'aiguille dans la botte de foin ... Je n'ai pas de rapport à ce sujet dans console de navigateur.

 

Ca n'a pas l'air commun comme erreur, ce qui me fait un peu peur ... Le sujet a déjà été abordé en 2011 sur prestashop et laissé sans réponse :-( c'est pourtant la dernière chose que j'ai à faire pour avoir une boutique qui fonctionne parfaitement, c'est très embêtant ..

 

https://www.prestashop.com/forums/topic/109420-cannot-delete-remove-product-alerts-from-account

Link to comment
Share on other sites

Je ne comprends pas comment se fait-il que javascript pourrait avoir influence sur base de donnée mais bon, peut être ne suis-je pas assez calé .. Quand je clique sur la croix de suppression, c'est censé activer le code suivant :

 

***

 

    function(e) {
  var ids = $(this).attr('rel').replace('ajax_id_mailalert_', '');
  ids = ids.split('_');
  var id_product_mail_alert = parseInt(ids[0]);
  var id_product_attribute_mail_alert = parseInt(ids[1]);
  var parent = $(this).parents('li');
  if (typeof mailalerts_url_remove == 'undefined')
    return;
  $.ajax({
    url: mailalerts_url_remove,
    type: "POST",
    data: {
      'id_product': id_product_mail_alert,
      'id_product_attribute': id_product_attribute_mail_alert
    },
    success: function(result) {
      if (result == '0') {
        parent.fadeOut("normal", function() {
          if (parent.siblings().length == 0)
            $("#mailalerts_block_account_warning").removeClass('hidden');
          parent.remove();
        });
      }
    }
  });
}

 

***

 

j'ai été voir sur github.com, je trouve des codes légèrement différents mais évidemment je ne sais pas si le problème vient de là ...

 

QUESTION : quelqu'un peut-il me renseigner si je veux contacter un développeur de prestashop ? Quelqu'un qui aurait travaillé sur le mailalert ? J'imagine qu'il comprendra mieux son code que moi ^^

Link to comment
Share on other sites

Non, c'est sur que javascript ne peut pas modifier les données en BDD, c'est une règle de sécurité. Javascript peut modifier l'affichage et interroger un fichier php en lui envoyant des paramètres.

Le fichier php interrogé, peut lui, modifier la base de données, mais c'est une autre histoire.

 

Quand je vous demandais si vous n'aviez pas d'erreur js en console, ce n'est pas forcément sur ce module. Il faut comprendre qu'une erreur js dans le code de la page rend impossible toute exécution du code js qui suit...

 

Après, on est pas devins, hein! Sans url et sans code il est difficile de faire un diagnostic. C'est comme si vous téléphoniez à votre garagiste en lui demandant pourquoi votre voiture ne démarre pas. Après les questions habituelles d'usage, il vous demandera d'amener la voiture au garage.

  • Like 1
Link to comment
Share on other sites

ok, merci pour les explications ..

 

Tout à fait mais je supposais que le bug était peut-être un peu connu, ce qui aurait facilité les choses ...

 

Je vais essayer de contacter le développeur du mail alerts au cas où ce problème lui dirait quelque chose .. Si ça tombe le soucis vient du template

Link to comment
Share on other sites

  • 2 weeks later...

juste pour vos archives :

 

voilà le dévélopeur de mon template m'a répondu sur mon problème de produits qui ne s'effacent pas de la liste des alertes mail du client .. Je vous donne la réponse au cas où quelqu'un croiserait un jour ce genre de problème :

 

Dans le CSS de mailalerts à l'endroit concerné, j'ai du ajouter tout simplement la ligne z-index: 999;

 

et voilà, ça marche à présent super bien.

 

Bonne journée

jm

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