Paco112 Posted February 2, 2017 Share Posted February 2, 2017 (edited) Bonjour, Il s'agit d'une erreur que j'ai déjà signalé il y a plusieurs mois mais comme je vois qu'aucun changement n'a été effectué sur les dernières version de prestashop, y compris la version 1.7, je ré-expose ce qui me semble une ÉNORME erreur de stock lorsque la gestion de stock avancé est activée. Tout d'abord convenons ensemble d'une chose : Les statuts de type "En attente de paiement" dont l'option "Considérer la commande associée comme validée" n'est PAS coché NE DOIVENT PAS RÉSERVER LE STOCK. Sinon il serait assez facile de flinguer le stock d'une boutique en passant de multiples commandes en paiement par chèque/virement. Hors une requêtes SQL démontre que prestashop réserve le stock dans TOUS LES CAS sauf si la commande est dans un statuts expédié, annulé ou en erreur. La requête sql en question se trouve dans le fichier StockManager.php dans la fonction getProductRealQuantities. Cette requête à pour but de comptabiliser les quantités à réserver qui ne sont pas encore sortie du stock physique. $query->where('os.shipped != 1'); $query->where('o.valid = 1 OR (os.id_order_state != '.(int)Configuration::get('PS_OS_ERROR').' AND os.id_order_state != '.(int)Configuration::get('PS_OS_CANCELED').')'); Analysons cette clause WHERE : 1 - Le status de la commande ne doit pas être expédié => ok tout va bien car dans ce statut les quantités sont sorties du stock physique et non donc plus lieu d’être réservés ! 2 - La commande doit être valide OU ne pas être dans un statuts annulé ou en erreur. Le problème se situe dans le OR de "o.valid = 1 OR" En effet si ma commande est en statuts "En attente de paiement par chèque" configuré pour ne pas considérer la commande comme valide et bien la quantité de chaque produit sera tout de même comptabilisé comme réservé car la seconde partie de la clause WHERE renverra TRUE ! Il faut donc remplacé le OR par AND pour corriger ce problème : "o.valid = 1 AND" Je comprends tout à fait cette requête d'un point de vue développeur 1 commande non annulé == réservation de stock. Mais d'un point de vue commerçant c'est totalement illogique. Je ne connais pas un seul commerçant qui réserve un stock pour un client dont il n'a aucune assurance qu'il va régler la commande ! De plus comme je l'ai dit plus haut cela veut dire qu'un robot peut très bien réservé l'intégralité du stock d'une boutique sans jamais payer. Ce problème existe sur toutes les versions de la 1.5 à la 1.7 ! Ma question est donc : Est ce que comportement est volontaire ? Si oui trouvez moi un commerçant qui trouve ce comportement logique alors qu'il est possible de créer des status de type "Acompte" lorsque l'on veut réellement réserver le stock. Edited February 2, 2017 by Paco112 (see edit history) Link to comment Share on other sites More sharing options...
Paco112 Posted February 15, 2017 Author Share Posted February 15, 2017 Comme d'habitude aucune personne de prestashop pour parler de ce problème ? Je me demande vraiment à quoi sert la section rapport de bug de ce forum ! Link to comment Share on other sites More sharing options...
[email protected] Posted August 10, 2018 Share Posted August 10, 2018 ca date un peu mais je suis passer en Multi entrepôt y a deux jours , bref moi mon truc c'est que j'ai même pas l'idée de stock réel soit décrémenter pour faire une réservation , sur le coups je cherche a modifié les statu afin qui decrement a la fois le stock utilisable et le stock physique et réel . avez vous une idée a ce sujet ? 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