Jump to content

Sortie de la version 1.6.1.28 - By @Eolia


Eolia

Recommended Posts

16 hours ago, Fab20620 said:

Bonjour bobby4722, je profite de votre réponse pour savoir si vous pouvez tester sur votre boutique test, l'ajout d'un produit avec 2 tailles distinctes par exemple + une personnalisation, et voir si vous retrouvez la personnalisation dans la commande en backoffice.

Merci d'avance.

Bonjour, Un exemple pour m'aider à vous aider ? car mes produits n'utilisent pas de personnalisation et les tailles sont définis d'avance :)

Link to comment
Share on other sites

2 minutes ago, bobby4722 said:

Bonjour, Un exemple pour m'aider à vous aider ? car mes produits n'utilisent pas de personnalisation et les tailles sont définis d'avance :)

Merci bobby4722, sur un produit qui existe avec un choix de taille ou de couleurs, dans l'onglet "personnalisation" il suffit d'ajouter un texte permettant de personnaliser le produit puis de commander ce produit afin de vérifier si les infos de personnalisation sont visibles dans la commande en backoffice. Je suis en train d'installer un prestashop tout neuf pour aussi effectuer ce test. Sur la boutique où je rencontre le problème, ça ne marche pas même si je suis en mode debug et theme par défaut (surcharges désactivées aussi pour être sûr).

Link to comment
Share on other sites

13 minutes ago, Fab20620 said:

Merci bobby4722, sur un produit qui existe avec un choix de taille ou de couleurs, dans l'onglet "personnalisation" il suffit d'ajouter un texte permettant de personnaliser le produit puis de commander ce produit afin de vérifier si les infos de personnalisation sont visibles dans la commande en backoffice. Je suis en train d'installer un prestashop tout neuf pour aussi effectuer ce test. Sur la boutique où je rencontre le problème, ça ne marche pas même si je suis en mode debug et theme par défaut (surcharges désactivées aussi pour être sûr).

Bon alors...Merci au moins cela me permet de tester d'autre façon de mettre en vente :)

J'ai pas vraiment compris le fait de renseigner ces 2 lignes pour la personnalisation mais je l'ai fait en pensant que c'était 2 personnalisation distinctes mains non. J'ai tout rentrer en FO, ok.

Non ensuite soucis !

- J'ai utilisé le paiement par chèque -> Le mode de paiement n'apparait pas dans le PDF de la proforma.

- Pas d'indication sur la personalisation ni sur son tarif en BO + sur la proforma.

Link to comment
Share on other sites

6 minutes ago, bobby4722 said:

Bon alors...Merci au moins cela me permet de tester d'autre façon de mettre en vente :)

J'ai pas vraiment compris le fait de renseigner ces 2 lignes pour la personnalisation mais je l'ai fait en pensant que c'était 2 personnalisation distinctes mains non. J'ai tout rentrer en FO, ok.

Non ensuite soucis !

- J'ai utilisé le paiement par chèque -> Le mode de paiement n'apparait pas dans le PDF de la proforma.

- Pas d'indication sur la personalisation ni sur son tarif en BO + sur la proforma.

Donc cela confirme que le souci ne vient pas de mon installation mais d'un souci quand il y a une personnalisation sur des produits avec déclinaisons, merci beaucoup d'avoir pris le temps de réaliser ce test.

  • Like 1
Link to comment
Share on other sites

6 minutes ago, Fab20620 said:

Donc cela confirme que le souci ne vient pas de mon installation mais d'un souci quand il y a une personnalisation sur des produits avec déclinaisons, merci beaucoup d'avoir pris le temps de réaliser ce test.

Avec grand plaisir, on est ici pour s'entre aider c'est ce qui fait la force (de départ) de Prestashop ;)

 

Link to comment
Share on other sites

Il y a 6 heures, La vie en Rose a dit :

Et en tant que superadmin (comme avec n'importe quel profil), je ne peux plus créer de nouvelle commande dans le module WK Fournisseur.

Problème de commande fournisseur résolu, c'était propre au module et le développeur a fait des modifs dans le dossier controllers/admin du module lui-même.

Link to comment
Share on other sites

Bonsoir,

Je rencontre une petite incohérence sur les tarifs dégressifs :

- j'ai toute une gamme de produits avec remise sur quantité. En principe, les remises s'appliquent par quantité sur un produit et par produit. Hors, les remises s'appliquent simplement sur les quantités. Donc pour un panier avec en quantité 1 d'un produit et en quantité 1 d'un second produit (les deux produits possédants des remises sur quantité), les 2 produits en question auront leurs remises comme s'il y en avait 2.

Pas très clair, faut un exemple :

Dans le panier, il y a :
- une robe à 35€
- un jean à 20€
La robe a une remise sur quantité à partir de 2 unités de 10€
Le jean a une remise sur quantité à partir de 2 unités de 2€
Résultat :

- la robe passe à 35-10 soit 25€, alors qu'il n'y qu'une robe dans le panier
- le jean passe à 20-2 soit 18€, alors qu'il n'y qu'un jean dans le panier

Quelqu'un pourrait-il confirmer ce fonctionnement ?

J'ai aussi un autre petit problème, en voulant dupliquer un produit en BO depuis la liste produit, j'ai effectué une recherche sur un nom pour sortir le produit que je souhaitais dupliquer.

Page blanche avec erreur 500 au bout de quelques minutes de moulinette, et du coup je n'ai plus accès à la liste de produit (la recherche étant encore dans le filtre). Comment faire pour réinitialiser les champs de recherche pour avoir à nouveau accès à la liste des produits ? 

Cordialement,
Fred
 

Link to comment
Share on other sites

14 hours ago, La vie en Rose said:

Bonsoir,

Je rencontre une petite incohérence sur les tarifs dégressifs :

- j'ai toute une gamme de produits avec remise sur quantité. En principe, les remises s'appliquent par quantité sur un produit et par produit. Hors, les remises s'appliquent simplement sur les quantités. Donc pour un panier avec en quantité 1 d'un produit et en quantité 1 d'un second produit (les deux produits possédants des remises sur quantité), les 2 produits en question auront leurs remises comme s'il y en avait 2.

Pas très clair, faut un exemple :

Dans le panier, il y a :
- une robe à 35€
- un jean à 20€
La robe a une remise sur quantité à partir de 2 unités de 10€
Le jean a une remise sur quantité à partir de 2 unités de 2€
Résultat :

- la robe passe à 35-10 soit 25€, alors qu'il n'y qu'une robe dans le panier
- le jean passe à 20-2 soit 18€, alors qu'il n'y qu'un jean dans le panier

Quelqu'un pourrait-il confirmer ce fonctionnement ?

J'ai aussi un autre petit problème, en voulant dupliquer un produit en BO depuis la liste produit, j'ai effectué une recherche sur un nom pour sortir le produit que je souhaitais dupliquer.

Page blanche avec erreur 500 au bout de quelques minutes de moulinette, et du coup je n'ai plus accès à la liste de produit (la recherche étant encore dans le filtre). Comment faire pour réinitialiser les champs de recherche pour avoir à nouveau accès à la liste des produits ? 

Cordialement,
Fred
 

Bonjour,

Pour répondre à la seconde partie car les fonctionnalités de la première je ne les utilisent pas:

J'ai dupliqué un produit, fait des recherches par nom, référence et catégorie et cela fonctionne sans soucis.

Bonne journée.

Link to comment
Share on other sites

Le 07/04/2023 à 9:41 AM, bobby4722 a dit :

Bonjour,

Pour répondre à la seconde partie car les fonctionnalités de la première je ne les utilisent pas:

J'ai dupliqué un produit, fait des recherches par nom, référence et catégorie et cela fonctionne sans soucis.

Bonne journée.

Merci d'avoir testé chez vous. J'avais dupliqué d'autres produits un peu plus tôt dans la journée avec la même méthode sans soucis, peut-être un terme trop générique pour le coup...

En tout cas, si ça arrive à quelqu'un, pour avoir à nouveau accès à la liste, il suffit de supprimer les cookies du navigateur.

Cordialement,
Fred

Link to comment
Share on other sites

Bonjour a tous

J'ai un probleme avec ma 1.6.2.6

Installée sur le serveur OVH m'indique un surcroit d'acces BDD. J'ai du repasser en 1.6.1.25

Je teste ma config en local avec le schema suivant :

repertoire Backup  pointe vers BDD1 en version 1.6.1.25

repertoire Backup2 pointe vers BDD en version 1.6.2.6

Quand je demande une sauvegarde dans ma 1.6.2.6 il m'en genere deux ! (une venant de BDD et une venant de BDD1)

La 1.6.2.6 accede aux deux bases de données ! alors que mes fichiers de config sont correctement paramétrés.

quand je demande une sauvegarde dans ma 1.6.1.25 il m'en genere une seule (ce qui est normal)

J'avais le meme schema d'install sur le serveur OVH un en prod et un en secours.

Edited by docmusicstation (see edit history)
Link to comment
Share on other sites

Très bizarre ça, je ne suis pas expert, mais à tout hasard (ça n'a pas forcément à voir), vous avez changé sur le backup 2 l'url en SEO pour bien les différencier ? Et les deux BDD ont-elles des noms distincts ?

Après, vaut mieux faire une sauvegarde de la BDD par phpMyAdmin.

Cordialement,
Fred

 

Link to comment
Share on other sites

2 hours ago, La vie en Rose said:

Très bizarre ça, je ne suis pas expert, mais à tout hasard (ça n'a pas forcément à voir), vous avez changé sur le backup 2 l'url en SEO pour bien les différencier ? Et les deux BDD ont-elles des noms distincts ?

Après, vaut mieux faire une sauvegarde de la BDD par phpMyAdmin.

Cordialement,
Fred

 

Bsr

oui url est bien differente

et les deux BDD ont un nom different a un chiffre pret

Denis

Link to comment
Share on other sites

La version 1.6.2.7 est sortie ;)

####################################
#   Changelog v1.6.2.7 - (2023-04-10)
####################################

- Correctif des micro-données pour le fil d'ariane depuis Tools.php(Le breadcrumb.tpl de votre thème sera à remplacer par celui par défaut)
- Correctif dans OrderHistory.php pour la génération du order_conf_product_list.tpl (Produits customs)
- Correctif sur certains sujet d'emails non traduisibles
- Correctif d'affichage du product-list dans les commandes en BO et dans le mail de confirmation de commande
- Correctif dans Wharehouse.php
- Ajout du paramètre non-configurable pour les meta des controleurs de type module ($locked_controllers)
- Reprise du thème par défaut pour mise à jour dynamique des prix des produits avec custom
- Correctif sur le mail de confirmation de commande (contenu du product-list)
- Correctif sur le form.tpl de création de commande en BO (Compatibilité JQuery 3)
- Mise en conformité PHP8 du module StripeOfficial
- Correctif sur Tab.php (en cas de droits non superadmin)
- Amélioration du filtrage sur les caractéristiques multiples déjà sélectionnées (BO)
- Correctif sur l'affichage des customs dans le cas de produits avec déclinaisons
- Prise en compte des prix dégressifs pour les customs en FO (pour le thème par défaut)
- Correctif sur la pagination des pages des catégories CMS (BO)
- Ajout de la possibilité de valider les points manuellement dans le module fidélité (Loyalty)

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

Un très grand merci pour cette nouvelle version Eolia, qui règle une grosse partie de mes problèmes et me permet d'avancer !

😀🥳

Produits personnalisés > Je n'ai plus les "warning" en FO dans le panier, ni en BO détail d'une commande > Tout est OK maintenant. Merci !

(l'erreur était : Undefined index: customizationQuantityTotal" (idem pour customizationQuantityRefunded et customizationQuantityReturned))

 

Je rencontre en BO les problèmes suivants :

1) Affichage du détail des commandes passées avant la 1.6.2.7 : les produits personnalisés remontent bien dans le détail des commandes, mais pas la personnalisation associée (ils remontent comme des produits classiques qui n'auraient pas de personnalisation)

Pour une commande que je passe après la mise à jour en 1.6.2.7, tout est ok.

2) Toujours le même problème sur l'édition d'une fiche produit, onglet "Personnalisation", le dernier champ "text" n'apparaît pas à l'écran et je ne peux donc pas l'éditer.

Pour memo j'essaie de déboguer et je cherche où est généré {$display_text_labels} que l'on a ligne 119 de customization.tpl dans [admin]/themes/default/template/controllers/products, parce qu'il oublie une ligne pourtant présente en BDD.

Je ne sais pas si le fait que je sois toujours en PHP 7 peut être un bout d'explication ?

Edited by Sda33 (see edit history)
Link to comment
Share on other sites

Il y a 2 heures, Sda33 a dit :

1) Affichage du détail des commandes passées avant la 1.6.2.7 : les produits personnalisés remontent bien dans le détail des commandes, mais pas la personnalisation associée (ils remontent comme des produits classiques qui n'auraient pas de personnalisation)

Pour les commandes passées avant, si l'id_customization n'a pas été rempli il est impossible que le CMS les invente. Pas d'autre solution que de les remplir dans la bdd à la mano

 

Il y a 2 heures, Sda33 a dit :

2) Toujours le même problème sur l'édition d'une fiche produit, onglet "Personnalisation", le dernier champ "text" n'apparaît pas à l'écran et je ne peux donc pas l'éditer.

Pour memo j'essaie de déboguer et je cherche où est généré {$display_text_labels} que l'on a ligne 119 de customization.tpl dans [admin]/themes/default/template/controllers/products, parce qu'il oublie une ligne pourtant présente en BDD.

Votre problème est quand même très particulier et je n'ai pas de piste simple. Je soupçonne un js externe (module chargé dans le backofficeheader ?)

Pour info cette partie est générée depuis l'AdminProductController.php, ligne 4293

'display_text_labels' => $this->_displayLabelFields($obj, $labels, $this->_languages, Configuration::get('PS_LANG_DEFAULT'), Product::CUSTOMIZE_TEXTFIELD),
    protected function _displayLabelFields(&$obj, &$labels, $languages, $default_language, $type)
    {
        $content = '';
        $type = (int)($type);
        $labelGenerated = array(Product::CUSTOMIZE_FILE => (isset($labels[Product::CUSTOMIZE_FILE]) ? count($labels[Product::CUSTOMIZE_FILE]) : 0), Product::CUSTOMIZE_TEXTFIELD => (isset($labels[Product::CUSTOMIZE_TEXTFIELD]) ? count($labels[Product::CUSTOMIZE_TEXTFIELD]) : 0));

        $fieldIds = $this->_getCustomizationFieldIds($labels, $labelGenerated, $obj);
        if (isset($labels[$type])) {
            foreach ($labels[$type] as $id_customization_field => $label) {
                $content .= $this->_displayLabelField($label, $languages, $default_language, $type, $fieldIds, (int)$id_customization_field);
            }
        }
        return $content;
    }
    protected function _getCustomizationFieldIds($labels, $alreadyGenerated, $obj)
    {
        $customizableFieldIds = array();
        if (isset($labels[Product::CUSTOMIZE_FILE])) {
            foreach ($labels[Product::CUSTOMIZE_FILE] as $id_customization_field => $label) {
                $customizableFieldIds[] = 'label_'.Product::CUSTOMIZE_FILE.'_'.(int)($id_customization_field);
            }
        }
        if (isset($labels[Product::CUSTOMIZE_TEXTFIELD])) {
            foreach ($labels[Product::CUSTOMIZE_TEXTFIELD] as $id_customization_field => $label) {
                $customizableFieldIds[] = 'label_'.Product::CUSTOMIZE_TEXTFIELD.'_'.(int)($id_customization_field);
            }
        }
        $j = 0;
        for ($i = $alreadyGenerated[Product::CUSTOMIZE_FILE]; $i < (int)($this->getFieldValue($obj, 'uploadable_files')); $i++) {
            $customizableFieldIds[] = 'newLabel_'.Product::CUSTOMIZE_FILE.'_'.$j++;
        }
        $j = 0;
        for ($i = $alreadyGenerated[Product::CUSTOMIZE_TEXTFIELD]; $i < (int)($this->getFieldValue($obj, 'text_fields')); $i++) {
            $customizableFieldIds[] = 'newLabel_'.Product::CUSTOMIZE_TEXTFIELD.'_'.$j++;
        }
        return implode('¤', $customizableFieldIds);
    }

Depuis Product.php:

    public function getCustomizationFields($id_lang = false, $id_shop = null)
    {
        if (!Customization::isFeatureActive()) {
            return false;
        }

        if (Shop::isFeatureActive() && !$id_shop) {
            $id_shop = (int)Context::getContext()->shop->id;
        }

        if (!$result = Db::getInstance()->executeS('
			SELECT cf.`id_customization_field`, cf.`type`, cf.`required`, cf.`price`, cfl.`name`, cfl.`id_lang`
			FROM `'._DB_PREFIX_.'customization_field` cf
			NATURAL JOIN `'._DB_PREFIX_.'customization_field_lang` cfl
			WHERE cf.`id_product` = '.(int)$this->id.($id_lang ? ' AND cfl.`id_lang` = '.(int)$id_lang : '').
                ($id_shop ? ' AND cfl.`id_shop` = '.$id_shop : '').'
			ORDER BY cf.`id_customization_field`')) {
            return false;
        }
        // Add taxes for display
        if (is_object(Context::getContext()->cart) && Context::getContext()->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')} != null) {
            $id_address = Context::getContext()->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')};
            $address = Address::initialize((int)$id_address, true);
        }
        else {
            $address = Address::initialize();
        }
        $tax_calculator = TaxManagerFactory::getManager($address, $this->id_tax_rules_group)->getTaxCalculator();
        foreach ($result as &$row) {
            $row['price_wt'] = $tax_calculator->addTaxes($row['price']);             
        }
      
        if ($id_lang) {
            return $result;
        }

        $customization_fields = array();
        foreach ($result as $row) {            
            $customization_fields[(int)$row['type']][(int)$row['id_customization_field']][(int)$row['id_lang']] = $row;
        }

        return $customization_fields;
    }

 

Edited by Eolia (see edit history)
Link to comment
Share on other sites

19 minutes ago, Eolia said:

Pour les commandes passées avant, si l'id_customization n'a pas été rempli il est impossible que le CMS les invente. Pas d'autre solution que de les remplir dans la bdd à la mano

Oui c'est exactement ça, je viens justement de mettre le doigt dessus. Le nouveau champ "product_customization_id" de la table order_detail est NULL pour ces produits, je vais pouvoir faire une requête pour le remplir a posteriori, pas de souci.

19 minutes ago, Eolia said:

Votre problème est quand même très particulier et je n'ai pas de piste simple. Je soupçonne un js externe (module chargé dans le backofficeheader ?)

Pour info cette partie est générée depuis l'AdminProductController.php, ligne 4293

Merci beaucoup je vais regarder en détail, je vous tiens au courant ! 🧐

Et oui c'est très curieux, j'ai l'impression d'être la seule dans ce cas. Je le reproduits pourtant sur 2 sites différents, dont un sans aucun autre produit actif et qui n'a d'ailleurs jamais accueilli de produits avec perso ni même déclinaison.

Idem même après avoir désactivé toutes les surcharges et modules. C'est pourquoi je pensais que cela pouvait venir du PHP que je ne veux pas upgrader avant d'avoir touché au 3è et dernier shop... je cherche :)

Juste une réponse complémentaire, dans hook BackOfficeHeader je n'ai que :
- Configurateur de thème
- Paypal
- Payline

 

Edited by Sda33 (see edit history)
Link to comment
Share on other sites

2 hours ago, Sda33 said:

2) Toujours le même problème sur l'édition d'une fiche produit, onglet "Personnalisation", le dernier champ "text" n'apparaît pas à l'écran et je ne peux donc pas l'éditer.

J'ai aussi ce souci pour les produits dont les champs de personnalisation étaient existants. Par exemple si sur un produit j'ai 2 champs (nom et prénom), en front on voit bien les 2 et tout marche bien mais en back sur la fiche produit, seul le champ "nom" apparait.

Link to comment
Share on other sites

1 minute ago, Fab20620 said:

J'ai aussi ce souci pour les produits dont les champs de personnalisation étaient existants. Par exemple si sur un produit j'ai 2 champs (nom et prénom), en front on voit bien les 2 et tout marche bien mais en back sur la fiche produit, seul le champ "nom" apparait.

Oui c'est exactement cela sur les produits existants.

Et sur les nouveaux, si je demande à ajouter 2 champs de perso, je n'en ai qu'un qui s'affiche, en gros j'ai toujours un champ manquant, et c'est toujours le dernier de la liste.

Link to comment
Share on other sites

1 hour ago, Sda33 said:
1 hour ago, Eolia said:

Votre problème est quand même très particulier et je n'ai pas de piste simple. Je soupçonne un js externe (module chargé dans le backofficeheader ?)

Pour info cette partie est générée depuis l'AdminProductController.php, ligne 4293

Merci beaucoup je vais regarder en détail, je vous tiens au courant ! 🧐

J'avance un peu, je suis sur un produit avec 3 champs en BDD, 3 champs bien visibles en FO, seulement 2 visibles en BO.

Les champs ont les id 158, 159 et 160. Le 160 ne s'affiche pas en BO.

La requête getCustomizationFields de Product.php me renvoie bien les 3 champs (cf capture d'écran).

Mais la fonction _getCustomizationFieldIds($labels, $alreadyGenerated, $obj) ne me retourne que les deux premiers.
Voir capture d'écran, j'affiche le return implode('¤', $customizableFieldIds);

 

En remontant un peu (ligne 4249), je sais que j'ai un problème sur AdminProductsController dans la function _displayLabelFields(...)

En effet la phrase Product::CUSTOMIZE_TEXTFIELD => (isset($labels[Product::CUSTOMIZE_TEXTFIELD]) ? count($labels[Product::CUSTOMIZE_TEXTFIELD]) : 0)
me retourne 2 au lieu de 3 (enfin il me semble qu'il devrait retourner 3)

 

A suivre mais si vous avez des pistes... ou si je fais fausse route n'hésitez pas aussi à me le dire.

01_BDD_getCustomizationFields.JPG

02_BO__getCustomizationFieldIds.JPG

Link to comment
Share on other sites

[RÉSOLU : J'AI MIGRÉ MySQL, version 8.0 pour remplacer 5.7, tout OK]

 

Pour memo le problème résolu :

Rebonjour, je suis désolée, j'ai aussi un problème pour entrer dans le détail (clic sur "Afficher") d'une Caractéristique.

MySql n'a pas l'air d'aimer la fonction ROW_NUMBER et malgré mes recherches je n'ai pas réussi à la faire fonctionner même au plus simplement dans mon éditeur SQL.

  • Version MySQL : 5.7 (dois-je migrer en MySQL 8.0 ? si oui y a-t-il des précautions à prendre ?)
  • Version PHP : 7.1 (qui fait tourner mon site en prod, en attendant de valider sur la preprod le nouveau prestashop)
  • Version Prestashop : 1.6.2.7 (mais je n'avais pas ce problème avec la 1.6.2.6)
Edited by Sda33
réponse trouvée (see edit history)
Link to comment
Share on other sites

il y a 6 minutes, Sda33 a dit :

Rebonjour, je suis désolée, j'ai aussi un problème pour entrer dans le détail (clic sur "Afficher") d'une Caractéristique.

MySql n'a pas l'air d'aimer la fonction ROW_NUMBER et malgré mes recherches je n'ai pas réussi à la faire fonctionner même au plus simplement dans mon éditeur SQL.

  • Version MySQL : 5.7 (dois-je migrer en MySQL 8.0 ? si oui y a-t-il des précautions à prendre ?)
  • Version PHP : 7.1 (qui fait tourner mon site en prod, en attendant de valider sur la preprod le nouveau prestashop)
  • Version Prestashop : 1.6.2.7 (mais je n'avais pas ce problème avec la 1.6.2.6)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(ORDER BY fvl.value) AS i FROM `ps_feature_value_lang' at line 3

 

Merci.

Ce code n'a pas changé entre la 26 et la 27.

par contre il est appelé si la caractéristique n'a pas de filtre défini (ordre alpha ou numérique)

MariaDB autorise cette fonction depuis la 10.2 et MySQL depuis la 8.

Il n'y a pas de risque pour Presta à passer en MySQL8

  • Like 1
Link to comment
Share on other sites

Bonjour, 

Génial merci pour cette mise à jour!

Je ne l'ai pas encore installé en prod, mais je viens de me rendre compte d'un souci, qui serait lié à la version de Jquery, à moins que ce ne soit mon thème qui fait des siennes.

En Front Office, lorsqu'on a des accessoires sur une fiche produit, ces derniers s'affichent mais le clic ne fonctionne pas, aussi bien pour aller sur la fiche accessoire que l'ajout au panier de l'accessoire.

En passant à Jquery 1.11.0, ce soucis disparaît et tout fonctionne. J'ai ce problème sur la v1.2.5, v1.2.6 et v1.2.7

Quelqu'un pourrait confirmer la chose ?

Cordialement,
Fred

Link to comment
Share on other sites

16 minutes ago, La vie en Rose said:

En passant à Jquery 1.11.0, ce soucis disparaît et tout fonctionne. J'ai ce problème sur la v1.2.5, v1.2.6 et v1.2.7

Quelqu'un pourrait confirmer la chose ?

Bonsoir, de mon côté je n'ai pas de problème sur les accessoires (produits liés) ni pour l'ajout au panier, ni pour le clic fiche produit.

Sauf erreur je suis en 3.6.3.

Link to comment
Share on other sites

il y a 9 minutes, Sda33 a dit :

Bonsoir, de mon côté je n'ai pas de problème sur les accessoires (produits liés) ni pour l'ajout au panier, ni pour le clic fiche produit.

Sauf erreur je suis en 3.6.3.

Merci pour le retour, je vais tester avec le thème de base et en fonction voir pour récupérer tout ça sur mon thème.

Link to comment
Share on other sites

20 hours ago, Eolia said:

La version 1.6.2.7 est sortie ;)

####################################
#   Changelog v1.6.2.7 - (2023-04-10)
####################################

- Correctif des micro-données pour le fil d'ariane depuis Tools.php(Le breadcrumb.tpl de votre thème sera à remplacer par celui par défaut)
- Correctif dans OrderHistory.php pour la génération du order_conf_product_list.tpl (Produits customs)
- Correctif sur certains sujet d'emails non traduisibles
- Correctif d'affichage du product-list dans les commandes en BO et dans le mail de confirmation de commande
- Correctif dans Wharehouse.php
- Ajout du paramètre non-configurable pour les meta des controleurs de type module ($locked_controllers)
- Reprise du thème par défaut pour mise à jour dynamique des prix des produits avec custom
- Correctif sur le mail de confirmation de commande (contenu du product-list)
- Correctif sur le form.tpl de création de commande en BO (Compatibilité JQuery 3)
- Mise en conformité PHP8 du module StripeOfficial
- Correctif sur Tab.php (en cas de droits non superadmin)
- Amélioration du filtrage sur les caractéristiques multiples déjà sélectionnées (BO)
- Correctif sur l'affichage des customs dans le cas de produits avec déclinaisons
- Prise en compte des prix dégressifs pour les customs en FO (pour le thème par défaut)
- Correctif sur la pagination des pages des catégories CMS (BO)
- Ajout de la possibilité de valider les points manuellement dans le module fidélité (Loyalty)

Bonjour @Eolia et merci pour cette mise à jour :)
Je viens de tester sur la version de test installée et je pensais que les caractéristique avaient étés augmentés pour accepter + de 255 caractères. Est-ce que prochainement ce sera ok ?

Question également tant que nous n'avons pas encore migré vers la 1.6.2.7 (il faudrait se le caler :) ) est-ce que cela changera quelque chose sur ma vieille 1.6.1.26 de passer de MySQL 5.7 à la 8 ? Cela fonctionne sur les deux ?

Link to comment
Share on other sites

il y a 4 minutes, La vie en Rose a dit :

Merci pour le retour, je vais tester avec le thème de base et en fonction voir pour récupérer tout ça sur mon thème.

certaines fonctions (dépréciées depuis jQuery 1.7 https://api.jquery.com/category/deprecated/deprecated-1.7/ ) sont à présent interdites dans JQuery 3 comme .live() qui doit être remplacé par .on()

$('#mon_ancre').live('click', function() {

devient

$(document).on('click', '#mon_ancre', function() {

Link to comment
Share on other sites

il y a 3 minutes, bobby4722 a dit :

Bonjour @Eolia et merci pour cette mise à jour :)
Je viens de tester sur la version de test installée et je pensais que les caractéristique avaient étés augmentés pour accepter + de 255 caractères. Est-ce que prochainement ce sera ok ?

Question également tant que nous n'avons pas encore migré vers la 1.6.2.7 (il faudrait se le caler :) ) est-ce que cela changera quelque chose sur ma vieille 1.6.1.26 de passer de MySQL 5.7 à la 8 ? Cela fonctionne sur les deux ?

Les valeurs de caractéristiques sont passées en type TEXT (65 535 caractères).

Vous voulez la même chose pour les caractéristiques aussi ?

Link to comment
Share on other sites

il y a 13 minutes, Eolia a dit :

certaines fonctions (dépréciées depuis jQuery 1.7 https://api.jquery.com/category/deprecated/deprecated-1.7/ ) sont à présent interdites dans JQuery 3 comme .live() qui doit être remplacé par .on()

$('#mon_ancre').live('click', function() {

devient

$(document).on('click', '#mon_ancre', function() {

Ah oui en plus je l'avais lu un peu plus haut dans les messages, merci!!! Je vais modifier ça!

Bonne soirée,
Fred

Link to comment
Share on other sites

9 minutes ago, Eolia said:

Les valeurs de caractéristiques sont passées en type TEXT (65 535 caractères).

Vous voulez la même chose pour les caractéristiques aussi ?

Oups alors je ne sais pas si on parle bien de la même chose mais j'ai essayé de créer une valeur de caractéristique qui ferait plus de 255 caractères, le système n'a pas été d'accord 😅

Link to comment
Share on other sites

il y a 3 minutes, bobby4722 a dit :

Oups alors je ne sais pas si on parle bien de la même chose mais j'ai essayé de créer une valeur de caractéristique qui ferait plus de 255 caractères, le système n'a pas été d'accord 😅

Ok, c'est un oubli de ma part.

La taille a été modifiée dans la bdd mais j'ai oublié de supprimer sa restriction dans /classes/FeatureValue.php

image.thumb.png.36f2584072457d19f8d3d860d6175d85.png

il faut enlever :

, 'size' => 255

ce qui devient:

'value' =>        array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true),

 

  • Thanks 1
Link to comment
Share on other sites

Il y a 16 heures, Eolia a dit :

certaines fonctions (dépréciées depuis jQuery 1.7 https://api.jquery.com/category/deprecated/deprecated-1.7/ ) sont à présent interdites dans JQuery 3 comme .live() qui doit être remplacé par .on()

$('#mon_ancre').live('click', function() {

devient

$(document).on('click', '#mon_ancre', function() {

Bonjour,

Je viens de vérifier le product.js du thème et tout est en ordre, mais en testant sur différents appareils/navigateurs, il semble que ce soit uniquement avec Vivaldi et Brave que le clic ne fonctionne pas.

Sinon Chrome/Firefox/Edge/Safari/Opera c'est bon. 

C'était juste à titre d'info, j'imagine qu'une prochaine mise à jour de ces navigateurs réglera ça, le soucis ne venant pas de presta.

Cordialement,
Fred

Link to comment
Share on other sites

On 4/11/2023 at 4:39 PM, Eolia said:

Ce code n'a pas changé entre la 26 et la 27.

par contre il est appelé si la caractéristique n'a pas de filtre défini (ordre alpha ou numérique)

MariaDB autorise cette fonction depuis la 10.2 et MySQL depuis la 8.

Il n'y a pas de risque pour Presta à passer en MySQL8

Attention en msql8 pour les produits avec declinaison :

En msql8  j'ai des produits avec declinaison et les quantités son inversées entre BO et FO ! 

BO 3 rouges  1 jaune   alors qu'en FO j ai 3 jaunes et 1 rouge

C'est le seul soucis que j ai pu remarquer en mysql8 sur presta 1.6

Link to comment
Share on other sites

Il y a 14 heures, docmusicstation a dit :

Attention en msql8 pour les produits avec declinaison :

En msql8  j'ai des produits avec declinaison et les quantités son inversées entre BO et FO ! 

BO 3 rouges  1 jaune   alors qu'en FO j ai 3 jaunes et 1 rouge

C'est le seul soucis que j ai pu remarquer en mysql8 sur presta 1.6

Aucun module n'est rattaché à la gestion des déclinaisons sur votre site ?

Link to comment
Share on other sites

Bonjour @Eolia
Est-ce qu'il est possible ou est-ce qu'il sera possible sur une future version de changer l'ordre des produits dans les suggestion "accessoires" et "dans la même catégorie" par certains critères comme l'id produit, ou la pertinence du choix des client vis à vis des produits connexes ou autres...

Merci et très bon weekend ;)

Link to comment
Share on other sites

Accessoires, ça dépend du core donc oui, on peut envisager la chose mais il faudrait être plus explicite sur les critères de tri/ordre.

Dans la même catégorie, c'est un module donc ce n'est pas ma priorité.

  • Thanks 1
Link to comment
Share on other sites

On 4/14/2023 at 9:43 PM, Eolia said:

Accessoires, ça dépend du core donc oui, on peut envisager la chose mais il faudrait être plus explicite sur les critères de tri/ordre.

Dans la même catégorie, c'est un module donc ce n'est pas ma priorité.

Bonjour :)

Pour "Dans la même catégorie" je ne savais pas et je vais donc voir ce qu'il est possible de faire si un réglage est disponible. Le soucis c'est que pour les deux exemples ici, les propositions de produits sont du plus vieux ID au plus récent (gauche vers la droite).

Ce qu'il serait cool serait par exemple de pouvoir trier les id produits différemment, ou aléatoirement par exemple, ou tout autre idées qui viendrait à ceux que cela puisse intéresser pour fonction ;)

Merci et bonne journée.

Link to comment
Share on other sites

Le module productcategory utilise une fonction qui essaye de "placer" les produits proches autour avec une position intermédiaire mais le résultat n'est pas concluant^^

			// Get infos
			$category_products = $category->getProducts($this->context->language->id, 1, 100); /* 100 products max. */
			$nb_category_products = (int)count($category_products);
			$middle_position = 0;

			// Remove current product from the list
			if (is_array($category_products) && count($category_products))
			{
				foreach ($category_products as $key => $category_product)
				{
					if ($category_product['id_product'] == $id_product)
					{
						unset($category_products[$key]);
						break;
					}
				}

				$taxes = Product::getTaxCalculationMethod();
				if (Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE'))
				{
					foreach ($category_products as $key => $category_product)
					{
						if ($category_product['id_product'] != $id_product)
						{
							if ($taxes == 0 || $taxes == 2)
							{
								$category_products[$key]['displayed_price'] = Product::getPriceStatic(
									(int)$category_product['id_product'],
									true,
									null,
									2
								);
							} elseif ($taxes == 1)
							{
								$category_products[$key]['displayed_price'] = Product::getPriceStatic(
									(int)$category_product['id_product'],
									false,
									null,
									2
								);
							}
						}
					}
				}

				// Get positions
				$middle_position = (int)round($nb_category_products / 2, 0);
				$product_position = $this->getCurrentProduct($category_products, (int)$id_product);

				// Flip middle product with current product
				if ($product_position)
				{
					$tmp = $category_products[$middle_position - 1];
					$category_products[$middle_position - 1] = $category_products[$product_position];
					$category_products[$product_position] = $tmp;
				}

				// If products tab higher than 30, slice it
				if ($nb_category_products > 30)
				{
					$category_products = array_slice($category_products, $middle_position - 15, 30, true);
					$middle_position = 15;
				}
			}

 

Link to comment
Share on other sites

29 minutes ago, Eolia said:

Le module productcategory utilise une fonction qui essaye de "placer" les produits proches autour avec une position intermédiaire mais le résultat n'est pas concluant^^

			// Get infos
			$category_products = $category->getProducts($this->context->language->id, 1, 100); /* 100 products max. */
			$nb_category_products = (int)count($category_products);
			$middle_position = 0;

			// Remove current product from the list
			if (is_array($category_products) && count($category_products))
			{
				foreach ($category_products as $key => $category_product)
				{
					if ($category_product['id_product'] == $id_product)
					{
						unset($category_products[$key]);
						break;
					}
				}

				$taxes = Product::getTaxCalculationMethod();
				if (Configuration::get('PRODUCTSCATEGORY_DISPLAY_PRICE'))
				{
					foreach ($category_products as $key => $category_product)
					{
						if ($category_product['id_product'] != $id_product)
						{
							if ($taxes == 0 || $taxes == 2)
							{
								$category_products[$key]['displayed_price'] = Product::getPriceStatic(
									(int)$category_product['id_product'],
									true,
									null,
									2
								);
							} elseif ($taxes == 1)
							{
								$category_products[$key]['displayed_price'] = Product::getPriceStatic(
									(int)$category_product['id_product'],
									false,
									null,
									2
								);
							}
						}
					}
				}

				// Get positions
				$middle_position = (int)round($nb_category_products / 2, 0);
				$product_position = $this->getCurrentProduct($category_products, (int)$id_product);

				// Flip middle product with current product
				if ($product_position)
				{
					$tmp = $category_products[$middle_position - 1];
					$category_products[$middle_position - 1] = $category_products[$product_position];
					$category_products[$product_position] = $tmp;
				}

				// If products tab higher than 30, slice it
				if ($nb_category_products > 30)
				{
					$category_products = array_slice($category_products, $middle_position - 15, 30, true);
					$middle_position = 15;
				}
			}

 

Merci je vais regarder pour les accessoires :)

Pour les catégories dans le réglage du module j'ai trouvé 3 réglages mais c'est un peu confus et cela n'a pas fonctionné (je n'ai pas vu de changement). Finalement je ne pense pas que cela y touche.

Link to comment
Share on other sites

Bonjour @Eolia, une question rapide...

Est-ce possible qu'il y ait une différence entre : 

- Une migration 1.6.1.24 vers 1.6.2.6 PUIS 1.6.2.7
- Une migration 1.6.1.24 vers 1.6.2.7 ?

Le premier cas correspond à ma preprod, qui était une copie conforme de la prod, et tout s'était relativement bien passé.

Le second cas correspond à ma prod, sur laquelle j'ai maintenant des problèmes que je n'avais pas eus sur la migration sur la preprod, par exemple :

- FO : fiches produits avec champs personnalisés = le prix ne s'affiche pas (il s'affiche une demi-seconde puis se transforme en "NaN,00€ TTC")

- FO : je me connecte pour passer commande, j'ai sans arrêt l'erreur en rouge "Numéro de téléphone invalide. Vous devez ajouter un numéro de téléphone au moins pour cette adresse". Je n'ai pas le problème sur ma preprod elle aussi en 1.6.2.7 (mais je constate qu'en preprod aussi mon numéro de téléphone a été transformé en +33).
>> En fait mon numéro de téléphone se retrouve automatiquement préfixé "+33" et cela semble poser problème, ce qui n'est pas normal. Je remets un 06 classique depuis le BO, qui est à nouveau transforme en +33 en FO (je ne sais pas à quel moment de la navigation) et pose problème.

- FO : pour l'affichage des modes de règlement, sur le module Paypal j'ai les erreurs : 

Notice: Undefined index: use_paypal_in_context
Notice: Trying to get property of non-object

Sur le fichier : in /(...)/cache/smarty/compile/50/f5/fa/50f5fa9795da6ee6d4c511209d7c7c9094d4f362_0.file.express_checkout_payment.tpl.php 

Lignes 30 et 87

ligne.30
<?php if ($_smarty_tpl->tpl_vars['use_paypal_in_context']->value) {?>

ligne.87
<?php if ($_smarty_tpl->tpl_vars['use_paypal_in_context']->value) {?>


J'ai bien sûr vidé le cache Prestashop (depuis le BO + FP), et mon cache navigateur.

 

Ces erreurs-là je ne les avais pas quand j'ai migré ma preprod en 1.6.2.6 puis fait la mise à jour 1.6.2.7, d'où ma question initiale. 

Ai-je fait quelque chose de travers ? 

Merci.

Link to comment
Share on other sites

Non, normalement pas de différences car le processus d'update passe par toutes les étapes de version.

il y a 43 minutes, Sda33 a dit :

- FO : fiches produits avec champs personnalisés = le prix ne s'affiche pas (il s'affiche une demi-seconde puis se transforme en "NaN,00€ TTC")

Mettez à jour le fichier product.js de votre thème et cart-summary.js (les originaux sont dispos dans le thème default-bootstrap)

 

il y a 45 minutes, Sda33 a dit :

En fait mon numéro de téléphone se retrouve automatiquement préfixé "+33" et cela semble poser problème, ce qui n'est pas normal. Je remets un 06 classique depuis le BO, qui est à nouveau transforme en +33 en FO

Les n° de téléphones sont normalisés depuis la version 1.6.1.29 (voir le changelog https://eoliashop.com/prestashop-new )

 

il y a 47 minutes, Sda33 a dit :

- FO : pour l'affichage des modes de règlement, sur le module Paypal j'ai les erreurs : 

Notice: Undefined index: use_paypal_in_context
Notice: Trying to get property of non-object

Si le module Paypal s'est bien mis à jour dans le répertoire / module cette variable n'existe plus dans /modules/paypal/views/templates/hook/express_checkout_payment.tpl par contre il existe peut-être toujours l'ancienne version dans le répertoire /modules/paypal/ de votre thème.

Link to comment
Share on other sites

Merci pour votre réponse.

10 minutes ago, Eolia said:

Les n° de téléphones sont normalisés depuis la version 1.6.1.29 (voir le changelog https://eoliashop.com/prestashop-new )

Oui et c'est très bien mais en remontant l'erreur j'ai corrigé \tools\PhoneFormat en modifiant pour FR la valeur du max_length à 10 au lieu de 9. Ca a résolu mon problème. Mon téléphone était bien formaté à la base, un 06... transformé en +336... par le FO, tout correct.

20 minutes ago, Eolia said:

Mettez à jour le fichier product.js de votre thème et cart-summary.js (les originaux sont dispos dans le thème default-bootstrap)

Merci ! Je l'avais fait pour product.js mais pas pour cart-summary.js, je suis désolée

 

+ question subsidiaire : comment désactive-t-on l'option du verrouillage du panier ?

J'ai bien vu que c'était une mise à jour 1.6.1.28 mais si j'ai bien compris elle doit s'activer une fois le mode de paiement choisi ("Blocage également du panier lors du choix de méthode de paiement (Anti-fraude)").

Mais je suis allée jusqu'à l'étape de paiement, sans en choisir un, puis j'ai voulu poursuivre ma navigation pour compléter mon panier, et je découvre que ne peux plus rien ajouter. C'est certainement une bonne option pour certains, mais je ne souhaite pas la mettre en place sur ma boutique, je ne la trouve pas facile à comprendre pour un client.

 

Merci

Link to comment
Share on other sites

il y a 17 minutes, Sda33 a dit :

Oui et c'est très bien mais en remontant l'erreur j'ai corrigé \tools\PhoneFormat en modifiant pour FR la valeur du max_length à 10 au lieu de 9. Ca a résolu mon problème. Mon téléphone était bien formaté à la base, un 06... transformé en +336... par le FO, tout correct.

Pas logique. Le code supprime le 1er 0, il ne doit donc rester que 9 chiffres.

 

il y a 17 minutes, Sda33 a dit :

Mais je suis allée jusqu'à l'étape de paiement, sans en choisir un, puis j'ai voulu poursuivre ma navigation pour compléter mon panier, et je découvre que ne peux plus rien ajouter. C'est certainement une bonne option pour certains, mais je ne souhaite pas la mettre en place sur ma boutique, je ne la trouve pas facile à comprendre pour un client.

Pas possible...

$(document).on('click', '#HOOK_PAYMENT', function(e) {
	$.ajax({
		type: 'POST',
		headers: { "cache-control": "no-cache" },
		url: 'index.php?rand=' + new Date().getTime(),
		async: true,
		cache: false,
		dataType : "json",
		data: 'controller=cart&ajax=true&action=initiatePayment&token=' + static_token
	});
});

le blocage ne se déclenche qu'au clic dans la partie paiement

image.thumb.png.2ac46341ea7d97500d6ff45c5eb0c083.png

Edited by Eolia (see edit history)
Link to comment
Share on other sites

1 hour ago, Eolia said:
2 hours ago, Sda33 said:

Oui et c'est très bien mais en remontant l'erreur j'ai corrigé \tools\PhoneFormat en modifiant pour FR la valeur du max_length à 10 au lieu de 9. Ca a résolu mon problème. Mon téléphone était bien formaté à la base, un 06... transformé en +336... par le FO, tout correct.

Pas logique. Le code supprime le 1er 0, il ne doit donc rester que 9 chiffres.

 

Bon du coup j'ai remis le max_length à 9.

Je débogue la fonction isValidTelephoneNumber de la classe Tools, et je vois où est le problème.

$phone_number = intval(preg_replace('/[^0-9]/', '', $phone_number));

le intval déborde et me renvoie 2147483647, "je" dois être en 32bits, d'où forcément le problème lié.

Cela peut-il être un problème de version de PHP, que je n'ai pas encore passé en 8+ ? Je ne dois pas être la seule à avoir le problème, si ?

Link to comment
Share on other sites

il y a 4 minutes, Sda33 a dit :

Bon du coup j'ai remis le max_length à 9.

Je débogue la fonction isValidTelephoneNumber de la classe Tools, et je vois où est le problème.

$phone_number = intval(preg_replace('/[^0-9]/', '', $phone_number));

le intval déborde et me renvoie 2147483647, "je" dois être en 32bits, d'où forcément le problème lié.

Cela peut-il être un problème de version de PHP, que je n'ai pas encore passé en 8+ ? Je ne dois pas être la seule à avoir le problème, si ?

Vous pouvez tester avec 

$phone_number = strlen(preg_replace('/[^0-9]/', '', $phone_number));

et me dire si c'est ok ?

Link to comment
Share on other sites

7 minutes ago, Eolia said:

ous pouvez tester avec 

$phone_number = strlen(preg_replace('/[^0-9]/', '', $phone_number));

et me dire si c'est ok ?

Merci. Avec strlen il me retourne la taille de la chaîne, soit 11, et ça ne fonctionne pas. Mais avec strval oui ça marche, ça règle ce problème.

Si je peux laisser comme ça parce que vous pensez que cela n'aura pas d'incidence ailleurs, alors je me penche sur les autres soucis.

(pour Paypal vous aviez raison, c'était un fichier dans le "module\paypal" de mon thème, que j'ai corrigé du coup)

Link to comment
Share on other sites

25 minutes ago, Eolia said:

Je pige pas. Comment ça 11 ?

Votre n° est 02147483647 au départ ? Ce n'est pas un n° français ça...

Non.

Mon numéro est du type 0612345678.
Le front le transforme immédiatement en +33612345678, quoi que je fasse.
La fonction  isValidTelephoneNumber prévoit un  preg_replace('/[^0-9]/', '', $phone_number) qui nous donne 33612345678.

Ce qui fait 11 caractères. Le intval dessus ne fonctionnant pas (puisqu'il déborde), je garde strval, et ça fonctionne.

 

Link to comment
Share on other sites

il y a 9 minutes, Sda33 a dit :

Ce qui fait 11 caractères. Le intval dessus ne fonctionnant pas (puisqu'il déborde), je garde strval, et ça fonctionne.

Toujours pas logique.

        if(strlen($phone_number) > $format['max_length'])
            $phone_number = substr($phone_number, strlen($country_code));

1er contrôle, si le n° est plus long que le format du pays on tente de lui supprimer l'indicatif du pays (ici: 33)

33612345678 moins le 33 donne 612345678 ce qui fait bien 9 caractères.

image.thumb.png.a9f7a08d12949e7e1f8c775ca7bbf507.png

Link to comment
Share on other sites

8 minutes ago, Eolia said:

Toujours pas logique.

        if(strlen($phone_number) > $format['max_length'])
            $phone_number = substr($phone_number, strlen($country_code));

1er contrôle, si le n° est plus long que le format du pays on tente de lui supprimer l'indicatif du pays (ici: 33)

33612345678 moins le 33 donne 612345678 ce qui fait bien 9 caractères.

image.thumb.png.a9f7a08d12949e7e1f8c775ca7bbf507.png

Je suis désolée Eolia, mais le intval est avant ce test...

Link to comment
Share on other sites

🙂 Oui bien sûr sauf que 33612345678 est trop grand pour le intval chez moi, et il renvoie donc la valeur max qui est 2147483647. 

C'est la raison pour laquelle je posais au début la question :

2 hours ago, Sda33 said:

le intval déborde et me renvoie 2147483647, "je" dois être en 32bits, d'où forcément le problème lié.

Cela peut-il être un problème de version de PHP, que je n'ai pas encore passé en 8+ ?

 

Link to comment
Share on other sites

On 4/21/2023 at 3:52 PM, Eolia said:

Ok, utilisez floatval() alors

Oui cela fonctionnait avec strval, c'est bon aussi avec floatval, je vais garder celui-là, merci.

 

Je reviens vers vous pour un problème en BO, sur l'affichage du détail des commandes passées avant la migration et qui comportaient des produits personnalisés. J'ai un bug de type : 
[8] Undefined index: customizationQuantityTotal
[8] Undefined index: customizationQuantityRefunded
[8] Undefined index: customizationQuantityReturned
[8] Undefined index: customizationQuantityTotal

Même bug d'ailleurs sur le détail des paniers faits avant la migration, avec également :

[8] Undefined index: total_customization_wt

J'ai vu qu'en FO comme pour la génération des factures on s'affranchissait de ces variables et cela fonctionne bien.

J'avais travaillé sur la mise à jour de mes tables order_detail et cart_product pour récupérer les id_customization associés, mais cela ne peut pas fonctionner dans le cas où on a une quantité >1 d'un même produit même déclinaison mais personnalisations différentes parce que cela obligerait à ajouter des lignes dans les tables order_detail et cart_product :

Ancien système : 1 ligne avec quantity 2 par exemple et id_customization 0 ou NULL, puis le système va chercher la personnalisation
Nouveau système : 2 lignes avec quantity 1 chacune + id_customization associé

Donc je pense qu'il doit y avoir quelque chose à faire dans la classe Product.php, ou en BO sur les controllers correspondants... D'autres personnes ont-elles le même souci que moi ? J'ai remonté le post je n'ai pas trouvé...

Merci.

Link to comment
Share on other sites

Le nouveau système comporte effectivement une ligne par personnalisation car les prix sont spécifiques à chaque perso.

Ce que vous décrivez n'est pas un bug mais une notice/warning que vous ne voyez que parce que vous avez le debug activé.

Link to comment
Share on other sites

9 minutes ago, Eolia said:

Ce que vous décrivez n'est pas un bug mais une notice/warning que vous ne voyez que parce que vous avez le debug activé.

Oui absolument, mais même sans voir le warning je n'ai pas le détail de la personnalisation faite par le client, il ne se charge pas sous les produits. C'est souvent utile.

J'ai la possibilité de la retrouver en affichant la facture, donc ce n'est pas bloquant, juste un peu gênant.

Link to comment
Share on other sites

@Eolia Eurêka ! Je viens de trouver où était le problème de l'affichage des champs de personnalisation en Back Office, fiche produit.

Pour rappel, le bug était : quel que soit le nombre de champs de personnalisation pour ce produit en base de données, l'interface n'affichait jamais le dernier de la liste.

On 4/11/2023 at 12:16 PM, Sda33 said:

J'avance un peu, je suis sur un produit avec 3 champs en BDD, 3 champs bien visibles en FO, seulement 2 visibles en BO.

Les champs ont les id 158, 159 et 160. Le 160 ne s'affiche pas en BO.

La requête getCustomizationFields de Product.php me renvoie bien les 3 champs (cf capture d'écran).

Mais la fonction _getCustomizationFieldIds($labels, $alreadyGenerated, $obj) ne me retourne que les deux premiers.
Voir capture d'écran, j'affiche le return implode('¤', $customizableFieldIds);

 

En remontant un peu (ligne 4249), je sais que j'ai un problème sur AdminProductsController dans la function _displayLabelFields(...)

Bien donc depuis je suis remontée sur la classe Product.php.

Le problème vient de la fonction getCustomizationFields(), et plus particulièrement du foreach en fin de fonction.

Pour un produit avec 4 champs de personnalisation texte (3 seulement s'affichaient) :

  • Avant foreach, mon $result comprend bien 4 lignes, une pour chaque id
  • Dans le foreach, toujours 4 lignes, mais la dernière ligne était un duplicata de l'une des 3 autres, écrasant systématiquement les valeurs de la dernière donc.
    • (premier passage du foreach, la 4è ligne de l'array est la copie de la première, deuxième passage c'est une copie de la 2è, etc)
  • L'utilisation du "$row" comme nom de variable pour cette boucle est à l'origine du problème

 

La correction, j'ai renommé la variable, donc :

J'ai remplacé foreach ($result as $row)

Par foreach ($result as $myrow) (et bien entendu adapté la phrase du dessous)

 

J'espère que cela pourra aider ceux qui avaient le même problème que moi à cet endroit. 

Edited by Sda33 (see edit history)
Link to comment
Share on other sites

il y a 2 minutes, Sda33 a dit :

@Eolia Eurêka ! Je viens de trouver où était le problème de l'affichage des champs de personnalisation en Back Office, fiche produit.

Bien vu :)

En fait le problème vient d'au-dessus où $row est passé par référence et non supprimé après la boucle.

Il manquait un unset($row); à la ligne 5007.

la correction est effective pour la 1.6.2.8

image.thumb.png.748b721c09296fe360c6df375f85cea5.png

Link to comment
Share on other sites

12 hours ago, Eolia said:

En cours pour la 28:image.thumb.png.ac40b9dc96ca954244f63df832457e84.png

Ca vous intéresse ? (tri et choix des colonnes)

Ah oui, pouvoir choisir les colonnes surtout c'est très utile 🙂 Et si ça pouvait se faire sur d'autres listes, comme celles qui listent les commandes et les clients, ce serait vraiment pratique !

J'apprécie déjà beaucoup tout ce que vous avez fait qui aide au confort de travail en BO : les notes sur les commandes, la colonne du transporteur sur la liste des commandes, l'enregistrement flottant sur les traductions, la cartographie sur les adresses, et j'en passe...

----------------------

Puisqu'on en est à construire une liste de souhaits, ce serait intéressant aussi de travailler sur les Etats des commandes.

J'aimerais pouvoir choisir les "Etats des commandes" que je retrouve dans la liste disponible quand j'édite une commande et que je dois modifier son état.

Idéalement :

- Espace "Etat de commandes" : case à cocher "sélection de mise à jour manuelle"
- Page de détail d'une commande, la liste déroulante "Mettre à jour l'état" ne comprend que les items sélectionnés

Mine de rien cela pourrait être un vrai gain de temps au quotidien, les modules de paiement + nos différents développements ont tendance à ajouter des états "techniques" qui encombrent la liste et font perdre du temps quand on passe la commande en préparation et qu'il faut retrouver l'état dans une liste trop longue, avec parfois des états similaires pouvant porter à confusion.

----------------------

Je suis aussi de retour avec mes questions sur le format des numéros de téléphone, je suis un peu gênée par le "forçage" en fonction du pays. J'ai plusieurs de mes clients frontaliers qui peuvent avoir un numéro en Suisse ou au Luxembourg alors qu'ils se font livrer sur une adresse en France ou en Belgique. Les sites de Mondial Relay ou de La Poste autorisent cela.

Donc par exemple : y a-t-il la possibilité de ne pas écraser un préfixe téléphonique s'il a déjà été entré ? Je veux dire, un téléphone au bon format mais pas pour le pays de l'adresse.

Exemple : je renseigne une adresse de livraison en France, mais sur (au moins) l'un des numéros de téléphone je précise +41XXX, alors le système ne remplacerait pas le +41.

 

Merci.

 

 

Link to comment
Share on other sites

Et pardon juste une question subsidiaire.

Je cherche, mais peut-être avez-vous une réponse, c'est un problème sur les mails.

Les mails de mon thème ne sont plus pris en compte. 

Au lieu de charger les modèles de \themes\montheme\mails\fr, le système envoie ceux de la racine \mails\fr... ?

Link to comment
Share on other sites

Il y a 9 heures, Sda33 a dit :

Et pardon juste une question subsidiaire.

Je cherche, mais peut-être avez-vous une réponse, c'est un problème sur les mails.

Les mails de mon thème ne sont plus pris en compte. 

Au lieu de charger les modèles de \themes\montheme\mails\fr, le système envoie ceux de la racine \mails\fr... ?

Yep, il y a une coquille ligne 262 de Mail.php (un file_exists( ) en trop) à remplacer par :

elseif(file_exists($theme_path.'mails/'.$iso_template.'.html')) {

 

  • Like 1
Link to comment
Share on other sites

Il y a 12 heures, Sda33 a dit :

Idéalement :

- Espace "Etat de commandes" : case à cocher "sélection de mise à jour manuelle"
- Page de détail d'une commande, la liste déroulante "Mettre à jour l'état" ne comprend que les items sélectionnés

Ca c'est fait^^

image.png.8aeb8dd3c44d316e62ae0c6133d11878.pngimage.png.f4741fd88204ff6cfe4af7433d11601c.png

Link to comment
Share on other sites

Il y a 12 heures, Sda33 a dit :

Donc par exemple : y a-t-il la possibilité de ne pas écraser un préfixe téléphonique s'il a déjà été entré ? Je veux dire, un téléphone au bon format mais pas pour le pays de l'adresse.

Exemple : je renseigne une adresse de livraison en France, mais sur (au moins) l'un des numéros de téléphone je précise +41XXX, alors le système ne remplacerait pas le +41.

Ca c'est fait aussi. Si on a déjà un n° qui commence par "+" on le laisse tel quel.

Vous pouvez éditer votre fonction en attendant:

    public static function isValidTelephoneNumber($phone_number, $iso_code) {
        
        // Already formatted, return $phone_number
        if(substr($phone_number, 0, 1 ) === '+')
            return $phone_number;
        
        global $phone_formats;
        include_once(_PS_TOOL_DIR_.'PhoneFormat.php');

		...

 

Link to comment
Share on other sites

14 hours ago, Eolia said:

Yep, il y a une coquille ligne 262 de Mail.php (un file_exists( ) en trop) à remplacer par :

elseif(file_exists($theme_path.'mails/'.$iso_template.'.html')) {

 

Merci pour la réponse rapide, c'est à jour chez moi en attendant la prochaine version.

12 hours ago, Eolia said:
On 4/24/2023 at 8:49 AM, Sda33 said:

Idéalement :

- Espace "Etat de commandes" : case à cocher "sélection de mise à jour manuelle"
- Page de détail d'une commande, la liste déroulante "Mettre à jour l'état" ne comprend que les items sélectionnés

Ca c'est fait^^

Ah génial ! Hâte de pouvoir l'utiliser 🙂

11 hours ago, Eolia said:

Ca c'est fait aussi. Si on a déjà un n° qui commence par "+" on le laisse tel quel.

Vous pouvez éditer votre fonction en attendant

Efficace merci beaucoup.

Link to comment
Share on other sites

Bonjour @Eolia, pour info j'ai corrigé chez moi un bug d'affichage en BO, détail d'une commande, controllers>orders>_customized_data.

Il manquait une colonne et le tableau était décalé (voir captures pour une commande en cours et une commande livrée).

J'ai repris le code de _product_line pour la remplacer, il s'agit de la cellule "Réduction" autour de la ligne 75 :

		<td class="productQuantity">		
			{if ((float)$product.reduction_percent > 0) || ((float)$product.reduction_amount > 0)}
				{if (float)$product.reduction_percent > 0}
				<span class="reduction_show badge badge-danger">
				- {$product.reduction_percent} %
				</span><br />
				<small class="text-muted">({displayPrice price=$product.original_product_price} HT)</small>
				{elseif (float)$product.reduction_amount > 0}
				<span class="reduction_show badge badge-danger">
				- {displayPrice price=$product.reduction_amount}
				</span><br />
				<small class="text-muted">({displayPrice price=$product.original_product_price} HT)</small>
				{/if}
			{else}
			<span class="reduction_show"> - </span>
			{/if}		
		</td>

		<td class="productQuantity text-center">...

Et ajouté une cellule vide <td></td> plus loin (ligne 174 après avoir ajouté le code ci-dessus), au même niveau sur l'affichage du détail de la personnalisation.

<td></td>

				<td class="productQuantity text-center">...

 

 

BO_DetailCdeLivrée-décalage.JPG

BO_DetailCdeEncours-décalage.JPG

Link to comment
Share on other sites

Je viens de faire une boulette...

J'ai activé l'authentification à deux facteurs pour le compte admin, et pour avoir accès il me demande de saisir le numéro à 6 chiffres généré par mon application mobile... 

C'est laquelle d'application mobile ? 

Cordialement,
Fred

Link to comment
Share on other sites

il y a 11 minutes, La vie en Rose a dit :

Je viens de faire une boulette...

J'ai activé l'authentification à deux facteurs pour le compte admin, et pour avoir accès il me demande de saisir le numéro à 6 chiffres généré par mon application mobile... 

C'est laquelle d'application mobile ? 

Cordialement,
Fred

Allez dans la table ps_employee et videz les colonne secret_key et tfa

Link to comment
Share on other sites

  

il y a 10 minutes, La vie en Rose a dit :

Je viens de faire une boulette...

J'ai activé l'authentification à deux facteurs pour le compte admin, et pour avoir accès il me demande de saisir le numéro à 6 chiffres généré par mon application mobile... 

C'est laquelle d'application mobile ? 

Cordialement,
Fred

Pour récupérer l'accès au BO (au cas où ça arriverait à quelqu'un d'autre), je suis allé modifier dans la base de données dans la table ps_employee dans la colonne "tfa" la valeur 1 par un 0.

J'ai à nouveau accès au BO sans la double authentification. Mais du coup j'aimerai bien savoir comment elle fonctionne, parce qu'il est impossible de modifier le mot de passe SuperAdmin créé par défaut à l'install de la boutique.

il y a 1 minute, P i l o u a dit :

Génial merci!! 

il y a 1 minute, Eolia a dit :

Allez dans la table ps_employee et videz les colonne secret_key et tfa

Merci !! J'ai pas touché à la secret_key ça fonctionne! Et comment changer de mot de passe pour le superadmin par défaut ?

Cordialement,
Fred

Link to comment
Share on other sites

Pour info, lorsque vous l'activez, vous avez un QRcode à scanner avec le texte d'explication qui va avec:

image.thumb.png.55ec453aba41c05b66d3ccdc1e46a88f.png

il y a 4 minutes, La vie en Rose a dit :

Et comment changer de mot de passe pour le superadmin par défaut ?

Il n'y a pas de mot de passe par défaut pour le superadmin, c'est votre mot de passe:

image.png.0cca3b8d3ab32ba365b4d8c57fe17d07.png

Edited by Eolia (see edit history)
Link to comment
Share on other sites

il y a 22 minutes, La vie en Rose a dit :

Le QRcode n'est pas apparu chez moi...

Et pour le mot de passe, en fait ce serait pour le changer, il me laisse pas faire. Et même en entrant mon mot de passe actuel il m'indique mauvais mot de passe.

Cordialement

Ah oui, là il y a un bug, ça devrait afficher le champ de l'ancien mot de passe. Je vais corriger ça ;)

Link to comment
Share on other sites

il y a 27 minutes, Eolia a dit :

Ah oui, là il y a un bug, ça devrait afficher le champ de l'ancien mot de passe. Je vais corriger ça ;)

ligne 289 de AdminEmployeesController.php remplacer password par change-password

                array(
                    'type' => 'change-password',
                    'label' => $this->l('Password'),
                    'hint' => sprintf($this->l('Password should be at least %s characters long.'), Validate::ADMIN_PASSWORD_LENGTH),
                    'name' => 'passwd',
                    'autocomplete' => false
                ),

Sera corrigé dans la 1.6.2.8 qui sort ce we ;)

Link to comment
Share on other sites

il y a 4 minutes, P i l o u a dit :

Une ligne apparaît furtivement : Votre compte a été mis à jour. Veuillez scanner le QRcode ci-dessous dans votre application mobile.

Mais pas de QRcode.

Vous avez enlevé la ligne indiquée ci-dessus ?

Que dit le mode debug ? ou le fichier error.log de votre serveur ?

Link to comment
Share on other sites

il y a 5 minutes, Eolia a dit :

ligne 289 de AdminEmployeesController.php remplacer password par change-password

                array(
                    'type' => 'change-password',
                    'label' => $this->l('Password'),
                    'hint' => sprintf($this->l('Password should be at least %s characters long.'), Validate::ADMIN_PASSWORD_LENGTH),
                    'name' => 'passwd',
                    'autocomplete' => false
                ),

Sera corrigé dans la 1.6.2.8 qui sort ce we ;)

Waou merci pour la rapidité!!

il y a 5 minutes, Eolia a dit :

Oui, je vous l'ai enlevée ;)

Ceci explique cela alors 😁

Link to comment
Share on other sites

On 4/11/2023 at 7:13 PM, Eolia said:

Ok, c'est un oubli de ma part.

La taille a été modifiée dans la bdd mais j'ai oublié de supprimer sa restriction dans /classes/FeatureValue.php

image.thumb.png.36f2584072457d19f8d3d860d6175d85.png

il faut enlever :

, 'size' => 255

ce qui devient:

'value' =>        array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true),

 

Bonjour @Eolia, j'ai enfin eu le temps de modifier le fichier /classes/FeatureValue.php sur ma version de prod, mais concernant la bdd je ne sais pas faire. Il faut aller à quel endroit SVP ?
Je n'ai que cette solution tant que ne s'est pas calés pour une date.
Je vais tenter par la suite de corrigé ceci temporairement.
Merci d'avance et bon courage pour la 1.6.2.8 :)

Link to comment
Share on other sites

Bon ben ça y est, plus rien fonctionne...

Plus d'accès au BO ni au FO, ça mouline!

J'ai modifié le AdminEmployeesController.php puis comme ça fonctionnait plus je l'ai remis comme c'était, mais rien, étrange...

Les sous-domaines fonctionnent mais pas le principal.

Une idée ?

Link to comment
Share on other sites

il y a 20 minutes, La vie en Rose a dit :

Bon ben ça y est, plus rien fonctionne...

Plus d'accès au BO ni au FO, ça mouline!

J'ai modifié le AdminEmployeesController.php puis comme ça fonctionnait plus je l'ai remis comme c'était, mais rien, étrange...

Les sous-domaines fonctionnent mais pas le principal.

Une idée ?

Revenu, fausse alerte, l'hébergement a certainement un peu trop chauffé 😉

Link to comment
Share on other sites

Il y a 1 heure, bobby4722 a dit :

Bonjour @Eolia, j'ai enfin eu le temps de modifier le fichier /classes/FeatureValue.php sur ma version de prod, mais concernant la bdd je ne sais pas faire. Il faut aller à quel endroit SVP ?
Je n'ai que cette solution tant que ne s'est pas calés pour une date.
Je vais tenter par la suite de corrigé ceci temporairement.
Merci d'avance et bon courage pour la 1.6.2.8 :)

Effectuez cette requête dans votre gestionnaire de base de données (en remplaçant PREFIX par celui de votre table)

ALTER TABLE `PREFIX_feature_value_lang`
    CHANGE `value` `value` text COLLATE 'utf8_general_ci' NULL AFTER `id_lang`;

  • Thanks 1
Link to comment
Share on other sites

Bonjour Eolia,

Merci pour cette mise à jour.

Comme à chaque fois, j'ai un message d'erreur lorsque je veux accéder aux modules après la mise à jour:

[PrestaShop] Fatal error in module file :/home/prestashop/modules/emailgenerator/vendor/cssin/vendor/simple_html_dom/simple_html_dom.php

Je supprime le dossier emailgenerator via FTP et je peux y accéder à nouveau.

 

Autre petit soucis, quand le Menu Principal du BO est réduit, une ligne apparait entre la première et la deuxième ligne du menu, et il n'est pas possible de cliquer sur la 3e ligne par exemple

 

image.png.6577ab11f1cf18f749657cb62934718b.png

Edited by P i l o u (see edit history)
Link to comment
Share on other sites

il y a 36 minutes, P i l o u a dit :

Comme à chaque fois, j'ai un message d'erreur lorsque je veux accéder aux modules après la mise à jour:

[PrestaShop] Fatal error in module file :/home/prestashop/modules/emailgenerator/vendor/cssin/vendor/simple_html_dom/simple_html_dom.php

Je supprime le dossier emailgenerator via FTP et je peux y accéder à nouveau.

Vous êtes sous quelle version php ?

Je viens de retester le code sur https://extendsclass.com/php-tester.html et il ne comporte pas d'erreur.

Pour le menu, ce sera réglé dans la prochaine version. Si vous voulez le corriger en attendant il faut modifier cette ligne dans admin-theme.css

.page-sidebar-closed #nav-sidebar>ul>li.maintab:hover ul.submenu{position:absolute !important;display:block !important;top:34px !important;width:200px !important;left:50px}

en remplaçant 34 par 29

.page-sidebar-closed #nav-sidebar>ul>li.maintab:hover ul.submenu{position:absolute !important;display:block !important;top:29px !important;width:200px !important;left:50px}

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...