wizwill Posted March 30, 2018 Share Posted March 30, 2018 Bonjour la communauté, Je souhaite réaliser un inventaire des stocks pour ma fin d'année fiscale. Je cherche une requête SQL à utilisé dans menu GESTIONNAIRE SQL de mon Prestashop 1.7 mon prefice est rm_ et non pas ps_ Les diverses requêtes que j'ai pu trouver me font une erreur 500 ou alors une page vide à l'exportation .csv Il me faudrais en gros : ID produit nom produit quantité stock prix d'achat HT prix de vente TTC nom du fabricant référence produit produit actif 0/1 merci de votre aide. Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 L'inventaire des stocks se fait au 31 décembre, non ? Ajustez les préfixes et l'id_lang: SELECT if(m.name != '', m.name, '-') as Fabricant, pl.name as Produit, p.reference as Reference, if(sa.quantity is null, 0, sa.quantity) as `Quantité`, '' as `Réel`, if(p.active = 0,'Non','Oui') as `Activé`, round(ps.wholesale_price,2) as `Prix Achat`, round(ps.price,2) as `Prix Vente`, if(sa.quantity is null, 0, round(sa.quantity*ps.wholesale_price,2)) as `Total Achat`, if(sa.quantity is null, 0, round(sa.quantity*ps.price,2)) as `Total Vente` FROM ps_product p INNER JOIN ps_product_shop ps ON (ps.id_product = p.id_product) INNER JOIN ps_product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN ps_stock_available sa ON (p.id_product = sa.id_product) LEFT JOIN ps_manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE pl.id_lang = 2 ORDER BY m.name ASC, pl.name ASC; Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 Merci, en effet c'est souvent en fin d'année mais nous avons fait le choix de fin mars. concernant le préfixe dois-je mettre rm_ à la place de tous les ps_ ? Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 Oui Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 (edited) sur une requete simple cela fonctionne comme : SELECT email FROM rm_customer mais dès que je demande plus d'info : page vide SELECT p.id_product, pl.name, p.quantity, p.id_manufacturer, p.reference, p.wholesale_price, p.price, p.active FROM rm_product p Edited March 30, 2018 by wizwill (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 Où faites-vous votre requete ? Si vous utilisez le sql manager du BO, cette requete fonctionne parfaitement et vous sort le csv correspondant. Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 (edited) c'est bien dans le SQL MANAGER du Backoffice. voici une capture ci-jointe Seule la requête du haut fonctionne, les 2 autres n'ont aucune données Il me semble que cela pourrait venir de la précision "rm-product p" du faite que je ne soit plus en préfxe "ps_" , c'est possible ? Excusez mon faible niveau je n'opère que par déduction et observation. Edited March 30, 2018 by wizwill (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 Non, aucun rapport p est un alias Que la requete n°3 ne vous donne rien, c'est normal, elle est incomplète et pl.name vient de la table product_lang que vous n'intégrez pas Pouvez-vous me coller ici ma requete modifiée par vos soins svp ? Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 SELECT if(m.name != '', m.name, '-') as Fabricant, pl.name as Produit, p.reference as Reference, if(sa.quantity is null, 0, sa.quantity) as `Quantité`, '' as `Réel`, if(p.active = 0,'Non','Oui') as `Activé`, round(ps.wholesale_price,2) as `Prix Achat`, round(ps.price,2) as `Prix Vente`, if(sa.quantity is null, 0, round(sa.quantity*ps.wholesale_price,2)) as `Total Achat`, if(sa.quantity is null, 0, round(sa.quantity*ps.price,2)) as `Total Vente` FROM rm_product p INNER JOIN rm_product_shop ps ON (ps.id_product = p.id_product) INNER JOIN rm_product_lang pl ON (pl.id_product = p.id_product) LEFT JOIN rm_stock_available sa ON (p.id_product = sa.id_product) LEFT JOIN rm_manufacturer m ON (m.id_manufacturer = p.id_manufacturer) WHERE pl.id_lang = 2 ORDER BY m.name ASC, pl.name ASC; voici les modifications que j'ai apporté à votre requête. Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 ok La langue 2 existe sur votre shop ? Il y a 2 heures, Eolia a dit : Ajustez les préfixes et l'id_lang: Link to comment Share on other sites More sharing options...
P i l o u Posted March 30, 2018 Share Posted March 30, 2018 (edited) Bonjour, Je confirme que la requête de wizwill fonctionne bien, une fois le bon id_lang choisi. Y a-t-il possibilité d'ajouter la déclinaison svp ? Edited March 30, 2018 by P i l o u (see edit history) Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 juste le FR je suppose que je doit mettre le 1 ? pl.id_lang = 1 Link to comment Share on other sites More sharing options...
Eolia Posted March 30, 2018 Share Posted March 30, 2018 dans la page des langues activées vous avez l'id (1er chiffre de chaque ligne) Donc si c'est 1, oui vous mettez 1 Link to comment Share on other sites More sharing options...
wizwill Posted March 30, 2018 Author Share Posted March 30, 2018 génial Eolia, merci beaucoup pour ton aide très précieuse. Cela fonctionne très bien. Link to comment Share on other sites More sharing options...
vins03 Posted January 3, 2019 Share Posted January 3, 2019 Bonjour, désolé de ressortir ce topic mais ca m'inéresse, par contre je n'arrive pas à le faire fonctionner avec PS 1.7.5 j'ai une erreur CHecked form... je suis un bille en SQL.... désolé. Link to comment Share on other sites More sharing options...
couillaler Posted January 18, 2020 Share Posted January 18, 2020 Idem... avec PS 1.7.5.1 et cette même requête pour l'inventaire annuel. J'ai bien mis le prefixe des tables de ma BDD à moi. Mais j'ai aussi cette erreur : Erreur non définie "checkedForm" Dommage, ça semblait bien simple, et j'ai pas trop envie d'acheter un module type https://www.prestatoolbox.fr/outils-administration/201-export-du-catalogue-au-format-csv.html ou https://addons.prestashop.com/fr/gestion-stocks-fournisseurs/29781-wk-gestion-inventaire.html?ab=1#seller qui me permettraient de faire l'inventaire, mais qui me serviraient plus ou moins qu'une fois par an, à moins de me créer de nouveaux besoins... Si quelqu'un a la solution pour effectuer la requête ci-dessus sur une boutique PS 1.7.5.1, je suis preneur. Antoine Link to comment Share on other sites More sharing options...
couillaler Posted January 22, 2020 Share Posted January 22, 2020 Hello, En fouillant ce forum, et en adaptant la requête trouvée à ma propre BDD (je ne voulais que les produits actifs, et je n'utilise pas le préfixe pa défaut ps_ ), voici la requête SQL que j'ai utilisé sur mon PS 1.7.5.1 pour comptabiliser la valeur de mon inventaire. Et ça fonctionne !!! Youpi ! 😎 J'ai par ailleurs utilisé le module gratuit Big Data qui permet de tester facilement ses requêtes SQL, et de faire des exports CSV tout aussi simplement : https://www.prestashop.com/forums/topic/504883-big-data-récupérer-des-données-sql-en-csv-facilement/ Cette requête SQL liste les produits actifs de mon stock, et en extrait certaines informations, toutes ne sont pas nécessaires, on peut ajouter ou supprimer facilement (pour ceux qui savent faire) les colonnes nécessaires ou non. Moi, ça me convient comme ça. Je précise que je n'ai pas de déclinaisons de produits, j'ai une seule boutique, un seul entrepôt. Le module Big Data permet un export facile en CSV. Une fois dans Excel (ou équivalent), il ne reste qu'à remplacer les points par des virgules sur la colonne des prix fournisseurs (pour Excel FR en tout cas, il n'aime pas trop les points). Ensuite, appliquez une formule dans une nouvelle colonne type = "=H2*G2" où la cellule H2 est le prix fournisseur, et G2 la cellule quantité. On copie la formule sur toutes les lignes de son tableau, un fait le total, et on a la valeur totale de son inventaire! 🧚♀️ C'est simple et ne prend que quelques minutes! Bien sûr, on pourrait optimiser cette requête SQL, ou les manips à faire dans Excel, mais bon, je ne suis pas un spécialiste SQL, et au moins, je n'ai pas de module à acheter ! Voici la requête utilisée (à noter, remplacer le préfixe ps_ des tables par celui utilisée par votre boutique si ce n'est pas celui-ci). Merci @Appolline pour la requête. Elle sera bien utile dans mon cas ! Je peux maintenant facilement faire mon inventaire comptable annuel. SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, p.reference, p.price, p.wholesale_price, p.reference, man.name, qp.quantity, pl.name, qp.quantity FROM ps_product p LEFT JOIN ps_stock_available qp ON (p.id_product = qp.id_product) LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) LEFT JOIN ps_category c ON (cp.id_category = c.id_category) LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product) LEFT JOIN ps_manufacturer man ON (man.name = p.id_manufacturer) WHERE pl.id_lang = 1 AND cl.id_lang = 1 AND p.id_shop_default = 1 AND c.id_shop_default = 1 AND p.active = 1 GROUP BY p.reference .Et comme le dit Appolline : "Voilà ! et de rien pour la requête c'est cadeau ! " Antoine 1 Link to comment Share on other sites More sharing options...
Jimmy Labuche Posted January 29, 2021 Share Posted January 29, 2021 Bonjour à tous, Je me permet de remonter ce fil très utile. J'ai un problème avec ces requêtes. Elles ne gèrent pas les déclinaisons. Comment peut ont faire la même chose mais en intégrant les déclinaisons ? et le prix d'achat de chaque déclinaisons ? Merci d'avance à tous. 1 Link to comment Share on other sites More sharing options...
olivierseos Posted April 15, 2021 Share Posted April 15, 2021 (edited) Bonjour, Merci pour le partage. Petite variante, vous avez une idée pour adapté le script à la présence de déclianaison ? Idem pour exclure les produits qui sont des packs de produits. Meric de votre aide. Edited April 15, 2021 by olivierseos (see edit history) Link to comment Share on other sites More sharing options...
math zerman Posted September 1, 2021 Share Posted September 1, 2021 Salut à la base j'étais venu ici pour chercher des infos, mais votre problème ça me dit quelque chose dans le module fait maison qu'on utilise j'avais changé quelque chose par ça -> SELECT OD.product_reference ( et ça me donnait bien la référence de la déclinaison ) Si jamais ça aide certain ! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now