Flux d’activité

Flux d’activité de Messages

  1. Gilles Boussin


    Bonjour,

    J'ai finalement règle le souci :

    Celui-ci était dû à une valeur erronée rentrée dans la table peel_sites, champ format_numero_facture , pour lequel on avait comme valeur "100".

    format_numero_facture définit le "modèle" à partir duquel on veut générer les références de factures, tels qu'ils seront montrés au client, il doit être de la forme chainedecaracteres_[nomchampdanspeel_commandes], sinon la fonction Get_bill_number renverra l'erreur obtenue...

    J'ai donc renseigné : paradox_[id]

    Après tests, tout est OK désormais.

    Je vous laisse le soin de supprimer mes commandes de test (tables peel_commandes et peel_commandes_articles) ...

    Cordialement :angry:

  2. Gilles Boussin


    Bonjour Inkonline,

    Les explications sont un peu succinctes : "il y a un message d'erreur qui me envoi dans un fichier à la ligne xxx, quand je modifie cette ligne cela me renvoi dans le même fichier à une autre ligne etc."

    Mais je pense tout de même avoir la solution.

    Sur PEEL en 2.8, on a régulièrement des balise du type <? ... ?> au lieu de <?php ... ?> .

    Ces balises ne seront comprises par PHP que si celui-ci est configuré avec l'option "SHORT OPEN TAG", ce qui ne doit pas être le cas de base sur EasyPHP.

    Ce type d'option doit pouvoir s'activer facilement avec EasyPHP, au pire éditez directement votre php.ini

    Cordialement,

  3. inkonline


    Bonjour

    J'ai télécharger easyphp pour mettre mon site en local afin de faire des essais cependant cela ne fonctionne pas quand je lance l'application il y a un message d'erreur qui me envoi dans un fichier à la ligne xxx, quand je modifie cette ligne cela me renvoi dans le même fichier à une autre ligne etc...

    J'aimerai savoir si c'est un pb de version de phpmyadmin ou autre ?

    Si qlq a déjà fait cette manip je suis preneur

    Merci pour vos réponse

    Salutations

  4. inkonline


    Bonjour

    J'ai trouver une bidouille sur le net qui semble fonctionner

    - export de la table produit sous excel 2003 (via phpmyadmin)

    - rajout de donnée même format (attention aux "id")

    - enregistrement de la feuille de calcul excel au format csv

    - import csv sous phpmyadmin

    Cela semble fonctionner

    Bon si qlq d'autre à une solution , je suis aussi preneur

    Salutations

    Merci à ceux qui m'ont répondu (même un jour férié)

  5. inkonline


    Bonjour

    Nous faisons des essais pour le moment , il s'agit d'exporter la table produit, ce qui fonctionne très bien puis de la réimporter ce qui ne fonctionne pas (même si pas de modif sur la table ) sous excel 3, il n' ya pas de produit dans la table

    Pourquoi ?

    Dans un deuxième temps nous allons exporter cette même table puis rajouter des des données au même format dedans puis la réimporter

    Salutations

  6. Gilles Boussin


    Bonjour Lili25,

    Félicitations pour votre bonne volonté dans vos travaux !

    Un peu d'aide pour : " répercuter l'affichage du prénom sur tous les écrans de contrôle (fin de commande, confirmation, mails, administration ...)"

    - Pour afficher le prénom sur la page de confirmation de paiement, le fichier à modifier est modeles/xxxx/achat_confirmation.php

    Après

    $couleurId = vb($_SESSION['caddie']->couleurId[$i]);

    $tailleId = vb($_SESSION['caddie']->tailleId[$i]);

    Ajoutez

    $prenom = vb($_SESSION['caddie']->prenom[$i]);

    Et faites un echo de $prenom, par exemple juste avant les lignes :

    if (display_prices_with_taxes_active()) {

    echo '

    <td class="lignecaddie" align="center">' . fprix($prix_cat, true) . '</td>

    ';

    - Vous pouvez faire un travail analogue pour afficher le prénom dans la page du caddie en modifiant comme précédemment le fichier modeles/XXXXX/caddie.php

    - Pour l'envoi d'emails, tout est géré dans la fonction email_commande(), qui devrait être assez simple à modifier.

    - Enfin, pour le back-office, les modifs sont à apporter à /administrer/modeles/commande_details.php (afficher les prénoms) et administrer/commandes.php (récupérer les prénoms de la base, table peel_commandes_articles)

    En espérant vous avoir aidée,

    Cordialement,

  7. Gilles Boussin


    Bonjour Janmi30,

    Pour la question :

    Question bête : au lieu de "mettre en attente" (pas disponible) les autres paiements que Paypal, je le ai supprimés depuis l'administration... est-ce que ça pourrait venir de là ?!

    Non, je ne pense pas.

    Si l'enregistrement est présent dans peel_commandes, mais aucun article enregistré dans peel_commandes_articles, alors dans cree_commande, on s'est nécessairement arrêtés entre l'insertion dans peel_commandes et l'insertion dans peel_commandes_articles.

    Mais sauf erreur de ma part, pas de requête de SELECT dans peel_commandes entre les deux.

    Si vous le souhaitez, vous pouvez me transmettre par message privé vos accès FTP, un compte admin et une URL d'accès à PHPMyAdmin pour que je tente de corriger le souci.

    Cordialement,

  8. Gilles Boussin


    Bonjour Phil,

    Il n'est pas possible d'utiliser directement une BDD issue d'un PEEL PREMIUM 3.1 sur un PEEL PREMIUM 5.71, les modifications structurelles étant trop importantes.

    La solution est de migrer les données.

    Il faut pour cela comparer les structures de données des deux BDD, décider de migrer certaines tables potentiellement plus utilisées par le code de la 5.71 ou non, gérer le cas particulier de certains champs (ref_fournisseur qui devient id_utilisateur dans peel_produits par exemple)

    Avec un peu d'habitude, ce genre de manipulation se fait efficacement.

    Si vous rencontrez des difficultés, je vous encourage à contacter notre service commercial sur ce sujet, nous réalisons en effet régulièrement de prestations de migration de BDD et/ou charte graphique.

    Cordialement,

  9. Gilles Boussin


    Dans une nouvelle feuille sous Excel :

    Tapez dans la case A1 : id1

    Tapez dans la case B1 : Données1

    Tapez dans la case C1 : Données2

    Tapez dans la case D1 : ="INSERT INTO xxx SET id='"&A1&"', col1='"&B1&"', col2='"&C1&"';" (faites un copier coller pour ne pas vous tromper)

    PS : j'ai fait une erreur tout à l'heure dans mon message, j'avais interverti lignes et colonnes :angry:

    Vous allez voir le SQL qui est généré dans D1.

    Il suffit alors que vous mettiez les bonnes données, le nom de la table et les noms de colonnes, et le tour est joué.

    Ensuite vous pouvez copier ce SQL dans phpmyadmin pour l'exécuter.

  10. Gilles Boussin


    Bonjour,

    Il y a de multiples formats compatibles Excel. Le problème c'est que cette multiplicité induit un certain nombre de problèmes : un CSV peut être avec différents types de séparateurs, avec ou sans guillemets pour les champs, avec un escape différent des caractères spéciaux, etc. (alors que SQL est assez standard).

    Si vous voulez travailler sous Excel, réimporter ensuite les données en BDD est souvent problématique si les données ne sont pas préparées exactement comme il faut.

    La solution que nous utilisons lorsque nous travaillons dans Excel est de générer du SQL à partir des cases de données :

    on crée une case en fin de ligne du genre : "INSERT INTO xxx SET col1='"&A1&"', col2='"&A2&"';"

    Puis on peut copier cette formule dans les cases en dessous, et le tour est joué => on peut faire un copier coller de tous ces INSERT dans phpmyadmin, et là pas de surprise.

    Si il y a des guillemets ' dans les cases de données, les remplacer par un chercher remplacer par '', ou faire un REMPLACER(...) directement dans la formule.

    Ce genre de manipulation évite tous les problèmes d'import des données, est très flexible, et au final assez rapide.

    Par la suite vous pourrez faire une colonne "UPDATE xxx SET .... WHERE id=..." avec seulement les colonnes que vous voulez mettre à jour, pour peu que vous ayiez mis une id dans Excel afin de forcer l'id lors de l'INSERT et ainsi pouvoir utiliser l'id lors de l'UPDATE.

  11. Lili25


    Eh voilà !! :huh:

    Je viens de trouver mon erreur. Je poste ci-dessous la correction du code :

      function ajout($produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique)
    
    	{
    
    		if (in_array($produit_id, $this->articles) && empty($email_check)) {
    
    			// Si le produit est dans le caddie, et que ce n'est pas un chèque cadeau, alors on va vouloir fusionner les données dans une même ligne
    
    			foreach ($this->articles as $k => $this_produit_id) {
    
    				if ($produit_id == $this_produit_id  &&  $couleur_id == $this->couleurId[$k] &&  $prenom_unique == $this->prenom_unique[$k] && $taille_id == $this->tailleId[$k] && $liste_attribut == $this->id_attribut[$k]) {
    
    					$line_found = $k;
    
    					break;
    
    				}
    
    			}
    
    		}
    
    		if (isset($line_found)) {
    
    			// Le produit existait déjà dans le panier dans la bonne configuration de couleur et de taille
    
    			$quantite = $this->quantite[$line_found] + $quantite;
    
    			$this->place($line_found, $produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique);
    
    		} else {
    
    			// Une nouvelle ligne doit être créée dans le panier
    
    			if (!isset($this->articles[0])) {
    
    				$numero_ligne = 0;
    
    			} else {
    
    				$numero_ligne = max(array_keys($this->articles)) + 1;
    
    			}
    
    			$this->articles[$numero_ligne] = $produit_id;
    
    			// Si on gère les stocks pour ce produit, la valeur $quantite est temporaire avant validation du stock disponible
    
    			$this->quantite[$numero_ligne] = $quantite;
    
    			$this->couleurId[$numero_ligne] = $couleur_id;
    
    			$this->tailleId[$numero_ligne] = $taille_id;
    
    			$this->email_check[$numero_ligne] = $email_check;
    
    			$this->id_attribut[$numero_ligne] = $liste_attribut;
    
    			$this->prenom_unique[$numero_ligne] = $prenom_unique;
    
    			if (is_stock_advanced_module_active() && empty($this->commande_id)) {
    
    				// NB : On ne gère les stocks remporaire que si commande_id est vide, sinon les stocks sont gérés directement avec peel_stocks
    
    				// On appelle recalc_article_general car on doit d'abord récupérer la valeur de $this->etat_stock[$numero_ligne]
    
    				$this->recalc_article_general($numero_ligne);
    
    				if($this->etat_stock[$numero_ligne] == 1){
    
    					$this->quantite[$numero_ligne] = reservation_stock_temp($produit_id, $couleur_id, $taille_id, $quantite, $prenom_unique);
    
    				}
    
    			}
    
    		}
    
    	}

    Petite explication : il n'y avait pas besoin de mettre la variable prenom_unique_id, mais simplement $prenom_unique.

    J'avoue que sur ce coup là, je suis fier de moi ! :)

    Bon maintenant, il faut que je répercute l'affichage du prénom sur tous les écrans de contrôle (fin de commande, confirmation, mails, administration ...). Un jeu d'enfant ? :angry:

  12. Lili25


    Oui, je l'ai créée dans module_handler ...

    function is_prenom_module_active()
    
    {
    
    	return file_exists($GLOBALS['fonctionsprenom']);
    
    }
    ... et déclarée dans configuration.inc.php
    // Affichage prénom produits
    
    $fonctionsprenom = $dirroot . "/modules/prenom/fonctions.php";
    
    if (is_prenom_module_active() && !defined('LOAD_NO_OPTIONAL_MODULE')) {
    
    	include ($fonctionsprenom);
    
    }

  13. Lili25


    Merci Jean-Hervé,

    Ton post me sera utile quand j'aurai réussi dans un premier temps à transmettre le prénom dans le caddie.

    Pour le moment :

    J'ai déclaré le module prénom qui s'affiche effectivement bien sur ma fiche produit grâce à la fonction if (is_prenom_module_active()) (actif si, dans la table produit, le produit est concerné par la personnalisation avec le prénom).

    Donc, j'ai bien ma petite zône qui s'affiche, prête à recevoir le prénom que l'on veut.

    Le problème que je n'arrive pas encore à résoudre se produit au moment de l'ajout au caddie. Le produit se place bien dans le caddie, mais le prénom n'est pas ramené pour être associé à la ligne concernée.

    J'ai rajouté ceci dans le fichier caddie_ajout.php (la variable s'appelle prenom_unique pour la distinguer d'une future prenom_double à venir quand j'aurai réussi à implanter celle-là)

    //MODULE PRENOM
    
    
    		if (is_prenom_module_active()) {
    
    
    				$prenom_unique = substr($_POST['prenom_unique']);
    
    
    		}
    Dans ce même fichier (caddie_ajout), j'enregistre la variable sensée être ramenée par POST dans le tableau de SESSION, comme suit :
    $_SESSION['caddie']->ajout($id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique);
    Enfin, dans class/caddie.php, après avoir initialisé le tableau prenom_unique, j'ai modifié la fonction d'ajout au caddie comme ceci :
    	function ajout($produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique)
    
    	{
    
    		if (in_array($produit_id, $this->articles) && empty($email_check)) {
    
    			// Si le produit est dans le caddie, et que ce n'est pas un chèque cadeau, alors on va vouloir fusionner les données dans une même ligne
    
    			foreach ($this->articles as $k => $this_produit_id) {
    
    				if ($produit_id == $this_produit_id  &&  $couleur_id == $this->couleurId[$k] &&  $prenom_unique == $this->prenom_unique_id[$k] && $taille_id == $this->tailleId[$k] && $liste_attribut == $this->id_attribut[$k]) {
    
    					$line_found = $k;
    
    					break;
    
    				}
    
    			}
    
    		}
    
    		if (isset($line_found)) {
    
    			// Le produit existait déjà dans le panier dans la bonne configuration de couleur et de taille
    
    			$quantite = $this->quantite[$line_found] + $quantite;
    
    			$this->place($line_found, $produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique);
    
    		} else {
    
    			// Une nouvelle ligne doit être créée dans le panier
    
    			if (!isset($this->articles[0])) {
    
    				$numero_ligne = 0;
    
    			} else {
    
    				$numero_ligne = max(array_keys($this->articles)) + 1;
    
    			}
    
    			$this->articles[$numero_ligne] = $produit_id;
    
    			// Si on gère les stocks pour ce produit, la valeur $quantite est temporaire avant validation du stock disponible
    
    			$this->quantite[$numero_ligne] = $quantite;
    
    			$this->couleurId[$numero_ligne] = $couleur_id;
    
    			$this->tailleId[$numero_ligne] = $taille_id;
    
    			$this->email_check[$numero_ligne] = $email_check;
    
    			$this->id_attribut[$numero_ligne] = $liste_attribut;
    
    			$this->prenom_unique_id[$numero_ligne] = $prenom_unique;
    
    			if (is_stock_advanced_module_active() && empty($this->commande_id)) {
    
    				// NB : On ne gère les stocks remporaire que si commande_id est vide, sinon les stocks sont gérés directement avec peel_stocks
    
    				// On appelle recalc_article_general car on doit d'abord récupérer la valeur de $this->etat_stock[$numero_ligne]
    
    				$this->recalc_article_general($numero_ligne);
    
    				if($this->etat_stock[$numero_ligne] == 1){
    
    					$this->quantite[$numero_ligne] = reservation_stock_temp($produit_id, $couleur_id, $taille_id, $quantite, $prenom_unique);
    
    				}
    
    			}
    
    		}
    
    	}

    Mais je ne suis pas sûr de moi. A ce stade, ça me parait un peu flou. Je pense ne pas être très loin du but, mais ... :huh:

    Allez, je cherche encore !!! Courage ! :)

    EDIT : A cette heure, toujours aucune solution, il y a un truc qui ne passe pas. Impossible de transmettre le prénom ... comprends rien ... :angry:

Twitter Advisto ecommerce

Facebook PEEL Shopping