albatore Posted March 26, 2013 Share Posted March 26, 2013 (edited) Bonjour à tous, Utilisant actuellement la version 1.5.3 j'ai remarqué un bug lorsque l'on dupplique une fiche produit. Les quantités retombent a zéro et ne sont plus sauvegardées comme dans les version 1.4 SI l'on creer une fiche avec par exemple 20 articles dispo, lors de la duplication de celle ci on se retrouve avec 0 produits c'est un peu embetant car on est obligé a chaque fois de re-rentrer pour chaque nouveaux produits la quantité désirée et si l'on ne fait pas attention on se retrouve avec des produits hors stock. Quelqu'un a -t il une solution pour remédié a se soucis Merci a tous d'avoir pris le temps de me lire Edited March 26, 2013 by albatore (see edit history) Link to comment Share on other sites More sharing options...
Pepitoww Posted March 26, 2013 Share Posted March 26, 2013 Bonjour, en allant voir du côté de la fonction processDuplicate() (l.466) de la classe controller AdminProduct, on s'apercoit en effet que les qantités ne sont pas prises en compte lors de la duplication. Pour remédier à celà, il faudrait réaliser une fonction dans la classe Product du même genre que <code>Product::duplicateTags($id_product_old, $product->id)</code> (visible dans la classe Product l.3365) qui, avec une simple requète SQL récupèrera la valeur de la quantité du produit à dupliquer... Inspirez-vous du code de la fonction duplicateTags. Cordialement Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 Merci pour votre réponse Pepitow, je vais aller voir ca, car devrait me faire gagner pas mal de temps. c'est dommage que les développeurs n'aient pas gardé cette fonction... Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 j'ai crée cette ligne supplémentaire apres la ligne des tag (l494) comme vous l'avez suggeré : && Product::duplicateQuantity($id_product_old, $product->id) La fiche est bien dupliquée mais les quantites sont toujours a zéro et ca m'affiche une erreur interne 500 Apparement la solution se trouve bien ici mais je dois faire une erreur quelque part je pense... Link to comment Share on other sites More sharing options...
Pepitoww Posted March 26, 2013 Share Posted March 26, 2013 (edited) Oui, enfaite la ligne que vous venez de rajouter fais appel à la fonction duplicateQuantity() présent dans la classe Product. Cette fonction n'existe pas, il faut la créer. C'est pour cela que dans mon précédent post je vous conseillais de vous inspirer de la fonction DuplicateTags(..) qui elle existe. Edit: quel mode de stockage utilisez-vous ? Edited March 26, 2013 by Pepitoww (see edit history) Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 je me disais aussi.... là par contre il va falloir que je me penche un peu plus dessus j'essai et je vous tient informé si j'y arrive Merci Link to comment Share on other sites More sharing options...
Pepitoww Posted March 26, 2013 Share Posted March 26, 2013 (edited) Je peux éventuellement vous donner un début de piste. Quel mode de stockage des quantités utilisez-vous ? (gestion stock avancé, global, manuel). A priori (d'après ce que je sais avec le domaine sur lequel je travaille, pour une gestion de stock manuelle) la quantité est celle de la table stock_available, du coup ce que je vous ai conseillé de faire me parait pas tout a fais correcte. En dupliquant un produit, apparement l'entrée au niveau de cette table se fait automatiquement, il faudrait je pense après la longue condition de processDuplicate, mettre à jour le champ quantity de cette table avec l'id de l'ancien produit avec une clause UPDATE. A tester car je ne peux vous confirmer l'exactitude de mes dires. Cordialement Edit: un problème que l'on pourrait rencontrer, serait de mettre à jour le champ quantity avant que l'entrée soit créer dans cette table, ce qui provoquerait une erreur. Il faudrait localiser où exactement cette entrée est ajoutée. Edited March 26, 2013 by Pepitoww (see edit history) Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 Je suis actuellement en gestion manuelle des quantité. vous etes apparement beaucoup plus calé que moi en ce domaine, je ne dis pas non pour un petit coup de pouce à l'occcasion Link to comment Share on other sites More sharing options...
Pepitoww Posted March 26, 2013 Share Posted March 26, 2013 (edited) Voili, voilou: $SQL = 'UPDATE '._DB_PREFIX_.'stock_available SET quantity = '.StockAvailable::getQuantityAvailableByProduct($id_product_old) .' WHERE id_product = '.$product->id ; if (!Db :: getInstance()->Execute($SQL)) { $this->errors[] = Tools::displayError('An error occurred while copying quantity.'); } Je l'ai tester chez moi sa à l'air de fonctionner. Je re précise bien qu'il s'agit d'une duplication d'une quantité gérer MANUELLEMENT (je ne garantie pas que cela fonctionnera avec les deux autres modes puisque je n'ai pas étudié leurs cas). Précision apportée principalement à ceux qui tomberont en recherche sur ce post. Cordialement Edit: pouvez-vous me confirmer si cela fonctionne bien chez vous ? Edit N°2: pour bien faire les choses réaliser cette modification dans le dossier override/controllers/admin/AdminProducts, en copiant-collant la fonction processDuplicate de la classe mère et en insérant le code que je vous ai énoncé entre: if ($product->hasAttributes()) Product::updateDefaultAttribute($product->id); et if (!Tools::getValue('noimage') && !Image::duplicateProductImages($id_product_old, $product->id, $combination_images)) ainsi une future MAJ n'effacera pas la modification et (à priori) ne posera aucun conflit. Edited March 26, 2013 by Pepitoww (see edit history) Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 J'ose meme pas répondre tellement j'ai l'air bete j'ai bien compris qu'il faut modifier la table stock_available, ca je l'ai trouvée et qu'il faut rajouter du code dans les fichiers php pour les MAJ, ca c'est bon. seulement là ou je bloque c'est sur la modif de la table Faut il que j'aille dans la structure de la table pour rajouter le code ? je suis un peu largué là... j'avoue que je retouche plus le code css et un peu le php que je ne met les main dans MySQL... Suis noob en MySQL, je sais lol, et c'est d'autant plus penible car je sais que vous avez trouvé la solution Mais je suis débrouillard et je vais y arriver Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 YESSSSSS Ca fonctionne j'avais pas tout compris ! un grand grand Merci a vous pour m'avoir aiguiller et fourni le code a inserer Link to comment Share on other sites More sharing options...
Pepitoww Posted March 26, 2013 Share Posted March 26, 2013 Vous n'avez probablement pas vu mes 2 edit de mon précédent post, je pense qu'avec ces informations vous serez capable de réaliser la modification. Coté Bdd il ne faut rien changé, en fait c'est au niveau du code que nous réalisons la mise à jour de la table stock_available. Edit: de rien Link to comment Share on other sites More sharing options...
albatore Posted March 26, 2013 Author Share Posted March 26, 2013 oui oui c'est bon je les ai vu après coup. un grand merci a vous !!! 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