Jump to content

joept69

Members
  • Posts

    246
  • Joined

  • Last visited

1 Follower

About joept69

  • Birthday 08/09/1969

Contact Methods

Profile Information

  • Location
    France
  • Interests
    Grand amateur de vins de Porto !
  • Activity
    Other

Recent Profile Visitors

4,648,792 profile views

joept69's Achievements

  1. Bonjour à tous et merci pour vos retours. Je vais étudier les options en question. Je n'ai jamais de problème avec PayPal (et leur fameux délai de réclamation de 60 jours)... Je n'ai pas vraiment envie, pour l'instant d'opter pour un système avec abonnement mensuel, car je vais avoir trop peu d'activité dans l'immédiat. Bonne journée et bon week-end.
  2. Bonjour à tous, Je recherche un module / solution de paiement en ligne CB mais SANS contrat VAD ! (pas d'abonnement mensuel à payer qui coûte une blinde même s'il y a peu ou pas de transactions sur la boutique, mais plutôt un système de % de commission par transaction). J'ai fonctionné un temps avec Hipay mais il y a trop de restriction sur les pays limitrophes (Belgique, Luxembourg, Suisse, etc) car je vends de l'alcool (les vins du Domaine + Portos de petits producteurs) et Hipay n'autorise pas les paiements en provenance d'autres pays pour l'achat d'alcool... Si vous avez d'autres solutions qui fonctionnent bien, je suis preneur de vos retours et expériences. Bonne journée à tous.
  3. Effectivement... ça fonctionne... Je n'avais pas bien ajouté "toutes les catégories". ça fonctionne ! Un grand merci ! Bonne soirée.
  4. Bonjour Ric et merci de votre aide... J'ai essayé de faire pareille mais même en mettant 48 produits dans le panier, ça ne fonctionne pas, je ne peux pas ajouter la réduction... Je vais y regarder d'un peu plus près...
  5. Bonjour à tous, Je suis sous PS 1.7.8.7. Je suis en train de peaufiner les paramétrages de la boutique avant réouverture. J'ai configurer, sans problème, les frais de port gratuit à partir de 24 articles commandés (en fonction du poids : 24 x 1.5 kg = 36 kg soit à partir de 36 kg = transport gratuit). Par contre, à partir de 48 produits, je souhaite ajouter 5% de réduction (puisque c'est ce que je fais déjà au Domaine)... et là j'ai du mal... Les bons de réductions ne sont pas adaptés à ce genre de réduction (ou j'ai raté un truc !). Dans l'attente d'un peu de lumière. Bon après-midi.
  6. Bonjour à tous et merci pour vos retours. Je vais étudier les différentes options proposées. Bonne journée. Joe
  7. Bonsoir à tous, Je recherche un prestataire qui puisse assurer la maintenance de ma boutique. Cela fait 12 ans que je me débrouille seul, mais mon métier principal m'absorbe de plus en plus de temps et je ne suis plus aussi disponible pour corriger les bugs récurrents sur Prestashop au fil du temps. Le dernier en date, que je ne parviens pas à résoudre : Ma boutique devrait réouvrir début juin... Dans l'attente, Bonne soirée. Joe
  8. Bon... ben ça dépasse mes compétences pour résoudre le problème... Du coup, je me suis dit que j'allais mettre à jour et espérer un miracle et là ... Voilà qui tranche définitivement sur l'option "mise à jour"... Je précise que le "Cache" est bien activé dans les "Paramètres Avancés / Performances"...
  9. Bonjour Léo et merci pour votre attention. Après vérification, /www/shop/vendor/swiftmailer/swiftmailer/lib : le fichier swift_required.php est bien présent et la date du fichier est celle du jour de l'installation de Prestashop 1.7.8.2 sur mon site. J'ai essayé de remplacer le fichier sur le serveur par celui de l'installation Prestashop... mais ça n'a rien changé. Je ne sais pas quoi faire d'autre... En attendant merci et bonne journée.
  10. Bonjour Prestachamps, Voici le code de NewsMail.php... En attendant, merci pour votre attention. <?php if(version_compare(_PS_VERSION_, '1.6.1.5', '<')) { include_once(dirname(__FILE__).'/../../../tools/swift/Swift.php'); include_once(dirname(__FILE__).'/../../../tools/swift/Swift/Connection/SMTP.php'); include_once(dirname(__FILE__).'/../../../tools/swift/Swift/Connection/NativeMail.php'); include_once(dirname(__FILE__).'/../../../tools/swift/Swift/Plugin/Decorator.php'); } else { include_once(_PS_SWIFT_DIR_.'swift_required.php'); } class NewsMail { const TYPE_HTML = 1; const TYPE_TEXT = 2; const TYPE_BOTH = 3; public static function Send($id_lang, $template, $subject, $template_vars, $to, $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null, $template_path, $die = false, $id_shop = null, $bcc = null, $configuration = null) { if(!is_array($to)) { if (!self::validateEmail($to)) return false; } if(version_compare(_PS_VERSION_, '1.6.1.5', '<')) { if($configuration == null) { $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'NEWSLETTER_FORCE_PHP', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_TYPE', 'PS_MAIL_DOMAIN' ), null, null, $id_shop); } if (!isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])) $configuration['PS_MAIL_SMTP_ENCRYPTION'] = 'off'; if (!isset($configuration['PS_MAIL_SMTP_PORT'])) $configuration['PS_MAIL_SMTP_PORT'] = 'default'; //Verify the Return-Path if (!isset($address)) $address = null; if (!is_array($template_vars)) $template_vars = array(); /* Construct multiple recipients list if needed */ $to_list = new Swift_RecipientList(); $to_plugin = $to; $to_list->addTo($to, $to_name); $to = $to_list; try { /* Connect with the appropriate configuration */ if (empty($configuration['NEWSLETTER_FORCE_PHP']) && $configuration['PS_MAIL_METHOD'] == 2) { if (empty($configuration['PS_MAIL_SERVER']) || empty($configuration['PS_MAIL_SMTP_PORT'])) { die('Error: invalid SMTP server or SMTP port'); } $connection = new Swift_Connection_SMTP($configuration['PS_MAIL_SERVER'], $configuration['PS_MAIL_SMTP_PORT'], ($configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'ssl') ? Swift_Connection_SMTP::ENC_SSL : (($configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'tls') ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_OFF)); $connection->setTimeout(4); if (!$connection) return false; if (!empty($configuration['PS_MAIL_USER'])) $connection->setUsername($configuration['PS_MAIL_USER']); if (!empty($configuration['PS_MAIL_PASSWD'])) $connection->setPassword($configuration['PS_MAIL_PASSWD']); } else $connection = new Swift_Connection_NativeMail(); if (!$connection) return false; $swift = new Swift($connection, $configuration['PS_MAIL_DOMAIN']); /* Get templates content */ $template_html = file_get_contents(dirname(__FILE__).'/../mails/newsletter.html'); $template_txt = strip_tags(html_entity_decode(file_get_contents(dirname(__FILE__).'/../mails/newsletter.txt'), null, 'utf-8')); $message = new Swift_Message($subject); $message->setCharset('utf-8'); /* Set Message-ID - getmypid() is blocked on some hosting */ $message->setId(NewsMail::generateId()); $message->headers->setEncoding('Q'); $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $template_vars)), 'decorator'); if ($configuration['PS_MAIL_TYPE'] == NewsMail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == NewsMail::TYPE_TEXT) $message->attach(new Swift_Message_Part($template_txt, 'text/plain', '8bit', 'utf-8')); if ($configuration['PS_MAIL_TYPE'] == NewsMail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == NewsMail::TYPE_HTML) $message->attach(new Swift_Message_Part($template_html, 'text/html', '8bit', 'utf-8')); /* Send mail */ $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); return $send; } catch (Swift_Exception $e) { echo $e; return false; } } else { $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'NEWSLETTER_FORCE_PHP', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_TYPE' ), null, null, $id_shop); if (!isset($configuration['PS_MAIL_SMTP_ENCRYPTION']) || Tools::strtolower($configuration['PS_MAIL_SMTP_ENCRYPTION']) === 'off') { $configuration['PS_MAIL_SMTP_ENCRYPTION'] = false; } if (!isset($configuration['PS_MAIL_SMTP_PORT'])) { $configuration['PS_MAIL_SMTP_PORT'] = 'default'; } /* Construct multiple recipients list if needed */ $message = Swift_Message::newInstance(); $to_plugin = $to; $message->addTo($to, self::mimeEncode($to_name)); /* Connect with the appropriate configuration */ if (empty($configuration['NEWSLETTER_FORCE_PHP']) && $configuration['PS_MAIL_METHOD'] == 2) { if (empty($configuration['PS_MAIL_SERVER']) || empty($configuration['PS_MAIL_SMTP_PORT'])) { Tools::dieOrLog(Tools::displayError('Error: invalid SMTP server or SMTP port'), $die); return false; } $connection = Swift_SmtpTransport::newInstance($configuration['PS_MAIL_SERVER'], $configuration['PS_MAIL_SMTP_PORT'], $configuration['PS_MAIL_SMTP_ENCRYPTION']) ->setUsername($configuration['PS_MAIL_USER']) ->setPassword($configuration['PS_MAIL_PASSWD']); } else $connection = Swift_MailTransport::newInstance(); if (!$connection) { return false; } $swift = Swift_Mailer::newInstance($connection); $logger = new Swift_Plugins_Loggers_EchoLogger(); $swift->registerPlugin(new Swift_Plugins_LoggerPlugin($logger)); /* Get templates content */ $template_html = file_get_contents(dirname(__FILE__).'/../mails/newsletter.html'); $template_txt = strip_tags(html_entity_decode(file_get_contents(dirname(__FILE__).'/../mails/newsletter.txt'), null, 'utf-8')); $message->setSubject($subject); $message->setCharset('utf-8'); /* Set Message-ID - getmypid() is blocked on some hosting */ $message->setId(NewsMail::generateId()); $swift->registerPlugin(new Swift_Plugins_DecoratorPlugin(array($to_plugin => $template_vars))); if ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_TEXT) { $message->addPart($template_txt, 'text/plain', 'utf-8'); } if ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_HTML) { $message->addPart($template_html, 'text/html', 'utf-8'); } /* Send mail */ $message->setFrom(array($from => $from_name)); if($swift->send($message)) return true; else d($logger->dump()); } } /* Rewrite of Swift_Message::generateId() without getmypid() */ protected static function generateId($idstring = null) { $midparams = array( 'utctime' => gmstrftime('%Y%m%d%H%M%S'), 'randint' => mt_rand(), 'customstr' => (preg_match('/^(?<!\\.)[a-z0-9\\.]+(?!\\.)\$/iD', $idstring) ? $idstring : 'swift') , 'hostname' => (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : php_uname('n')), ); $pattern = version_compare(_PS_VERSION_, '1.6.1.5', '<') ? '<%s.%d.%s@%s>' : '%s.%d.%s@%s'; return vsprintf($pattern, $midparams); } public static function validateEmail($mail) { $user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+'; $domain = '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+'; $ipv4 = '[0-9]{1,3}(\.[0-9]{1,3}){3}'; $ipv6 = '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}'; return preg_match("/^$user@($domain|(\[($ipv4|$ipv6)\]))$/", $mail); } /** * Check if a multibyte character set is used for the data * * @param string $data Data * @return bool Whether the string uses a multibyte character set */ public static function isMultibyte($data) { $length = Tools::strlen($data); for ($i = 0; $i < $length; $i++) { if (ord(($data[$i])) > 128) { return true; } } return false; } /** * MIME encode the string * * @param string $string The string to encode * @param string $charset The character set to use * @param string $newline The newline character(s) * @return mixed|string MIME encoded string */ public static function mimeEncode($string, $charset = 'UTF-8', $newline = "\r\n") { if (!self::isMultibyte($string) && Tools::strlen($string) < 75) { return $string; } $charset = Tools::strtoupper($charset); $start = '=?'.$charset.'?B?'; $end = '?='; $sep = $end.$newline.' '.$start; $length = 75 - Tools::strlen($start) - Tools::strlen($end); $length = $length - ($length % 4); if ($charset === 'UTF-8') { $parts = array(); $maxchars = floor(($length * 3) / 4); $stringLength = Tools::strlen($string); while ($stringLength > $maxchars) { $i = (int)$maxchars; $result = ord($string[$i]); while ($result >= 128 && $result <= 191) { $result = ord($string[--$i]); } $parts[] = base64_encode(Tools::substr($string, 0, $i)); $string = Tools::substr($string, $i); $stringLength = Tools::strlen($string); } $parts[] = base64_encode($string); $string = implode($sep, $parts); } else { $string = chunk_split(base64_encode($string), $length, $sep); $string = preg_replace('/'.preg_quote($sep).'$/', '', $string); } return $start.$string.$end; } }
  11. Bonjour, Le mode "debug"... j'avais oublié 😀! Effectivement, il y a bien un problème lorsque j'essaie de retourner sur la page "Clients"... mais ça fait beaucoup d'erreur à corriger
  12. Bonjour à tous, Depuis quelques jours, il m'est impossible d'afficher la page "Clients" > "Clients" dans le back office. La page "Adresses" quant à elle s'afficher et je peux accéder aux fiches clients individuellement mais la page "Clients" reste blanche, même après avoir vidé le cache... Je n'ai fait aucune mise à jour, ni installé aucun module dernièrement. Je suis à court d'idée ! Je suis en PS 1.7.8.2 et PHP 7.4.25 PS : la boutique est en "maintenance" parce que l'activité n'est censée débutée que vers la mi-juin... (en principe). Dans l'attente de votre aide, bonne soirée ! Joe
  13. Bonsoir Mediacom87 et merci pour votre retour. Effectivement, j'ai déjà un compte "ventes magasins" mais quand les clients affluent, 3 ou 4 successivement, c'est un peu fastidieux à gérer. D'où mon interrogation et surtout savoir si un outil de gestion de caisse ne me ferait pas gagner du temps et également de la fiabilité... Je vais me penser sur le sujet, il faut déjà que j'appréhende le fonction de ce genre d'outil que je n'ai jamais utilisé. Un module en particulier à me conseiller que tu aurais déjà installé et vu fonctionner ? D'avance, merci et bonne soirée. Joe
  14. Bonjour à tous, Je m'interroge sur la meilleur (moins fastidieuse peut-être mais surtout la plus fiable) de gérer la justesse des quantités par produits en stocks, sachant que j'ai 2 schémas de vente : - Vente en ligne avec la boutique Web - Vente en magasin (clients locaux ou de passage). Comment fonctionner pour que les quantités en stocks soient à jour, surtout pour les clients Web ? Si d'autres on se moyen de fonctionner, je suis prêt à prendre les idées de tous. En attendant, bonne année et surtout une excellente santé à tous ! Joe
  15. Bonjour à tous, Comme j'ai fini par trouver comment désactiver l'affichage de l'adresse mail de la boutique dans le formulaire de contact (et que personne ne m'a répondu), voici la solution : Module ps_contactinfo (de Prestashop) : Afficher l'adresse mail = NON Pour info ! Bonne soirée et bonne année ! Joe
×
×
  • Create New...