source/Application/Model/Article.php
public function updateSoldAmount($dAmount = 0)
    {
        if (!$dAmount) {
            return;
        }

        // article is not variant - should be updated current amount
        if (!$this->oxarticles__oxparentid->value) {
            //updating by SQL query, due to wrong behaviour if saving article using not admin mode
            $dAmount = (double) $dAmount;
            $oDb = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();
            $rs = $oDb->execute("update oxarticles set oxarticles.oxsoldamount = oxarticles.oxsoldamount + $dAmount where oxarticles.oxid = " . $oDb->quote($this->oxarticles__oxid->value));
        } elseif ($this->oxarticles__oxparentid->value) {
            // article is variant - should be updated this article parent amount
            $oUpdateArticle = $this->getParentArticle();
            if ($oUpdateArticle) {
                $oUpdateArticle->updateSoldAmount($dAmount);
            }
        }

        return (bool) $rs;
    }
public function updateSoldAmount($dAmount = 0)
    {
        if (!$dAmount) {
            return;
        }

        // article is not variant - should be updated current amount
        if (!$this->oxarticles__oxparentid->value) {
            //updating by SQL query, due to wrong behaviour if saving article using not admin mode
            $dAmount = (double) $dAmount;
            $oDb = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();
            $rs = $oDb->execute("update oxarticles set oxarticles.oxsoldamount = oxarticles.oxsoldamount + $dAmount where oxarticles.oxid = " . $oDb->quote($this->oxarticles__oxid->value));
        } elseif ($this->oxarticles__oxparentid->value) {
            // article is variant - should be updated this article parent amount
            $oUpdateArticle = $this->getParentArticle();
            if ($oUpdateArticle) {
                $oUpdateArticle->updateSoldAmount($dAmount);
            }
        }

        return (bool) $rs;
    }
public function updateSoldAmount ( $ dAmount = 0 ) { if ( ! $ dAmount ) { return ; } // article is not variant - should be updated current amount if ( ! $ this -> oxarticles__oxparentid -> value ) { //updating by SQL query, due to wrong behaviour if saving article using not admin mode $ dAmount = ( double ) $ dAmount ; $ oDb = \ OxidEsales \ Eshop \ Core \ DatabaseProvider :: getDb ( ) ; $ rs = $ oDb -> execute ( "update oxarticles set oxarticles.oxsoldamount = oxarticles.oxsoldamount + $dAmount where oxarticles.oxid = " . $ oDb -> quote ( $ this -> oxarticles__oxid -> value ) ) ; } elseif ( $ this -> oxarticles__oxparentid -> value ) { // article is variant - should be updated this article parent amount $ oUpdateArticle = $ this -> getParentArticle ( ) ; if ( $ oUpdateArticle ) { $ oUpdateArticle -> updateSoldAmount ( $ dAmount ) ; } } return ( bool ) $ rs ; }
Recursive function. Updates quantity of sold articles.
Return true if amount was changed in database.

@param float $dAmount Number of articles sold

@return mixed
Recursive function . Updates quantity of sold articles . Return true if amount was changed in database .