Timactive Posted November 28, 2013 Share Posted November 28, 2013 (edited) Bonjour, Récemment je me suis aperçu que j'avais des doublons de mouvement de stock incohérent. J'ai donc analysé le code pour comprendre d'ou provenait ces doublons. Afin de cerner les commandes que j'ai remboursé et les commandes retournés et traités. Je réalise l'opération suivante : Remboursement partiel : sélection du produit A puis j'indique la quantité et réinjecté dans les stocks. par exemple Produit A : quantité : 1 réinjecté dans le stock : oui. A ce niveau un mouvement de stock est bien créé et la quantité est bien réinjecté. Puis pour indiqué que ma commande est bien remboursé, je passe la commande à remboursé. Or un deuxième mouvement de commande est créé. En effet après analyse du code, quand un statut passe de l'état "shipped" à non "shipped", un mouvement de stock est créé sur tous les produits de la commande que les produits soit déjà déstockés ou non. Ainsi les stocks sont erronés car doublon à tous les couts! Ce problème ce produit aussi pour le retour. Pourriez vous me confirmé que c'est un bug fonctionnel, ainsi je réalise la correction et je commit sur github. La version de Prestashop est la 1.5.6.0, pas de correction sur le trunk constaté. La classe concernée est OrderHistory.php // @since 1.5.0 : if the order is being shipped and this products uses the advanced stock management : // decrements the physical stock using $id_warehouse if ($new_os->shipped == 1 && $old_os->shipped == 0 && Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && Warehouse::exists($product['id_warehouse']) && $manager != null && ((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement($product['product_id']))) { // gets the warehouse $warehouse = new Warehouse($product['id_warehouse']); // decrements the stock (if it's a pack, the StockManager does what is needed) $manager->removeProduct( $product['product_id'], $product['product_attribute_id'], $warehouse, $product['product_quantity'], Configuration::get('PS_STOCK_CUSTOMER_ORDER_REASON'), true, (int)$order->id ); } Edited November 28, 2013 by Timactive (see edit history) Link to comment Share on other sites More sharing options...
Vincent Terenti Posted November 28, 2013 Share Posted November 28, 2013 Bonjour Timeactive, Merci de votre retour, je viens de tester et effectivement il y a un soucis. Je suppose que vous êtes l'auteur de ce ticket : http://forge.prestashop.com/browse/PSCFV-11146 Je l'ai assigné à un de nos développeurs, il va être traité. Bien cordialement, Link to comment Share on other sites More sharing options...
Timactive Posted November 28, 2013 Author Share Posted November 28, 2013 Merci, pour votre réactivité. Pourriez vous m'informer de la règle de gestion qui sera choisit dans la correction? c'est à dire si un test sera effectué si oui ou non le produit est retourné ou remboursé alors aucun mouvement. Link to comment Share on other sites More sharing options...
Vincent Terenti Posted November 29, 2013 Share Posted November 29, 2013 Bonjour Timeactive, Nous allons faire un sorte que le statut "refund" ne refasse pas un mouvement de stock suppémentaire. Bien cordialement, Link to comment Share on other sites More sharing options...
Timactive Posted November 29, 2013 Author Share Posted November 29, 2013 (edited) J'ai aussi appliqué ce correctif en attendant votre retour. Cependant je test aussi pour le statut annulé en fait le problème c'est clairement ce test. En effet nous avons tous les moyens de destocker les produits tous le long du workflow de commande, retour de produit remboursement partiel remboursement standard si statut non shipped. Je me permets d'indiquer mon avis personnel, peut être que je loupe un truc ou un cas particulier mais je pense que mettre à jour le stock si le statut passe d'un état shipped à un état non shipped est une erreur mais ca reste mon avis. En effet risque d'erreur, d'incompréhension, de transparence, doublon toujours possible exemple le statut annulé. Imaginons je recois un article en retour. Je décide sur ma commande de réinjecter la commande dans le stock en appliquant un retour, C'est tracé, c'est propre, tout est ok. Maintenant je souhaite réaliser un remboursement partiel, afin d'informer les membres charger du picking dans mon équipe que tel et tel produit est bien remboursé. J'applique un remboursement et je réalise un avoir pour ma comptat c'est important. Troisièment, je m'appercois que tous les produits sont remboursés et retournés, en claire c'est annulé. Je passe la commande à annulé. Et là bam, je me retrouve dans le même cas nominal indiqué dans mon premier message : mouvement de stock en double, etc... En claire il faudrait au pire des cas une confirmation ou sinon pas faire de mouvement. Après mettre à jour le stock disponible dans le cadre ou la commande na pas passé le statut "non shipped" ca c'est logique. Edited November 29, 2013 by Timactive (see edit history) Link to comment Share on other sites More sharing options...
Vincent Terenti Posted November 29, 2013 Share Posted November 29, 2013 Merci de ton retour, Globalement nous sommes daccord avec toi, nous allons chercher une solution et traiter ce problème rapidement. Bien cordialement, 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