public static function convertConfigHandlerToSidAgent() { \Bitrix\Sale\Delivery\Services\Manager::getHandlersClassNames(); $initedHandlers = \Bitrix\Sale\Delivery\Services\Automatic::getRegisteredHandlers("HANDLER"); $filter = array('=CLASS_NAME' => '\\Bitrix\\Sale\\Delivery\\Services\\Automatic'); $res = Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => $filter, 'select' => array("ID", "CODE", "CONFIG"))); while ($params = $res->fetch()) { if (!empty($params["CONFIG"]["MAIN"]["SID"])) { continue; } $config = $params["CONFIG"]; if (!empty($initedHandlers[$config["MAIN"]["HANDLER"]]["SID"])) { $config["MAIN"]["SID"] = $initedHandlers[$config["MAIN"]["HANDLER"]]["SID"]; } else { $config["MAIN"]["SID"] = ""; } unset($config["MAIN"]["HANDLER"]); Bitrix\Sale\Delivery\Services\Table::update($params["ID"], array("CONFIG" => $config)); } return ""; }
/** * @deprecated */ public static function Update($oldId, $arFields, $arOptions = array()) { if (strlen($oldId) <= 0) { return false; } $dbRes = Bitrix\Sale\Delivery\Services\Table::getList(array('filter' => array("CODE" => $oldId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Services\\Configurable'))); $oldData = $dbRes->fetch(); if (!$oldData) { return false; } $newId = $oldData["ID"]; $fields = array_intersect_key($arFields, Bitrix\Sale\Delivery\Services\Table::getMap()); if (!empty($fields)) { if (array_key_exists("LOGOTIP", $fields) && is_array($fields["LOGOTIP"])) { $fields["LOGOTIP"]["MODULE_ID"] = "sale"; CFile::SaveForDB($fields, "LOGOTIP", "sale/delivery/logotip"); } $fields["CONFIG"] = array("MAIN" => array("PRICE" => isset($arFields["PRICE"]) ? $arFields["PRICE"] : $oldData["CONFIG"]["MAIN"]["PRICE"], "PERIOD" => array("FROM" => isset($arFields["PERIOD_FROM"]) ? $arFields["PERIOD_FROM"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["FROM"], "TO" => isset($arFields["PERIOD_TO"]) ? $arFields["PERIOD_TO"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["TO"], "TYPE" => isset($arFields["PERIOD_TYPE"]) ? $arFields["PERIOD_TYPE"] : $oldData["CONFIG"]["MAIN"]["PERIOD"]["TYPE"]))); $res = \Bitrix\Sale\Delivery\Services\Table::update($newId, $fields); if (!$res->isSuccess()) { return false; } } if (is_set($arFields, "LOCATIONS")) { Helper::resetLocationsForEntity($newId, $arFields['LOCATIONS'], self::CONN_ENTITY_NAME, !!$arOptions['EXPECT_LOCATION_CODES']); } if (is_set($arFields, "PAY_SYSTEM")) { CSaleDelivery::UpdateDeliveryPay($newId, $arFields["PAY_SYSTEM"]); } if (isset($arFields["LID"])) { $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite', "PARAMS" => array("SITE_ID" => $arFields["LID"])); $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite'))); if ($restrict = $rstrRes->fetch()) { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields); } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } } if (isset($arFields["LID"]) && strlen($arFields["LID"]) > 0) { $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite', "PARAMS" => array("SITE_ID" => $arFields["LID"])); $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite'))); if ($restrict = $rstrRes->fetch()) { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields); } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } } if (isset($arFields["WEIGHT_FROM"]) || isset($arFields["WEIGHT_TO"])) { $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight', "PARAMS" => array("MIN_WEIGHT" => isset($arFields["WEIGHT_FROM"]) ? $arFields["WEIGHT_FROM"] : 0, "MAX_WEIGHT" => isset($arFields["WEIGHT_TO"]) ? $arFields["WEIGHT_TO"] : 0)); $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight'))); if ($restrict = $rstrRes->fetch()) { if (floatval($arFields["WEIGHT_FROM"]) <= 0 && floatval($arFields["WEIGHT_TO"]) <= 0) { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::delete($restrict["ID"]); } else { if (!isset($arFields["WEIGHT_FROM"])) { $rfields["PARAMS"]["MIN_WEIGHT"] = $restrict["PARAMS"]["MIN_WEIGHT"]; } if (!isset($arFields["WEIGHT_TO"])) { $rfields["PARAMS"]["MAX_WEIGHT"] = $restrict["PARAMS"]["MAX_WEIGHT"]; } $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields); } } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } } if (isset($arFields["ORDER_PRICE_FROM"]) || isset($arFields["ORDER_PRICE_TO"]) || isset($arFields["ORDER_CURRENCY"])) { $rfields = array("DELIVERY_ID" => $newId, "CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice', "PARAMS" => array("MIN_PRICE" => isset($arFields["ORDER_PRICE_FROM"]) ? $arFields["ORDER_PRICE_FROM"] : 0, "MAX_PRICE" => isset($arFields["ORDER_PRICE_TO"]) ? $arFields["ORDER_PRICE_TO"] : 0, "CURRENCY" => isset($arFields["ORDER_CURRENCY"]) ? $arFields["ORDER_CURRENCY"] : "")); $rstrRes = \Bitrix\Sale\Delivery\Restrictions\Table::getList(array('filter' => array("DELIVERY_ID" => $newId, "=CLASS_NAME" => '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice'))); if ($restrict = $rstrRes->fetch()) { if (floatval($arFields["ORDER_PRICE_FROM"]) <= 0 && floatval($arFields["ORDER_PRICE_TO"]) <= 0 && strlen($arFields["ORDER_CURRENCY"]) <= 0) { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::delete($restrict["ID"]); } else { if (!isset($arFields["ORDER_PRICE_FROM"])) { $rfields["PARAMS"]["MIN_PRICE"] = $restrict["PARAMS"]["MIN_PRICE"]; } if (!isset($arFields["ORDER_PRICE_TO"])) { $rfields["PARAMS"]["MAX_PRICE"] = $restrict["PARAMS"]["MAX_PRICE"]; } if (!isset($arFields["ORDER_CURRENCY"])) { $rfields["PARAMS"]["CURRENCY"] = $restrict["PARAMS"]["CURRENCY"]; } $rres = \Bitrix\Sale\Delivery\Restrictions\Table::update($restrict["ID"], $rfields); } } else { $rres = \Bitrix\Sale\Delivery\Restrictions\Table::add($rfields); } } if (isset($arFields["STORE"])) { $stores = unserialize($arFields["STORE"]); if ($stores) { \Bitrix\Sale\Delivery\ExtraServices\Manager::saveStores($newId, $stores); } } return $oldId; }