Jump to content

[ERREUR] Résa et Calcul du stock réel


Paco112

Recommended Posts

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

  • 2 weeks later...
  • 1 year later...

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

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