Yvan07 Posted July 27, 2023 Share Posted July 27, 2023 (edited) Bonjour j'ai une Prestashop 1.6.1.6, je sais que c'est une version obsolète. Mais je l'ai très fortement personnalisé et je ne souhaite pas en changer. Je rencontre un petit problème avec la gestion des packs produits. (je n'utilise aucun module pour ma gestion de stock) Lorsque je créé un pack avec plusieurs articles identiques (par exemple 10 articles Lambdas me permettent de proposer à la vente 1 produit Epsilon à un prix plus avantageux que les 10 articles Lambdas). Le problème que je rencontre se trouve au niveau du stock calculé pour le pack. (par exemple si j'ai 16 articles Lambdas en stock, le stock d'articles Epsilon se met automatiquement à 2, lorsque une page produits est chargée dans le front-office). Finalement le stock généré dans ma bdd pour les packs est l'arrondi sup. Vous imaginez bien que c'est gênant de proposer à la vente 1 pack de plus que ce que je peux réellement fournir. Si une bonne âme a déjà rencontré le problème et trouvé le fichier responsable du calcul du stock de pack? Merci d'avance Yvan Edited July 29, 2023 by Yvan07 (see edit history) Link to comment Share on other sites More sharing options...
Yvan07 Posted July 29, 2023 Author Share Posted July 29, 2023 Merci de votre "non-aide", j ai trouvé la solution de mon problème.... J'ai créer en override/classes/pack.php ce petit bout de code qui me permet d'ajuster les quantités des articles constitutifs du pack ainsi que le pack, et la fonction floor me permet de résoudre mon problème d'arrondi à l'unité inférieur. <?php class Pack extends PackCore { public static function isInStock($id_product) { /* Actualisation du stock pack*/ $sql = 'SELECT floor(pssa.quantity/psp.quantity) FROM '._DB_PREFIX_.'pack psp left JOIN '._DB_PREFIX_.'stock_available pssa ON psp.id_product_item = pssa.id_product WHERE psp.id_product_pack = '.(int)$id_product; $er_stock = Db::getInstance()->getValue($sql); $result = Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'stock_available SET quantity = '.$er_stock.' WHERE id_product = '.(int)$id_product); /* Actualisation du stock pack*/ if (!Pack::isFeatureActive()) return true; $items = Pack::getItems((int)$id_product, Configuration::get('PS_LANG_DEFAULT')); foreach ($items as $item) { if (Product::getQuantity($item->id) < $item->pack_quantity && !$item->isAvailableWhenOutOfStock((int)$item->out_of_stock)) return false; } return true; } } En espérant pouvoir aider d'autres utilisateurs Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 29, 2023 Share Posted July 29, 2023 Il y a 3 heures, Yvan07 a dit : Merci de votre "non-aide", j ai trouvé la solution de mon problème.... Salut, Merci d'avoir partagé ta solution avec la communauté, certainement que cela aidera de prochains utilisateurs, comme tu as certainement dû profiter des réponses apportées par la communauté à d'autres utilisateurs sur d'autres sujets, c'est le principe d'un forum. N'oublie pas de passer ton topic en résolu : Link to comment Share on other sites More sharing options...
Yvan07 Posted July 29, 2023 Author Share Posted July 29, 2023 Merci Mediacom87, je cherchais comment placer le sujet en résolu! 👍 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