Beispiel #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);
     $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;
 }
	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;
	}