/**
  * @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();
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 /**
  * @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;
 }
Beispiel #4
0
 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);
     }
 }