public function ApplyDiscount(TdbShopDiscount $oShopDiscount, $dMaxValueUsable = 0)
    {
        $dRemainingValue = 0;
        if (is_null($this->oActingShopDiscountList)) {
            $this->oActingShopDiscountList = new TShopBasketArticleDiscountList();
        }
        if ('absolut' == $oShopDiscount->fieldValueType) {
            $dUsedValue = $dMaxValueUsable;
            if ($this->dPriceTotalAfterDiscount < $dUsedValue) {
                $dUsedValue = $this->dPriceTotalAfterDiscount;
                $dRemainingValue = $dMaxValueUsable - $this->dPriceTotalAfterDiscount;
            }
            $oShopDiscount->dRealValueUsed = $dUsedValue;
        } else {
            $oShopDiscount->dRealValueUsed = round($this->dPriceTotalAfterDiscount * ($oShopDiscount->fieldValue / 100), 2);
        }
        $this->dPriceTotalAfterDiscount = $this->dPriceTotalAfterDiscount - $oShopDiscount->dRealValueUsed;
        $this->dPriceAfterDiscount = $this->dPriceTotalAfterDiscount / $this->dAmount;

        $this->dPriceAfterDiscountWithoutVouchers = $this->dPriceAfterDiscount;
        $this->dPriceTotalAfterDiscountWithoutVouchers = $this->dPriceTotalAfterDiscount;
        $this->oActingShopDiscountList->AddItem($oShopDiscount);

        return $dRemainingValue;
    }