Jump to content
ChDUP

multiboutique et partage des quantités

Recommended Posts

Bonjour à tous.

 

Je suis sur Prestashop 1.5.3.1

Une boutique activée dans un groupe de boutique.

 

Je souhaite aujourd'hui mettre en place une seconde boutique, qui reprendra une des catégorie de la première.

Or, je m'aperçois dans la config du groupe de boutique que l'option "Partager les quantités disponible à la vente" est réglée sur NON.

Bien entendu, je veux que les stocks soient partagés sur les 2 boutiques.

Le problème est que si je passe cette option à OUI, il est indiqué dessous "Si vous changez cette option, les quantités des boutiques du groupe seront remises à 0."

Impossible bien sur de tout remettre à 0 ! 5000 produits, avec de nombreuses décclinaisons.

 

Je crée donc un autre groupe, en prenant soin d'activer l'option de partage des quantités.

J'essaie de transferer ma première boutique vers ce groupe, mais impossible : "Vous ne pouvez pas changer le groupe de boutiques car une de ses options de partage est activée."

 

:angry:

Alors comment puis-je faire pour mettre en place ma seconde boutique ?

 

merci !

Share this post


Link to post
Share on other sites

Bonjour,

 

pour pouvoir faire ce que vous voulez, il faut ruser... il est clair que de remettre le stock à 0 lorsqu'on active le partage de stock est une aberration, cela à été très mal pensé.. ou pas pensé du tout, je ne sais pas comment les devs ont pu imaginer une telle façon de procéder, et le ou les chefs de projet (si il y en a chez prestashop) approuver cette façon de faire.

 

C'est pourquoi lorsque je fais ça.. j'exporte d'abord le stock de la boutique depuis phpmyadmin pour le réinjecter sur le nouveau système de stock global : INSERT INTO `ps_stock_available` VALUES

('1','10','0','1','0','31','0','2'), ('2','11','0','1','0','28','0','2'),etc...

 

Ce qui serait mieux pour remettre le stock à jour serait d'avoir simplement une case à cocher : "OUI, je désire conserver l'état du stock"

 

Aussi, notez que pour pouvoir partager les stocks, les boutiques doivent être dans le même groupe.

 

Cordialement,

Zen

Share this post


Link to post
Share on other sites

Quitte à exporter autant le faire correctement, c'est à dire le faire dans le but de réimporter la boutique dans un Magento qui saura bien mieux gérer le multiboutique... Là c'est comme tu dis chDUP, une vraie galère ! Bon courage, tu as tout mon soutien avec encore une fonctionnalité pensée à moitié !

  • Like 1

Share this post


Link to post
Share on other sites

exporter les tables concernant les stocks pour les reinjecter ensuite me parait compliqué puisque différentes tables gérent cela suivant les produits qui ont ou n'ont pas des déclinaisons.

Je sors justement d'un import de produits d'une part depuis une vieille version de Presta, de l'autre depuis un e-commerce propriétaire et ça a été une grosse galère au niveau de ces stocks de déclinaisons.

 

J'envisage de cherche du côté du processus d'activation de cette fonctionnalité de partage de stock afin de "court-circuiter" le moment où les stocks sont remis à 0.

Je ne vois pas trop en quoi cela poserait problème de ne pas le faire ?

Share this post


Link to post
Share on other sites

dans controllers/admin/AdminShopGroupController.php

J'ai commenté, vers le bas du fichier les 2 lignes

StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);

Ce qui empêche les stocks de se remettre à 0.

Ensuite j'ai basculé côté admin le groupe en "partage des quantités disponibles à la vente".

Puis, table stock_available, j'ai passé tous les id_shop à 0 et les id_group_shop à 1 (id de mon groupe)

Suite à ça tout semble bien fonctionner.

 

J'ai du aussi gruger pour importer les produits de toute une catégorie sur la 2nde boutique, ce qui ne semble pas possible dans le fonctionnement standard.

Share this post


Link to post
Share on other sites

dans controllers/admin/AdminShopGroupController.php

J'ai commenté, vers le bas du fichier les 2 lignes

StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);

Ce qui empêche les stocks de se remettre à 0.

Ensuite j'ai basculé côté admin le groupe en "partage des quantités disponibles à la vente".

Puis, table stock_available, j'ai passé tous les id_shop à 0 et les id_group_shop à 1 (id de mon groupe)

Suite à ça tout semble bien fonctionner.

 

J'ai du aussi gruger pour importer les produits de toute une catégorie sur la 2nde boutique, ce qui ne semble pas possible dans le fonctionnement standard.

 

Un grand merci ChDUP pour l'astuce sur les quantités !!!

Pour les catégories et produits, j'ai tout sélectionné (j'ai fait un clone pour une autre langue) et tout s'est correctement partagé.

Share this post


Link to post
Share on other sites

Bonjour,

Merci ChDUP pour cette astuce !!!

Cela dit, ne pourrait-on pas mettre la valeur par défaut à 0 pour id_shop et 1 pour id_group_shop de façon à ce que lors de l'incrémentation de nouveau produit, on ne soit pas obligé de retourner dans la base de données ???

Share this post


Link to post
Share on other sites

dans controllers/admin/AdminShopGroupController.php

J'ai commenté, vers le bas du fichier les 2 lignes

StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);
Ce qui empêche les stocks de se remettre à 0.

Ensuite j'ai basculé côté admin le groupe en "partage des quantités disponibles à la vente".

Puis, table stock_available, j'ai passé tous les id_shop à 0 et les id_group_shop à 1 (id de mon groupe)

Suite à ça tout semble bien fonctionner.

 

J'ai du aussi gruger pour importer les produits de toute une catégorie sur la 2nde boutique, ce qui ne semble pas possible dans le fonctionnement standard.

 

 

 

Bonjour ChDUP, 

 

Je suis entrain de basculer mon shop en PS1.5.5 et bientôt en PS1.5.5, j'arrive au meme probleme que tout le monde 

lors de la création de la 2eme boutique les quantités de toutes les autres boutiques crées les quantités passent à 0 (Incroyable que Prestashop n'est pas pensé a cela! )

 

Est ce que ton astuce est toujours a jour ? car j'ai aucune envie de me taper la remise de quantités 1 par 1 pour tout mon catalogue.

 

Merci beaucoup

Matias

Share this post


Link to post
Share on other sites

Je ne sais pas mais je dirai que probablement, oui.

De toute façon, save de la base de données avant toute chose, et vous pouvez tester.

Share this post


Link to post
Share on other sites

Bonjour,
Je me permets de vous écrire car apparemment vous avez résolu le problème des stocks qui se remettent à 0 lors du passage en multiboutique.
Qu'entendez- vous par "J'ai commenté vers le bas du fichier les 2 lignes StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);

1- ces lignes sont dans mon fichier ça ne fonctionne pas.
2 - Je les ai supprimé, et ça ne fonctionne pas non plus.

Merci pour votre aide si vous avez le temps de me répondre.
 

dans controllers/admin/AdminShopGroupController.php
J'ai commenté, vers le bas du fichier les 2 lignes

StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);
Ce qui empêche les stocks de se remettre à 0.
Ensuite j'ai basculé côté admin le groupe en "partage des quantités disponibles à la vente".
Puis, table stock_available, j'ai passé tous les id_shop à 0 et les id_group_shop à 1 (id de mon groupe)
Suite à ça tout semble bien fonctionner.

 

Share this post


Link to post
Share on other sites

geys, ces 2 lignes lancent la fonction de remise à 0 des quantités, si vous les avez supprimé, il est surprenant que vos stocks soient remis à 0.

Il faudrait voir si vous n'avez pas un override de ce controller dans /override

Share this post


Link to post
Share on other sites

geys, ces 2 lignes lancent la fonction de remise à 0 des quantités, si vous les avez supprimé, il est surprenant que vos stocks soient remis à 0.

Il faudrait voir si vous n'avez pas un override de ce controller dans /override

oups, qu'est qu'un override ?

Share this post


Link to post
Share on other sites

c'est un fichier qui "surcharge" un autre afin de modifier certains fonctionnalités sans toucher le fichier d'origine.

Regardez si vous avez un fichier dans override/controllers/admin/AdminShopGroupController.php

Share this post


Link to post
Share on other sites

Non, je n'ai pas ce fichier.

 

En plus j'ai fait une mise à jour de mon presta 1.4 vers 1.6 (car le 1.4 ne fonctionne pas en multiboutique) et ça rame trop. Mes pages s'affichent en 10 secondes. Beaucoup trop pour du E-commerce.

Je viens de changer pour un serveur dédié mais rien n'y fait. Ca rame...

 

Je crois que je vais laisser tomber cette idée de multiboutique. Dommage cela m'aurait fait gagner un temps précieux.

Merci en tous cas pour vos réponses.

Share this post


Link to post
Share on other sites

ma modif concernait les versions 1.5.x

si vous êtes en 1.6, il faut décortiquer le code

Share this post


Link to post
Share on other sites
Pour Prestahsop 1.6 ligne 335 du /controllers/admin/AdminShopGroupController.php

commenter les deux lignes qui commence par StockAvailable juste en dessous de "//Reset available quantitites"'  puis au niveau de phpmyadmin exécuter la requête suivante:

UPDATE `ps_stock_available` SET `id_shop`=0,`id_shop_group`=1

ps: toujours faire un backup des vos données sql au moins les tables que vous impactez.

 

 

 

Share this post


Link to post
Share on other sites

Je suis en 1.5.6 et je passe une "grosse" boutique en multi-boutique... C'est un truc de fou cette remise à 0 des stocks si on active le partage des stocks...

 

Merci à ChDUP pour l'astuce... J'espère que ça tient toujours

Share this post


Link to post
Share on other sites

 

Pour Prestahsop 1.6 ligne 335 du /controllers/admin/AdminShopGroupController.php

commenter les deux lignes qui commence par StockAvailable juste en dessous de "//Reset available quantitites"'  puis au niveau de phpmyadmin exécuter la requête suivante:

UPDATE `ps_stock_available` SET `id_shop`=0,`id_shop_group`=1

ps: toujours faire un backup des vos données sql au moins les tables que vous impactez.

 

 

Bonjour,

 

la requête est à réaliser à quel moment ?

 

Merci !

Share this post


Link to post
Share on other sites

 

Pour Prestahsop 1.6 ligne 335 du /controllers/admin/AdminShopGroupController.php

commenter les deux lignes qui commence par StockAvailable juste en dessous de "//Reset available quantitites"'  puis au niveau de phpmyadmin exécuter la requête suivante:

UPDATE `ps_stock_available` SET `id_shop`=0,`id_shop_group`=1

ps: toujours faire un backup des vos données sql au moins les tables que vous impactez.

 

 

Désolé de déterrer un post vieux de 1 an, mais bon, comme trop souvent avec Prestashop les problèmes demeurent, surtout quand ils relèvent de l’aberration.

 

Dans mon fichier j'ai deux fonctions:

	protected function afterAdd($new_shop_group)
	{
		//Reset available quantitites
		StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);
	}

	protected function afterUpdate($new_shop_group)
	{
		//Reset available quantitites
		StockAvailable::resetProductFromStockAvailableByShopGroup($new_shop_group);
	}

a) Dois-je commenter les deux?

 

B) Une fois le partage effectué, dois-je décommenter les fonctions?

 

D'avance merci,

Mathieu.

 

EDIT: a) évidemment, suis-je bête...  B) pas la peine.

Edited by Mat_D1245 (see edit history)

Share this post


Link to post
Share on other sites

... ceci dit, j'imagine que l'on peut aussi modifier dans classes/stock/StockAvailable.php la fonction :

	public static function resetProductFromStockAvailableByShopGroup(ShopGroup $shop_group)
	{
		if ($shop_group->share_stock)
		{
			$shop_list = Shop::getShops(false, $shop_group->id, true);

			if (count($shop_list) > 0)
			{
				$id_shops_list = implode(', ', $shop_list);

				return Db::getInstance()->execute('
					DELETE FROM '._DB_PREFIX_.'stock_available
					WHERE id_shop IN ('.$id_shops_list.')'
				);
			}
		}
		else
		{
			return Db::getInstance()->execute('
				DELETE FROM '._DB_PREFIX_.'stock_available
				WHERE id_shop_group = '.$shop_group->id
			);
		}
	}

Pour que les gens qui comme moi ont plusieurs groupes ne soient pas obligés de repasser en plus par le sql.

Je ne l'ai pas encore testée, mais la fonction pourrait ressembler à ceci:

	public static function resetProductFromStockAvailableByShopGroup(ShopGroup $shop_group)
	{
		if ($shop_group->share_stock)
		{
			$shop_list = Shop::getShops(false, $shop_group->id, true);

			if (count($shop_list) > 0)
			{
				$id_shops_list = implode(', ', $shop_list);

				return Db::getInstance()->execute('
					UPDATE  '._DB_PREFIX_.'stock_available
					SET id_shop=0, id_shop_group='.$shop_group->id.' 
          WHERE id_shop IN ('.$id_shops_list.')'
				);
			}
		}
		else
		{
			return Db::getInstance()->execute('
				DELETE FROM '._DB_PREFIX_.'stock_available
				WHERE id_shop_group = '.$shop_group->id
			);
		}
	}

A tester, mais surtout faire un backup avant.

 

EDIT: je suis sur Presta 1.6.0.14

Edited by Mat_D1245 (see edit history)

Share this post


Link to post
Share on other sites

Bonjour tout le monde.

Pour ma part mon client à faire la "bourde" d'activer l'option et s'est retrouvé avec les stock à 0...

J'ai trouvé un petite solution

j'ai envoyé les requetes SQL suivante.

DELETE FROM `ps_stock_available` WHERE `id_shop` > 0

Pour éviter le dupplicate.

 

Puis ça

UPDATE `ps_stock_available` s INNER JOIN `ps_product_attribute` attr
ON s.id_product_attribute = attr.id_product_attribute
SET s.quantity = attr.quantity
WHERE s.id_product = attr.id_product 
AND s.id_product_attribute = attr.id_product_attribute

Pour mettre à jour les quantités du stock des produits

et celle la:

SELECT s.id_product as stock_id_product, s.id_product_attribute as stock_id_attribute, s.quantity as stock_quantity, 
attr.id_product as attr_id_product, attr.id_product_attribute as attr_id_attribute, attr.quantity as attr_quantity
FROM `ps_stock_available` as s, `ps_product_attribute` as attr
WHERE s.id_product_attribute = attr.id_product_attribute AND s.id_product = attr.id_product

Pour les attributs. 

 

Tout est bon pour moi.

bon courage à tous !

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More