Ejemplo n.º 1
0
 /**
  * <p>Метод удаляет местоположение с кодом ID. Метод также удаляет город этого местоположения, страну этого местоположения (если она не входит больше ни в одно другое местоположение), а также связи этого местоположения с группами местоположений и службами доставки. Метод динамичный.</p>
  *
  *
  * @param int $ID  Код местоположения. </h
  *
  * @return bool <p>Метод возвращает <i>true</i> в случае успешного удаления
  * местоположения и <i>false</i> - в противном случае.</p> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * if (!CSaleLocation::Delete(12))
  *    echo "Ошибка удаления местоположения";<br>?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__delete.008e0aa2.php
  * @author Bitrix
  */
 public static function Delete($ID)
 {
     global $DB;
     $ID = IntVal($ID);
     if (!($arLocRes = CSaleLocation::GetByID($ID, LANGUAGE_ID))) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeLocationDelete", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID)) === false) {
             return false;
         }
     }
     if (IntVal($arLocRes["CITY_ID"]) > 0) {
         CSaleLocation::DeleteCity($arLocRes["CITY_ID"]);
     }
     $bDelCountry = True;
     $db_res = CSaleLocation::GetList(array("SORT" => "ASC"), array("COUNTRY_ID" => $arLocRes["COUNTRY_ID"], "!ID" => $ID), LANGUAGE_ID);
     if ($db_res->Fetch()) {
         $bDelCountry = false;
     }
     if ($bDelCountry && IntVal($arLocRes["COUNTRY_ID"]) > 0) {
         CSaleLocation::DeleteCountry($arLocRes["COUNTRY_ID"]);
     }
     $bDelRegion = True;
     $db_res = CSaleLocation::GetList(array("SORT" => "ASC"), array("REGION_ID" => $arLocRes["REGION_ID"], "!ID" => $ID), LANGUAGE_ID);
     if ($db_res->Fetch()) {
         $bDelRegion = false;
     }
     if ($bDelRegion && IntVal($arLocRes["REGION_ID"]) > 0) {
         CSaleLocation::DeleteRegion($arLocRes["REGION_ID"]);
     }
     $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_ID = " . $ID . "", true);
     $DB->Query("DELETE FROM b_sale_delivery2location WHERE LOCATION_ID = " . $ID . " AND LOCATION_TYPE = 'L'", true);
     $DB->Query("DELETE FROM b_sale_location_zip WHERE LOCATION_ID = " . $ID . "", true);
     if (self::isLocationProMigrated()) {
         try {
             $res = Location\LocationTable::delete($ID);
             // the whole subtree will be deleted
             if (!$res->isSuccess()) {
                 return false;
             }
             $bDelete = true;
         } catch (Exception $e) {
             return false;
         }
     } else {
         $bDelete = $DB->Query("DELETE FROM b_sale_location WHERE ID = " . $ID . "", true);
     }
     foreach (GetModuleEvents("sale", "OnLocationDelete", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID));
     }
     return $bDelete;
 }