legrenier Posted November 2, 2009 Share Posted November 2, 2009 bonjour, je viens de télécharger le module créé par Whitelighter. (en piece jointe, merci à son auteur)pour ceux qui ne le connaissent pas, il permet d'exporter sur exel ses commandes.je me permet d'ouvrir un post en francais (car l'original est en anglais) traitant du meme sujet.Je viens de constater plusieurs problemes avec ce module. Les champs crées avec ce module sont séparés avec des virgules. problème rencontré : quand un client mets une virgule dans son adresse, cela décale tous les champs sur exel.j'ai en parti modifié le code du php, pour creer un csv avec des ; (il faut remplacer les lignes 86 à 89) par : $f=fopen(dirname(__FILE__).'/orders.csv', 'w'); fwrite($f, implode('; ', $titles)."\r\n"); foreach($orderlist AS $order){ fwrite($f, implode('; ', $order)."\r\n"); autre chose, ce module pourrait être amélioré, notamment ajouté le titre de l'objet commandé (qui pour l'instant n'est pas exporté) quelqu'un serait il apporté cette modif ? (cela doit pas être de la tarte pour les commandes multiples) ... exportorders.zip 1 Link to comment Share on other sites More sharing options...
legrenier Posted November 5, 2009 Author Share Posted November 5, 2009 Bonsoir, pour revenir à mon probleme d'export, j'essai de faire ceci (autre méthode sans passer par un module du BO) <?php mysql_connect("monseveur", "mabase", "motdepasse"); // Connexion à MySQL mysql_select_db("mabase"); //selection de la base coursphp $reponse = mysql_query("SELECT id_order, total_paid_real, invoice_number, product_name, payment, shipping_number, total_shipping, invoice_date, firstname, email, lastname FROM ps_orders NATURAL JOIN ps_order_detail, ps_customer, ps_address ORDER BY invoice_number DESC LIMIT 0,100") or die(mysql_error()); // Requête SQL // On fait une boucle pour lister tout ce que contient la table : while ($donnees = mysql_fetch_array($reponse) ) { ?> <?php echo $donnees['invoice_number']; ?>;<?php echo $donnees['lastname']; ?>;<?php echo $donnees['firstname']; ?> ( <?php echo $donnees['email']; ?> );<?php echo $donnees['product_name']; ?>;<?php echo $donnees['total_paid_real']; ?> <?php } mysql_close(); // Déconnexion de MySQL ?> je ne m'en sors pas dans les jointures ! je ne suis pas assez balaise pour écrire correctement la requete, les champs sont ambigus ! quelqu'un serait il me l'ecrire correctement.car une fois ce code bien ecrit dans un fichier, en se servant des 4 tables (ps_address, ps_custumers, ps_orders et ps_orderdetail) on n'arrive à exporter ce que l'on veut (sans se servir d'un module)pratique pour tenir ses ventes à jour sous exel par exemple ... Link to comment Share on other sites More sharing options...
watkins Posted March 28, 2010 Share Posted March 28, 2010 Bonjour as tu finis par t,en sortir avec ton export car je recherche une fonction semblableMerci pour l'astuce de la virgule Cordialement Didier Link to comment Share on other sites More sharing options...
stevenhab Posted March 29, 2010 Share Posted March 29, 2010 Bonjour,je suis très intéressé également des nouvelles ?? Link to comment Share on other sites More sharing options...
BVince Posted March 29, 2010 Share Posted March 29, 2010 Hi,Je veux bien vous aider pour les requêtes, quel doit être le résultat en sortie ?Le mieux est d'écrire la requête en bon français et je vous la traduis en SQL... Link to comment Share on other sites More sharing options...
legrenier Posted March 29, 2010 Author Share Posted March 29, 2010 Bonjour, pour faire simple, sortir un tableau sur exel où apparaiterait : le titre de l'objet vendu, la reference, le prix, la date de facturation, les frais de port, le total frais de port+prix du produit, le nom du client, l'adresse du client. cela me parait déjà pas mal ...le tout à partir de la base de données ...j'ai beau cherché dans les modules existants, je ne trouve rien de concluant, et je perds un temps fou à extraire avec phpadmin, les données que j'ai besoin, alors qu'il suffit de bien joindre les tables pour sortir la requete ...(attention aux commandes multiples, je ne sais pas comment on peut faire, prendre en compte le 1er objet de la commande ?)a suivre ... Link to comment Share on other sites More sharing options...
watkins Posted March 29, 2010 Share Posted March 29, 2010 Bonjourpour ma part ca seraisLe numéro de la commande Le nomLe prenomL adresse1L Adresse 2ProvinceVille Pays EmailEt pour finir que seule les commandes en cours de préparation sois exportée dans un fichier exelAvec ca je suis royal j'économise peut être certain jour 1 heure de travailPossible rémunération pour la personne qui me fait çaCordialement Didier Link to comment Share on other sites More sharing options...
stevenhab Posted May 2, 2010 Share Posted May 2, 2010 Hello,un petit up ? Link to comment Share on other sites More sharing options...
defkrie Posted December 14, 2010 Share Posted December 14, 2010 Bonjour,quelqu'un as - t-il des news ? Link to comment Share on other sites More sharing options...
legrenier Posted December 14, 2010 Author Share Posted December 14, 2010 Bonsoir, il y a maintenant un module qui fait tout ca à merveille ! Export Orders. il est payant, mais ca vaut le coup ... par contre je ne me rappelle plus ou je l'ai trouvé ... Link to comment Share on other sites More sharing options...
webbax Posted December 14, 2010 Share Posted December 14, 2010 Bonjour,Il existe aussi en payant le module "Custom exporter" pouvant servir aussi à exporter d'autres informations.http://www.webbax.ch/shop/11-module-custom-exporter.html Link to comment Share on other sites More sharing options...
mat250 Posted May 6, 2011 Share Posted May 6, 2011 Bonjour, Vous pouvez aussi tout simplement faire un export en CSV via phpMyAdmin avec une requete de ce type : SELECT o.id_order AS 'Num commande', c1.lastname AS 'Nom', c1.firstname AS 'Prenom', c1.email AS 'Email' FROM ps_customer c1, ps_orders o WHERE o.valid=1 AND o.id_customer=c1.id_customer ORDER BY o.id_order ASC Vous pouvez ensuite rajouter autant de champs que vous voulez avec des jointures (la doc MySQL est ton amie ! et puis, ça ne fait jamais de mal de maitriser la base de SQL).Mat. Link to comment Share on other sites More sharing options...
kestouf Posted September 4, 2011 Share Posted September 4, 2011 Bonjour a tous Voila ma requete qui me permet de sortir pas mal de chose sur les commande: SELECT o.id_order AS 'Num commande', p.name AS 'Produit', r.quantity AS 'Quantite', o.total_products AS 'Prix produit', o.total_shipping AS 'Transport', o.total_paid AS 'Total commande', a1.company AS 'Raison sociale', c1.id_gender AS 'Civilite', a1.lastname AS 'Nom', a1.firstname AS 'Prenom', a1.address1 AS 'Addresse de facturation', a1.address2 AS 'Addresse de facturation 2', a1.postcode AS 'Code postal', a1.city AS 'Ville', y1.name AS 'Pays de facturation', a1.phone AS 'Telephone fixe facturation', a1.phone_mobile AS 'Telephone mobile facturation', c1.email AS 'Email', c1.newsletter AS 'Newsletter', c1.optin AS 'Newsletter groupe', c2.id_gender AS 'Civilite livraison', CONCAT_WS(' ',a2.lastname, a2.firstname) AS 'Destinataire', a2.address1 AS 'Addresse 1', a2.address2 AS 'Addresse 2', a2.postcode AS 'CP', a2.city AS 'Commune', n.iso_code AS 'Pays', a2.phone AS 'Telephone', a2.other AS 'Instructions' FROM ps_customer c1, ps_customer c2, ps_address a1, ps_address a2, ps_country_lang y1, ps_country_lang y2, ps_country n, ps_product_lang p, ps_cart_product r, ps_orders o WHERE o.valid=1 AND o.id_address_invoice=a1.id_address AND o.id_address_delivery=a2.id_address AND o.id_cart = r.id_cart AND r.id_product = p.id_product AND p.id_lang=1 AND a1.id_country = y1.id_country AND a2.id_country = y2.id_country AND y1.id_lang=1 AND y2.id_lang=1 AND a1.id_customer=c1.id_customer AND a2.id_customer=c2.id_customer AND a2.id_country=n.id_country ORDER BY o.id_order ASC; Se que j'aimerai faire c'est que si une personne a commandé plusieurs chose en une seul commande, que chaque article soit bien voyant. Link to comment Share on other sites More sharing options...
francky600 Posted September 9, 2011 Share Posted September 9, 2011 Bonjour, voici le module exportorders gratuit modifié, car les accents et virgules posaient trop de problèmes ( fonctionne chez moi sous 1.4.4 ) exportorders.zip le lien proposant le module original est ici : http://www.prestasho...-export-orders/ Cependant il me manque à ce module 2 informations très importantes pour la compta ! la TVA payée par le client ( produit + transport ) et le Total HT ( produit + transport ) j'ai beau chercher sur les bases de données je ne trouve c'est informations nul part Alors si quelqu'un qui connaît le php et peux me donner la solution ou du moins une piste sa serait cool ! info : j'ai l'impression que c'est infos ne se trouve pas dans la base, car en regardant le fichier pdf.php ( facture ) je pense que ces montants sont calculés à partir du montant TTC et du taux de TVA, mais comment faire sur ce type de code array( 'n'=>'???', 'l'=>'Total H.T' ), array( 'n'=>'???', 'l'=>'TVA' ), j'ai posté la même question sur le forum anglais Merci Link to comment Share on other sites More sharing options...
Bertrand57 Posted October 6, 2011 Share Posted October 6, 2011 Bonjour, Chez moi, la version de francky600 ne fonctionne pas. Quand je veux générer le fichier, je tombe sur une erreur 404. Par contre, la version de legrenier fonctionne, à part quelques soucis d'accent. Link to comment Share on other sites More sharing options...
domisy Posted October 12, 2011 Share Posted October 12, 2011 Bonjour Moi j'ai testé la version de Kestouf sur PHP MY Admin et ça fonctionne très bien. Mais il manque toujours la TVA pour ma compta, surtout que je vends dans différents pays Comme toi Francky600, je ne la vois nulle part dans les tables de la BDD. Quelqu'un sait-il où la trouver ? Merci Link to comment Share on other sites More sharing options...
webcreation Posted October 12, 2011 Share Posted October 12, 2011 Bonjour, Pour ma comptabilité, j'ai besoin d'extraire de ma BDD toutes les commandes hors france du 3eme trimestre (nom, prenom, pays, total commande, date de commande, statut). Pourriez-vous m'aider à construire la requete SQL à appliquer dans Phpmyadmin ? Merci de votre aide. Link to comment Share on other sites More sharing options...
manouille Posted October 15, 2011 Share Posted October 15, 2011 Bonjour Moi j'ai testé la version de Kestouf sur PHP MY Admin et ça fonctionne très bien. Mais il manque toujours la TVA pour ma compta, surtout que je vends dans différents pays Comme toi Francky600, je ne la vois nulle part dans les tables de la BDD. Quelqu'un sait-il où la trouver ? Merci Dans ps_orders tu as tous les champs dont tu as besoin : total_paid --> total TTC (transport + produit) total_products --> total produits TTC total_products_wt --> total produit HT (wt : without tax) total_shipping --> frais de port TTC carrier_tax_rate --> taux de TVA pour le transporteur Avec de simples soustractions et addition dans la requete tu sors facilement le total TVA ! Link to comment Share on other sites More sharing options...
domisy Posted October 15, 2011 Share Posted October 15, 2011 Merci Manouille, Effectivement c'est plus clair quand on a la traduction des champs ! Je n'avais pas compris que wt voulait dire without tax. C'est quand même un peu tordu de mélanger le HT pour les produits et le TTC pour le transporteur, je ne sais pas pourquoi Prestashop ne fait pas tout bêtement HT, TVA et TTC, ça devait être trop simple ;-( En fait je commence à travailler avec un expert comptable et je me rends compte qu'il y a plein d'erreurs sur les factures générées par Prestashop. Il vaut mieux passer par un logiciel ad-hoc. Bref 6 mois d'activité à repasser au peigne fin... Link to comment Share on other sites More sharing options...
optimum.dulopin Posted October 17, 2011 Share Posted October 17, 2011 Bonjour, quelqu'un a t il inclut les informations de manouille dans le module de de franky600 ou de legrenier ? merci Link to comment Share on other sites More sharing options...
kestouf Posted October 21, 2011 Share Posted October 21, 2011 Je n'arrive pas a récupérer le statue de la commande (si elle est annulé, remboursé, livrée,...) Avez vous une idée de commande faire? Merci Link to comment Share on other sites More sharing options...
manouille Posted October 21, 2011 Share Posted October 21, 2011 Il faut que tu fasses des jointures en passant de ps_orders --> ps_order_history (id_order.ps_orders=id_order.ps_order_history) --> Tu récupères max(id_order_state.ps_order_history) --> tu va chercher le statut en francais --> max(id_order_state.ps_order_history)=id_order_state.ps_order_state_lang --> et la tu recupères le statut en francais en récupérant la variable name.ps_order_state_lang En résumé tu passes de ps_orders à ps_order_history à ps_order_state_lang Et normalement ca roule ! Link to comment Share on other sites More sharing options...
stephforum Posted October 23, 2011 Share Posted October 23, 2011 Bonjour, Dans le fichier exportoders.php, il y a ce bout de code qui permet d'afficher le numero du client, son nom et son prenom. Ces info sortent dans une case séparée hors j'aimerai que celle-ci soit dans la meme case comme cela l'est pour l'adresse. J'ai donc observé et commencé à effectuer une modif sauf que, il doit me manquer un détail car cela ne fonctionne pas. Voici le bout de code que je cherche à modifié 'c'=>array( 'n'=>'customer', 'f'=>array( array( 'n'=>'id_customer', 'l'=>'Customer No' ), array( 'n'=>'firstname', 'l'=>'First Name' ), array( 'n'=>'lastname', 'l'=>'Last Name' ), array( 'n'=>'email', 'l'=>'Email' ) ), 'w'=>'c.id_customer=o.id_customer' ), Pour le faire évolué comme ceci : 'c'=>array( 'n'=>'customer', 'f'=>array( array( 'n'=>'CONCAT(ad.`id_customer`, " ", ad.`lastname`, " ", ad.`firstname`)', 'l'=>'customer' , 'n'=>true ) ), 'w'=>'c.id_customer=o.id_customer' ), Je n'arrive pas à trouver d'ou viendrai le probleme Vous avez une idée sur ce qui bloque ? Merci beaucoup pour votre aide Link to comment Share on other sites More sharing options...
xueid89 Posted October 24, 2011 Share Posted October 24, 2011 Bonjour, Voila le module qu'il vous faut. Il vous permet d'extraire tous ce que vous souhaitez de vos commandes au format csv(excel), html et vous envoi même le resultat par email de manière automatique si vous le souhaitez. Lien vers le module: http://addons.prestashop.com/fr/export/3459-yourextractorder-emailcsvhtml.html Vous trouverez sur la fiche produit des liens vers un site de test qui vous permettra de juger par vous même. Cordialement G. PREVEAUX Link to comment Share on other sites More sharing options...
manouille Posted October 24, 2011 Share Posted October 24, 2011 Sauf qu'ici c'est la section modules gratuits. A moins que tu n'offres ton module à la commauté, je ne vois pas le rapport. Link to comment Share on other sites More sharing options...
xueid89 Posted October 24, 2011 Share Posted October 24, 2011 Je suis d'accord avec toi. Je vous propose simplement celui-ci car malheureusement je sais que votre temps a tous vous est compté. Souvent acheter un module à 50€ vous permettra de gagner du temps et donc de l'argent et vous pourrez ainsi vous concentré sur votre métier et vendre d'avantage. Cordialement G. PREVEAUX Link to comment Share on other sites More sharing options...
shibao Posted November 1, 2011 Share Posted November 1, 2011 Bonjour xueid89, Votre module permet il d'avoir le total TVA à 5,5 et le le total TVA à 19,6 par exemple dans les fichiers exportés ? Merci Link to comment Share on other sites More sharing options...
wicem Posted November 14, 2011 Share Posted November 14, 2011 Bonjour j'ai essayé de rajouter le commentaire de transport dans le csv dans le fichier exportorders.php j'ai rajouté cette ligne dans l'array tables ), array( 'n'=>'`other` AS aiother', 'l'=>$this->l('Invoice Comment') ) mais ca na pas changé grand chose quelqu'un parmi vous sait comment le rajouter Aussi est ce que vous savez comment mettre des champs specifiques par defaut pour l'extraction sans avoir a selectionner chaque fois ce qu'on veut extraire. j'ai essayé de rajouter des checked par defaut mais j'ai pas su ou le faire. mercii Link to comment Share on other sites More sharing options...
Sam59 Posted December 14, 2011 Share Posted December 14, 2011 Est-ce qu'il ne serait pas envisageable, depuis excel par exemple, d'avoir une connexion type ODBC à la BDD prestashop ? Cela permettrait de formatter son format dans excel et d'actualiser les données... Bonne piste ou pas ? Link to comment Share on other sites More sharing options...
crystals-services Posted April 17, 2013 Share Posted April 17, 2013 Bonjour pour infos voila un module d' Export commande prestashop assez complet compatible 1.4 Cordialement; Link to comment Share on other sites More sharing options...
imadelahdal Posted July 12, 2013 Share Posted July 12, 2013 Bonjour Je galere à rajouter le "PRODUCT NAME " de la table ps_order_detail. voici mon code . <?php class ExportCommandes extends Module { function __construct() { $this->name = 'exportcommandes'; $this->tab = 'Export'; $this->version = 1.0; parent::__construct(); $this->displayName = $this->l('Export commandes'); $this->description = $this->l('Module d\'exportation des commandes.'); } function install() { if (!parent::install()) return false; } function getContent() { $this->_html = '<hr><h2>'.$this->displayName.'</h2>'; $this->_html.= '<p>'.$this->l('Ce module permet d\'exporter toutes les commandes validées dans un fichier CSV.').'</p>'; if (isset($_POST['download'])) { $sql="SELECT o.id_order AS 'Num commande', c1.id_customer AS 'Num client', prs_product.id_product AS 'id_produit', prs_product.reference AS 'reference', p.name AS 'Produit', r.quantity AS 'Quantite', prs_order_detail.product_name AS 'Taille' a1.lastname AS 'Nom', a1.firstname AS 'Prenom', a1.address1 AS 'Addresse de facturation', a1.address2 AS 'Addresse de facturation 2', a1.postcode AS 'Code postal', a1.city AS 'Ville', y1.name AS 'Pays de facturation', a1.phone AS 'Telephone fixe facturation', a1.phone_mobile AS 'Telephone mobile facturation', c1.email AS 'Email', CONCAT_WS(' ',a2.lastname, a2.firstname) AS 'Destinataire', a2.address1 AS 'Addresse 1', a2.address2 AS 'Addresse 2', a2.postcode AS 'CP', a2.city AS 'Commune', n.iso_code AS 'Pays', a2.phone AS 'Telephone', a2.other AS 'Instructions' FROM "._DB_PREFIX_."customer c1, "._DB_PREFIX_."customer c2, "._DB_PREFIX_."address a1, "._DB_PREFIX_."address a2, "._DB_PREFIX_."country_lang y1, "._DB_PREFIX_."country_lang y2, "._DB_PREFIX_."country n, "._DB_PREFIX_."product, "._DB_PREFIX_."product_lang p, "._DB_PREFIX_."cart_product r,"._DB_PREFIX_." order_detail, "._DB_PREFIX_."orders o WHERE o.valid=1 AND o.id_order = prs_order_detail_.id_order AND o.id_address_invoice=a1.id_address AND o.id_address_delivery=a2.id_address AND o.id_cart = r.id_cart AND r.id_product = p.id_product AND p.id_product = prs_product.id_product AND p.id_lang=1 AND a1.id_country = y1.id_country AND a2.id_country = y2.id_country AND y1.id_lang=1 AND y2.id_lang=1 AND a1.id_customer=c1.id_customer AND a2.id_customer=c2.id_customer AND a2.id_country=n.id_country ORDER BY o.id_order ASC"; $orderlist = Db::getInstance()->ExecuteS($sql); $file = fopen(dirname(__FILE__).'/export.csv', 'w'); $firstline = "Num commande;Num client;id_produit;reference;Produit;Quantite;Taille;Nom;Prenom;Addresse de facturation;Addresse de facturation 2;Code postal;Ville;Pays de facturation;Telephone fixe facturation;Telephone mobile facturation;Email;Destinataire;Addresse 1;Addresse 2;CP;Commune;Pays;Telephone;Instructions"; fwrite($file, $firstline."\r\n"); foreach($orderlist AS $orderline){ fwrite($file, implode(';', $orderline)."\r\n"); } fclose($file); Tools::redirect('modules/exportcommandes/export.csv'); } else { $this->_html .= '<form method="post"><input type="submit" name="download" value="'.$this->l('Exporter le fichier').'" /></form>'; $this->_html.=' <h3 style="margin-top:2em;">'.$this->l('Explication de quelques champs :').'</h3> <dl> <dt><i class="champ">'.$this->l('Num commande').'</i> :</dt><dd style="padding: 0.2em 0 0.6em 2em;">'.$this->l('Identifiant unique de la commande').'</dd> <dt><i class="champ">'.$this->l('Civilité').'</i> :</dt><dd style="padding: 0.2em 0 0.6em 2em;">'.$this->l('(1/2) 1 si le client est un homme – 2 si le client est une femme &ndash 9 si non renseigné').'</dd> <dt><i class="champ">'.$this->l('Newsletter').'</i> '.$this->l('et').' <i class="champ">'.$this->l('Newsletter groupe').'</i> :</dt><dd style="padding: 0.2em 0 0.6em 2em;">'.$this->l('(0/1) 0 si non inscrit – 1 si inscrit').'</dd> <dt><i class="champ">'.$this->l('Destinataire').'</i> '.$this->l('et colonnes suivantes').' :</dt><dd style="padding: 0.2em 0 0.6em 2em;">'.$this->l('Coordonnées de livraison').'</dd> </dl> '; $this->_html .= '<hr>'; return $this->_html; } } } ?> Quelqu'un ? merci Link to comment Share on other sites More sharing options...
Recommended Posts