Exemplo n.º 1
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);
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 /**
  * <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);
     }
 }
Exemplo n.º 4
0
 /**
  * @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;
 }