Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Renault Grégory

    [Free Module] Spend X To Get Free Shipping

    Hello, Great free module How can i move the text like the capture i put below
  3. Buongiorno a tutti, vorrei sapere come fare ad eliminare la conversione automatica dei colori nelle immagini articoli. L'immagine originale sottostante è un esempio di quello che dovrebbe essere il colore originale Link al sito-> edencart.it/shop Questo invece è come appare quando caricata su prestashop Grazie a tutti
  4. Normalement ce module affecte ce statut: Qui ne considère pas la commande comme validée A vérifier donc
  5. Claudiocool

    Schriftart in 1.7.5.1 ändern

    Okay, ich kenne zwar den 1.7 so gut wie nicht, aber es liegt in so einem Fall nahe, die Schrift zu identifizieren (Stichwort Rechtsklick und untersuchen), dann sucht man in einer lokalen Kopie den Themeordner nach dieser Schrift durch (vermutlich auch hier in den CSS) und ändert diese dort ab. Eine Installation eines älteren Themes würde ich nicht machen, wenn nicht sicher ist, ob die Updates auf höhere Versionan auch hier Änderungen erforderten.
  6. Have a PS 1.7.4.2 which i cant upgrade with 1click upgarde This is from 1 click updgrade: Analyzing the situation...Shop deactivated. Now downloading... (this can take a while) Download complete. Now extracting... [Ajax / Server Error for action unzip] textStatus: "error " errorThrown:"Backend fetch failed " jqXHR: " " [DEV] ajax request : upgradeNow Starting upgrade... Downloaded archive will come from https://download.prestashop.com/download/releases/prestashop_1.7.5.2.zip MD5 hash will be checked against 9a08d99877174a96146ea25bc763cf8b [DEV] ajax request : download Downloading from https://download.prestashop.com/download/releases/prestashop_1.7.5.2.zip File will be saved in /customers/0/1/7/displayer.dk/httpd.www/admin76771qwno/autoupgrade/download/prestashop.zip Download directory has been emptied Download complete. [DEV] ajax request : unzip This is from browser console jquery-1.11.0.min.js:4 POST http://www.displayer.dk/admin76771qwno/autoupgrade/ajax-upgradetab.php 503 (Backend fetch failed) send @ jquery-1.11.0.min.js:4 ajax @ jquery-1.11.0.min.js:4 doAjaxRequest @ upgrade.js:429 handleSuccess @ upgrade.js:567 success @ upgrade.js:479 j @ jquery-1.11.0.min.js:2 fireWith @ jquery-1.11.0.min.js:2 x @ jquery-1.11.0.min.js:4 b @ jquery-1.11.0.min.js:4 XMLHttpRequest.send (async) send @ jquery-1.11.0.min.js:4 ajax @ jquery-1.11.0.min.js:4 doAjaxRequest @ upgrade.js:429 handleSuccess @ upgrade.js:567 success @ upgrade.js:479 j @ jquery-1.11.0.min.js:2 fireWith @ jquery-1.11.0.min.js:2 x @ jquery-1.11.0.min.js:4 b @ jquery-1.11.0.min.js:4 XMLHttpRequest.send (async) send @ jquery-1.11.0.min.js:4 ajax @ jquery-1.11.0.min.js:4 doAjaxRequest @ upgrade.js:429 (anonymous) @ upgrade.js:537 dispatch @ jquery-1.11.0.min.js:3 r.handle @ jquery-1.11.0.min.js:3
  7. Vider le cache en supprimant via le ftp le contenu (dossiers et fichiers) dans /var/cache/ https://www.prestashop.com/forums/topic/519979-tutorial-comment-transférer-mon-site-local-distant-ou-linverse/
  8. bgbruehl

    H1, H2 und so weiter

    Hat sich erledigt. Habe es gefunden und zwar unter themes/classic/templates/catalog/_partials/active-filters.tpl
  9. Bonjour, Les gens peuvent passer commande sur mon shop pour venir la chercher après chez moi. Ils paient à ce moment là, aucune manière de payer. D'un point de vue client tout marche, je peux sélectionner "cash on delivery". Tout se passe bien. Par contre mon problème est que lorsque je vais dans la commande, qui n'a donc toujours pas été retirée, la commande est considérée comme payée. Comment faire en sorte pour que ça ne soit pas le cas?
  10. Rafaprest

    Generowanie faktury

    No tak. W zasadzie co by robili programiści gdyby było idealnie ? Grunt to wyjście z problemu i działamy dalej.
  11. Today
  12. bgbruehl

    H1, H2 und so weiter

    Guten morgen, danke für deine antowort. Weißt du wo man das abänder kann, also in was für eine Datei?
  13. design4VIP

    Generowanie faktury

    jak nabradziej sie z toba zgadzam. ale... nie zapominij, ze Presta to wytwor francuski a nie polski. a wiadomo, co kraj to obyczaj (czyt. inne prawo). RODO? to wymysl "ostatnich dni" a Presta ma juz swoje lata i chwilami nie nadarza za powstajacymi po nocach ustawami system tworzony jest z mysla pelnego "use", czyli fakturowania itp. w samym systemie. przy takim korzystaniu musisz miec ciaglosc zamowien, wiec usuwanie jest raczej niedopuszczalne.... i tutaj znowu wracamy do RODO... prowadzac pelna ksiegowosc przy uzyciu samej Presta z jednej strony nie mozesz usuwac ani zamowien ani danych klienta, a z drugiej RODO daje taka mozliwosc... no i... badz tu madry i wybieraj mniejsze zlo. bo w ktoryms z przypadkow musisz zlamac ktores prawo a co do powstawanie modulow siejacych zament w systemie... to juz zostawiam bez komentarza... ale tak... malo kto pisze moduly tylko dla frajdy
  14. Prestashop 1.6 The module does not add the attachment to the email. classes / PaymentModule.php $file_attachement, null, _PS_MAIL_DIR_, false, (int) $order->id_shop $file_attachement['content'] = $pdf->render(false); $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int) $order->id_lang, null, $order->id_shop) . sprintf('%06d', $order->invoice_number) . '.pdf'; $file_attachement['mime'] = 'application/pdf'; if (Validate::isEmail($this->context->customer->email)) { Mail::Send( (int) $order->id_lang, 'order_conf', Context::getContext()->getTranslator()->trans( 'Order confirmation', array(), 'Emails.Subject', $orderLanguage->locale ), $data, $this->context->customer->email, $this->context->customer->firstname . ' ' . $this->context->customer->lastname, null, null, $file_attachement, null, _PS_MAIL_DIR_, false, (int) $order->id_shop ); }
  15. Hallo, ich selber nutze seit einiger Zeit die 1.7er Version (aktuell in der 1.7.5.0 Ausführung) und bin soweit eigentlich ganz zufrieden. Nun helfe ich gerade einem Freund bei der Installation seines PS-Shops (der hat noch weniger Ahnung von der Materie als ich) und weise dabei eine Mitarbeitern vom ihm ein. Ich habe da die aktuelle 1.7.5.1 installiert und die ganzen Anpassungen / Änderungen zum Großteil durchgeführt (also EU-Recht, Übersetzungen, Mailtexte, Zusatzmodule etc.). Nach einem ersten Blick ins Frontend habe ich aber festgestellt, dass von der 1.7.5.0 Version zur 1.7.5.1 die Standardschrift für das Classictheme wohl geändert wurde. In weiten Teilen des Shops und auch bei den Zusatzmodulen wird nun eine Schrift benutzt welche zum Teil sehr schlecht lesbar ist. Ich habe zwar schon die Suche bemüht, bin aber nicht wirklich fündig geworden. Wenn, dann meistens für Versionen älter als 1.6. Kann mir jemand weiter helfen und mir sagen wo und wie ich das ändern kann??? (Oder kann ich einfach den Ordner vom Classic Theme der 1.7.5.0 Version in die Installation rüberschieben und somit die dortige Version überschreiben?? Screenshot von meinem Shop: Screenshop vom 1.7.5.1 Shop:
  16. Salut la communauté, Prestashop 1.7.5.0 lorsque je fait une migration de mon site en local(wampserver) pour le online (spyder.cm) je rencontre cette erreur: Warning: require_once(/home/spyder/public_html/config/../vendor/autoload.php): failed to open stream: No such file or directory in /home/spyder/public_html/config/autoload.php on line 26 Fatal error: require_once(): Failed opening required '/home/spyder/public_html/config/../vendor/autoload.php' (include_path='.:/opt/cpanel/ea-php72/root/usr/share/pear') in /home/spyder/public_html/config/autoload.php on line 26 Merci de votre aide.
  17. PrestonAyala

    express vpn crack onhax

    Download Feb 20, 2019 - CyberGhost VPN 7.2.4294 Crack is one of the best Virtual Private Network (VPN) for Windows and Mac. ... CyberGhost VPN Keygen supports various protocols such as OpenVPN protocol, L2TP, IKEv2 and also advanced technology of 256-AES encryption which gives the possibility to surf ... Jan 30, 2019 - If Yes Then This Software That I Am Going To Tell You Have Ability To Do That It was Known As CyberGhost Crack. Not At All This Software ... Jan 5, 2019 - VPN Premium Crack CyberGhost . CyberGhost VPN 7 Crack is one of the most efficient ways to secure your online activities and privacy. Apr 13, 2019 - CyberGhost VPN 7.2.4294 Crack with Torrent offers you to run with 1-snap to open any gushing site benefit on your PC. CyberGhost VPN ... Apr 3, 2019 - A VPN, such as CyberGhost Crack, encrypts our online connection and thus dramatically increases both our digital privacy as well as our ... CyberGhost VPN Premium Crack is a personal VPN service that is easy to use, hides your online activity from eavesdroppers, and allows you to spoof your IP ... http://onhaxme.com/cyberghost-vpn-7-2-crack-key/ https://realhax.com/cyberghost-vpn-crack-keygen/ https://pcgamerlist.com/cyberghost-crack/ http://eviliso.com/cyberghost-crack/ https://crackedroot.com/cyberghost-vpn-premium-crack/ https://productkeyfree.org/cyberghost-vpn-crack/ express vpn crack express vpn crack onhax express vpn crack pc
  18. I am having a situation. If I turn on debug mode then the product comments don't show up on the product page. Did anyone face this problem? Thanks!
  19. Lo pudiste solucionar? Me pasa lo mismo
  20. Lo solucionaste? Me pasa lo mismo con ciertas formas de pago , ejemplo oxxo
  21. Hello, I'm quite new to PrestaShop. I want to add a sheet music Viewing to Virtual Products in Order Detail. This code for viewing a score works well <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="http://www.verovio.org/javascript/latest/verovio-toolkit.js" type="text/javascript"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js" type="text/javascript"></script> <style type="text/css"> .pn-viewer-section { display:flex; margin : 10px; border: 5px solid white; background : grey; } .pn-viewer-section div { flex:1; -webkit-flex:1; padding : 10px; color:white; border: 2px solid white; } .pn-viewer-section div * { flex:1; -webkit-flex:1; } #leftnavbtn { float:left; width:100px; height:100px; border:2px; /*background-color:red;*/ /*background-color:transparent;*/ } #rightnavbtn { float:right; width:100px; height:100px; border:2px; /*background-color:red;*/ /*background-color:transparent;*/ } </style></head> <div id="main" class="main"> <div id="toTop"><i class="crycon-back2top"></i> </div> <div id="forbottom" > <div style="clear:both;"> </div> <section id="container" class="two-columns-right"> <div id="content" role="main"> <div id="post-1139" class="post-1139 page type-page status-publish hentry"> <h1 class="entry-title">Visualiseur</h1> <div class="entry-content"> <p style="font-size:small">formats supportés : .xml (MusicXML), .mei (MEI), .pae (Plaine &#038; Easie)&#8230;<a href="../readers/afficher-gratuitement-une-partition-numerique-dans-le-browser/#Comment_lutiliser" target="_blank">Aide</a></p> <p><script type="text/javascript"> //<![CDATA[ //for left and right nav btns var timer; var status = 1; var vrvToolkit = new verovio.toolkit(); var page = 1; var zoom = 100; var deffont = "Leipzig"; var pageHeight = 2970; var pageWidth = 2100; var spacingSystem = 2; var scoreData = ""; var swipe_pages = false; // Pour accepter les différents formats, ne pas positionner inputFormat // var format = 'mei'; var ids = []; // reload cookies if ( $.cookie('zoom') ) zoom = $.cookie('zoom'); console.log(zoom); function set_options( ) { // default = window width pageWidth = ($("#pn-viewer-control").width()) * 100 / zoom ; pageHeight = pageWidth * 31/23.5 ; border = 50; options = { // Pour accepter les différents formats, ne pas positionner inputFormat // inputFormat: format, font:deffont, pageHeight: pageHeight, pageWidth: pageWidth, border: border, scale: zoom, spacingSystem: spacingSystem, adjustPageHeight: 1, ignoreLayout: 1 }; //console.log( options ); vrvToolkit.setOptions( options ); } function upload_file() { var f = $("#mei_files").prop('files')[0]; var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile) { return function(e) { scoreData = e.target.result; load_data(scoreData); }; })(f); // Read in the image file as a data URL. reader.readAsText(f); }; function load_data(data) { set_options(); try { vrvToolkit.loadData(data); if (vrvToolkit.getPageCount() == 0) { log = vrvToolkit.getLog(); alert(log); } else { $("#total_text").html(vrvToolkit.getPageCount()); page = 1; load_page(); } } catch(err) { alert(err); } } function load_data_with_font(newfont) { deffont = newfont; load_data(scoreData); } function load_page() { $("#jump_text").html(page); svg = vrvToolkit.renderPage(page, {}); //console.log(svg); $("#svg_output").html(svg); adjust_page_height(); add_nav_buttons(); }; function next_page() { if (page >= vrvToolkit.getPageCount()) { return; } page = page + 1; load_page(); }; function prev_page() { if (page <= 1) { return; } page = page - 1; load_page(); }; function first_page() { page = 1; load_page(); }; function last_page() { page = vrvToolkit.getPageCount(); load_page(); }; function apply_zoom() { console.log("apply zoom") $.cookie('zoom', zoom, { expires: 30 }); set_options(); var measure = 0; if (page != 1) { measure = $("#svg_output .measure").attr("id"); } vrvToolkit.redoLayout(); $("#total_text").html(vrvToolkit.getPageCount()); page = 1; if (measure != 0) { page = vrvToolkit.getPageWithElement(measure); } load_page(); } function zoom_out() { if (zoom < 20) { return; } zoom = zoom / 2; apply_zoom(); } function zoom_in() { if (zoom > 80) { return; } zoom = zoom * 2; apply_zoom(); } //permet de saisir le % de zoom function do_zoom_enter(e) { key = e.keyCode || e.which; if (key == 13) { text = $("#zoom_text").val(); zoom_val = Number(text.replace("%", "")); if (zoom_val < 10) zoom_val = 10; else if (zoom_val > 160) zoom_val = 160; zoom = zoom_val; apply_zoom(); } } function adjust_page_height() { // adjust the height of the panel if ( $('#svg_panel svg') ) { zoomed_height = pageHeight * zoom / 100; if ( zoomed_height < $('#svg_panel svg').height() ) { zoomed_height = $('#svg_panel svg').height(); } $('#svg_output').height( zoomed_height ); // slighly more for making sure we have no scroll bar } // also update the zoom control $("#zoom_text").val(zoom + "%"); } function add_nav_buttons() { var leftbtn = $("<button>"); var rightbtn = $("<button>"); leftbtn.attr("id","leftnavbtn"); leftbtn.attr("onclick","singleClick('leftnavbtn')"); leftbtn.attr("ondblclick","doubleClick('leftnavbtn')"); leftbtn.text("<<"); //leftbtn.height($('#svg_output').height()); rightbtn.attr("id", "rightnavbtn"); rightbtn.attr("onclick", "singleClick('rightnavbtn')"); rightbtn.attr("ondblclick", "doubleClick('rightnavbtn')"); rightbtn.text(">>"); //rightbtn.height($('#svg_output').height()); $("#svg_output").prepend(leftbtn, rightbtn); } //for leftnav and rightnav btns function singleClick(origin) { status = 1; timer = setTimeout(function() { if (status == 1) { if (origin == 'leftnavbtn') prev_page(); else next_page(); } }, 500); } function doubleClick(origin) { clearTimeout(timer); status = 0; if (origin == 'leftnavbtn') first_page(); else last_page(); } //]]&gt; </script></p> <section id="pn-viewer-control" class="pn-viewer-section"> <div> <input type="file" id="mei_files" accept=".pae,.mei,.xml" onchange="upload_file(); return false" name="file" style="margin: 4px 0px 8px 0px;"></input> </div> <div> <span><br /> <span id="jump_text"></span>/<span id="total_text"></span><br /> </span> </div> <div> <span class="pn-viewer-section div *"><br /> <button onclick="zoom_out()"><br /> <span>&#8211;</span><br /> </button><br /> <input type="text" placeholder="100%" id="zoom_text" onkeypress="do_zoom_enter(event)"/><br /> <button onclick="zoom_in()"><br /> <span>+</span><br /> </button><br /> </span> </div> <div> <span class="pn-viewer-section div *"><br /> <select onchange="load_data_with_font($(this).val());"><option value="Bravura">Bravura</option><option value="Gootville">Gootville</option><option value="Leipzig" selected>Leipzig</option></select><br /> </span> </div> </section> <div style="clear: both;"></div> <hr/> <div id="svg_panel"> <div id="svg_output"/> </div> </div> The matter is it s a melting pot of javascript css html and php. In an only PHP website it would work well. But I've seen it must be inserted in a template order-detail-no-return.tpl if I'm not wrong in reading code... How can I adapt this code? Thanks for answering!
  22. Effectivement je préférerai ne rien gâcher après si c’est vraiment pas sorcier et que je suis bien guider ..
  23. Yesterday
  24. Beim Timeout wenn du das Modul aufrufen willst dürfte die Verbindung zum Server von Prestashop das Problem sein. Das liegt dann aber nicht wirklich in deiner Hand. Eventuell versuche es zu einem anderen Zeitpunkt nochmal. Was meinst du mit schlechte Performance von Presta? Bei 1.6 ist die Performance nicht so schlecht. Was oft ein Problem ist ist die Anbindung an die Server von Prestashop und das damit elend langsame BO. Dies Verbindung kann man aber mit wenigen Handgriffen unterbinden. http://nemops.com/faster-prestashop-back-office-modules-themes-ads/#.W9KDlJMzaUk Wenn du im Front Probleme mit der Performance hast würde ich mal die Zahl der Module checken und alles was du nicht brauchst entfernen sowie die internen Einstellungen durchgehen. PHP7 ist auch ein großer Performancegewinn im Gegensatz zu PHP5. Hilft das alles nichts könnte auch dein Hoster einfach langsam sein. Ein Link zum Shop wäre für bessere Einschätzung der Situation mehr als Hilfreich. p.s. Uprgrade zu 1.7? Überlege dir das gut wenn du einen produktiven Shop hast. Abgesehen von den vielen Problemen die mit 1.7 auf einen zukommen, stellt 1.7 mit Sicherheit keinen Performancegewinn dar, ganz im Gegenteil.
  25. Bonjour dans les menus à gauche tu descend et tu cherche paramètre de la boutique ensuite clique sur SEO&url. Plus bas dans cette page tu a le lien de la boutique en .fr tu met .com. J’il Faut faire attention que ta boutique est bien migrer sur le.com pour ajouter le thème tu clique sur apparence -> Thème, ensuite il y a un bouton vers le haut à droite ajouter ou importer un thème puis tu suis les étapes ensuite sur cette même page plus bas tu active le thème. bonne soirée.
  26. Alors pour remédier à ton problème suffit juste que tu active le module de paiement par transfert bancaire ou chèque. Etant donner que tu utilise pas cette méthode tu change le nom par un intitulé autre exemple : Accepter les cgv. Tu active cette pseudo méthode de paiement que pour les produits gratuit. Voila ton problème est résolu.
  27. The same here. It's only one week but no news... He have time to write on his blog so I guess he is fine
  28. Hello, on override AdminProductController.php afin que la référence supplier s'injecte dans ps_product <?php /* * 2007-2017 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ /** * @property Product $object */ class AdminProductsController extends AdminProductsControllerCore { /** * Post treatment for suppliers */ public function processSuppliers() { if ((int)Tools::getValue('supplier_loaded') === 1 && Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) { // Get all id_product_attribute $attributes = $product->getAttributesResume($this->context->language->id); if (empty($attributes)) { $attributes[] = array( 'id_product_attribute' => 0, 'attribute_designation' => '' ); } // Get all available suppliers $suppliers = Supplier::getSuppliers(); // Get already associated suppliers $associated_suppliers = ProductSupplier::getSupplierCollection($product->id); $suppliers_to_associate = array(); $new_default_supplier = 0; if (Tools::isSubmit('default_supplier')) { $new_default_supplier = (int)Tools::getValue('default_supplier'); } // Get new associations foreach ($suppliers as $supplier) { if (Tools::isSubmit('check_supplier_'.$supplier['id_supplier'])) { $suppliers_to_associate[] = $supplier['id_supplier']; } } // Delete already associated suppliers if needed foreach ($associated_suppliers as $key => $associated_supplier) { /** @var ProductSupplier $associated_supplier */ if (!in_array($associated_supplier->id_supplier, $suppliers_to_associate)) { $associated_supplier->delete(); unset($associated_suppliers[$key]); } } // Associate suppliers foreach ($suppliers_to_associate as $id) { $to_add = true; foreach ($associated_suppliers as $as) { /** @var ProductSupplier $as */ if ($id == $as->id_supplier) { $to_add = false; } } if ($to_add) { $product_supplier = new ProductSupplier(); $product_supplier->id_product = $product->id; $product_supplier->id_product_attribute = 0; $product_supplier->id_supplier = $id; if ($this->context->currency->id) { $product_supplier->id_currency = (int)$this->context->currency->id; } else { $product_supplier->id_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT'); } $product_supplier->save(); $associated_suppliers[] = $product_supplier; foreach ($attributes as $attribute) { if ((int)$attribute['id_product_attribute'] > 0) { $product_supplier = new ProductSupplier(); $product_supplier->id_product = $product->id; $product_supplier->id_product_attribute = (int)$attribute['id_product_attribute']; $product_supplier->id_supplier = $id; $product_supplier->save(); } } } } // Manage references and prices foreach ($attributes as $attribute) { foreach ($associated_suppliers as $supplier) { /** @var ProductSupplier $supplier */ if (Tools::isSubmit('supplier_reference_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier) || (Tools::isSubmit('product_price_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier) && Tools::isSubmit('product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier))) { $reference = pSQL( Tools::getValue( 'supplier_reference_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, '' ) ); $price = (float)str_replace( array(' ', ','), array('', '.'), Tools::getValue( 'product_price_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, 0 ) ); $price = Tools::ps_round($price, 6); $id_currency = (int)Tools::getValue( 'product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, 0 ); if ($id_currency <= 0 || (!($result = Currency::getCurrency($id_currency)) || empty($result))) { $this->errors[] = Tools::displayError('The selected currency is not valid'); } // Save product-supplier data $product_supplier_id = (int)ProductSupplier::getIdByProductAndSupplier($product->id, $attribute['id_product_attribute'], $supplier->id_supplier); if (!$product_supplier_id) { $product->addSupplierReference($supplier->id_supplier, (int)$attribute['id_product_attribute'], $reference, (float)$price, (int)$id_currency); if ($product->id_supplier == $supplier->id_supplier) { if ((int)$attribute['id_product_attribute'] > 0) { $data = array( 'supplier_reference' => pSQL($reference), 'wholesale_price' => (float)Tools::convertPrice($price, $id_currency) ); $where = ' a.id_product = '.(int)$product->id.' AND a.id_product_attribute = '.(int)$attribute['id_product_attribute']; ObjectModel::updateMultishopTable('Combination', $data, $where); } else { $product->wholesale_price = (float)Tools::convertPrice($price, $id_currency); //converted in the default currency $product->supplier_reference = pSQL($reference); $product->update(); } } } else { $product_supplier = new ProductSupplier($product_supplier_id); $product_supplier->id_currency = (int)$id_currency; $product_supplier->product_supplier_price_te = (float)$price; $product_supplier->product_supplier_reference = pSQL($reference); $product_supplier->update(); /* Mettre la reférence supplier dans le ps_product */ $product = new Product($product->id); $product->supplier_reference = $product_supplier->product_supplier_reference; $product->update(); } } elseif (Tools::isSubmit('supplier_reference_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier)) { //int attribute with default values if possible if ((int)$attribute['id_product_attribute'] > 0) { $product_supplier = new ProductSupplier(); $product_supplier->id_product = $product->id; $product_supplier->id_product_attribute = (int)$attribute['id_product_attribute']; $product_supplier->id_supplier = $supplier->id_supplier; $product_supplier->save(); } } } } // Manage defaut supplier for product if ($new_default_supplier != $product->id_supplier) { $this->object->id_supplier = $new_default_supplier; $this->object->update(); } } } } On override le hook validate order dans /override/modules/mailalerts/mailalerts.php <?php /** * 2007-2016 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_CAN_LOAD_FILES_')) exit; include_once(dirname(_PS_MODULE_DIR_).'/modules/mailalerts/MailAlert.php'); class MailAlertsOverride extends MailAlerts { public function hookActionValidateOrder($params) { if (!$this->merchant_order || empty($this->merchant_mails)) return; // Getting differents vars $context = Context::getContext(); $id_lang = (int)$context->language->id; $id_shop = (int)$context->shop->id; $currency = $params['currency']; $order = $params['order']; $customer = $params['customer']; $configuration = Configuration::getMultiple( array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_COLOR' ), $id_lang, null, $id_shop ); $delivery = new Address((int)$order->id_address_delivery); $invoice = new Address((int)$order->id_address_invoice); $order_date_text = Tools::displayDate($order->date_add); $carrier = new Carrier((int)$order->id_carrier); $message = $this->getAllMessages($order->id); if (!$message || empty($message)) $message = $this->l('No message'); $items_table = ''; $products = $params['order']->getProducts(); $customized_datas = Product::getAllCustomizedDatas((int)$params['cart']->id); Product::addCustomizationPrice($products, $customized_datas); foreach ($products as $key => $product) { $unit_price = Product::getTaxCalculationMethod($customer->id) == PS_TAX_EXC ? $product['product_price'] : $product['product_price_wt']; $customization_text = ''; if (isset($customized_datas[$product['product_id']][$product['product_attribute_id']])) { foreach ($customized_datas[$product['product_id']][$product['product_attribute_id']][$order->id_address_delivery] as $customization) { if (isset($customization['datas'][Product::CUSTOMIZE_TEXTFIELD])) foreach ($customization['datas'][Product::CUSTOMIZE_TEXTFIELD] as $text) $customization_text .= $text['name'].': '.$text['value'].'<br />'; if (isset($customization['datas'][Product::CUSTOMIZE_FILE])) $customization_text .= count($customization['datas'][Product::CUSTOMIZE_FILE]).' '.$this->l('image(s)').'<br />'; $customization_text .= '---<br />'; } if (method_exists('Tools', 'rtrimString')) $customization_text = Tools::rtrimString($customization_text, '---<br />'); else $customization_text = preg_replace('/---<br \/>$/', '', $customization_text); } $url = $context->link->getProductLink($product['product_id']); $items_table .= '<tr style="background-color:'.($key % 2 ? '#DDE2E6' : '#EBECEE').';"> <td style="padding:0.6em 0.4em;">test1'.$product['product_reference'].'</td> <td style="padding:0.6em 0.4em;">test2'.$product['supplier_reference'].'</td> <td style="padding:0.6em 0.4em;"> <strong><a href="'.$url.'">'.$product['product_name'].'</a>' .(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '') .(!empty($customization_text) ? '<br />'.$customization_text : '') .'</strong> </td> <td style="padding:0.6em 0.4em; text-align:right;">'.Tools::displayPrice($unit_price, $currency, false).'</td> <td style="padding:0.6em 0.4em; text-align:center;">'.(int)$product['product_quantity'].'</td> <td style="padding:0.6em 0.4em; text-align:right;">' .Tools::displayPrice(($unit_price * $product['product_quantity']), $currency, false) .'</td> </tr>'; } foreach ($params['order']->getCartRules() as $discount) { $items_table .= '<tr style="background-color:#EBECEE;"> <td colspan="4" style="padding:0.6em 0.4em; text-align:right;">'.$this->l('Voucher code:').' '.$discount['name'].'</td> <td style="padding:0.6em 0.4em; text-align:right;">-'.Tools::displayPrice($discount['value'], $currency, false).'</td> </tr>'; } if ($delivery->id_state) $delivery_state = new State((int)$delivery->id_state); if ($invoice->id_state) $invoice_state = new State((int)$invoice->id_state); if (Product::getTaxCalculationMethod($customer->id) == PS_TAX_EXC) $total_products = $order->getTotalProductsWithoutTaxes(); else $total_products = $order->getTotalProductsWithTaxes(); $order_state = $params['orderStatus']; // Filling-in vars for email $template_vars = array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{delivery_block_txt}' => MailAlert::getFormatedAddress($delivery, "\n"), '{invoice_block_txt}' => MailAlert::getFormatedAddress($invoice, "\n"), '{delivery_block_html}' => MailAlert::getFormatedAddress( $delivery, '<br />', array( 'firstname' => '<span style="color:'.$configuration['PS_MAIL_COLOR'].'; font-weight:bold;">%s</span>', 'lastname' => '<span style="color:'.$configuration['PS_MAIL_COLOR'].'; font-weight:bold;">%s</span>' ) ), '{invoice_block_html}' => MailAlert::getFormatedAddress( $invoice, '<br />', array( 'firstname' => '<span style="color:'.$configuration['PS_MAIL_COLOR'].'; font-weight:bold;">%s</span>', 'lastname' => '<span style="color:'.$configuration['PS_MAIL_COLOR'].'; font-weight:bold;">%s</span>' ) ), '{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->phone : $delivery->phone_mobile, '{delivery_other}' => $delivery->other, '{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->phone : $invoice->phone_mobile, '{invoice_other}' => $invoice->other, '{order_name}' => $order->reference, '{order_status}' => $order_state->name, '{shop_name}' => $configuration['PS_SHOP_NAME'], '{date}' => $order_date_text, '{carrier}' => (($carrier->name == '0') ? $configuration['PS_SHOP_NAME'] : $carrier->name), '{payment}' => Tools::substr($order->payment, 0, 32), '{items}' => $items_table, '{total_paid}' => Tools::displayPrice($order->total_paid, $currency), '{total_products}' => Tools::displayPrice($total_products, $currency), '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency), '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency), '{total_tax_paid}' => Tools::displayPrice( ($order->total_products_wt - $order->total_products) + ($order->total_shipping_tax_incl - $order->total_shipping_tax_excl), $currency, false ), '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency), '{currency}' => $currency->sign, '{gift}' => (bool)$order->gift, '{gift_message}' => $order->gift_message, '{message}' => $message ); // Shop iso $iso = Language::getIsoById((int)Configuration::get('PS_LANG_DEFAULT')); // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); foreach ($merchant_mails as $merchant_mail) { // Default language $mail_id_lang = $id_lang; $mail_iso = $iso; // Use the merchant lang if he exists as an employee $results = Db::getInstance()->executeS(' SELECT `id_lang` FROM `'._DB_PREFIX_.'employee` WHERE `email` = \''.pSQL($merchant_mail).'\' '); if ($results) { $user_iso = Language::getIsoById((int)$results[0]['id_lang']); if ($user_iso) { $mail_id_lang = (int)$results[0]['id_lang']; $mail_iso = $user_iso; } } $dir_mail = false; if (file_exists(dirname(_PS_MODULE_DIR_).'/modules/mailalerts/mails/'.$mail_iso.'/new_order.txt') && file_exists(dirname(_PS_MODULE_DIR_).'/modules/mailalerts/mails/'.$mail_iso.'/new_order.html')) $dir_mail = dirname(_PS_MODULE_DIR_).'/modules/mailalerts/mails/'; if (file_exists(dirname(_PS_MODULE_DIR_).'/modules/mailalerts/'.$mail_iso.'/new_order.txt') && file_exists(dirname(_PS_MODULE_DIR_).'/modules/mailalerts/'.$mail_iso.'/new_order.html')) $dir_mail = _PS_MAIL_DIR_; if ($dir_mail) Mail::Send( $mail_id_lang, 'new_order', sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference), $template_vars, $merchant_mail, null, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], null, null, $dir_mail, null, $id_shop ); } } } on supprime le class_index.php du cache on édite le template du mail new_order <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /> <title>Message de {shop_name}</title> <style> @media only screen and (max-width: 300px){ body { width:218px !important; margin:auto !important; } .table {width:195px !important;margin:auto !important;} .logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto !important;display: block !important;} span.title{font-size:20px !important;line-height: 23px !important} span.subtitle{font-size: 14px !important;line-height: 18px !important;padding-top:10px !important;display:block !important;} td.box p{font-size: 12px !important;font-weight: bold !important;} .table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr { display: block !important; } .table-recap{width: 200px!important;} .table-recap tr td, .conf_body td{text-align:center !important;} .address{display: block !important;margin-bottom: 10px !important;} .space_address{display: none !important;} } @media only screen and (min-width: 301px) and (max-width: 500px) { body {width:308px!important;margin:auto!important;} .table {width:285px!important;margin:auto!important;} .logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;} .table-recap table, .table-recap thead, .table-recap tbody, .table-recap th, .table-recap td, .table-recap tr { display: block !important; } .table-recap{width: 295px !important;} .table-recap tr td, .conf_body td{text-align:center !important;} } @media only screen and (min-width: 501px) and (max-width: 768px) { body {width:478px!important;margin:auto!important;} .table {width:450px!important;margin:auto!important;} .logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;} } @media only screen and (max-device-width: 480px) { body {width:308px!important;margin:auto!important;} .table {width:285px;margin:auto!important;} .logo, .titleblock, .linkbelow, .box, .footer, .space_footer{width:auto!important;display: block!important;} .table-recap{width: 295px!important;} .table-recap tr td, .conf_body td{text-align:center!important;} .address{display: block !important;margin-bottom: 10px !important;} .space_address{display: none !important;} } </style> </head> <body style="-webkit-text-size-adjust:none;background-color:#fff;width:650px;font-family:Open-sans, sans-serif;color:#555454;font-size:13px;line-height:18px;margin:auto" > <table class="table table-mail" style="width: 100%; margin-top: 10px; -moz-box-shadow: 0 0 5px #afafaf; -webkit-box-shadow: 0 0 5px #afafaf; -o-box-shadow: 0 0 5px #afafaf; box-shadow: 0 0 5px #afafaf; filter: progid:DXImageTransform.Microsoft.Shadow(color=#afafaf,Direction=134,Strength=5);"> <tbody> <tr> <td class="space" style="width: 20px; padding: 7px 0;"> </td> <td align="center" style="padding: 7px 0;"> <table class="table" bgcolor="#ffffff" style="width: 100%;"> <tbody> <tr> <td align="center" class="logo" style="border-bottom: 4px solid #333333; padding: 7px 0;"><a title="{shop_name}" href="{shop_url}" style="color: #337ff1;"> <img src="{shop_logo}" alt="{shop_name}" /> </a></td> </tr> <tr> <td align="center" class="titleblock" style="padding: 7px 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <span class="title" style="font-weight: 500; font-size: 28px; text-transform: uppercase; line-height: 33px;">Bravo !</span> </span></td> </tr> <tr> <td class="linkbelow" style="padding: 7px 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <span>Une nouvelle commande a été passée sur votre boutique {shop_name} par ce client : {firstname} {lastname} ({email})</span> </span></td> </tr> <tr> <td class="space_footer" style="padding: 0!important;"> </td> </tr> <tr> <td class="box" colspan="3" style="border: 1px solid #D6D4D4; background-color: #f8f8f8; padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td width="10" style="padding: 7px 0;"> </td> <td style="padding: 7px 0;"> <p data-html-only="1" style="border-bottom: 1px solid #D6D4D4; margin: 3px 0 7px; text-transform: uppercase; font-weight: 500; font-size: 18px; padding-bottom: 10px;">Détails de la commande</p> <span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"><span style="color: #777;"> <span style="color: #333;"><strong>Commande :</strong></span> {order_name} passée le {date}<br /><br /> <span style="color: #333;"><strong>Paiement :</strong></span> {payment} </span> </span></td> <td width="10" style="padding: 7px 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td style="padding: 7px 0;"> <table class="table table-recap" bgcolor="#ffffff" style="width: 100%; border-collapse: collapse;"><!-- Title --> <thead> <tr><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Référence</th><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Référence Fournisseur</th><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Produit</th><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Prix unitaire</th><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Quantité</th><th style="border: 1px solid #D6D4D4; background-color: #fbfbfb; font-family: Arial; color: #333; font-size: 13px; padding: 10px;">Prix total</th></tr> </thead> <tbody> <tr> <td colspan="6" style="border: 1px solid #D6D4D4; color: #777; padding: 7px 0;"> {items}</td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>Produits</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" align="right" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> {total_products} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>Réductions</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> {total_discounts} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>Paquet cadeau</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> {total_wrapping} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>Livraison</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> {total_shipping} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>TVA totale</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> {total_tax_paid} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr class="conf_body"> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" style="color: #333; padding: 0;"><span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"> <strong>Total payé</strong> </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> <td bgcolor="#f8f8f8" colspan="4" style="border: 1px solid #D6D4D4; color: #333; padding: 7px 0;"> <table class="table" style="width: 100%; border-collapse: collapse;"> <tbody> <tr> <td width="10" style="color: #333; padding: 0;"> </td> <td align="right" class="total_amount" style="color: #333; padding: 0; font-size: 21px; font-weight: 500; font-family: Open-sans, sans-serif;"><span size="4" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: large;"> {total_paid} </span></td> <td width="10" style="color: #333; padding: 0;"> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td class="box" colspan="3" style="border: 1px solid #D6D4D4; background-color: #f8f8f8; padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td width="10" style="padding: 7px 0;"> </td> <td style="padding: 7px 0;"> <p data-html-only="1" style="border-bottom: 1px solid #D6D4D4; margin: 3px 0 7px; text-transform: uppercase; font-weight: 500; font-size: 18px; padding-bottom: 10px;">Transporteur :</p> <span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"><span style="color: #777;"> {carrier} </span> </span></td> <td width="10" style="padding: 7px 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td class="space_footer" style="padding: 0!important;"> </td> </tr> <tr> <td style="padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td class="box address" width="310" style="border: 1px solid #D6D4D4; background-color: #f8f8f8; padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td width="10" style="padding: 7px 0;"> </td> <td style="padding: 7px 0;"> <p data-html-only="1" style="border-bottom: 1px solid #D6D4D4; margin: 3px 0 7px; text-transform: uppercase; font-weight: 500; font-size: 18px; padding-bottom: 10px;">Adresse de livraison</p> <span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"><span style="color: #777;"> {delivery_block_html} </span> </span></td> <td width="10" style="padding: 7px 0;"> </td> </tr> </tbody> </table> </td> <td width="20" class="space_address" style="padding: 7px 0;"> </td> <td class="box address" width="310" style="border: 1px solid #D6D4D4; background-color: #f8f8f8; padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td width="10" style="padding: 7px 0;"> </td> <td style="padding: 7px 0;"> <p data-html-only="1" style="border-bottom: 1px solid #D6D4D4; margin: 3px 0 7px; text-transform: uppercase; font-weight: 500; font-size: 18px; padding-bottom: 10px;">Adresse de facturation</p> <span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"><span style="color: #777;"> {invoice_block_html} </span> </span></td> <td width="10" style="padding: 7px 0;"> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td class="space_footer" style="padding: 0!important;"> </td> </tr> <tr> <td class="box" colspan="3" style="border: 1px solid #D6D4D4; background-color: #f8f8f8; padding: 7px 0;"> <table class="table" style="width: 100%;"> <tbody> <tr> <td width="10" style="padding: 7px 0;"> </td> <td style="padding: 7px 0;"> <p data-html-only="1" style="border-bottom: 1px solid #D6D4D4; margin: 3px 0 7px; text-transform: uppercase; font-weight: 500; font-size: 18px; padding-bottom: 10px;">Message du client :</p> <span size="2" face="Open-sans, sans-serif" color="#555454" style="color: #555454; font-family: Open-sans, sans-serif; font-size: small;"><span style="color: #777;"> {message} </span> </span></td> <td width="10" style="padding: 7px 0;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td class="space_footer" style="padding: 0!important;"> </td> </tr> <tr> <td class="footer" style="border-top: 4px solid #333333; padding: 7px 0;"><span><a href="{shop_url}" style="color: #337ff1;">{shop_name}</a> réalisé avec <a href="http://www.prestashop.com/" style="color: #337ff1;">PrestaShop™</a></span></td> </tr> </tbody> </table> </td> <td class="space" style="width: 20px; padding: 7px 0;"> </td> </tr> </tbody> </table> </body> </html> Cordialement
  1. Load more activity
×

Important Information

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