%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.220.74.231 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/esol.allimportexport/lib/entity/ |
Upload File : |
<?php namespace Bitrix\Sale\Delivery\Services; use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); class EsolIEDeliveryTable extends \Bitrix\Sale\Delivery\Services\Table { static $propFields = null; static $propFieldTitles = null; public static function getMap() { $arMap = parent::getMap(); \Bitrix\EsolAie\Entity\Utils::PrepareMap($arMap); if(class_exists('\Bitrix\Sale\Delivery\ExtraServices\Manager') && Loc::getMessage("DELIVERY_SERVICE_MANAGER_ES_NAME")) { $arMap['IE_STORE_PICKUP'] = new \Bitrix\Main\Entity\ReferenceField( 'IE_STORE_PICKUP', 'Bitrix\Sale\Delivery\ExtraServices\Table', array( '=ref.DELIVERY_ID' => 'this.ID', '=ref.CODE' => new \Bitrix\Main\DB\SqlExpression('?i', \Bitrix\Sale\Delivery\ExtraServices\Manager::STORE_PICKUP_CODE) ) ); $arMap['IE_STORE_PICKUP.PARAMS'] = new \Bitrix\Main\Entity\StringField( 'IE_STORE_PICKUP.PARAMS', array( 'title' => Loc::getMessage("DELIVERY_SERVICE_MANAGER_ES_NAME") ) ); } if(class_exists('\Bitrix\Sale\Internals\ServiceRestrictionTable')) { $arRestMap = \Bitrix\Sale\Internals\ServiceRestrictionTable::getMap(); \Bitrix\EsolAie\Entity\Utils::PrepareMap($arRestMap); $arRestMapKeys = array_keys($arRestMap); $arMap['IE_RESTRICTIONS'] = new \Bitrix\Main\Entity\ReferenceField( 'IE_RESTRICTIONS', 'Bitrix\Sale\Internals\ServiceRestrictionTable', array( '=ref.SERVICE_ID' => 'this.ID' ) ); $arMap['IE_RESTRICTIONS_DATA'] = array( 'title' => Loc::getMessage("ESOL_AIE_DELIVERY_RESTRICTIONS"), 'data_type' => 'string', 'multiple_rels' => 'Y', 'expression' => array( 'CONCAT("{SORT:\'", %s, "\', CLASS_NAME:\'", %s, "\', PARAMS:\'", %s, "\'}")', 'IE_RESTRICTIONS.SORT', 'IE_RESTRICTIONS.CLASS_NAME', 'IE_RESTRICTIONS.PARAMS' ) ); } return $arMap; } public static function getIEFields($type='export') { $arMap = self::getMap(); $arMap = array_diff_key($arMap, array_flip(preg_grep('/^(IE_STORE_PICKUP[^\.]*|IE_RESTRICTIONS)$/', array_keys($arMap)))); if($type=='import') { unset($arMap['IE_RESTRICTIONS_DATA']['expression']); } return $arMap; } public static function prepareDefaultFields(&$arFields) { $arFields = array_diff($arFields, preg_grep('/^IE_STORE_PICKUP/', $arFields)); } public static function PrepareFieldsForExport(&$arFields, $sep=';') { if(isset($arFields['IE_STORE_PICKUP/PARAMS']) && is_array($arFields['IE_STORE_PICKUP/PARAMS']) && isset($arFields['IE_STORE_PICKUP/PARAMS']['STORES']) && is_array($arFields['IE_STORE_PICKUP/PARAMS']['STORES'])) { $arFields['IE_STORE_PICKUP/PARAMS'] = implode(';', $arFields['IE_STORE_PICKUP/PARAMS']['STORES']); } } public static function AfterUpdate($ID, $arFields) { if(isset($arFields['IE_STORE_PICKUP.PARAMS'])) { $stores = array_diff(array_map('intval', explode(';', $arFields['IE_STORE_PICKUP.PARAMS'])), array(0)); if(!empty($stores)) { \Bitrix\Sale\Delivery\ExtraServices\Manager::saveStores($ID, $stores); } else { \Bitrix\Sale\Delivery\ExtraServices\Manager::setStoresUnActive($ID); } } if(isset($arFields['IE_RESTRICTIONS_DATA'])) { $arVals = $arValsSer = array(); $val = $arFields['IE_RESTRICTIONS_DATA']; while(($pos = mb_strpos($val, '};{'))!==false) { $arVals[] = \CUtil::JsObjectToPhp(mb_substr($val, 0, $pos+1)); $val = mb_substr($val, $pos+2); } if(strlen($val) > 0) $arVals[] = \CUtil::JsObjectToPhp($val); foreach($arVals as $k=>$v) { $arVals[$k]['PARAMS'] = $v['PARAMS'] = unserialize($v['PARAMS']); $arValsSer[$k] = serialize($v); } $arOldVals = array(); $dbRes = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(array('filter'=>array('SERVICE_ID'=>$ID))); while($arr = $dbRes->Fetch()) { if(($k = array_search(serialize(array_intersect_key($arr, array_flip(array('SORT', 'CLASS_NAME', 'PARAMS')))), $arValsSer))!==false) { unset($arVals[$k], $arValsSer[$k]); continue; } \Bitrix\Sale\Internals\ServiceRestrictionTable::delete($arr['ID']); } foreach($arVals as $k=>$v) { $v['SERVICE_ID'] = $ID; $v['SERVICE_TYPE'] = '0'; \Bitrix\Sale\Internals\ServiceRestrictionTable::add($v); } } } public static function PrepareFieldsForAddImport(&$arFields) { /*if(!isset($arFields['DATE_UPDATE'])) $arFields['DATE_UPDATE'] = ConvertTimeStamp(false, "FULL"); if(!isset($arFields['DATE_INSERT'])) $arFields['DATE_INSERT'] = ConvertTimeStamp(false, "FULL"); if(!isset($arFields['DATE_STATUS'])) $arFields['DATE_STATUS'] = ConvertTimeStamp(false, "FULL");*/ } public static function PrepareFieldsCustom(&$arFields) { /*$arFields = array_diff_key($arFields, array_flip(preg_grep('/^IE_PROPERTY_/', array_keys($arFields)))); if(isset($arFields['PRICE'])) $arFields['PRICE'] = \Bitrix\EsolAie\Entity\Utils::GetFloatVal($arFields['PRICE']); if(isset($arFields['PRICE_DELIVERY'])) $arFields['PRICE_DELIVERY'] = \Bitrix\EsolAie\Entity\Utils::GetFloatVal($arFields['PRICE_DELIVERY']); if(isset($arFields['SUM_PAID'])) $arFields['SUM_PAID'] = \Bitrix\EsolAie\Entity\Utils::GetFloatVal($arFields['SUM_PAID']);*/ } public static function GetUpdatableFields($arFields) { if(isset($arFields['IE_STORE_PICKUP.PARAMS'])) unset($arFields['IE_STORE_PICKUP.PARAMS']); if(isset($arFields['IE_RESTRICTIONS_DATA'])) unset($arFields['IE_RESTRICTIONS_DATA']); return $arFields; } public static function Add(array $arFields) { //self::PrepareFieldsCustom($arFields); $arUpdateFields = self::GetUpdatableFields($arFields); $result = parent::Add($arUpdateFields); if($result->isSuccess()) { $ID = $result->getId(); self::AfterUpdate($ID, $arFields); } return $result; } public static function Update($ID, array $arFields) { //self::PrepareFieldsCustom($arFields); $arUpdateFields = self::GetUpdatableFields($arFields); if((empty($arUpdateFields) && ($result = new \Bitrix\Main\Entity\UpdateResult())) || (($result = parent::Update($ID, $arUpdateFields)) && $result->isSuccess())) { self::AfterUpdate($ID, $arFields); } return $result; } }