Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sale/lib/helpers/order/builder/ |
Upload File : |
<? namespace Bitrix\Sale\Helpers\Order\Builder; use Bitrix\Sale\BasketItem; class BasketBuilderExist implements IBasketBuilderDelegate { /** @var BasketBuilder */ protected $builder = null; public function __construct(BasketBuilder $builder) { $this->builder = $builder; } /** * Get item from current basket * * Search only by $basketCode !!! * * If the product is not found, the basket code is set and is not equal to BasketBuilder::BASKET_CODE_NEW, * then this product will be deleted. * * @param string|int $basketCode * @param array $productData not used * @return BasketItem|null * @throws BuildingException */ public function getItemFromBasket($basketCode, $productData) { $item = $this->builder->getBasket()->getItemByBasketCode($basketCode); //sku was changed if($item == null && $basketCode != BasketBuilder::BASKET_CODE_NEW) { if($item = $this->builder->getBasket()->getItemByBasketCode($basketCode)) { $res = $item->delete(); if(!$res->isSuccess()) { $this->builder->getErrorsContainer()->addErrors($res->getErrors()); throw new BuildingException(); } $item = null; } } return $item; } /** * @param $basketCode * @param BasketItem $item * @param array $productData */ public function setItemData($basketCode, &$productData, &$item) { if ($basketCode != $productData["BASKET_CODE"]) $productData["BASKET_CODE"] = $item->getBasketCode(); if(isset($productData["OFFER_ID"]) && intval($productData["OFFER_ID"]) > 0) $productData["PRODUCT_ID"] = $productData["OFFER_ID"]; $itemFields = array_intersect_key($productData, array_flip($item::getAvailableFields())); if(isset($itemFields["MEASURE_CODE"]) && $itemFields["MEASURE_CODE"] <> '') { $measures = $this->builder->getCatalogMeasures(); if(isset($measures[$itemFields["MEASURE_CODE"]]) && $measures[$itemFields["MEASURE_CODE"]] <> '') $itemFields["MEASURE_NAME"] = $measures[$itemFields["MEASURE_CODE"]]; } $providerData = []; if(!empty($productData["PROVIDER_DATA"]) && !$this->builder->isNeedUpdateNewProductPrice() && CheckSerializedData($productData["PROVIDER_DATA"])) { $providerData = unserialize($productData["PROVIDER_DATA"], ['allowed_classes' => false]); } if (is_array($providerData) && !empty($providerData)) { $this->builder->sendProductCachedDataToProvider($item, $this->builder->getOrder(), $providerData); } if(!empty($productData["SET_ITEMS_DATA"]) && CheckSerializedData($productData["SET_ITEMS_DATA"])) $productData["SET_ITEMS"] = unserialize($productData["SET_ITEMS_DATA"], ['allowed_classes' => false]); $this->builder->setBasketItemFields($item, $itemFields); } public function finalActions() { if($this->builder->isProductAdded()) { $res = $this->builder->getBasket()->refreshData(array('PRICE', 'COUPONS')); if (!$res->isSuccess()) { $this->builder->getErrorsContainer()->addErrors($res->getErrors()); } } } }