Friday, October 21, 2011

Magento's isInStock ... yeah right ;(

OK, now I'm confused (more than usual ;)) ... why on the earth they did this (maybe they just hate me ;))

While I was looking for the name of event fired when product is in stock status is checked I found this "gem" of the code in Mage_Catalog_Model_Product:

    public function isInStock()
    {
        return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
    }

WTF?!?

So ... $product->isInStock() will always return TRUE if product is enabled ... WHAT!?! Who put (or left) that stupidity in the code!???

And real stock check is:

    /**
     * Check is product available for sale
     *
     * @return bool
     */
    public function isSalable()
    {
        Mage::dispatchEvent('catalog_product_is_salable_before', array(
            'product'   => $this
        ));

        $salable = $this->isAvailable();

        $object = new Varien_Object(array(
            'product'    => $this,
            'is_salable' => $salable
        ));
        Mage::dispatchEvent('catalog_product_is_salable_after', array(
            'product'   => $this,
            'salable'   => $object
        ));
        return $object->getIsSalable();
    }

And yeah, there is also isSaleable (typo?) alias ... Huh!?

Whenever I look into Magento core code I get ton's of the possible great posts for the The Daily WTF! :D

In the end one can hope that they (and no one else) did not used isInStock method for checking if product is in stock!!!!

No comments:

Post a Comment