Bonjour à tous,
Cette requête doit, par fournisseur, compter les produits qui ont besoin d'être réapprovisionnés.
Il y a 4 paramètres: le stock, le stock mini, le stock idéal, la quantité attendue.
La condition 1 est que le stock soit inférieur au seuil mini.
La seconde condition est que, si la condition 1 est remplie, alors le besoin correspond au stock idéal - le stock réel - la quantité attendue.
Exemple: stock 0 - stock mini 6 - stock idéal 10 - quantité attendue 4.
Le besoin pour atteindre le stock idéal est de 10 mais nous en attendons 4, il faudra en commander 6.
Ma requête:
Précision même si c'est assez clair et logique:
quantity est le stock
warning_stock_level est le stock mini d'alerte
ideal_stock_level est le stock idéal
qty_expected est la quantité attendue.
Les résultats sont faux. Je pense que le AND pp.ideal_stock_level - (s.quantity + pop.qty_expected) > 0 cloche mais je ne trouve pas la solution. Je regarde du côté de IF et IFNULL mais je ne sais pas utiliser ces fonctions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT COUNT(pop.product_id) as NB, p.id_supplier FROM ps_stock_available s LEFT JOIN ps_bms_procurement_product pp ON s.id_product = pp.prestashop_id LEFT JOIN ps_product p ON pp.prestashop_id = p.id_product LEFT JOIN ps_bms_procurement_purchase_order_product pop ON pop.product_id = pp.product_id LEFT JOIN ps_bms_procurement_purchase_order ppo ON ppo.supplier_id = p.id_supplier WHERE s.quantity < pp.warning_stock_level AND pp.ideal_stock_level - (s.quantity + pop.qty_expected) > 0 GROUP BY p.id_supplier
Je vous remercie d'avance pour votre aide précieuse.
Partager