source/Application/Model/Article.php
protected function _assignStock()
    {
        $myConfig = \OxidEsales\Eshop\Core\Registry::getConfig();
        // -----------------------------------
        // stock
        // -----------------------------------

        // #1125 A. must round (using floor()) value taken from database and cast to int
        if (!$myConfig->getConfigParam('blAllowUnevenAmounts') && !$this->isAdmin()) {
            $this->oxarticles__oxstock = new \OxidEsales\Eshop\Core\Field((int) floor($this->oxarticles__oxstock->value));
        }
        //GREEN light
        $this->_iStockStatus = 0;

        // if we have flag /*1 or*/ 4 - we show always green light
        if ($myConfig->getConfigParam('blUseStock') && /*$this->oxarticles__oxstockflag->value != 1 && */
            $this->oxarticles__oxstockflag->value != 4
        ) {
            //ORANGE light
            $iStock = $this->oxarticles__oxstock->value;

            if ($this->_blNotBuyableParent) {
                $iStock = $this->oxarticles__oxvarstock->value;
            }

            if ($iStock <= $myConfig->getConfigParam('sStockWarningLimit') && $iStock > 0) {
                $this->_iStockStatus = 1;
            }

            //RED light
            if ($iStock <= 0) {
                $this->_iStockStatus = -1;
            }
        }


        // stock
        if ($myConfig->getConfigParam('blUseStock') && ($this->oxarticles__oxstockflag->value == 3 || $this->oxarticles__oxstockflag->value == 2)) {
            $iOnStock = $this->oxarticles__oxstock->value;
            if (\OxidEsales\Eshop\Core\Registry::getConfig()->getConfigParam('blPsBasketReservationEnabled')) {
                $iOnStock += $this->getSession()->getBasketReservations()->getReservedAmount($this->getId());
            }
            if ($iOnStock <= 0) {
                $this->setBuyableState(false);
            }
        }

        //exceptional handling for variant parent stock:
        if ($this->_blNotBuyable && $this->oxarticles__oxvarstock->value) {
            $this->setBuyableState(true);
            //but then at least setting notBuaybleParent to true
            $this->_blNotBuyableParent = true;
        }

        //special treatment for lists when blVariantParentBuyable config option is set to false
        //then we just hide "to basket" button.
        //if variants are not loaded in the list and this article has variants and parent is not buyable then this article is not buyable
        if (!$myConfig->getConfigParam('blVariantParentBuyable') && !$myConfig->getConfigParam('blLoadVariants') && $this->oxarticles__oxvarstock->value) {
            $this->setBuyableState(false);
        }

        //setting to non buyable when variant list is empty (for example not loaded or inactive) and $this is non buyable parent
        if (!$this->_blNotBuyable && $this->_blNotBuyableParent && $this->oxarticles__oxvarcount->value == 0) {
            $this->setBuyableState(false);
        }
    }
protected function _assignStock()
    {
        $myConfig = \OxidEsales\Eshop\Core\Registry::getConfig();
        // -----------------------------------
        // stock
        // -----------------------------------

        // #1125 A. must round (using floor()) value taken from database and cast to int
        if (!$myConfig->getConfigParam('blAllowUnevenAmounts') && !$this->isAdmin()) {
            $this->oxarticles__oxstock = new \OxidEsales\Eshop\Core\Field((int) floor($this->oxarticles__oxstock->value));
        }
        //GREEN light
        $this->_iStockStatus = 0;

        // if we have flag /*1 or*/ 4 - we show always green light
        if ($myConfig->getConfigParam('blUseStock') && /*$this->oxarticles__oxstockflag->value != 1 && */
            $this->oxarticles__oxstockflag->value != 4
        ) {
            //ORANGE light
            $iStock = $this->oxarticles__oxstock->value;

            if ($this->_blNotBuyableParent) {
                $iStock = $this->oxarticles__oxvarstock->value;
            }

            if ($iStock <= $myConfig->getConfigParam('sStockWarningLimit') && $iStock > 0) {
                $this->_iStockStatus = 1;
            }

            //RED light
            if ($iStock <= 0) {
                $this->_iStockStatus = -1;
            }
        }


        // stock
        if ($myConfig->getConfigParam('blUseStock') && ($this->oxarticles__oxstockflag->value == 3 || $this->oxarticles__oxstockflag->value == 2)) {
            $iOnStock = $this->oxarticles__oxstock->value;
            if (\OxidEsales\Eshop\Core\Registry::getConfig()->getConfigParam('blPsBasketReservationEnabled')) {
                $iOnStock += $this->getSession()->getBasketReservations()->getReservedAmount($this->getId());
            }
            if ($iOnStock <= 0) {
                $this->setBuyableState(false);
            }
        }

        //exceptional handling for variant parent stock:
        if ($this->_blNotBuyable && $this->oxarticles__oxvarstock->value) {
            $this->setBuyableState(true);
            //but then at least setting notBuaybleParent to true
            $this->_blNotBuyableParent = true;
        }

        //special treatment for lists when blVariantParentBuyable config option is set to false
        //then we just hide "to basket" button.
        //if variants are not loaded in the list and this article has variants and parent is not buyable then this article is not buyable
        if (!$myConfig->getConfigParam('blVariantParentBuyable') && !$myConfig->getConfigParam('blLoadVariants') && $this->oxarticles__oxvarstock->value) {
            $this->setBuyableState(false);
        }

        //setting to non buyable when variant list is empty (for example not loaded or inactive) and $this is non buyable parent
        if (!$this->_blNotBuyable && $this->_blNotBuyableParent && $this->oxarticles__oxvarcount->value == 0) {
            $this->setBuyableState(false);
        }
    }
protected function _assignStock ( ) { $ myConfig = \ OxidEsales \ Eshop \ Core \ Registry :: getConfig ( ) ; // ----------------------------------- // stock // ----------------------------------- // #1125 A. must round (using floor()) value taken from database and cast to int if ( ! $ myConfig -> getConfigParam ( 'blAllowUnevenAmounts' ) && ! $ this -> isAdmin ( ) ) { $ this -> oxarticles__oxstock = new \ OxidEsales \ Eshop \ Core \ Field ( ( int ) floor ( $ this -> oxarticles__oxstock -> value ) ) ; } //GREEN light $ this -> _iStockStatus = 0 ; // if we have flag /*1 or*/ 4 - we show always green light if ( $ myConfig -> getConfigParam ( 'blUseStock' ) && /*$this->oxarticles__oxstockflag->value != 1 && */ $ this -> oxarticles__oxstockflag -> value != 4 ) { //ORANGE light $ iStock = $ this -> oxarticles__oxstock -> value ; if ( $ this -> _blNotBuyableParent ) { $ iStock = $ this -> oxarticles__oxvarstock -> value ; } if ( $ iStock <= $ myConfig -> getConfigParam ( 'sStockWarningLimit' ) && $ iStock > 0 ) { $ this -> _iStockStatus = 1 ; } //RED light if ( $ iStock <= 0 ) { $ this -> _iStockStatus = - 1 ; } } // stock if ( $ myConfig -> getConfigParam ( 'blUseStock' ) && ( $ this -> oxarticles__oxstockflag -> value == 3 || $ this -> oxarticles__oxstockflag -> value == 2 ) ) { $ iOnStock = $ this -> oxarticles__oxstock -> value ; if ( \ OxidEsales \ Eshop \ Core \ Registry :: getConfig ( ) -> getConfigParam ( 'blPsBasketReservationEnabled' ) ) { $ iOnStock += $ this -> getSession ( ) -> getBasketReservations ( ) -> getReservedAmount ( $ this -> getId ( ) ) ; } if ( $ iOnStock <= 0 ) { $ this -> setBuyableState ( false ) ; } } //exceptional handling for variant parent stock: if ( $ this -> _blNotBuyable && $ this -> oxarticles__oxvarstock -> value ) { $ this -> setBuyableState ( true ) ; //but then at least setting notBuaybleParent to true $ this -> _blNotBuyableParent = true ; } //special treatment for lists when blVariantParentBuyable config option is set to false //then we just hide "to basket" button. //if variants are not loaded in the list and this article has variants and parent is not buyable then this article is not buyable if ( ! $ myConfig -> getConfigParam ( 'blVariantParentBuyable' ) && ! $ myConfig -> getConfigParam ( 'blLoadVariants' ) && $ this -> oxarticles__oxvarstock -> value ) { $ this -> setBuyableState ( false ) ; } //setting to non buyable when variant list is empty (for example not loaded or inactive) and $this is non buyable parent if ( ! $ this -> _blNotBuyable && $ this -> _blNotBuyableParent && $ this -> oxarticles__oxvarcount -> value == 0 ) { $ this -> setBuyableState ( false ) ; } }
Assigns stock status to article
Assigns stock status to article