%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.144.114.223 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/webdebug.antirutin/plugins/element/copy_offer_price/ |
Upload File : |
<? namespace WD\Antirutin\Plugins\Element; use \WD\Antirutin\Helper, \WD\Antirutin\IBlock, \WD\Antirutin\PluginElement; class CopyOfferPrice extends PluginElement { const GROUP = 'CATALOG'; protected $arFieldsFilter = [ 'PRICES' => ['IS_WRITEABLE' => 'Y'], ]; // ******************************************************************************************************************* // Main methods // ******************************************************************************************************************* /** * Execute! */ public function processElement($intElementId){ $bResult = true; if($this->isEmpty('prices') || !is_array($this->get('prices'))){ $this->setError(static::getMessage('ERROR_NO_PRICES')); return false; } $arCatalog = Helper::getCatalogArray($this->intIBlockId); # This is offers iblock if(is_array($arCatalog) && $arCatalog['PRODUCT_IBLOCK_ID'] && $arCatalog['SKU_PROPERTY_ID']){ $arFeatures = ['PROPERTY_ID' => [$arCatalog['SKU_PROPERTY_ID']]]; $arElement = IBlock::getElementArray($intElementId, $this->intIBlockId, $arFeatures); $intParentElementId = $arElement['PROPERTIES'][$arCatalog['SKU_PROPERTY_ID']]['VALUE']; if(is_numeric($intParentElementId) && $intParentElementId){ $arParentElement = $this->getElementArray($intParentElementId, $arCatalog['PRODUCT_IBLOCK_ID']); if($arParentElement['PRICES']){ foreach($this->get('prices') as $strField){ if($intPriceId = $this->isPrice($strField)){ $arPrice = $arParentElement['PRICES'][$intPriceId]; if(Helper::setProductPrice($intElementId, $intPriceId, $arPrice['PRICE'], $arPrice['CURRENCY'])){ $bResult = true; } } } } } } # This is main iblock elseif(is_array($arCatalog) && $arCatalog['OFFERS_IBLOCK_ID'] && $arCatalog['OFFERS_PROPERTY_ID']) { $arElement = $this->getElementArray($intElementId); $arFilter = [ 'IBLOCK_ID' => $arCatalog['OFFERS_IBLOCK_ID'], 'PROPERTY_'.$arCatalog['OFFERS_PROPERTY_ID'] => $intElementId, ]; $resOffers = \CIBlockElement::getList([], $arFilter, false, false, ['ID']); while($arOffer = $resOffers->getNext(false, false)){ foreach($this->get('prices') as $strField){ if($intPriceId = $this->isPrice($strField)){ $arPrice = $arElement['PRICES'][$intPriceId]; if(Helper::setProductPrice($arOffer['ID'], $intPriceId, floatVal($arPrice['PRICE']), $arPrice['CURRENCY'])){ $bResult = true; } } } } } return $bResult; } /** * Get element array with selected prices */ protected function getElementArray($intElementId, $intIBlockId=null){ $arPricesId = []; $intIBlockId = is_numeric($intIBlockId) ? $intIBlockId : $this->intIBlockId; if(is_array($this->get('prices'))){ foreach($this->get('prices') as $strField){ if($intPriceId = $this->isPrice($strField)){ $arPricesId[] = $intPriceId; } } $arFeatures = ['PRICES' => $arPricesId]; return IBlock::getElementArray($intElementId, $intIBlockId, $arFeatures); } return false; } } ?>