devhelper/Modules/Application/Model/d3_dev_oxbasket.php

101 lines
3.0 KiB
PHP
Raw Normal View History

<?php
/**
2024-09-04 08:58:40 +02:00
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
2024-09-04 08:58:40 +02:00
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
2024-09-04 08:58:40 +02:00
* https://www.d3data.de
*
2024-09-04 08:58:40 +02:00
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
namespace D3\Devhelper\Modules\Application\Model;
2020-11-11 22:29:10 +01:00
use D3\Devhelper\Modules\Core\d3_dev_conf;
use oxArticleInputException;
use OxidEsales\Eshop\Application\Model\BasketItem;
use OxidEsales\Eshop\Application\Model\OrderArticle;
use OxidEsales\Eshop\Core\Registry;
2020-11-11 22:29:10 +01:00
use oxNoArticleException;
class d3_dev_oxbasket extends d3_dev_oxbasket_parent
{
public function deleteBasket()
{
2024-09-04 08:58:40 +02:00
if (Registry::getConfig()->getActiveShop()->isProductiveMode()
|| ! Registry::getConfig()->getConfigParam(d3_dev_conf::OPTION_PREVENTDELBASKET)
) {
parent::deleteBasket();
}
// else do nothing;
}
public function d3ClearBasketItemArticles()
{
/** @var d3_dev_oxbasketitem $oBasketItem */
foreach ($this->_aBasketContents as $oBasketItem) {
$oBasketItem->d3ClearArticle();
}
}
/**
* Calculates total basket discount value.
*/
protected function _calcBasketTotalDiscount()
{
if ($this->_oTotalDiscount === null || (!$this->isAdmin())) {
$this->_oTotalDiscount = $this->_getPriceObject();
if (is_array($this->_aDiscounts)) {
foreach ($this->_aDiscounts as $oDiscount) {
// skipping bundle discounts
if ($oDiscount->sType == 'itm') {
continue;
}
// add discount value to total basket discount
$this->_oTotalDiscount->add($oDiscount->dDiscount);
}
}
}
}
/**
* @param OrderArticle $oOrderArticle
*
2020-11-12 08:50:36 +01:00
* @return d3_dev_oxbasketitem|null
2020-11-11 22:29:10 +01:00
* @throws oxArticleInputException
* @throws oxNoArticleException
*/
public function d3addOrderArticleToBasket($oOrderArticle)
{
// adding only if amount > 0
2020-11-11 22:29:10 +01:00
if ($oOrderArticle->getFieldData('oxamount') > 0) {
$this->_isForOrderRecalculation = true;
$sItemId = $oOrderArticle->getId();
//inserting new
/** @var d3_dev_oxbasketitem $oBasketItem */
2024-09-04 08:58:40 +02:00
$oBasketItem = oxNew(BasketItem::class);
$oBasketItem->initFromOrderArticle($oOrderArticle);
$oBasketItem->d3ConvertToArticleObject();
2020-11-11 22:29:10 +01:00
$oBasketItem->setWrapping($oOrderArticle->getFieldData('oxwrapid'));
$oBasketItem->setBundle($oOrderArticle->isBundle());
$this->_aBasketContents[$sItemId] = $oBasketItem;
//calling update method
$this->onUpdate();
return $this->_aBasketContents[$sItemId];
}
return null;
}
}