/** * Loads basket discounts and calculates discount values. * * @return null */ protected function _calcBasketDiscount() { // resetting $this->_aDiscounts = array(); // P using prices sum which has discount, not sum of skipped discounts $dOldprice = $this->_oDiscountProductsPriceList->getBruttoSum(); // add basket discounts $aDiscounts = oxDiscountList::getInstance()->getBasketDiscounts($this, $this->getBasketUser()); foreach ($aDiscounts as $oDiscount) { // storing applied discounts $oStdDiscount = $oDiscount->getSimpleDiscount(); // skipping bundle discounts if ($oDiscount->oxdiscount__oxaddsumtype->value == 'itm') { continue; } // saving discount info $oStdDiscount->dDiscount = $oDiscount->getAbsValue($dOldprice); if ($dOldprice < $oStdDiscount->dDiscount) { $oStdDiscount->dDiscount = $dOldprice; } if ($oStdDiscount->dDiscount != 0) { $this->_aDiscounts[$oDiscount->getId()] = $oStdDiscount; // substracting product price after discount $dOldprice = $dOldprice - $oStdDiscount->dDiscount; } } }
/** * Applies discounts which should be applied in general case (for 0 amount) * * @param oxprice $oPrice Price object * * @return null */ public function applyDiscountsForVariant($oPrice) { // apply discounts if (!$this->skipDiscounts()) { $oDiscountList = oxDiscountList::getInstance(); $oDiscountList->applyDiscounts($oPrice, $oDiscountList->getArticleDiscounts($this, $this->getArticleUser())); } }