Jean-Bruno Posted October 12, 2010 Share Posted October 12, 2010 CECI EST UN MODULE ;-) désormais compatible 1.4 (merci à Ludo) Ce module permet d'adjoindre aux statuts de commandes l'envoi d'un ou plusieurs mails à une ou plusieurs personnes (dont le client) avec templates différends et pièces attachées (pour l'instant BL et Factures) INSTRUCTION DE CONFIGURATION Simple comme bonjour : - on fait une sauvegarde de la BDD - on installe (pour fax+mail, dans la section module vous pourrez enregistrer le mot de passe fourni par OVH) Tout se configure dans le BO Et on conserve les données à l'update email l’adresse mail à laquelle sera envoyée le mail (NB : {email} pour obtenir l'adresse du client. pour fax+mail, le numéro de fax du destinataire « [email protected] » template le nom du template (qui doit se trouver dans le sous dossier du module /mails/lang ) par exemple /modules/mailbyorderstate/mails/fr contient le template new_order . Si on veut l’utiliser , il suffit donc de mettre dans template la valeur ‘new_order’ ou pour fax+mail, la fonction ecofax il faut utiliser le thème ecofax (ne pas changer le nom) subject le sujet du mail . On peut incorporer des variable smarty par exemple {delivery_name} pour le N° de BL ou {order_name} pour le numéro de commande pour fax+mail, votre numéro de fax fourni par OVH attachment delivery = bon de livraison invoice = facture Pour une autre adresse, un autre statut , un autre template etc …. ben on renouvelle l’opération en créant une nouvelle ligne dans la base. Pour utiliser Liste des variables smarty disponibles : '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{delivery_company}' => $delivery->company, '{delivery_firstname}' => $delivery->firstname, '{delivery_lastname}' => $delivery->lastname, '{delivery_address1}' => $delivery->address1, '{delivery_address2}' => $delivery->address2, '{delivery_city}' => $delivery->city, '{delivery_postal_code}' => $delivery->postcode, '{delivery_country}' => $delivery->country, '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', '{delivery_phone}' => $delivery->phone, '{delivery_other}' => $delivery->other, '{delivery_name}' => $order->delivery_number, '{invoice_company}' => $invoice->company, '{invoice_firstname}' => $invoice->firstname, '{invoice_lastname}' => $invoice->lastname, '{invoice_address2}' => $invoice->address2, '{invoice_address1}' => $invoice->address1, '{invoice_city}' => $invoice->city, '{invoice_postal_code}' => $invoice->postcode, '{invoice_country}' => $invoice->country, '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', '{invoice_phone}' => $invoice->phone, '{invoice_other}' => $invoice->other, '{order_name}' => sprintf("d", $order->id), '{shop_name}' => Configuration::get('PS_SHOP_NAME'), '{date}' => $order_date_text, '{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name), '{payment}' => $order->payment, '{items}' => $itemsTable, '{total_paid}' => Tools::displayPrice($order->total_paid, $currency), '{total_products}' => Tools::displayPrice($order->getTotalProductsWithTaxes(), $currency), '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency), '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency), '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency), '{currency}' => $currency->sign, '{message}' => $message LOGS V1.61 Correction bug {email} dans l’objet Amélioration de l’administration Nouvelle documentation Traduction française V0,6 Le prémodule devient module Interface dans le BO Fonction avec envoi de fax (attention modif du core nécessaires) V0.5 Correction bug install V0.4 possibilité d'envoyer un mail au client en ajoutant la variable {email} dans le champ email de la base fichier install.txt.rtf avec instructions de configuration V0.3 longueur du sujet passée à 128 autoincrément à la création de table test desinstall reinstall depuis le BO paramètre smarty {delivery_name} qui contient le numéro de BL mailbyorderstateV0.3.zip mailbyorderstateV0.5.zip fax+mailbyorderstate1.0.zip mailbyorderstate1.0.zip mailbyorderstate1.61.zip Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 13, 2010 Share Posted October 13, 2010 Salut Jean-Bruno,Regarde du coté de la fonction "addWithemail()" de la classe "OrderHistory" Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 13, 2010 Author Share Posted October 13, 2010 Merci l'ami, je vais jeter un oeil dans ce charabia ;-) Link to comment Share on other sites More sharing options...
Patric Posted October 13, 2010 Share Posted October 13, 2010 Topic déplacé dans la bonne section. 8-/ Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 13, 2010 Author Share Posted October 13, 2010 Désolé, grand maitre des déplacements. Par contre il y a quand même un souci, c'est qu'un topic placé dans un autre forum que le "discussion générale" est quasi voué à l'echec. Pas moyen de les mettre en avant chacun leur tour ?merci patric et désolé, je ferait plus :red: Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 15, 2010 Author Share Posted October 15, 2010 j'arrive pas a avancé, pas clair ces histoires. Quel est le meilleure moyen d'envoyer un mail à mon prestataire logistique quand il y a une commande. module, statut ? Link to comment Share on other sites More sharing options...
Broceliande Posted October 15, 2010 Share Posted October 15, 2010 Le meilleur moyen c'est le module alertes mails présent dans ton BO. (section tools)Tu l'installes , tu le configures (c'est on ne peut plus clair à configurer) , et tu y es , tu peux coller autant d'adresses mail que tu souhaites dans le champ prévu à cet effet.Pourquoi réinventer la roue quand tout est fourni ?Au passage , la place du topic du coup ne serait plus vraiment en développement, mais tu aurais peut être du commencer par ça : Quel est le meilleure moyen d’envoyer un mail à mon prestataire logistique quand il y a une commande.... Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 15, 2010 Author Share Posted October 15, 2010 Bon ben du coup mon niveau 1 d'exigence est rempli. L'idée pour mon niveau 2 reste quand m^me que cette alerte soit envoyée lorsque je passe ma commande à un statut particulier, et de joindre un bon de livraison pour le niveau 3Merci quand même cher magicien breton ;-) Link to comment Share on other sites More sharing options...
Broceliande Posted October 15, 2010 Share Posted October 15, 2010 Lol , je vois ...Ca me fait une belle réponse à côté de la plaque.Mea culpa . Yep j'ai lu un peu trop en diagonale , puis surtout j'ai même pas vu tes '5 étoiles' , ce qui m'aurait évité de faire une bourde pareille.Pour me faire pardonner je vais donc creuser un peu plus : dans /adminxxx/tabs/AdminOrders.php on a ça : /* Change order state, add a new entry in order history and send an e-mail to the customer if needed */ elseif (Tools::isSubmit('submitState') AND ($id_order = intval(Tools::getValue('id_order'))) AND Validate::isLoadedObject($order = new Order($id_order))) { if ($this->tabAccess['edit'] === '1') { $_GET['view'.$this->table] = true; if (!$newOrderStatusId = intval(Tools::getValue('id_order_state'))) $this->_errors[] = Tools::displayError('Invalid new order status!'); else { $history = new OrderHistory(); $history->id_order = $id_order; $history->changeIdOrderState(intval($newOrderStatusId), intval($id_order)); $history->id_employee = intval($cookie->id_employee); $carrier = new Carrier(intval($order->id_carrier), intval($order->id_lang)); $templateVars = array('{followup}' => ($history->id_order_state == _PS_OS_SHIPPING_ AND $order->shipping_number) ? str_replace('@', $order->shipping_number, $carrier->url) : ''); if ($history->addWithemail(true, $templateVars)) Tools::redirectAdmin($currentIndex.'&id;_order='.$id_order.'&vieworder;'.'&token;='.$this->token); $this->_errors[] = Tools::displayError('an error occurred while changing status or was unable to send e-mail to the customer'); } } else $this->_errors[] = Tools::displayError('You do not have permission to edit anything here.'); } Sauf que $history->addWithemail(true, $templateVars) , c'est pour envoyer un mail au client , d'ailleurs on le retrouve dans OrderHistory.php , dans la fonction proprement dite. La requête est clairement écrite pour l'envoi d'un mail au client.A moins de modifier le code natif (pas classe) , c'est duraille.Moi je ferais ça dans un module . D'autant qu'on a un hook pour ça : updateOrderStatus .Si donc , en schématisant, on a un module avec :- une table orderstatemail {id_order_state :int 10,email : varchar 128}Dans la fonction HookUpdateOrderStatus :- on récupère tous les mails associés au statut courant.- on récupère les 'templateVars'- on génère le mail à partir d'un template mail existant ou un autre :dans ce cas on pourrais également associer un nom de template dans la nouvelle table , pour chaque enregistrement .orderstatemail {id_order_state :int 10,email : varchar 128,template: varchar }Ainsi pour chaque statut, on peut définir l'envoi à un ou plusieurs mails , avec un ou plusieurs templates.Ca ferait pas l'affaire?Encore sorry pour la méprise. Quoique ça n'aura ridiculisé que moi Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 16, 2010 Author Share Posted October 16, 2010 Ca c'est une réponse comme je les aime ;-) Heureux de t'avoir pris en défaut lolJe vais me pencher sur la doc des modules ou trouver un approchant pour coller ça dedansMerci l'amiNB : 5 étoiles c'est un gage d'expérience, pas de connaissance ;-) Link to comment Share on other sites More sharing options...
Broceliande Posted October 16, 2010 Share Posted October 16, 2010 Mais l'expérience ne mène-t-elle pas à la connaissance ? Si j'ai le temps je t'enverrais un squelette de module , semi fonctionnel, d'ici lundi.Ce module m'intéresse pour mes clients , c'est une liberté supplémentaire...Par contre je fais vraiment que le BA- ba , il faudra remplir les champs bdd à la main , dans un premier temps. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 16, 2010 Author Share Posted October 16, 2010 cool je ferais faire le reste si besoin. Merci Magic manJe veux bien ton contact en privé si j'ai des besoins.a lundi l'ami Link to comment Share on other sites More sharing options...
Pierre-Yves Posted October 17, 2010 Share Posted October 17, 2010 Comme l'a dit très bien Broceliande, tu peux sans problème créer un module pour faire cela...Tu te greffe sur le hook "updateOrderStatus" et ensuite tu as une fonction qui ressemblerai pour ou moins à celle qui suit : function hookupdateOrderStatus($params) { $os = $params['newOrderStatus']; if ($os->id == 2) { Mail::Send(2, 'TONTEMPLATE', 'TON SUJET', array(), '[email protected]', NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/'); } } Evidemment tu comprendras que la fonction est basique... Mais cela devrait sans problème te montrer la marche à suivre pour la suite Link to comment Share on other sites More sharing options...
Broceliande Posted October 17, 2010 Share Posted October 17, 2010 Voilà j'ai pu trouver une heure dans mon we pour mettre en application ce que nous suggérions . Une bonne partie de ce dont nous avons besoin pour ce module est déja présent dans le module mails alerts.A la différence près que ce n'est pas le même hook sur lequel on se greffe, et que contrairement au hook newOrder, on ne reçoit pas directement les objets orders etc ... il fallait donc les recréer.Voici donc un module installable .Pas de configuration , comme je le disais : il va falloir mettre (juste un peu) la main à la pâte : - on installe - on édite alors dans la bdd la table créee par le module , (ps_)mailbyorderstate- pour faire un test , il suffit de renseigner 4 champs : - id_order_state : l'id d'état de la commande sur laquelle on veut greffer un envoi de mail , ex : 2 (Paiement Accepté) - email : l'adresse mail à laquelle sera envoyée le mail - template : le nom du template (qui doit se trouver dans le sous dossier du module /mails/lang ) par exemple /modules/mailbyorderstate/mails/fr contient le template new_order . Si on veut l'utiliser , il suffit donc de mettre dans template la valeur 'new_order' - subject : le sujet du mail . Pour une autre adresse, un autre statut , un autre template etc .... ben on renouvelle l'opération .Il ne te reste plus qu'à effectuer les changements d'état correspondants pour recevoir le résultatCe n'est qu'un prototype finalement assez simple, mais fonctionnel , comme je te l'annonçais hierEnjoy Edit : j'ai des petits soucis avec les retours à la ligne , bizarre , sorry si c'est confus mailbyorderstate.zip Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 18, 2010 Author Share Posted October 18, 2010 N'en jetez plus ! Merci les amisJe test tout ça et je reviens vers vous pour vous donner des nouvelles.Bonne journée Pierre-Yves et Broceliande Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 18, 2010 Author Share Posted October 18, 2010 Brocéliande c'est PARFAIT !Pour aller un peu plus loin, saurais tu comment incorporer le numéro de commande dans le sujet ?J'ai essayé {order_name} mais je pense que je me mélange les Smarties. Ca donne "Erreur : les paramètres du mail sont corrompus"Une idée ?Et également pour le futur comment incorporer un fichier PDF attaché (ici le BL)MILLE MERCIS et à bientôt Link to comment Share on other sites More sharing options...
Broceliande Posted October 18, 2010 Share Posted October 18, 2010 Pour {order_name}, c'était la bonne idée , sauf que les variables de template ne sont remplacées que dans le template lui même, bizarrement pas dans le sujet.Celà dit , ce n'est pas un problème, une petite ligne et zou , tu peux désormais utiliser les variables de template dans ton sujet . Ca se passe là , mais j'ai mis à jour le post contenant le module avec les nouveaux fichiers: foreach($mails as $mail) { $mail['subject'] = str_replace(array_keys($templateVars), array_values($templateVars), $mail['subject']); if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$mail['template'].'.txt') AND file_exists(dirname(__FILE__).'/mails/'.$iso.'/'.$mail['template'].'.html')) Mail::Send($id_lang, $mail['template'], $mail['subject'], $templateVars, $mail['email'], NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/'); } Reste le dernier point , un peu plus délicat.La pièce jointe que tu souhaites envoyer , il faut alors que le module la télécharge, tout comme si tu le faisais toi même.Je me pencherais sur la question , mais disons que l'idée est sans doute d'indiquer l'url du fichier à joindre dans la bdd, en espérant que celà suffira à satisfaire les pièces jointes dynamiques comme les pièces jointes statiques.J'avoue que je ne sais pas si ça fonctionnera. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 18, 2010 Author Share Posted October 18, 2010 Trop fort, merci l'ami.Fait comme tu peux, mais ça fait deux ans que j'attends que quelqun daigne se pencher sur ce truc. Bravo et encore merci.Je vais essayer de em servir de ta base pour comprendre comment fonctionne un module en comparant avec sa maman module.a+ Link to comment Share on other sites More sharing options...
Broceliande Posted October 18, 2010 Share Posted October 18, 2010 Qu'à celà ne tiennne , je met à jour le module.Il faut malheureusement désinstaller et réinstaller le module pour avoir le nouveau champ 'attachment' ,ou alors si tu es à l'aise avec phpmyadmin , le créer : c'est un varchar 10.pour ajouter une pièce jointe il faut renseigner le champ attachment . tu as deux choix:delivery = bon de livraisoninvoice = factureBien sûr , si tu mets rien , pas de pièce jointe Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 18, 2010 Author Share Posted October 18, 2010 wowça ressemble a mon niveau 3 ce que tu me dis là. Tu as quand même fini par me clouer le bec ;-)Allez, je mets un petit "resolu" en attendant de peaufiner le module.Si un expert du module passe par là ce serait sympa d'y jeter un oeil.Bonne soirée le Barde Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 19, 2010 Author Share Posted October 19, 2010 Pour attacher les fichiers il y a ça aussi (ça vient d'un autre post)Je ne sais si ça peux aider mais au cas oùhttp://swiftmailer.org/docs/attaching-files Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 19, 2010 Author Share Posted October 19, 2010 Désolé Brocéliande J'ai essayé de désinstaller réinstaller mais attachment n'apparait pasJe l'ai créé (j'ai peut être fait une boulette) mais le mail ne part pasPar contre maintenant il reconnait les variable Smarty dans le sujet, c'est parfait de ce côté.2 autres truc que j'aimerais comprendrePourquoi le nom de la boutique apparait dans le sujet ?Comment incorporer le numéro de BL au template ? J'ai essayé "BON DE LIVRAISON N°{delivery_name}" mais sans succèsMerci d'avance et bonne journéeEDIT : je ne suis pas sûr que tu ai mis la modif de attachment dans le fichier, je ne la trouve pas. Link to comment Share on other sites More sharing options...
Broceliande Posted October 19, 2010 Share Posted October 19, 2010 Ok je vais vérifier tout ça dès que j'ai une seconde Link to comment Share on other sites More sharing options...
Broceliande Posted October 19, 2010 Share Posted October 19, 2010 Ben écoute Jean-bruno,Je suis allé jusqu'à re télécharger le module ici même , et tu as la bonne version , ça c'est certain.{delivery_name} n'existe pas , ce qui peut expliquer ton problème, {delivery_lastname} existe en revancheje vais peut être juste complèter la liste des champs s'il t'en manque et dans ce cas te la copier ici .En tout cas , chez moi tout fonctionne , j'ai bien le BL en pièce jointe Je vais tester la désinstall réinstall du module pour voir si la table est bien supprimée..Après ça je sais pas , je veux bien voir sur ton hebergement ce qui cloche si tu veux. Link to comment Share on other sites More sharing options...
Broceliande Posted October 19, 2010 Share Posted October 19, 2010 Voici le php modifié , avec cette fois un paramètre {delivery_name} qui contient le numéro de BL .Comme il n'existait pas , et qu'aucun autre ne contenait la valeur du BL ... je te l'ai ajouté Pour les paramètres , la liste est dans le php (il n'est pas bien difficile de savoir ce qu'ils contiennent mais si tu as des questions ... ) '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{delivery_company}' => $delivery->company, '{delivery_firstname}' => $delivery->firstname, '{delivery_lastname}' => $delivery->lastname, '{delivery_address1}' => $delivery->address1, '{delivery_address2}' => $delivery->address2, '{delivery_city}' => $delivery->city, '{delivery_postal_code}' => $delivery->postcode, '{delivery_country}' => $delivery->country, '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', '{delivery_phone}' => $delivery->phone, '{delivery_other}' => $delivery->other, '{delivery_name}' => $order->delivery_number, '{invoice_company}' => $invoice->company, '{invoice_firstname}' => $invoice->firstname, '{invoice_lastname}' => $invoice->lastname, '{invoice_address2}' => $invoice->address2, '{invoice_address1}' => $invoice->address1, '{invoice_city}' => $invoice->city, '{invoice_postal_code}' => $invoice->postcode, '{invoice_country}' => $invoice->country, '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', '{invoice_phone}' => $invoice->phone, '{invoice_other}' => $invoice->other, '{order_name}' => sprintf("d", $order->id), '{shop_name}' => Configuration::get('PS_SHOP_NAME'), '{date}' => $order_date_text, '{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name), '{payment}' => $order->payment, '{items}' => $itemsTable, '{total_paid}' => Tools::displayPrice($order->total_paid, $currency), '{total_products}' => Tools::displayPrice($order->getTotalProductsWithTaxes(), $currency), '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency), '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency), '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency), '{currency}' => $currency->sign, '{message}' => $message mailbyorderstate.php Link to comment Share on other sites More sharing options...
Broceliande Posted October 19, 2010 Share Posted October 19, 2010 Voici une nouvelle mise à jour : il manquait un autoincrément à la création de table , je ne sais pas si ça influe .En revanche j'ai testé la désinstall réinstall du module (a partir du bo bien sur) et la no soucy , la table est bien supprimée et recrée. mailbyorderstate.zip Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 20, 2010 Author Share Posted October 20, 2010 MAGNIFICOça fonctionne au poil. Mille merci l'ami. J'ai passé le module en V0.3 et je l'ai placé en tête de post, c'est plus pratique. Bon et bien on va pouvoir passer au back office. Une questionsait tu ce qui renvoie la liste des produit dans le mail envoyé par new order. j'aimerai virer les prix mais pas moyen d'y arriver. Link to comment Share on other sites More sharing options...
Broceliande Posted October 20, 2010 Share Posted October 20, 2010 Bien vu .Pour le détail des articles , c'est là : foreach ($cart->getProducts() AS $key => $product) { $unit_price = Product::getPriceStatic($product['id_product'], true, $product['id_product_attribute']); $price = Product::getPriceStatic($product['id_product'], true, $product['id_product_attribute'], 6, NULL, false, true, $product['cart_quantity']); $itemsTable .= ' '.$product['reference'].' '.$product['name'].(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '').' '.Tools::displayPrice($unit_price, $currency, false, false).' '.intval($product['cart_quantity']).' '.Tools::displayPrice(($price * $product['cart_quantity']), $currency, false, false).' '; } Et plus exactement , ici : '.Tools::displayPrice(($price * $product['cart_quantity']), $currency, false, false).' c'est stocké dans la variable {items} par la suite , une fois ajoutés les réductions.Seulement si tu vires ça du code , c'est mort pour ceux qui veulent afficher le prix.Idéalement, il faudrait dans ce cas avoir une variable de template supplémentaire, genre {itemswithoutprices} Ce pour ajouter une fonctionnalité sans pour autant en enlever d'autres.Sinon on pourrait aussi splitter les élements (prix, ref, designation etc) dans des listes séparées et rendre encore plus flexible la personnalisation des templates Link to comment Share on other sites More sharing options...
mehdi2405 Posted October 21, 2010 Share Posted October 21, 2010 savez vous comment ajouter une colonne au bon de commande et à la facturej'aimerais rajouter la marquemerci Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 22, 2010 Author Share Posted October 22, 2010 Salut BrocéliandeSaurais tu quelle magie utiliser pour que la facture soit envoyée au client (il y a un code a rentrer dans la base à la place du mail ?) Mille mercis.EDIT : Si tu sais également comment joindre les PDF attachés aux produits (je pense à un statut "envoyer les fiches techniques") Link to comment Share on other sites More sharing options...
Broceliande Posted October 22, 2010 Share Posted October 22, 2010 Salut Jean Bruno,Tu as essayé de mettre simplement invoice dans le champ attachment ? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 22, 2010 Author Share Posted October 22, 2010 Le problème n'est pas pour joindre mais pour que ça parte au client. Du coup on ne peut pas renseigner ce champ. On pourrait peut être dire "si pas de mail renseigné alors on envoie au client" ?? Mais là ça dépasse mes compétences.;-)EDIT : comment ajouté en smarty les statuts de la commande (l'idée est de faire un statut "demande de renseignement logistique" qui ferait apparaitre l'historique.Merci l'ami Link to comment Share on other sites More sharing options...
Broceliande Posted October 22, 2010 Share Posted October 22, 2010 Ah ok...Donc voici la 0.4 Tu peux la remettre en tête de thread, ce que je ne peux pas faire, ensuite je la supprimerais de ce post.Pour envoyer le mail au client, dans le champ email , tu mets {email}Edit :A noter au cas ou ... :Si on veut deux ou plusieurs mails qui partent à des destinataires différents pour un seul changement de statut, il suffit d'ajouter des lignes dans la bdd. Il va de soi que le module va chercher l'ensemble des mails à générer pour un statut donné, et que celà ne se limite pas à un seul enregistrement.Tout est donc permis Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 22, 2010 Author Share Posted October 22, 2010 WOW !PARFAIT (et mis en tête de post) J'ai remis mes modifs précédentes (Subject à 128 et fichier d'instructions pour la config)Pour les statuts de la commande (l’idée est de faire un statut “demande de renseignement logistique” qui ferait apparaitre l’historique.Sinon donne moi le principe de base pour intégrer un $templateVarsA plus l'ami et encore milles mercis. Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 Bonjour,Merci pour votre boulot et merci a Jean-Bruno de m'avoir orienté sur ce post!Je n'arrive pas a installer la dernière version 0.4 du module:The following module(s) were not installed successfully: * mailbyorderstateTest effectué sur PS 1.2.5 et 1.3Cordialement. Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 Bonjour,Merci pour votre boulot et merci a Jean-Bruno de m'avoir orienté sur ce post!Je n'arrive pas a installer la dernière version 0.4 du module:The following module(s) were not installed successfully: * mailbyorderstateTest effectué sur PS 1.2.5 et 1.3Cordialement. Ma foi mais c'est ben vrai ! Voici correction 0.5 .mailbyorderstate.zip Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 Merci! je test cela de suite! Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 Module installé.Je gère comment? Il n'y a pas de "configuration" au niveau du BO?Personnellement je cherche à permettre aux clients de télécharger leur produit "virtuel.zip" après avoir passer leur commande et après que j'aurais approuvé et contrôlé leur payement, (pour éviter les fraudeurs), sachant que le "virtuel.zip" n'est pas présent avec le produit au moment de l'achat.J'espère que c'est pas trop charabia.... :red: Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 WOW !PARFAIT (et mis en tête de post) J'ai remis mes modifs précédentes (Subject à 128 et fichier d'instructions pour la config)Pour les statuts de la commande (l’idée est de faire un statut “demande de renseignement logistique” qui ferait apparaitre l’historique.Sinon donne moi le principe de base pour intégrer un $templateVarsA plus l'ami et encore milles mercis. Pour intégrer une variable supplémentaire , ça se passe dans mailbyorderstate.php à partir de la ligne 92 : // Filling-in vars for email $templateVars = array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, etc ......... ); $templateVars est donc un tableau de données/valeurs , chaque ligne étant sous la forme : '{firstname}' => $customer->firstname La partie de gauche représente la façon donc on identifie la variable dans les différents templates mails, voire , comme on l'a vu, dans le sujet , ou encore dans l'adresse mail , via {email}... Ce n'est que du texte brut, qui sera remplacé , c'est pourquoi il est entre ' 'La partie de droite est la valeur que l'on souhaite donner à la variable . Ici $customer->firstname contient le prénom .$customer étant un Objet de la classe customer, qui contient nombre d'informations...C'est donc très simple d'ajouter des variables à templateVars, mais il faut avant tout savoir aller chercher dynamiquement en php la valeur que l'on doit lui assigner. Sur ce point , c'est de la compréhension de php, des classes, des objets... qu'il s'agit. Il n'y a pas de réponse toute faite.'{mavariable}' => 3,'{mavariable}' => 'toto','{mavariable}' => $customer->id_customer, ....Tout ceci est correct ... Dans les deux premiers cas c'est une affectation statique , 3 est une valeur numérique, 'toto' une chaine de caractères, ce qui n'a pas un grand intéret .Dans le troisième cas, on utilise l'objet $customer pour aller lire sa propriété id_customer.On pourrait avoir aussi un truc du genre : '{mavariable}' => $monobjet->samethode() Dans ce cas on accède non plus à une propriété directe, mais à une méthode , qui peut nous retourner une valeur , en revanche....Je ne peux guère développer plus , j'espère que ça t'aidera Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 Module installé.Je gère comment? Il n'y a pas de "configuration" au niveau du BO?Personnellement je cherche à permettre aux clients de télécharger leur produit "virtuel.zip" après avoir passer leur commande et après que j'aurais approuvé et contrôlé leur payement, (pour éviter les fraudeurs), sachant que le "virtuel.zip" n'est pas présent avec le produit au moment de l'achat.J'espère que c'est pas trop charabia.... :red: Non ce n'est pas charabia Je vais voir comment on peut rendre plus dynamique le choix de la pièce jointe .Il n'y a pas encore de configuration , celà se fait pour l'heure dans phpmyadmin par exemple .Ce module est un prototype , qui a vu le jour il y a une semaine à peine si je ne me trompe pas.Mais allez ... La configuration c'est pour lundi Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 Je vous embrasses %-P Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 Cependant, j'aimerais savoir en quoi le système actuel de prestashop ne te permet pas de parvenir à tes fins concernant le download ?Je veux dire, qu'il me semble :Seules les commandes valides permettent de télécharger un produit type 'download' Si c'est le moyen de paiement que tu veux contrôler, dans ce cas ne suffit-il pas de changer le statut paiement accepté afin qu'il ne valide pas la commande ?Je comprends bien la demande, mais pas les raisons qui la motivent , en ce sens que pour moi , prestashop a tout ce qu'il faut pour ça , en natif. Il doit donc me manquer des éléments ? Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 Example: Le vendeur vend un produit téléchargeable qu'il n'a pas.Il souhaite mettre le produit virtuel à disposition de l'acheteur "après" que la commande ai été validée.Attention! Le "fichier.zip" à télécharger n'est pas disponible avec le produit au moment de la commande. Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 Ok je comprends mieux.Mais la problèmatique est différente, si le produit à télécharger n'existe pas encore.Plein de questions me viennent du coup , par exemple , comment automatiser l'envoi d'un fichier par rapport à un statut de commande, alors que l'on ne connais pas encore le nom du zip , et que ce zip n'est pas encore dans un produit ?Bref beaucoup de contraintes sur le sujet , c'est une problèmatique bien particulière, et pour en faire un cas général , il va falloir creuser plus.On en parle quand tu veux. A tout problème existe une solution , mais la solution implique aussi des contraintes , en terme de faisabilité. Link to comment Share on other sites More sharing options...
pasko Posted October 23, 2010 Share Posted October 23, 2010 En effet, mai je ne cherche pas que cela soit automatisé. Link to comment Share on other sites More sharing options...
Broceliande Posted October 23, 2010 Share Posted October 23, 2010 Je vois...Mais c'est un tout autre module je pense.A creuser Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 24, 2010 Author Share Posted October 24, 2010 Brocéliande tu es un mage ;-)Merci de cette explication, j'aime ceux qui savent partager leurs savoirs.A lundi Link to comment Share on other sites More sharing options...
Broceliande Posted October 24, 2010 Share Posted October 24, 2010 Ca tombe bien, j'aime partager Merci tout de même pour le compliment Link to comment Share on other sites More sharing options...
Broceliande Posted October 24, 2010 Share Posted October 24, 2010 Au passage petite info en exclu (je ferais un post en conséquence au moment voulu) , je ne sais pas si ça intéressera du monde, mais je suis en train d'achever un module qui permet de regrouper des zones en groupes de zones, et d'affecter un ou plusieurs groupes de zones par transporteur.Comme tout le monde sait , il est très difficile de gérer les zones par transporteur , lorsqu'on sait que ces dernières diffèrent selon chacun de ces transporteurs.La seule solution à ce jour est de créer une zone par pays.C'est efficace mais celà rend parfaitement ingérable les mises à jours de tarifs, de par la quantité des champs à entrer.Mon module ajoute une interface qui permet donc de gérer ces tarifs par 'regroupement de zones' . le déroulement ressemble à ça :On a donc une zone par pays (dans la version finale un bouton permettra de le faire en un clic), nommées du même nom que le pays.On crée un groupe de zones genre 'TNT zone 1'On y met les zones de notre choix , par exemple une vingtaine de pays.On choisi le transporteur tnt auquel on veut affecter le groupe TNT zone 1.Dans l'interface , on mettra donc a jour en une seule fois les tarifs des 20 zones .Celà ressemble forcément à ce qui se passe si on garde les zones europe etc de prestashop , sauf que cette fois , les zones peuvent être différentes pour chaque transporteur.Je ne sais pas si je me fais bien comprendre, mais je ferais mieux comme explication plus tard. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 25, 2010 Author Share Posted October 25, 2010 Bonne nouvelle m^me si mon problème est différend : j'ai un seul transporteur et ses zones sont en fait des villes ou des départements, Dommage !!! Link to comment Share on other sites More sharing options...
Broceliande Posted October 25, 2010 Share Posted October 25, 2010 Ca ne me parait pas du tout incompatible ça ,Tu ne livres donc qu'en france , et tu dois avoir entré les départements dans les états .Tu dois donc avoir une zône par état/ville si je ne m'abuse , ou un truc ressemblant ? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 25, 2010 Author Share Posted October 25, 2010 Oui j'avais essayé ça mais en fait c'était un peu le souk puisqu'aucun lien entre l'adresse du client et les états a part à choisir sur une liste de 50 nomsDu coup j'ai fait une moyenne de mes livraisons. Sauf qu'aujourd'hui j'ai changé de transporteur et la livraison est souvent excessive par rapport à ce que mes clients devraient payer (je fais du prix coutant) Link to comment Share on other sites More sharing options...
Broceliande Posted October 25, 2010 Share Posted October 25, 2010 Effectivement, dans ton cas de figure c'est un module de transport sur mesure qu'il te faudrait.Un peu dans le genre de ceux que j'ai fais pour http://www.lespaniersvillage.fr La dessus , tout est fonction du code postal , de la possibilité de commander tel ou tel produit , au choix du transporteur etc . Nul besoin de faire un dessin sur ce qu'il a fallu déployer comme ruses pour parvenir à nos fins. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 25, 2010 Author Share Posted October 25, 2010 i know i know (aie de l'anglais dans un post FR ) Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 28, 2010 Author Share Posted October 28, 2010 Salut l'amiJe deviens gourmand et rêveur puisque j'imagine mon étape 4 : pourrat-on par exemple développer une formule magique qui envoie mes BL à chaque fournisseur à partir d'une m^me commande.En 2011 ? ;-)Merci et à bientôt Link to comment Share on other sites More sharing options...
Broceliande Posted October 28, 2010 Share Posted October 28, 2010 Wahou ! héhé .Comme tu y vas !... lol Je n'ai déja pas tout à fait fini l'admin , mais ça arrive.Cette 4è etape :C'est est un cas de figure absolument particulier. Celà s'apparente un peu trop au développement perso... ce dont je vis...Rien n'est impossible , certes , mais je ne crois pas pousser aussi loin pour un simple module communautaire.Enfin ... Ne dit on pas qu'il ne faut jamais dire jamais ? J'arrive vite promis avec ma version dotée d'une admin. Dès que je trouve le temps de la finir. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 28, 2010 Author Share Posted October 28, 2010 ;-)cool. Je n'ai pas dis que je ne voulais pas payer. Je suis donateur de plusieurs modules et j'ai par ailleurs payé des modules inutilisables ;-)Mais cette fonction ne m'est pas réservée. Je pense à ton site de paniers (à ce propos va faire un tour sur ecoringo.com) qui pourrait par exemple envoyer chaque commande aux producteurs séparément. On peut ainsi proposer du "no stock" comme le faisait la feu Camif.Isn't it ? Link to comment Share on other sites More sharing options...
Broceliande Posted October 28, 2010 Share Posted October 28, 2010 Yes it is.And.... you know how to argue dude !Not that bad i must recognize. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 28, 2010 Author Share Posted October 28, 2010 Attention, jeune druide, pas de message en anglais sinon, pan, je suis modérateur tout de même :cheese:EDIT ha ben nein ich bin nicht on this forum Link to comment Share on other sites More sharing options...
Broceliande Posted October 28, 2010 Share Posted October 28, 2010 :red:je le f'rais plus m'sieur Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 28, 2010 Author Share Posted October 28, 2010 De nada ! J'aime bien taquiner le superadmin :-) Link to comment Share on other sites More sharing options...
prosilver Posted November 13, 2010 Share Posted November 13, 2010 Bonjour,J'ai bien compris qu'il était nécessaire de renseigner la table mailbyorderstatemais de quelle manière, avez vous un modèle de celle-ci pour que je comprenne le principe.Merci d'avance.La table en question: -- Structure de la table `mailbyorderstate` -- CREATE TABLE IF NOT EXISTS `mailbyorderstate` ( `id_custom_mail` int(10) unsigned NOT NULL auto_increment, `id_order_state` int(10) unsigned NOT NULL default '0', `email` varchar(128) NOT NULL default '', `template` varchar(60) default NULL, `subject` varchar(128) default NULL, `attachment` varchar(10) default NULL, PRIMARY KEY (`id_custom_mail`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -- Contenu de la table `mailbyorderstate` -- Link to comment Share on other sites More sharing options...
Broceliande Posted November 13, 2010 Share Posted November 13, 2010 Salut, de mémoire :Ces champs la doivent être renseignés sachant que : `id_order_state` est l'id du statut au cours duquel on souhaite intervenir ex : 2 = paiement accepté `email` = email ou l'on souhaite envoyer le mail ... no comment `template` le template du mail , sans extension , qui doit être présent dans le sous dossier mail du module `subject` = ben le sujet du mail ... `attachment` = la pièce jointe , soit invoice (facture) , soit delivery (bon de livraison)PS : si quelqu'un ici peut m'indiquer comment on fait les retours lignes dans les posts :s .... Link to comment Share on other sites More sharing options...
Jean-Bruno Posted November 14, 2010 Author Share Posted November 14, 2010 Salut les amisBrocéliande : les retours lignes normalement c'est enter. Essaye sinon Maj EnterProsilver : as tu lu le fichier install.txt joins au module. J'ai tout détaillé A+ Link to comment Share on other sites More sharing options...
prosilver Posted November 14, 2010 Share Posted November 14, 2010 Bonjour,oui, c'est bon, cela doit-être du style: INSERT INTO `mailbyorderstate` (`id_custom_mail`, `id_order_state`, `email`, `template`, `subject`, `attachment`) VALUES (2, 3, '[email protected]', 'new_order', 'order_name', 'invoice'); mais ça ne donne pas le résultat que j'espérais. Dommage.Merci... Link to comment Share on other sites More sharing options...
Broceliande Posted November 14, 2010 Share Posted November 14, 2010 Bonjour,oui, c'est bon, cela doit-être du style:INSERT INTO `mailbyorderstate` (`id_custom_mail`, `id_order_state`, `email`, `template`, `subject`, `attachment`) VALUES (2, 3, '[email protected]', 'new_order', 'order_name', 'invoice'); mais ça ne donne pas le résultat que j'espérais. Dommage.Merci... Peut être pourrais tu commencer par le résultat que tu recherches ? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted November 17, 2010 Author Share Posted November 17, 2010 Au secours (résolu)Je ne sais pas pourquoi j'ai une erreur "Invalid date" qui est apparu. J'ai essayé de passer en 0.5 et même combat. Tu aurais une idée ?Bonne journée l'amiEDIT : il fallait passer en statut "commande prise en compte" et c'est tout bon.MERCi ce 'pré)module c'est de la bombe Link to comment Share on other sites More sharing options...
redtango2 Posted November 30, 2010 Share Posted November 30, 2010 bonjour j'ai essayé le module et il marche bienbravo pour cette explication.Est ce que dans le même ordre d'espritje peux l'utiliser pour recevoir le mail envoyé au client pour sa commandeet le réceptionner pour l'administrateur du site ?ou dupliquer l'email envoyé au client pour l'envoyer à une autre adresse ?Est ce que ce serait la bonne méthode ?Merci de votre réponse. Link to comment Share on other sites More sharing options...
Jean-Bruno Posted November 30, 2010 Author Share Posted November 30, 2010 Salut redtangoTu peux faire quasi ce que tu veux.Tu choisi un état et tu mets autant de lignes que de destinatairesune pure merveillea+ Link to comment Share on other sites More sharing options...
redtango2 Posted December 1, 2010 Share Posted December 1, 2010 Merci Jean Brunod'être si réactif, bravo pour cet ajout fonctionnel bien utile.je l'ai mis en place sur ne version Test, mais je ne me souviens plus du résultat- On installe le pré-module :- on renseigne l'id du mail 1 pour commande + [[email protected] ]- on renseigne la BDDINSERT INTO `mailbyorderstate` (`id_custom_mail`, `id_order_state`, `email`, `template`, `subject`, `attachment`) VALUES(2, 3, '[email protected]', 'new_order', 'order_name', 'invoice'); je renouvelle l'opération pour d'autres étapes et un nouveau mail (par exemple)PS envoie alors deux mails à deux adresses : - le premier order return au client ( par l'appel new_order)- et le second par (id_order_state) au statut et au mail indiqué Il suffit juste de modifier le template dans le fichier mail d' id_order_state [ ou de remettre le template mail client Order Return ?] , ou faut t'il rajouter quelque chose dans un autre fichier php ?c'est bien cela ou j'ai raté une etape ?C'est de la bombe , en effet ! Link to comment Share on other sites More sharing options...
Jean-Bruno Posted December 1, 2010 Author Share Posted December 1, 2010 Heu je suis un peu embrouillé làEn gros tu installes le premoduletu renseignes une ligne dans ta base par destinataire (cf fichier install.txt) en configurant si tu veux le bl ou la facture attachée en PDFtu fais un modèle de mail dans Modules>mailbyorderstate>mails par type de mail que tu veux envoyer (ex : "bonjour Monsieur bidule...." pour ton client et " SalutRedtango, il y a une commande à expédier alors passe la seconde" pour ton magasinier préféré ;-)clair cette fois ?a+ Link to comment Share on other sites More sharing options...
redtango2 Posted December 1, 2010 Share Posted December 1, 2010 J'ai testé Ma BDD :Textes complets id_custom_mail id_order_state email template subject attachment Modifier Effacer 3 3 [email protected] order_customer_comment order_name invoice Modifier Effacer 1 5 [email protected] order_conf order_name invoice Modifier Effacer 2 6 [email protected] order_canceled order_name invoiceMes Statuts de mails : 1 Confirmationde commande - livraison [1] [1] order_conf 2 Paiement accepté [1] [1] payment 3 Préparation en cours [1] [1] preparation 4 En cours de livraison [1] [1] shipped 5 Livré [1] [1] order_conf 6 Annulé [1] [0] order_canceled Le client reçoit les deux mails : [email protected] ne reçoit rienLes deux mails du client :Un reçu rempli avec les champs textes de personnalisation l'autre avec le moule du mail : sauf le prix et le n° de commande ( à mon avis c'est un retour OK le fichier ne doit pas être bon.)Si je comprends : le client reçoit les états 1 et 5 des statuts :En fait j'aimerais ( vu le nombre de consultations du thread - on est nombreux)recevoir à [email protected] l'order_conf avec le détail des champs textes de personnalisationles PJet si possible :comment faire un retour à la ligne des champs dans le coprs du mail.As tu des fichiers tests pour un retour de ce mail ?Avec ton aide, je chauffe, on s'approche de la solution.CordialementRedtango Link to comment Share on other sites More sharing options...
redtango2 Posted December 1, 2010 Share Posted December 1, 2010 Question suivante :avec votre solution, est ce que l'on peut récupérer history.php comme dansl'image attachée ? Link to comment Share on other sites More sharing options...
redtango2 Posted December 1, 2010 Share Posted December 1, 2010 Jean-Brunooui c'est cela je n'avais pas vu ton message au dessusje teste les statuts mais rien n'y fait.(est ce que par hasard l'adresse expéditeur ne serait pas la même, ce qui expliquerait que le mail soit doublé ?) Link to comment Share on other sites More sharing options...
luggy Posted December 5, 2010 Share Posted December 5, 2010 Bonjour,Je m'ennuyais et j'ai vu une demande d'envoi par fax sur le forum.Je me suis permis de modifier ce prémodule de facon a pouvoir utiliser l'envoi de FAX avec OVH.On peux renseigner le mot de passe fourni par OVH dans le BO.Mais il faut modifier le fichier classes/Mail.phpa la ligne 22 static public function Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_, $pdf= NULL,) Et remplacer apres la ligne global $_LANGMAIL; if ($pdf AND isset($pdf)) { $message = new Swift_Message(((is_array($_LANGMAIL) AND key_exists($subject, $_LANGMAIL)) ? $_LANGMAIL[$subject] : $subject)); $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo.jpg')) ; $templateVars['{shop_name}'] = Configuration::get('PS_SHOP_NAME'); $templateVars['{shop_url}'] = 'http://'.Tools::getHttpHost(false, true).__PS_BASE_URI__; $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $templateVars)), 'decorator'); if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 2) $message->attach(new Swift_Message_Part($templateTxt, 'text/plain', '8bit', 'utf-8')); if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 1) $message->attach(new Swift_Message_Part($templateHtml, 'text/html', '8bit', 'utf-8')); if ($fileAttachment AND isset($fileAttachment['content']) AND isset($fileAttachment['name']) AND isset($fileAttachment['mime'])) $message->attach(new Swift_Message_Attachment($fileAttachment['content'], $fileAttachment['name'], $fileAttachment['mime'])); $send = $swift->send($message, $to, new Swift_Address($from, $fromName)); $swift->disconnect(); return $send; } else { $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME').'] '.((is_array($_LANGMAIL) AND key_exists($subject, $_LANGMAIL)) ? $_LANGMAIL[$subject] : $subject)); $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo.jpg'))) : ''; $templateVars['{shop_name}'] = Configuration::get('PS_SHOP_NAME'); $templateVars['{shop_url}'] = 'http://'.Tools::getHttpHost(false, true).__PS_BASE_URI__; $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $templateVars)), 'decorator'); if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 2) $message->attach(new Swift_Message_Part($templateTxt, 'text/plain', '8bit', 'utf-8')); if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 1) $message->attach(new Swift_Message_Part($templateHtml, 'text/html', '8bit', 'utf-8')); if ($fileAttachment AND isset($fileAttachment['content']) AND isset($fileAttachment['name']) AND isset($fileAttachment['mime'])) $message->attach(new Swift_Message_Attachment($fileAttachment['content'], $fileAttachment['name'], $fileAttachment['mime'])); /* Send mail */ $send = $swift->send($message, $to, new Swift_Address($from, $fromName)); $swift->disconnect(); return $send; } Je sais pas si cela va servir a quelqu'un mais il n'y a pas cette fonctionalité sur prestashop. Link to comment Share on other sites More sharing options...
luggy Posted December 11, 2010 Share Posted December 11, 2010 Bon 3 téléchargement c'est bof, mais je suis sur que ca va aller un peu plus vite maintenant.Donc j'ai continuer a modifier le moduleMaintenant plus besoin d'aller dans la base de donnéesVous pouvez rentrer toutes les données depuis le BO.Mais ATTENTION pour celui avec la fonction FAX il faut faire les modifs du POST juste au dessus.Sinon a la prochaine commande ca va buguer.Ya encore quelques modifications de présentation a faire mais je m'arrête la. mailorderstate.zip mailbyorderstateEtFax.zip Link to comment Share on other sites More sharing options...
Jean-Bruno Posted December 22, 2010 Author Share Posted December 22, 2010 Wowowo cher Luggymerci beaucoupJe remonte ça en tête de pont après avoir tester.tres tres cool l'ami Link to comment Share on other sites More sharing options...
5DClaire Posted January 5, 2011 Share Posted January 5, 2011 Bonjour,je souhaiterais joindre des factures au mail envoyé aux clients. J'ai installé votre module et rélgler les paramètres à l'aide du fichier d'installation, mais rien ne se passe.Voici les paramètres que j'ai rentré :id_order_state :2email : {email}template : paymentsubjects : order_nameattachlent : invoice Link to comment Share on other sites More sharing options...
Jean-Bruno Posted January 5, 2011 Author Share Posted January 5, 2011 SDClaire, as tu utiliser le module final (ici en page 5 de ce post http://www.prestashop.com/forums/viewreply/347707/) Link to comment Share on other sites More sharing options...
5DClaire Posted January 5, 2011 Share Posted January 5, 2011 oui, j'ai bien utilisée la version du module final Link to comment Share on other sites More sharing options...
Jean-Bruno Posted January 5, 2011 Author Share Posted January 5, 2011 tu peux mettre plusieurs adresses pour tes mails de test. Est tu sur que tu n'a pas de souci d'envois de mail ??? (teste avec un message client sur une commande test)Est tu sur que le statut que tu as testé est le 2 ?as tu essayé avec un template de base ? Link to comment Share on other sites More sharing options...
Jean-Bruno Posted January 5, 2011 Author Share Posted January 5, 2011 avec les { } dans le sujet (ou sans si tu les a mis) ??? Link to comment Share on other sites More sharing options...
5DClaire Posted January 5, 2011 Share Posted January 5, 2011 Les mails fonctionnent bien, je teste depuis tout à l'heure mais aucun fichier n'est joint au message.. Le statut est bien le 2.Je ne m'y connais pas trop mais qu'est ce que vous appelez template de base? Link to comment Share on other sites More sharing options...
5DClaire Posted January 5, 2011 Share Posted January 5, 2011 Lorsque je modifie le statut de la commande voici le message d'erreur qui apparait :"Erreur : les paramètres du mail sont corrompus" Link to comment Share on other sites More sharing options...
tony231 Posted January 27, 2011 Share Posted January 27, 2011 Bonjour,J'essai d'utiliser ce module, mais j'ai le même probleme."les parametres du mail sont corrompu", dès lors que je met {email} dans le champ email.Mes tests :Si je met une adresse en static, ça marche sans problème. Le mail est bien expedié.Si je met la balise {email} sans le sujet par exemple, la valeur est bonne dans le mail.Merci pour votre aide Link to comment Share on other sites More sharing options...
tony231 Posted January 27, 2011 Share Posted January 27, 2011 C'est bon j'ai trouvé le bug.Ligne 169, il faut rajouter ce code $mail['email'] = str_replace(array_keys($templateVars), array_values($templateVars), $mail['email']); en effet, le destinataire dans le champ mail n'était pas transformé par le replacement de la balise, alors que dans les autre champs (subject ou mail) c'était ok. Link to comment Share on other sites More sharing options...
drelin Posted April 29, 2011 Share Posted April 29, 2011 Bonjour et bravo pour ce module bien pratique.J'ai une question sur les fichiers joints. Comment faire pour attacher autre chose que le bon de commande? J'ai par exemple un pdf généré par un autre module que je voudrais joindre automatiquement à certains mails suivant le statut.J'ai trouvé la fonction getMailAttachement, je duplique le 'if' mais ensuite je ne sais pas quoi renseigner dans 'content'.Idéalement, un lien, un fichier ou mon PDF généré par un module (un devis tiré de la facture).merci Link to comment Share on other sites More sharing options...
justincarton Posted August 3, 2011 Share Posted August 3, 2011 Bonjour, Je suis interessé par ce module. Tout comme 5DClaire, j'ai bien configuré le module mais aucun mail n'est envoyé... Je suis sous PS 1.4.4, cela vient peut être de cela? Quelqu'un peut il m'aider? Merci d'avance à celui ci Link to comment Share on other sites More sharing options...
spacemoo Posted September 30, 2011 Share Posted September 30, 2011 Bonjour a tous ce sujet est trés intéréssant. J'ai du mal a comprendre les discussions entre php et smarty.... comment peut on reccuperer la variable $email (qui correspondrait a l'email du client) coté php? merci d'avance pour vos lumieres Link to comment Share on other sites More sharing options...
ludo Posted October 18, 2011 Share Posted October 18, 2011 Bonsoir, Je tenais en premier a remercier Broceliande, Jean-Bbruno et Luggy pour le super taf sur ce module... vraiment bien pratique ! J'en ai profité pour apporter ma petit contrib avec cette nouvelle version 0.61 (compatible 1.4.x) qui inclus Correction bug {email} dans l’objet Amélioration de l’administration Nouvelle documentation Traduction française mailbyorderstate.zip Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 19, 2011 Author Share Posted October 19, 2011 Hoho, merci Ludo mais je n'ai fait que les demandes ;-) J'ai un besoin complémentaire qui serait de pousser le module à "filtrer" les mail et BL par fabricant. L'idée et de reprendre dans les BL uniquement les produits par fournisseur afin de faire de l'envoi direct C'est gravement compliqué ou a partir de ce qu'on a on pourrait aller jusque là ??? Merci à tous Link to comment Share on other sites More sharing options...
ludo Posted October 19, 2011 Share Posted October 19, 2011 Bonne idée et j'ai une demande également pour ajouter la notion de groupe Envoyer une alerte uniquement a un groupe précis Link to comment Share on other sites More sharing options...
Jean-Bruno Posted October 19, 2011 Author Share Posted October 19, 2011 La ça serait une bombe ;-) Link to comment Share on other sites More sharing options...
polux Posted October 23, 2011 Share Posted October 23, 2011 Bonjour tout le monde, Merci pour ce module, il s'avère extremement pratique et je dirais meme indispensable. Cependant, je rencontre un petit problème concernant les pièces jointes (mail ou facture). La facture (pour mon cas) est bien attachée en pièce jointe au mail du client mais gros problème elle n'a ni numéro, ni date (photo pièce jointe). Et pourtant lorsque je passe directement par l'onglet commande dans le back office et que je télécharge le BL ou la facture, pas de problème avec la date ni le numéro de facture. J'ai fais le test avec le BL c'est le même problème. Merci d'avance de votre aide. Link to comment Share on other sites More sharing options...
merchal59 Posted October 31, 2011 Share Posted October 31, 2011 Un grand merci pour ce module que je vais réellement apprécier de configurer ! Link to comment Share on other sites More sharing options...
canel Posted February 19, 2012 Share Posted February 19, 2012 Merci beaucoup pour ce module, je m'arrachais les cheveux depuis une journée ! Une petite question, peut-on récupérer la quantité de produits achetés dans le template new_order ? J'ai un petit texte au dessus du récapitulatif il il faudrait que j'insère cette phrase : Bonjour, Nous vous confirmons la réservation de XX place(s) au nom de... Merci de m'indiquer si vous avez une astuce pour cela. Link to comment Share on other sites More sharing options...
modelike Posted April 6, 2012 Share Posted April 6, 2012 Bonjour J'ai un problème important pour ce module. En effet je suis sous prestashop 1.4 et quand mes clients passent une commande, au moment de passer le statut en paiement accepté la facture ne se génère pas et du coup le client arrive sur une page avec l'erreur 'invalide order state". J'ai donc désactivé le module et depuis, plus d'erreur ! Merci Link to comment Share on other sites More sharing options...
Galanid Posted April 10, 2012 Share Posted April 10, 2012 Bonjour, J'aurai une question concernant ce module au niveau des pièces jointe. Est ce possible de joindre une pièce jointe autre ques les traditionnel " facture, bon de livraison " . Exemple, je souhaite joindre un pdf sur la procédure de sav en même temp que la confirmation de commande. Merci d'avance Link to comment Share on other sites More sharing options...
dgcom Posted April 16, 2012 Share Posted April 16, 2012 Bonjour, Je viens de découvrir ce module qui correspond totalement à ce que je cherchais, mais la fonction qui m'intéresse le plus, le fax avec ecofax ne fonctionne pas. Ovh demande 3 choses, le destinataire doit être [email protected], l'objet doit être le login ecofax seul et le mot de passe dans le corps de mail. Théoriquement c'est très simple, mais, prestashop ajoute [$shop_name] à l'objet dans la classe mail donc le login n'est pas reconnu, j'ai remedié à ce soucis en modifiant la classe mail.php avec une condition sur le template. Après avoir vérifié de nombreuses fois tout est ok, cependant le service télécopie renvoie "erreur de traitement". Donc je me demandais si quelqu'un avait déjà réussi à faire fonctionner cette fonction avec ovh. Merci. Link to comment Share on other sites More sharing options...
Galanid Posted April 20, 2012 Share Posted April 20, 2012 Bonjour, voila la partie qui gere le pdf a expédié. J'aimerai pouvoir expédié un pdf précis qui soit toujours le même, pour le SAV. Est ce que quelqu'un pourrait m'aide a modifier ou rajouter le beau de code qu'il faut. Merci d'avance public function getMailAttachment($attachmentType='', $order) { $fileAttachment = array(); if($attachmentType == 'delivery') { $fileAttachment['content'] = PDF::invoice($order, 'S', false, $tmp, false, $order->delivery_number); $fileAttachment['name'] = Configuration::get('PS_DELIVERY_PREFIX', intval($order->id_lang)).sprintf('%06d', $order->delivery_number).'.pdf'; $fileAttachment['mime'] = 'application/pdf'; return $fileAttachment; } if($attachmentType == 'invoice') { $fileAttachment['content'] = PDF::invoice($order, 'S', false, $tmp, false, false); $fileAttachment['name'] = Configuration::get('PS_INVOICE_PREFIX', intval($order->id_lang)).sprintf('%06d', $order->invoice_number).'.pdf'; $fileAttachment['mime'] = 'application/pdf'; return $fileAttachment; } Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now