Jump to content

requête SQL pour faire un inventaire


wizwill

Recommended Posts

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

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

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 by wizwill (see edit history)
Link to comment
Share on other sites

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.

Capture.JPG

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

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

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

  • 9 months later...
  • 1 year later...

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

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

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

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. 

 

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 4 months later...

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

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...