Jump to content

Remboursement et stock avancé doublon mouvement


Recommended Posts

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

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 by Timactive (see edit history)
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...