/** * @param $deliveryId * @param array $params * @param $update * @return bool * @throws \Bitrix\Main\ArgumentException * @deprecated */ protected static function saveRestrictionByMaxSize($deliveryId, $maxSize, $update) { $rfields = array("DELIVERY_ID" => $deliveryId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByMaxSize', "PARAMS" => array("MAX_SIZE" => $maxSize)); if ($update) { $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $deliveryId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByMaxSize'))); if ($restrict = $rstrRes->fetch()) { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields); } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } return $rres->isSuccess(); }
public static function delete($restrictionId) { $dbRes = Table::getList(array('filter' => array('ID' => $restrictionId))); if ($fields = $dbRes->fetch()) { DeliveryLocationTable::resetMultipleForOwner($fields["DELIVERY_ID"]); } return parent::delete($restrictionId); }
/** * @param array $arOrder * @param array $arFilter * @param bool $arGroupBy * @param bool $arNavStartParams * @param array $arSelectFields * @return \CDBResult * @throws \Bitrix\Main\ArgumentException * @deprecated */ public static function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array('*')) { if (empty($arSelectFields)) { $arSelectFields = array('*'); } $params = array('order' => $arOrder, 'filter' => self::convertFilterOldToNew($arFilter), 'group' => self::convertGroupOldToNew($arGroupBy), 'select' => self::convertSelectOldToNew($arSelectFields)); $services = array(); $params['filter']['=CLASS_NAME'] = '\\Bitrix\\Sale\\Delivery\\Services\\Configurable'; $dbRes = \Bitrix\Sale\Delivery\Services\Table::getList($params); if (isset($arFilter["WEIGHT"]) && DoubleVal($arFilter["WEIGHT"]) > 0) { if (!isset($arFilter["WEIGHT_FROM"]) || floatval($arFilter["WEIGHT"]) > floatval($arFilter["WEIGHT_FROM"])) { $arFilter["+<=WEIGHT_FROM"] = $arFilter["WEIGHT"]; } if (!isset($arFilter["WEIGHT_TO"]) || floatval($arFilter["WEIGHT"]) < floatval($arFilter["WEIGHT_TO"])) { $arFilter["+>=WEIGHT_TO"] = $arFilter["WEIGHT"]; } } if (isset($arFilter["ORDER_PRICE"]) && IntVal($arFilter["ORDER_PRICE"]) > 0) { if (!isset($arFilter["ORDER_PRICE_FROM"]) || floatval($arFilter["ORDER_PRICE"]) > floatval($arFilter["ORDER_PRICE_FROM"])) { $arFilter["+<=ORDER_PRICE_FROM"] = $arFilter["ORDER_PRICE"]; } if (!isset($arFilter["ORDER_PRICE_TO"]) || floatval($arFilter["ORDER_PRICE"]) < floatval($arFilter["ORDER_PRICE_TO"])) { $arFilter["+>=ORDER_PRICE_TO"] = $arFilter["ORDER_PRICE"]; } } while ($service = $dbRes->fetch()) { $dbRstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("=DELIVERY_ID" => $service["ID"]))); while ($restr = $dbRstrRes->fetch()) { if (!self::checkRestrictionFilter($restr, $arFilter)) { continue 2; } $service = self::getSelectedRestrictionField($service, $restr, $arSelectFields); } $selectAsterisk = in_array('*', $arSelectFields); $mofifiedFields = array("LID", "WEIGHT_FROM", "WEIGHT_TO", "ORDER_PRICE_FROM", "ORDER_PRICE_TO", "ORDER_CURRENCY"); foreach ($mofifiedFields as $field) { if (($selectAsterisk || in_array($field, $arSelectFields)) && !array_key_exists($field, $service)) { $service[$field] = ""; } } if ($selectAsterisk || in_array("PERIOD_FROM", $arSelectFields)) { $service["PERIOD_FROM"] = $service["CONFIG"]["MAIN"]["PERIOD"]["FROM"]; } if ($selectAsterisk || in_array("PERIOD_TO", $arSelectFields)) { $service["PERIOD_TO"] = $service["CONFIG"]["MAIN"]["PERIOD"]["TO"]; } if ($selectAsterisk || in_array("PERIOD_TYPE", $arSelectFields)) { $service["PERIOD_TYPE"] = $service["CONFIG"]["MAIN"]["PERIOD"]["TYPE"]; } if ($selectAsterisk || in_array("PRICE", $arSelectFields)) { $service["CLASS_NAME"] = '\\Bitrix\\Sale\\Delivery\\Services\\Configurable'; $tmpSrv = \Bitrix\Sale\Delivery\Services\Manager::createServiceObject($service); $res = $tmpSrv->calculate(); $service["PRICE"] = $res->getPrice(); } if ($selectAsterisk || in_array("STORE", $arSelectFields)) { $stores = \Bitrix\Sale\Delivery\ExtraServices\Manager::getStoresList($service["ID"]); $service["STORE"] = count($stores) > 0 ? serialize($stores) : ""; } if (intval($service["CODE"]) > 0) { $service["ID"] = $service["CODE"]; } unset($service["CODE"], $service["CLASS_NAME"], $service["CONFIG"], $service["PARENT_ID"]); $services[] = $service; } $result = new \CDBResult(); $result->InitFromArray($services); return $result; }
public static function saveRestriction($deliveryId, $className, $params = false) { $res = Restrictions\Table::getList(array('filter' => array("=DELIVERY_ID" => $deliveryId, "=CLASS_NAME" => $className), 'select' => array("ID"))); if ($restriction = $res->fetch()) { if ($params !== false) { $res = Restrictions\Table::update($restriction["ID"], array("DELIVERY_ID" => $deliveryId, "CLASS_NAME" => $className, "PARAMS" => $params)); } } else { $res = Restrictions\Table::add(array("DELIVERY_ID" => $deliveryId, "CLASS_NAME" => $className, "PARAMS" => is_array($params) ? $params : array())); } return $res; }
$APPLICATION->AuthForm(Loc::getMessage("SALE_ESDL_ACCESS_DENIED")); } /** * @var CDatabase $DB * @var CMain $APPLICATION */ use Bitrix\Main\Localization\Loc; use Bitrix\Sale\Delivery\Services; use Bitrix\Sale\Internals\Input; Loc::loadMessages(__FILE__); $ID = intval($_GET['ID']); $tableId = 'table_delivery_restrictions'; $oSort = new \CAdminSorting($tableId); $lAdmin = new \CAdminList($tableId, $oSort); $restrictionClassNames = Services\Manager::getRestrictionClassNames(); $res = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array('DELIVERY_ID' => $ID), 'select' => array('ID', 'CLASS_NAME', 'SORT', 'PARAMS'), 'order' => array('SORT' => 'ASC', 'ID' => 'DESC'))); $data = $res->fetchAll(); $dbRes = new \CDBResult(); $dbRes->InitFromArray($data); $dbRecords = new \CAdminResult($dbRes, $tableId); $dbRecords->NavStart(); $lAdmin->NavText($dbRecords->GetNavPrint(Loc::getMessage('SALE_RDL_LIST'))); $header = array(array('id' => 'ID', 'content' => Loc::getMessage('SALE_RDL_COL_ID'), "sort" => "", 'default' => true), array('id' => 'SORT', 'content' => Loc::getMessage('SALE_RDL_COL_SORT'), "sort" => "", 'default' => true), array('id' => 'CLASS_NAME', 'content' => Loc::getMessage('SALE_RDL_COL_CLASS_NAME'), "sort" => "", 'default' => true), array('id' => 'PARAMS', 'content' => Loc::getMessage('SALE_RDL_COL_PARAMS'), "sort" => "", 'default' => true)); $lAdmin->AddHeaders($header); $restrictionClassNamesUsed = array(); while ($record = $dbRecords->Fetch()) { if (strlen($record['CLASS_NAME']) > 0) { $restrictionClassNamesUsed[] = $record['CLASS_NAME']; if (is_callable($record['CLASS_NAME'] . '::getClassTitle')) { $className = $record['CLASS_NAME']::getClassTitle(); } else {
protected static function actualizeDeliveriesRestrictionByPS() { $con = \Bitrix\Main\Application::getConnection(); $sqlHelper = $con->getSqlHelper(); $restrictions = array(); $dbR = Restrictions\Table::getList(array('filter' => array('=CLASS_NAME' => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPaySystem'), 'select' => array('DELIVERY_ID'))); while ($restr = $dbR->fetch()) { $restrictions[] = $restr['DELIVERY_ID']; } $deliveryList = self::getEntityItemsFullList(self::ENTITY_TYPE_DELIVERY); $dLinkedToP = array(); $deliveriesToPs = array(); $linkedPS = array(); $dbP2S = DeliveryPaySystemTable::getList(); while ($d2p = $dbP2S->fetch()) { if ($d2p["LINK_DIRECTION"] == self::LINK_DIRECTION_DELIVERY_PAYSYSTEM && !in_array($d2p["DELIVERY_ID"], $dLinkedToP)) { $dLinkedToP[] = $d2p["DELIVERY_ID"]; } if ($d2p["LINK_DIRECTION"] == self::LINK_DIRECTION_PAYSYSTEM_DELIVERY) { if (!isset($deliveriesToPs[$d2p["DELIVERY_ID"]])) { $deliveriesToPs[$d2p["DELIVERY_ID"]] = array(); } $linkedPS[] = $d2p["PAYSYSTEM_ID"]; $deliveriesToPs[$d2p["DELIVERY_ID"]][] = $d2p["PAYSYSTEM_ID"]; } } $notLinkedToPS = array_diff($deliveryList, $dLinkedToP); $existLinkedPs = !empty($linkedPS); $notNeedRestriction = array(); $needRestriction = array(); foreach ($deliveryList as $id) { $need = true; //DS not linked to PS and (All PS having links linked to current DS if (in_array($id, $notLinkedToPS)) { if (isset($deliveriesToPs[$id])) { $diff = array_diff($linkedPS, $deliveriesToPs[$id]); } else { $diff = $linkedPS; } if (!$existLinkedPs || empty($diff)) { $notNeedRestriction[] = $id; $need = false; } } // DS linked to PS or exist linked PS but not linked to current DS if ($need) { $needRestriction[] = $id; } } $notNeedRestriction = array_intersect($notNeedRestriction, $restrictions); if (!empty($notNeedRestriction)) { $sql = ""; foreach ($notNeedRestriction as $deliveryId) { $sql .= " " . ($sql == "" ? "WHERE CLASS_NAME='" . $sqlHelper->forSql('\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPaySystem') . "' AND (" : "OR ") . "DELIVERY_ID=" . $sqlHelper->forSql($deliveryId); } $sql = "DELETE FROM " . Restrictions\Table::getTableName() . $sql . ")"; $con->queryExecute($sql); } $needRestriction = array_diff($needRestriction, $restrictions); //let's... add missing if (!empty($needRestriction)) { $sql = ""; foreach ($needRestriction as $deliveryId) { $sql .= ($sql == "" ? " " : ", ") . "(" . $sqlHelper->forSql($deliveryId) . ", '" . $sqlHelper->forSql('\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPaySystem') . "')"; } $sql = "INSERT INTO " . Restrictions\Table::getTableName() . "(DELIVERY_ID, CLASS_NAME) VALUES" . $sql; $con->queryExecute($sql); } }