/**
  * Returns discount list instance
  *
  * @return oxDiscountList
  */
 public static function getInstance()
 {
     // disable cashing for test modules
     if (defined('OXID_PHP_UNIT')) {
         self::$_instance = modInstances::getMod(__CLASS__);
     }
     if (!isset(self::$_instance)) {
         // allow modules
         self::$_instance = oxNew('oxDiscountList');
         if (defined('OXID_PHP_UNIT')) {
             modInstances::addMod(__CLASS__, self::$_instance);
         }
     }
     return self::$_instance;
 }
Exemplo n.º 2
0
 /**
  * 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;
         }
     }
 }
Exemplo n.º 3
0
 /**
  * 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()));
     }
 }