Jump to content

Bllidz

Members
  • Posts

    197
  • Joined

  • Last visited

Everything posted by Bllidz

  1. Bonjour, je suis sur la création d'un module qui a pour but d'envoyer un mail à une adresse email. 2 types de mails peuvent être envoyé soit un AR soit la facture. j'ai une table avec l'email de compta et l'email a qui je dois envoyé l'ar. Mais je bloque avant car je mets mon email en brut histoire de tester. "Possible de retrouver des erreurs de code" voici le rendu du tpl. Ma fonction qui est censé envoyer un mail public function send_mail1($id_order,$typeMail){ $order = new Order($id_order); $customer = new Customer((int)$order->id_customer); $id_customer=((int)$order->id_customer); $templateVars = array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{order_name}' => $order->getUniqReference(), ); $id_lang = $order->id_lang; $id_lang = 0 ; if ($typeMail == "AR") { $subject = $this->l('Accusé de réception pour la commande'); $template_name = 'mail_ar'; $mail = Db::getInstance()->getValue('SELECT email_ar FROM`' . _DB_PREFIX_ .'jv_mail` where id_customer = '. (int)$id_customer); $mail1 = "[email protected]"; $file_attachment=null ; } if ($typeMail == "Compta") { $subject = $this->l('Facture de la commande'); $template_name = 'mail_compta'; $mail = Db::getInstance()->getValue('SELECT email_compta FROM`' . _DB_PREFIX_ .'jv_mail` where id_customer = '. (int)$id_customer); $mail1 = "[email protected]"; //$file_attachment['content'] = file_get_contents(_PS_ROOT_DIR_.'/pdf/ar.pdf'); //Chemin du fichier $file_attachment=null ; } Mail::Send( $id_lang, $template_name, $subject, $templateVars, $mail1,//mail du destinataire null, null, null, null, null, dirname(__FILE__) . '/mails/' ); } Mon js $('button.submitSendMail').unbind('click').click(function(e) { e.preventDefault(); //var email =$('#emailComptable').val(); //alert(email); var typeMail = document.querySelector('input[name=typeMail]:checked').value; //alert(typeMail); query = 'ajax=1&token='+token+'&action=envoi&id_customer='+id_customer+'&typeMail='+typeMail+'&id_order='+id_order+'&'; $.ajax({ type:'POST', //Methode POST url: "../modules/jv_mails/ajax_jv_mails.php", cache: false, dataType: 'json', data : query, success: function(data) { if (data.result) { console.log('ok'); } else jAlert(data.error); } }); return false; }); et mon fichier ajax_mon_module if (Tools::getValue('action') == 'envoi') { //$id_customer = Tools::getValue('id_customer'); $typeMail = Tools::getValue('typeMail'); $id_order=Tools::getValue('id_order'); $j->send_mail1($id_order,$typeMail); } et l'erreur en question Merci pour tout aide d'avance Je suis sous prestashop 1.7.6.9
  2. Salut , As tu tenté de vider le cache manuellement ? Sinon tente de supprimer le contenu du dossier cache donc les deux dossier dev et prod dans /var/cache. Jérémy
  3. Salut, Si ps_mode_dev est à true et que tu as sauvegardé alors tu es bien en mode debug ça c'est sûr ( tu peux le vérifier dans le back) . Après avoir une page blanche c'est pas le mode debug qui va t'afficher l'erreur et dans quel fichier, elle se trouve. Tu peux toujours vider le cache manuellement , supprimé le contenu du dossier cache ( dossier prod et dev) dans var/cache. Sinon as tu regardé dans ta console si il y'a une ou des erreurs ? Jérémy
  4. Bon le problème vient de customer à priori, vu que j'ai mit le tpl du hookDisplayAdminCustomers dans le hookDisplayAdminOrder. Car dans le admin js j'ai mit une alert au clique du bouton: $(document).ready(function() { $('button.submitAdd_compta').click(function(e){ e.preventDefault(); alert("je suis le test du module"); var email =$('#emailComptable').val(); var data= "?action=updateEmail&email="+email+"&id_customer="+id_customer+"&"; $.post("'.$this->context->shop->physical_uri.$this->context->shop->virtual_uri.'modules/'.$this->name.'/ajax_'.$this->name.'.php", data); }); }); et ça s'affiche bien... Sauf que après avoir cliqué sur le ok j'ai ça je ne sais pas pourquoi le AdminDashboard est appelé ? et au dessus c'est la redirection qui est dans le Post mais qui n'arrive pas à ce charger As tu une idée de pourquoi le controller de dashboard est appelé et pourquoi aussi du coup y'a une erreur de Jquery seulement dans le client ? Merci par avance jv_mails.zip
  5. Salut, Il faut aller dans la classe Address.php et changer le type du phone_number Edit: bien sur faire un override CDT
  6. Update: J'ai du coup rajouté cette partie: '<script type="text/javascript"> $(function() { $('button.submitadd_compta').click(function(e) { e.preventDefault(); var email =$('#emailComptable').val(); var data= "?action=updateEmail&email="+email+"&id_customer="+id_customer+"&"; $.post("'.$this->context->shop->physical_uri.$this->context->shop->virtual_uri.'modules/'.$this->name.'/ajax_'.$this->name.'.php", data); }); }); </script>' dans un document texte et que je mets dans la variable grace à un : $html = file_get_contents('./txt_varHtml.txt'); Mais le problème est toujours là, toujours pas de Jquery après ce n'est peut-être pas la bonne méthode pour la variable Html d'y mettre ce texte. Je vais me pencher dessus aujourd'hui pour résoudre ce problème car j'étais sur autre chose ces derniers jours et pas vraiment eu le temps de m'y plonger dedans. CDT
  7. Bonjour RF47 C'est ça , vous codez votre page index.html que vous mettez dans dans www donc ce sera la page qui s'ouvrira quand vous irez sur www.monsite.com et il suffit dans votre index.html de mettre une redirection vers le sous répertoire. exemple de code a mettre dans l'index.html pour rediriger vers votre autre page <head> <meta http-equiv="refresh" content="5; url='http://monsite.com/sous-repertoire/index.php'" /> </head>
  8. Comme l'a dit Alexandre tu créer un objet $product et grâce à cet objet tu auras accès aux éléments de la classe product donc les informations que tu souhaiteras
  9. Merci , je test ce soir chez moi et je te redis en éditant ce message Pour l'indentation je sais.. c'est mon problème 😂même mes profs me le disent.. je vais tester ça ce soir Après a vu d'oeil va y'avoir un problème de guillemet sur le $html mais bon ça je vais m'amuser pendant 5 minutes avec. Bonne remarque tu fais bien de me le dire. je vais y apporter tout ces petits changements et j'éditerai ce post afin de savoir si tout fonctionne ou non En tout cas merci à toi Julien
  10. Bonjour Julien, Merci de ton aide, j'ai ajouté l'appel du js et le hook dans l'installation. J'ai repris ton aide pour le js pour que ça donne $('button.submitadd_compta').click(function(e) { e.preventDefault(); var email =$('#emailComptable').val(); var data= "?action=updateEmail&email="+email+"&id_customer="+id_customer+"&"; $.post("'.$this->context->shop->physical_uri.$this->context->shop->virtual_uri.'modules/'.$this->name.'/ajax_'.$this->name.'.php", data); }); j'ai ajouté un fichier ajax_jv_mails.php a la racine comme indique le chemin dans le js Mais j'ai du coup une erreur dans ma console Qui correspond à cette ligne $('button.submitadd_compta').click(function(e){ J'ai vu que c'était une erreur du a un manque de jquerry Est-ce que tu aurais une idée ? ps: je glisse le zip du module à son stade pour que ce soit plus simple jv_mails.zip
  11. Certes c'est vrai, vous avez raison. Après dans mon optique je me disais que pour trouver le lien si les clients en question n'y connaissent rien, c'est une tache compliquée. Cependant ma "solution" est vrai qu'elle n'est pas correct après réflexion
  12. Bonjour, Techniquement si on ne laisse pas la possibilité de créer un compte,mais juste de se connecter c'est possible. il suffit d'avoir juste un bouton connexion et de supprimer "pas de compte ? Créez en un " CDT Jérémy
  13. Bonjour, Je suis actuellement entrain de développer mon 1er module (version 1.7.6.9). J'ai regardé la doc , et quelques tuto https://newslang.ch/blog/guide-complet-creer-module-prestashop-1-7/ https://pierrebelin.fr/blog/guide-complet-creer-module-prestashop/ Mon module a /aura pour but d'envoyer par mail un document pré-défini à l'email défini. Je m'explique, ce module créer une nouvelle table dans la bdd, qui stockera l'email et le nom , exemple je souhaite envoyer la facture a la comptable de mon client, il faudra d'abord que j'aille enregistré l'email de la comptable lié à ce client et ensuite aller dans les détails de la commande et sélectionner l'email et cliquer sur envoyer. Donc pour ce faire j'ai greffé mon module à plusieurs hook , qui sont : 'displayAdminOrder' et 'displayAdminCustomers'. Dans le displayAdminCustomers, c'est ici que je souhaite entrer les emails des clients autre que leur email de compte (ex: comptable, ect...) et dans le displayAdminOrder c'est ici que je sélectionnerai l'email que je souhaite et cliquer sur envoyer qui enverra selon l'email soit l'ar soit la facture ect.. Pour l'instant je bloque, J'ai dans dans mon hook AdminCustomers l'appel d'un tpl public function hookDisplayAdminCustomers($params) { return $this->display(__FILE__, 'customer.tpl'); //affiche mon tpl } Dans ce tpl il y'a ce qui me permet d'afficher le block pour pouvoir enregistrer l'email de la comptable <div style =" margin-left:15px;box-shadow: 2px 2px 8px 0 rgba(0,0,0,.2); background: #fff; padding: 1.563rem 1.25rem; margin-bottom: 1.563rem;"> <br> <h4>email de la comptable: </h4> <td><input type="text" name="emailComptable" class="emailComptable" id="emailComptable" value="[email protected]" style="display : inline-block; width:80%;" /> <br/> <br/> <button type="button" class="btn btn-default submitadd_compta" style="display : inline-block; width:80%; margin-left: 2%;" > <i class="icon-ok"></i> {l s='Enregister' d='Admin.Actions'} </button> </td> <div> Et du coup l'affichage donne L'affichage bon je changerai tout ça plus tard. Donc la actuellement je souhaiterai que quand je clique enregistrer l'email écrite aille dans ma BDD. donc pour ce faire : J'ai crée un fichier Comptable.js qui se trouve dans modules/jv_mails/views/js /*Modif Jérémy*/ $('button.submitadd_compta').unbind('click').click(function(e) { e.preventDefault(); var emailComptable =$('#emailComptable').val(); query = 'ajax=1&token='+token+'&action=add_compta&id_customer='+id_customer+'&emailComptable='+emailComptable+'&'; //envoi de l'id_customer par tokeb $.ajax({ type:'POST', //Methode POST url: admin_order_tab_link, cache: false, dataType: 'json', data : query, success: function(data) { if (data.result) { console.log('ok'); } else jAlert(data.error); } }); return false; }); //} /*Modif Jérémy*/ et un fichier AdminComptable.php dans modules/jv_mails/controllers/admin qui lui comporte : public function ajaxProcessadd_compta() { $id_customer = Tools::getValue('id_customer'); $mail_compta =Tools::getValue('mail_compta'); return $sql= Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'jv_mail` (id_customer,mail_compta) VALUES ('.$id_customer.''.$mail_compta.')' ; //Requete sql afin d'insert var_dump($id_customer); var_dump($mail_compta); die(); } Cependant je ne vois pas comment faire le lien entre mon tpl et mon js et controller . afin que quand j'appuis sur mon Bouton ça exécute cette fonction et envoie les infos avec le js. Merci de toute aide pour ce module (et à la fin je le mettrai a disposition de tous pour ce qui ça intéresse ) Ma version 1.7.6.9
  14. Après avoir identifié le module qui cause ce problème n'hésitez pas à contacter le développeur de ce module afin qu'il puisse vous aidez. CDT
  15. Bonjour, La seule aide que je peux te donner, c'est de désinstaller les modules avec les informations qu'on a ... sinon de lire ce topic. Ou tente de vider le cache manuellement /var/cache, ou supprimer les images dans /img/tmp qui se regénère toute seule. Sans aucune autre information compliqué d'aider CDT Jérémy
  16. Bonjour, il suffit d'override la classe mail.php et d'y ajouter $bbc = 'votre-email'; afin d'avoir les mails en copie. Si vous avez besoin de plus d'informations ou si vous avez une question hésité pas CDT Jérémy
  17. Aucun problème ps: penses à éditer ton topic et rajouter Résolu devant pour aider une future personne ayant le même problème Bonne soirée à toi également !
  18. Peux-tu me dire si dans /thèmes tu as "default-bootstrap" et si les droits sont bien en 755 Si tu n'as pas ce dossier le problème vient de là CDT
  19. Salut, Est-ce le thème de base ? Les droits sur les dossiers sont en 755 et fichier 644 ? CDT
  20. Bon je reviens car j'ai été regarder ta solution , et regarder sur le net pour comprendre comment marche la solution cependant je ne comprends pas tout. Donc la solution pour créer un filtre est ça $viewVars['MyStaticClass'] = new MyStaticClass(); // ... $html = $twig->render('myTemplate.html.twig', $viewVars); et dans le fichier twig : {{ MyStaticClass.getData() }} Cependant je ne vois pas ou faut mettre la première partie, car cette solution utilise la fonction render() de $twig cependant je n'ai pas d'objet portant ce nom. Dois mettre dans ma classe product.php ? ou dois-je créer une fonction si oui comment est elle appelé ? $viewVars['prod'] = new Product(); // ... $html = $twig->render('Product.html.twig', $viewVars); et dans le fichier product.html.twig {{ prod.mafonction(id_order) }} Merci de ton aide
  21. Merci je regarde ça demain matin, je reviens si besoin. Dans un sens tu as raison mais sachant que je refais juste tout ce que j'avais fait en 1.7.6.9 sur la partie commande qui a migré en symfony. Après je me prends certainement la tête et il y'a sûrement mieux a faire dans un sens. CDT
  22. Salut doekia, Merci de ta réponse cependant j'avais déjà essayé et ça me retournait une erreur l'erreur en question : (j'ai mit un paramètre brut qui et 14 pour tester) le td du fichier product.html.twig qui se trouve dans src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View <td >{{Product::maFonction(14)}}</td> et ma fonction Product.php dans override/classes class Product extends ProductCore { /*Modif jérémy*/ public static function maFonction($id_order_detail) { return Db::getInstance()->getvalue('SELECT date_liv FROM `' . _DB_PREFIX_ . 'order_detail` WHERE `id_order_detail` = '. (int) $id_order_detail) ; } (c'est une simple requete sql) Je ne sais pas si le code aide a mieux comprendre l'erreur car de ce que je comprends c'est qu'il n'aime pas les :: après Product Et j'ai bien vidé le cache également car on ne sait jamais
  23. Bonjour, Je créer actuellement une boutique en 1.7.7.4 et je rencontre actuellement un problème. Ce problème est mon manque de connaissance sur symfony. Fin bon je m'explique je souhaite faire appel a une fonction ce trouvant dans ma classe de Product qui est en override, ceci étant dit je souhaite que cette fonction s'affiche sur un bloc qui se trouve dans order.Le fichier en question est product.html.twig mais vu que ce n'est pas un tpl je ne peux pas faire un simple {Product::mafonction($id_order_detail)} donc j'ai été faire mes recherches afin de trouver une solution.. j'ai vu qu'il n'était pas "possible" directement d'appeler une fonction php dans un fichier twig et que la syntaxe pour appeler une fonction est la suivante : {{mafonction(Parametre)}} Mais du coup ce qui semble logique il ne trouve pas ma fonction qui se trouve dans la classe Product.php Alors j'aimerai savoir si quelqu'un connaitrait la solution afin que je puisse appeler ma fonction dans le fichier twig Merci d'avance ma version ps 1.7.7.4
  24. Aucun souci, vous pouvez passer le post en Résolu
  25. Aucun problème, et pour les tables il s'agit de "order_slip" et "order_slip_detail" , il faut juste supprimer les lignes avec l'id de l'avoir a supprimer
×
×
  • Create New...

Important Information

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