Jump to content

DrOSX

Members
  • Posts

    56
  • Joined

  • Last visited

Posts posted by DrOSX

  1. Bonjour, 

    Je suis tombé sur cet article pour déplacer le message d'alerte du bloc newsletter en bas de page (à côté du module) ce qui est plus normal. (lien : https://www.matthieu-jalbert.fr/deplacer-les-messages-dalerte-du-module-newsletter-de-prestashop/)

     

    N'ayant plus de pré-prod, je ne peux pas tester la modification.

    Quelqu'un pourrait me donner la ligne finale 44 une fois modifiée ? 

     

    Merci beaucoup !

  2. Bonjour, 

     

    Nous utilisons SENDINBLUE pour l'envoi de newsletters.

    Nous cherchons une solution (prestataires, plug-in ?) pour ajouter du contenu ciblé à nos newsletters et proposer aux clients des articles en rapport avec leurs achats précédents ou leurs paniers (rappel ou complémentaire ou similaire...)

     

    Nous travaillons avec NOSTO par exemple pour la recommandation de produit sur la boutique mais en newsletter, je n'ai aucun contact.

     

    L'idéal serait que la newsletter parte automatiquement mais cela risque d'être compliqué. Nous pouvons éventuellement ajouter qq lignes de texte ou un code hTML à la newsletter ou utiliser une solution dédiée...

     

    Merci de votre aide, 

  3. Merci pour ces indications.

     

    SuR Prestashop. 1.6.1, je n'ai pas de fichier discountcontroller.php mais uniquement Discount.php (dans /www/classes/Discount.php) avec le code ci-dessous. Est-ce bien le code à remplacer ?

    Merci d'avance, 

    <?php
    /*
    * 2007-2015 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 [email protected] 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 <[email protected]>
    *  @copyright  2007-2015 PrestaShop SA
    *  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
    *  International Registered Trademark & Property of PrestaShop SA
    */
    
    /**
     * @deprecated 1.5.0.1
     */
    class DiscountCore extends CartRule
    {
        const PERCENT = 1;
        const AMOUNT = 2;
        const FREE_SHIPPING = 3;
    
        public function __get($key)
        {
            Tools::displayAsDeprecated();
    
            if ($key == 'id_group') {
                return 0;
            }
            if ($key == 'id_discount_type') {
                if ($this->free_shipping) {
                    return Discount::FREE_SHIPPING;
                }
                if ($this->reduction_percent > 0) {
                    return Discount::PERCENT;
                }
                if ($this->reduction_amount > 0) {
                    return Discount::AMOUNT;
                }
            }
            if ($key == 'name') {
                return $this->code;
            }
            if ($key == 'value') {
                if ($this->reduction_percent > 0) {
                    return $this->reduction_percent;
                }
                if ($this->reduction_amount > 0) {
                    return $this->reduction_amount;
                }
            }
            if ($key == 'cumulable') {
                return $this->cart_rule_restriction;
            }
            if ($key == 'cumulable_reduction') {
                return false;
            }
            if ($key == 'minimal') {
                return $this->minimum_amount;
            }
            if ($key == 'include_tax') {
                return $this->reduction_tax;
            }
            if ($key == 'behavior_not_exhausted') {
                return $this->partial_use;
            }
            if ($key == 'cart_display') {
                return true;
            }
    
            return $this->{$key};
        }
    
        public function __set($key, $value)
        {
            Tools::displayAsDeprecated();
    
            if ($key == 'id_discount_type') {
                if ($value == Discount::FREE_SHIPPING) {
                    $this->free_shipping = true;
                    $this->reduction_percent = false;
                    $this->reduction_amount = false;
                }
                if ($value == Discount::PERCENT) {
                    $this->free_shipping = false;
                    $this->reduction_percent = true;
                    $this->reduction_amount = false;
                }
                if ($value == Discount::AMOUNT) {
                    $this->free_shipping = false;
                    $this->reduction_percent = false;
                    $this->reduction_amount = true;
                }
            }
    
            if ($key == 'code') {
                $this->name[Configuration::get('PS_LANG_DEFAULT')] = $value;
            }
    
            if ($key == 'value') {
                if ($this->reduction_percent) {
                    $this->reduction_percent = $value;
                }
                if ($this->reduction_amount) {
                    $this->reduction_amount = $value;
                }
            }
            if ($key == 'cumulable') {
                $this->cart_rule_restriction = 1;
            }
            if ($key == 'minimal') {
                $this->minimum_amount = $value;
            }
            if ($key == 'include_tax') {
                $this->reduction_tax = $value;
            }
            if ($key == 'behavior_not_exhausted') {
                $this->partial_use = $value;
            }
    
            $this->{$key} = $value;
        }
    
        public function __call($method, $args)
        {
            Tools::displayAsDeprecated();
            $obj = $this->parent;
            if (in_array($method, array('add', 'update', 'getIdByName', 'getCustomerDiscounts', 'getValue', 'discountExists', 'createOrderDiscount', 'getVouchersToCartDisplay', 'display'))) {
                $obj = $this;
            }
            return call_user_func_array(array($obj, $method), $args);
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public function add($autodate = true, $nullValues = false, $categories = null)
        {
            $r = parent::add($autodate, $nullValues);
            // Todo : manage categories
            return $r;
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public function update($autodate = true, $nullValues = false, $categories = null)
        {
            $r = parent::update($autodate, $nullValues);
            // Todo : manage categories
            return $r;
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public static function getIdByName($code)
        {
            return parent::getIdByCode($code);
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public static function getCustomerDiscounts($id_lang, $id_customer, $active = false, $includeGenericOnes = true, $hasStock = false, Cart $cart = null)
        {
            return parent::getCustomerCartRules($id_lang, $id_customer, $active, $includeGenericOnes, $hasStock, $cart);
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public static function getVouchersToCartDisplay($id_lang, $id_customer)
        {
            return CartRule::getCustomerCartRules($id_lang, $id_customer);
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public function getValue($nb_discounts = 0, $order_total_products = 0, $shipping_fees = 0, $id_cart = false, $useTax = true, Currency $currency = null, Shop $shop = null)
        {
            $context = Context::getContext();
            if ((int)$id_cart) {
                $context->cart = new Cart($id_cart);
            }
            if (Validate::isLoadedObject($currency)) {
                $context->currency = $currency;
            }
            if (Validate::isLoadedObject($shop)) {
                $context->shop = $shop;
            }
            return parent::getContextualValue($useTax, $context);
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public static function discountExists($discountName, $id_discount = 0)
        {
            return parent::cartRuleExists($discountName);
        }
    
        /**
         * @deprecated 1.5.0.1
         * @param Order $order
         * @return Discount
         */
        public static function createOrderDiscount($order, $productList, $qtyList, $name, $shipping_cost = false, $id_category = 0, $subcategory = 0)
        {
            $products = $order->getProducts(false, $productList, $qtyList);
    
            // Totals are stored in the order currency (or at least should be)
            $total = $order->getTotalProductsWithTaxes($products);
            $discounts = $order->getDiscounts(true);
            $total_tmp = $total;
            foreach ($discounts as $discount) {
                if ($discount['id_discount_type'] == Discount::PERCENT) {
                    $total -= $total_tmp * ($discount['value'] / 100);
                } elseif ($discount['id_discount_type'] == Discount::AMOUNT) {
                    $total -= ($discount['value'] * ($total_tmp / $order->total_products_wt));
                }
            }
            if ($shipping_cost) {
                $total += $order->total_shipping;
            }
    
            // create discount
            $voucher = new Discount();
            $voucher->id_discount_type = Discount::AMOUNT;
            foreach (Language::getIDs((bool)$order) as $id_lang) {
                $voucher->description[$id_lang] = strval($name).(int)($order->id);
            }
            $voucher->value = (float)($total);
            $voucher->name = 'V0C'.(int)($order->id_customer).'O'.(int)($order->id);
            $voucher->id_customer = (int)($order->id_customer);
            $voucher->id_currency = (int)($order->id_currency);
            $voucher->quantity = 1;
            $voucher->quantity_per_user = 1;
            $voucher->cumulable = 1;
            $voucher->cumulable_reduction = 1;
            $voucher->minimal = (float)($voucher->value);
            $voucher->active = 1;
            $voucher->cart_display = 1;
    
            $now = time();
            $voucher->date_from = date('Y-m-d H:i:s', $now);
            $voucher->date_to = date('Y-m-d H:i:s', $now + (3600 * 24 * 365.25)); /* 1 year */
            if (!$voucher->validateFieldsLang(false) || !$voucher->add()) {
                return false;
            }
            // set correct name
            $voucher->name = 'V'.(int)($voucher->id).'C'.(int)($order->id_customer).'O'.$order->id;
            if (!$voucher->update()) {
                return false;
            }
    
            return $voucher;
        }
    
        /**
         * @deprecated 1.5.0.1
         */
        public static function display($value, $type, $currency = null)
        {
            if ((float)$value && (int)$type) {
                if ($type == 1) {
                    return $value.chr(37);
                } // ASCII #37 --> % (percent)
                elseif ($type == 2) {
                    return Tools::displayPrice($value, $currency);
                }
            }
            return ''; // return a string because it's a display method
        }
    }

     

  4. 2 minutes ago, CreativeRegie said:

    Bonjour,

     

    En effet je déconseille également la génération de codes EAN / UPC qui sont assigné par des organismes, et ou chaque partie du code correspond à des entités complète,

     

    Là, je ne te suis pas.

     

    La génération de codes EAN par un organisme est la seule solution pour des produits non existants (manufacturés par exemple).

     

    Pour des produits déjà existants sur le marché, le fournisseur les possède et il suffit de lui demander. 

  5. On 17/03/2017 at 12:51 PM, Johann said:

    Puisque j'ai pas mal de trafic qui provient de ce post, j'en profite pour dire que bien évidemment, mon module génère maintenant des codes EAN valides (dernier chiffre de contrôle correct)

    bonjour,

     

    Cela ne règle pas le soucis de conformité. Les codes sont attribués par des organismes comme G1. J'ai du mal à comprendre l'intérêt du module .

    Merci d'être plus clair.

     

    Cdt

  6. Bonjour, 

     

    A mon sens, il faut partir du principe que tout élément allant dans le sens du professionnalisme ne peut être que positif.

    C'est un élément de réassurance indispensable.

    Tu constateras d'ailleurs que tout site sérieux met en avant les avis clients (d'une manière ou d'une autre) . Un site qui n'en possède pas ne veut pas dire qu'il n'est pas sérieux mais s'enlève une chance.

    Je plussoie aussi les arguments de chDUP à 100%

    Au plaisir de discuter de AVIS VERIFIES (2 000 avis pour moi) en MP si tu le souhaites.

     

    @ +

     

  7. LENGOW + ESCROC EN COL BLANC  --> Je blague mais on est pas loin de la vérité..

     

     

    Actuellement en cours de changement de mon gestionnaire de flux, j'en profite pour vous donner mon expérience après 2 mois chez Shopping Flux puis 2 ans chez Lengow. Je vais essayer d'être le plus objectif possible sur mon expérience. Je n'ai pas l'habitude d'émettre des posts négatifs sur les forums mais je pense que la situation est assez catastrophique pour alerter d'autres utilisateurs potentiels. J'ai aussi un blog en prévision, qui sera spécialement conçu pour LENGOW puisque je me retrouve au pied du mur et que je supporte pas...

     

    INFO : E-commerce - Environ 1 000 commandes/mois via le gestionnaire de flux. 3 places de marché, 1 comparateur de flux et Google Shopping.

     

    En toute franchise, j'ai testé (trop ) rapidement  shopping flux qui semblait plutôt fonctionnel mais sur le coup les tutoriels de Lengow m'ont convaincu pour migrer après 2 mois. Je ne peux donc pas m'exprimer concernant Shopping Flux même si mon ressenti était assez favorable...

     

     

    LENGOW est une solution fonctionnelle, puissante et complète mais chère. Je vous laisse consulter les tarifs en direct des solutions à ce jour pour vous en convaincre.

     

     

    Le SAV (ouvertures de ticket) est fonctionnel mais lent (comptez jusqu'à 48H pour des réponses et 24H assez souvent), nous avons eu des ennuis techniques avec des incidences importantes qui ont mis 1 semaine à se résoudre à cause des allers/retours . J'ai bien obtenu un téléphone mais il fallait montrer patte blanche pour passer le filtrage des secrétaires. Donc, en cas de gros bug, sachez que personne n'est derrière vous et pas le week-end par exemple. (J'ai par exemple un hébergeur 24H24 et 7/7 avec un technicien présent, ça n'a pas de prix).

     

     

    Les relations avec les conseillers sont catastrophiques. oui LENGOW a levé 10 millions d'euro mais la contre-partie c'est qu'à mon sens, ils ont été dépassé par cette levée...Lisez bien mon histoire :

     

    Nous avons eu différents incidents avec un conseiller en 2016 (qui d'ailleurs ne fait plus partie de Lengow) et la direction n'a jamais pris position. Aucune réponse à notre courrier en A/R, de personne. La raison principale est liée à un changement d'offre (au delà d'un nombre de flux ou de produits) de 100 à 350€/mois environ.

     

    Un jour, le conseiller me confirme au téléphone que LENGOW allait analyser mon compte et que j'allais changer d'offre  de 118€ à 420€ si je ne supprime pas un flux ou des produits avant minuit (heure de l'indexation). Contente d'être prévenu, c'est chose fait à 19H, juste après son appel je modifie mes flux !! J'en profite même pour poser des questions par ticket au technicien à ce sujet. Le mois suivant, LENGOW m'a quand même changé mon offre.

     

    Je rappelle le conseiller 2 jours après qui avait "oublié nos échanges" et ferme la discussion bien qu'elle constate que mon nombre de produit est compatible avec la première offre, ce qui montre que j'ai bien effectué la modification.  Je fais un courrier en A/R. Aucune réponse, je relance en courrier, email téléphone et on me transfère un responsable plus souple mais peu conciliant quand même qui me répond : "On ne peut plus repasser en offre de lancement même si le nombre de flux est compatible. Vous en êtes sorti une fois c'est trop tard". Pourtant, j'avais bien changé mon nombre de produit à temps !! Il semblerait que LENGOW n'indexe pas à minuit....On m'a donc donné une fausse info. J'ai beau lui faire comprendre que je me suis bien assuré de tout comprendre par téléphone et que la conseillère m'a dit minuit pour éviter de passer de 118€ à 420€ mais rien n'y fait. Je lui montré mes échanges avec les techniciens du soir même qui prouve que j'étais bien dans cette démarche mais rien n'y fait non plus. Dur de la feuille ce LENGOW.. :-)

     

    Après bataille, j'obtiens un avoir d'un nouveau conseiller (l'ancien a changé) et 6 mois après, je constate que l'avoir n'est pas mis en place. :angry: Je contact LENGOW mais on me demande les preuves par email car le conseiller a encore changé depuis. Pas de chance j'ai perdu la trace de ces emails mais pas différents échanges écrits qui suffisaient à montrer ma bonne foi...

     

    Puis, incident technique, mes statuts de commande (mis en "expédiés) ne remontent pas chez Amazon. 200 commandes un lundi matin qui restent en préparation. Amazon ferme mon compte 15 jours (perte de CA). Les techniciens me confirment qu'ils sont responsables par écrit (que je possède encore). Hasard des choses, un nouveau conseiller m'appelle et me présente une nouvelle formule à 500€ au lieu de 400€ (environ). Je lui dis que je souhaiterais tester 2 mois gratuitement (ce qui ne compense même pas le CA perdu ni les avoirs). Il me demande de faire un email. Je fais, aucune réponse. J'appelle 2 fois et en refais 3 et là : Réponse négative ben emballée avec un joli blabla.

     

    J'ai tout essayé, avec des preuves pourtant indiscutables, j'ai perdu du temps de cerveau et de l'argent mais LENGOW fait l'autruche et n'a même pas la bienséance de répondre (rapidement serait trop) et de prendre soin (au moins pour la forme) du client. Quand on sait comment un e-commerçant doit se plier en 4 pour conserver sa clientèle et que LENGOW avait juste à m'offrir 2 mois, je rigole bien. Pour ma part, quand COLISSIMO se plante, c'est nous qui assumons et réparons, parce que le commerce c'est ça.

     

    Je reste à votre écoute en MP ou autre pour discuter plus longuement de mon expérience ratée chez LENGOW.

     

    Pour ceux qui penserait que je ne suis pas objectif, je reste aussi à votre disposition pour vous transmettre les preuves mentionnées plus haut. Et croyez-moi, je vous ai raccourci l'histoire.

     

    Pour avoir discuté avec d'autres collègues, LENGOW est intransigeant , et je ne suis pas le seul à avoir ce ressenti....

  8. Bonjour,

    les abandons de panier sans création de compte sont fréquents sur Prestashop et principalement dûs à des robots. Je vous conseille de vous concentrer sur les abandons de panier de clients ayant créé des comptes clients.

     

     

    Bonjour Sylvain,

     

    C'est entièrement vrai :-) Mais je cherche la possibilité de faire ce tri justement . La partie "comportement" de Analytics le permet-elle ?

  9. Bonjour,

     

    Mon site de E-commerce est géré par des developpeurs.

     

     

    Mon site www.monsite.com renvoie vers www.monsite.com/fr (en prévision d'un futur /en)

     

    Mon SiteMap est le suivant :  www.monsite.com/1_index_sitemap.xml  

     

    Cette URL correspond au fichier sitemap maître et fait référence aux fichiers suivants :

    • 1_fr_0_sitemap.xml
    • 1_en_0_sitemap.xml

     

    Il semblerait donc que mes URL indexées par Google soient doublées du coup (FR et EN). Pour rien, car la version EN n'est pas prévue.

     

     

    Peut-on pas avoir un site map   dans www.monsite.com/fr plutôt que www.monsite.com  ou faut-il laisser le sitemap dans www.monsite.com mais supprimer la version /EN ?

     

    Merci d'avance :-)

  10. Hormis ce que les pros du SEO viennent d'expliquer, le souci technique n'est pas du tout normal, il doit y avoir un souci de config quelque part.

    Pour avoir de l'aide sur ce coup là, envoyez par messagerie privée les accès ftp et backoffice SVP, je regarderai ce qui cloche.

     

    Cordialement.

    Bonsoir,

     

    Merci de l'aide, je transmettrai aux développeurs directement qui ont l'accès...

     

     

    Pas mieux, hormis que mettre "mercerie" dans toutes les urls (hors NDD bien sûr) génèrerait une certaine forme de duplicate content dans les urls et pourrait être pris comme de la sur-optimisation par Google !

     

    C'est un peu comme ceux qui veulent enlever l'ID des catégories (avec ou sans module), aucun intérêt hormis de saboter le référencement puisque changement d'url...

     

    merci. Ce n'est pas pour mettre dans toutes les URL. C'était un test avant d'optimiser certaines URL de catégories vraiment non explicites....

     

    En ne le faisant que pour une à chaque fois pour éviter le duplicate bien entendu .....

  11. Bonjour,

     

    Petite question :

     

    Exemple : 200 produits d'une sous catégorie par exemple.

     

    - Description courte quasi similaire (exemple : 200 tissus identiques en terme de matière, épaisseur, prix)  

    - Description longue différente car le motif lui diffère.

     

    Les fiches produits seront Assimiléss Duplicate à votre avis ?

  12. Bonjour,

     

    Je viens de tester un changement d'URL manuel d'une sous-catégorie avec ajout du mot-clé "mercerie" (avant de le faire sur tout le site...)

    Ancienne URL : http://www.monsite.com/fr/418-rubans-couture-cotons
    Nouvelle URL : http://www.monsite.com/fr/418-mercerie-rubans-couture-cotons

    Quand on tape l'ancienne URL sur google, on est redirigé vers la catégorie mais avec l'URL suivant : 

    http://www.monsite.com/fr/418-mercerie-rubans-couture-cotons/418-cotons-couture-rubans

    Est-ce normal ? Est-ce juste pour signaler à l'internaute une redirection ?

     

    ps : Dans le BO Prestashop > pref / SEO

    Rediriger vers l'URL canonique = 301

     

     

     

    Merci !

  13. Bonjour,

     

    Une question en 2 points pur SEO. Balise titre vs nom du produit

     

    1/ Est-il nécessaire de remplir la balise Titre si le nom de notre produit est assez complet et comporte les mots clés nécessaires ? Est-ce pénalisant de ne pas la remplir car en regardant le code source on se rend compte que le titre est quand même remplit...

     

    2/ A l'inverse, dans le cas ou le nom d'un produit est incomplet, si l'on modifie uniquement la balise titre , est-ce suffisant en SEO ou la modification du nom de produit est quand même (aussi) nécessaire. Qui prime ?

    (Je ne parle pas de l'URL).

     

    Merci pour votre retour. :-)

  14. Merci, je viens de poster sur la forge mais à mon avis, ...

     

    J'espère que cela sera pris en compte, mais cela demande une grosse mise à jour.

     

    Pour information, le CA est faussé, évidemment.

    Dans le cas d'un remboursement partiel, on ne peut même pas choisir le mode de paiement utilisé pour le remboursement.

    La comptable s'arrache les cheveux.

     

    Je suis d'accord.

  15. Merci pour ta réponse, je m'en doutais un peu.

    Mais je ne vois pas  comment les autres ecommerçants sous presta peuvent justiifer cela comptablement parlant...

     

    D'autant que pour une ecarte bleu, il est me semble t-il impossible de rembourser via paybox donc un remboursement avec une autre méthode est obligatoire.

     

    Comment faites vous ?

    Bonjour,

     

    Nous avons le même soucis.

    Je ne vois pas l'utilité de ce remboursement partiel si ce n'est d'avoir une trace quand on revient sur la commande. (Il est mentionné)..

     

    Pour le reste, quand je rembourse via CB, il y a une trace forcément sur le compte bancaire pour la compta.

  16. Bonjour à tous,

     

    Je souhaite passer à la gestion des stocks avancée. J'ai tout configuré pour.

    J'ai 2 000 articles en boutique.

     

    Comment récupérer le stock actuel  pour le passer en avancé ?

     

    Car quand je décoche dans la fiche produit " Définir mes quantités manuellement" et que je coche "Les quantités disponibles pour le produit sont basés sur le stock de votre entrepôt" alors la quantité du produit passe à 0

     

     

     

    N'est-il pas possible de récupérer la quantité du stock automatiquement ?

     

    Merci à vous.

    post-336202-0-42515600-1433235580_thumb.png

×
×
  • Create New...

Important Information

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