Jump to content

[Résolu]Calcul automatique des packs produit sur PS1.6


Yvan07

Recommended Posts

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

pack test.jpg

Edited by Yvan07 (see edit history)
Link to comment
Share on other sites

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

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 :

772762601_topicresolu.png.da616ed9356e78ecf3a7b296fea2b2fd.png

Link to comment
Share on other sites

  • Yvan07 changed the title to [Résolu]Calcul automatique des packs produit sur PS1.6

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...