Jump to content

[Résolu] Je cherche à corriger le module Check Stock : desactivation auto si stock = 0 - OK avec PS 1.1 > 1.3.7 mais probleme avec declinaisons


Recommended Posts

J'utilise depuis PS1.1 un module tres pratique qui désactive automatiquement un produit des que celui ci n'est plus en stock.

Check Stock réalisé par Pierre Yves: http://www.prestashop.com/forums/viewthread/22014

Ce module fonctionne toujours bien avec PS 1.3.7, il ne fonctionne plus en 1.4.

Le seul problème est qu'il desactive le produit des qu'une des déclinaisons passe à zero (ce probleme a toujours existé).
Pour bien faire il devrait se réferer au total de toutes les déclinaisons et non uniquement au solde de la declinaison qui a été achetée.

Il n'y a qu'un fichier .php dont voici le code:

<?php

class psf_CheckStock extends Module
{
   public $author;

   function __construct()
   {
         $this->name = 'psf_checkstock';
         $this->version = 1.0;
         $this->tab = 'Tools';
         $this->author = 'Pierre-Yves (PSF Team)';

       parent::__construct();
       $this->page = basename(__FILE__, '.php');
       $this->displayName = '[PSF] '.$this->l('Check Product');
       $this->description = $this->l('Disabled product when quantity is 0');
   }

   function install()
   {
        if (!parent::install()
            || !$this->registerHook('updateQuantity')
            || !$this->registerHook('updateProduct'))
            return false;

        return true;
   }

   function uninstall()
   {
       if (!parent::uninstall())
           return false;

       return true;
   }

   function hookUpdateQuantity($params)
   {
       // On reprend la quantité restante
       $qty = intval($params['product']['stock_quantity']) - intval($params['product']['quantity']);

       if ($qty <= 0)
       {
           // On va rechercher le produit en fonction de l'identifiant que l'on reçoit
           $product = new Product( $params['product']['id_product'] );
           $product->active = 0;
           $product->save();
       }
   }

   function hookUpdateProduct($params)
   {
       // On va rechercher le produit en fonctionne de l'identifiant que l'on reçoit
       $product = $params['product'];

       // On vérifie qu'il est bien chargé (qu'il existe?)
       if (!Validate::isLoadedObject($product))
           return false;

       // Il ne reste plus de produit en stock ?
       if ($product->quantity <= 0)
       {
           // Plus de stock... on désactive le produit
           $product->active = 0;
           $product->save();
       }
   }
}

?>

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