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); }
public static function getViewHtml(array $input, $values) { $result = ""; $res = \Bitrix\Sale\Delivery\DeliveryLocationTable::getConnectedLocations($input["DELIVERY_ID"], array('select' => array('LNAME' => 'NAME.NAME'), 'filter' => array('NAME.LANGUAGE_ID' => LANGUAGE_ID))); while ($loc = $res->fetch()) { $result .= htmlspecialcharsbx($loc["LNAME"]) . "<br>\n"; } $res = DeliveryLocationTable::getConnectedGroups($input["DELIVERY_ID"], array('select' => array('LNAME' => 'NAME.NAME'), 'filter' => array('NAME.LANGUAGE_ID' => LANGUAGE_ID))); while ($loc = $res->fetch()) { $result .= htmlspecialcharsbx($loc["LNAME"]) . "<br>\n"; } return $result; }
/** * <p>Метод удаляет все местоположения из базы. Метод динамичный.</p> <br><br> * * * @return mixed * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__deleteall.1cda6559.php * @author Bitrix */ public static function DeleteAll() { global $DB; foreach (GetModuleEvents("sale", "OnBeforeLocationDeleteAll", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent) === false) { return false; } } if (self::isLocationProMigrated()) { //main $DB->Query("DELETE FROM " . Location\LocationTable::getTableName()); $DB->Query("DELETE FROM " . Location\GroupTable::getTableName()); $DB->Query("DELETE FROM " . Location\TypeTable::getTableName()); //names $DB->Query("DELETE FROM " . Location\Name\LocationTable::getTableName()); $DB->Query("DELETE FROM " . Location\Name\GroupTable::getTableName()); $DB->Query("DELETE FROM " . Location\Name\TypeTable::getTableName()); //links $DB->Query("DELETE FROM " . Location\GroupLocationTable::getTableName()); $DB->Query("DELETE FROM " . Location\SiteLocationTable::getTableName()); $DB->Query("DELETE FROM " . Delivery\DeliveryLocationTable::getTableName()); //other $DB->Query("DELETE FROM " . Location\DefaultSiteTable::getTableName()); $DB->Query("DELETE FROM " . Location\ExternalTable::getTableName()); $DB->Query("DELETE FROM " . Location\ExternalServiceTable::getTableName()); } $DB->Query("DELETE FROM b_sale_location2location_group"); $DB->Query("DELETE FROM b_sale_location_group_lang"); $DB->Query("DELETE FROM b_sale_location_group"); $DB->Query("DELETE FROM b_sale_delivery2location"); $DB->Query("DELETE FROM b_sale_location"); $DB->Query("DELETE FROM b_sale_location_city_lang"); $DB->Query("DELETE FROM b_sale_location_city"); $DB->Query("DELETE FROM b_sale_location_country_lang"); $DB->Query("DELETE FROM b_sale_location_country"); $DB->Query("DELETE FROM b_sale_location_region_lang"); $DB->Query("DELETE FROM b_sale_location_region"); $DB->Query("DELETE FROM b_sale_location_zip"); foreach (GetModuleEvents("sale", "OnLocationDeleteAll", true) as $arEvent) { ExecuteModuleEventEx($arEvent); } }
/** * @param array $restriction * @param array $filter * @return bool * @throws \Bitrix\Main\ArgumentNullException */ protected static function checkRestrictionFilter(array $restriction, array $filter) { $result = true; switch ($restriction["CLASS_NAME"]) { case '\\Bitrix\\Sale\\Delivery\\Restrictions\\BySite': $fieldInFilter = self::isFieldInFilter2("LID", $filter); $value = self::getFilterValue("LID", $filter); if (!$fieldInFilter) { break; } if (is_array($restriction["PARAMS"]["SITE_ID"])) { $result = in_array($value, $restriction["PARAMS"]["SITE_ID"]); } else { $result = $value == $restriction["PARAMS"]["SITE_ID"]; } break; case '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByWeight': $result = !(self::isFieldInFilter2("WEIGHT_FROM", $filter) && floatval(self::getFilterValue("WEIGHT_FROM", $filter)) < floatval($restriction["PARAMS"]["MIN_WEIGHT"])); $result = $result && !(self::isFieldInFilter2("WEIGHT_TO", $filter) && floatval(self::getFilterValue("WEIGHT_TO", $filter)) > floatval($restriction["PARAMS"]["MAX_WEIGHT"])); break; case '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByPrice': $fieldInFilter = self::isFieldInFilter2("ORDER_PRICE_FROM", $filter); $value = self::getFilterValue("ORDER_PRICE_FROM", $filter); $value = floatval($value); if ($fieldInFilter && $value > 0 && floatval($restriction["PARAMS"]["MIN_PRICE"]) > 0) { $result = floatval($value) > floatval($restriction["PARAMS"]["MIN_PRICE"]); if (!$result) { break; } } $fieldInFilter = self::isFieldInFilter2("ORDER_PRICE_TO", $filter); $value = self::getFilterValue("ORDER_PRICE_TO", $filter); $value = floatval($value); if ($fieldInFilter && $value > 0 && floatval($restriction["PARAMS"]["MAX_PRICE"]) > 0) { $result = floatval($value) < floatval($restriction["PARAMS"]["MAX_PRICE"]); if (!$result) { break; } } $fieldInFilter = self::isFieldInFilter2("ORDER_CURRENCY", $filter); $value = self::getFilterValue("ORDER_CURRENCY", $filter); if ($fieldInFilter && strlen($value) > 0 && strlen($restriction["PARAMS"]["CURRENCY"]) > 0) { $result = $value == $restriction["PARAMS"]["CURRENCY"]; if (!$result) { break; } } break; case '\\Bitrix\\Sale\\Delivery\\Restrictions\\ByLocation': $fieldInFilter = self::isFieldInFilter2("LOCATION", $filter); $value = self::getFilterValue("LOCATION", $filter); if ($fieldInFilter && strlen($value) > 0 && $restriction['SERVICE_ID'] > 0) { try { $result = \Bitrix\Sale\Delivery\DeliveryLocationTable::checkConnectionExists(intval($restriction['SERVICE_ID']), $value, array('LOCATION_LINK_TYPE' => 'CODE')); } catch (\Bitrix\Sale\Location\Tree\NodeNotFoundException $e) { $result = false; } if ($result) { return true; } try { return \Bitrix\Sale\Delivery\DeliveryLocationTable::checkConnectionExists(intval($restriction['SERVICE_ID']), $value, array('LOCATION_LINK_TYPE' => 'ID')); } catch (\Bitrix\Sale\Location\Tree\NodeNotFoundException $e) { $result = false; } } break; default: break; } return $result; }