1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
location_group.php
См. документацию.
1<?php
2
9
13
15{
16 const SELF_ENTITY_NAME = 'Bitrix\Sale\Location\Group';
17 const CONN_ENTITY_NAME = 'Bitrix\Sale\Location\GroupLocation';
18 const LOCATION_ENTITY_NAME = 'Bitrix\Sale\Location\Location';
19 const NAME_ENTITY_NAME = 'Bitrix\Sale\Location\Name\Group';
20
21 public static function GetLocationList($arFilter=Array())
22 {
24 {
25 try
26 {
27 $query = new Entity\Query(self::CONN_ENTITY_NAME);
28
29 $fieldMap = array(
30 'D_SPIKE' => 'D_SPIKE',
31 'LLOCATION_ID' => 'C.ID',
32 'LOCATION_CODE' => 'C.CODE',
33 'LOCATION_GROUP_ID' => 'LOCATION_GROUP_ID'
34 );
35 $fieldProxy = array(
36 'LLOCATION_ID' => 'LOCATION_ID',
37 );
38
39 $query->registerRuntimeField(
40 'D_SPIKE',
41 array(
42 'data_type' => 'integer',
43 'expression' => array(
44 'distinct %s',
45 'LOCATION_GROUP_ID'
46 )
47 )
48 );
49
50 $query->registerRuntimeField(
51 'L',
52 array(
53 'data_type' => self::LOCATION_ENTITY_NAME,
54 'reference' => array(
55 '=this.LOCATION_ID' => 'ref.ID',
56 ),
57 'join_type' => 'inner'
58 )
59 );
60
61 $query->registerRuntimeField(
62 'C',
63 array(
64 'data_type' => self::LOCATION_ENTITY_NAME,
65 'reference' => array(
66 'LOGIC' => 'OR',
67 array(
68 '>=ref.LEFT_MARGIN' => 'this.L.LEFT_MARGIN',
69 '<=ref.RIGHT_MARGIN' => 'this.L.RIGHT_MARGIN'
70 ),
71 array(
72 '=ref.ID' => 'this.L.ID'
73 )
74 ),
75 'join_type' => 'inner'
76 )
77 );
78
79 // select
81
82 // filter
83 list($filterFields, $filterClean) = CSaleLocation::processFilterForGetList($arFilter, $fieldMap, $fieldProxy);
84
85 $query->setSelect($selectFields);
86 $query->setFilter($filterFields);
87
88 $res = $query->exec();
89 $res->addReplacedAliases($fieldProxy);
90
91 return $res;
92 }
93 catch(Exception $e)
94 {
95 return new DB\ArrayResult(array());
96 }
97 }
98 else
99 {
100
101 global $DB;
102 $arSqlSearch = Array();
103
104 if(!is_array($arFilter))
105 $filter_keys = Array();
106 else
107 $filter_keys = array_keys($arFilter);
108
109 $countFieldKey = count($filter_keys);
110 for($i=0; $i < $countFieldKey; $i++)
111 {
112 $val = $DB->ForSql($arFilter[$filter_keys[$i]]);
113 if ($val == '') continue;
114
115 $key = $filter_keys[$i];
116 if ($key[0]=="!")
117 {
118 $key = mb_substr($key, 1);
119 $bInvert = true;
120 }
121 else
122 $bInvert = false;
123
124 switch(mb_strtoupper($key))
125 {
126 case "LOCATION_ID":
127 $arSqlSearch[] = "LOCATION_ID ".($bInvert?"<>":"=")." ".intval($val)." ";
128 break;
129 case "LOCATION_GROUP_ID":
130 $arSqlSearch[] = "LOCATION_GROUP_ID ".($bInvert?"<>":"=")." ".intval($val)." ";
131 break;
132 }
133 }
134
135 $strSqlSearch = "";
136 $countSqlSearch = count($arSqlSearch);
137 for($i=0; $i < $countSqlSearch; $i++)
138 {
139 $strSqlSearch .= " AND ";
140 $strSqlSearch .= " (".$arSqlSearch[$i].") ";
141 }
142
143 $strSql =
144 "SELECT LOCATION_ID, LOCATION_GROUP_ID ".
145 "FROM b_sale_location2location_group ".
146 "WHERE 1 = 1 ".
147 " ".$strSqlSearch." ";
148
149 $res = $DB->Query($strSql);
150 return $res;
151
152 }
153 }
154
155 public static function GetGroupLangByID($ID, $strLang = LANGUAGE_ID)
156 {
157 global $DB;
158
159 $ID = intval($ID);
160 $strSql =
161 "SELECT ID, LOCATION_GROUP_ID, LID, NAME ".
162 "FROM b_sale_location_group_lang ".
163 "WHERE LOCATION_GROUP_ID = ".$ID." ".
164 " AND LID = '".$DB->ForSql($strLang, 2)."'";
165 $db_res = $DB->Query($strSql);
166
167 if ($res = $db_res->Fetch())
168 {
169 return $res;
170 }
171 return False;
172 }
173
174 public static function CheckFields($ACTION, &$arFields)
175 {
176 global $DB;
177
178 if (is_set($arFields, "SORT") && intval($arFields["SORT"])<=0)
179 $arFields["SORT"] = 100;
180
181 if (is_set($arFields, "LOCATION_ID") && (!is_array($arFields["LOCATION_ID"]) || count($arFields["LOCATION_ID"])<=0))
182 return false;
183
184 if (is_set($arFields, "LANG"))
185 {
186 $db_lang = CLangAdmin::GetList("sort", "asc", array("ACTIVE" => "Y"));
187 while ($arLang = $db_lang->Fetch())
188 {
189 $bFound = False;
190 $coountarFieldLang = count($arFields["LANG"]);
191 for ($i = 0; $i < $coountarFieldLang; $i++)
192 {
193 if ($arFields["LANG"][$i]["LID"]==$arLang["LID"] && $arFields["LANG"][$i]["NAME"] <> '')
194 {
195 $bFound = True;
196 }
197 }
198 if (!$bFound)
199 return false;
200 }
201 }
202
203 return True;
204 }
205
206 public static function Update($ID, $arFields)
207 {
208 global $DB;
209
210 $ID = intval($ID);
212 return false;
213
214 $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupUpdate");
215 while ($arEvent = $db_events->Fetch())
216 if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields))===false)
217 return false;
218
219 $events = GetModuleEvents("sale", "OnLocationGroupUpdate");
220 while ($arEvent = $events->Fetch())
222
223 $strUpdate = $DB->PrepareUpdate("b_sale_location_group", $arFields);
224 $strSql = "UPDATE b_sale_location_group SET ".$strUpdate." WHERE ID = ".$ID."";
225 $DB->Query($strSql);
226
227 if (is_set($arFields, "LANG"))
228 {
229 $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LOCATION_GROUP_ID = ".$ID."");
230
231 $countFieldLang = count($arFields["LANG"]);
232 for ($i = 0; $i < $countFieldLang; $i++)
233 {
234 $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]);
235 $strSql =
236 "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, ".$arInsert[0].") ".
237 "VALUES(".$ID.", ".$arInsert[1].")";
238 $DB->Query($strSql);
239 }
240 }
241
242 if(is_set($arFields, "LOCATION_ID"))
243 {
245 {
246 try
247 {
248 $entityClass = self::CONN_ENTITY_NAME.'Table';
249 $entityClass::resetMultipleForOwner($ID, array(
250 Location\Connector::DB_LOCATION_FLAG => $entityClass::normalizeLocationList($arFields["LOCATION_ID"])
251 ));
252 }
253 catch(Exception $e)
254 {
255 }
256 }
257 else
258 {
259 $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_GROUP_ID = ".$ID."");
260
261 $countArFieldLoc = count($arFields["LOCATION_ID"]);
262 for ($i = 0; $i < $countArFieldLoc; $i++)
263 {
264 $strSql =
265 "INSERT INTO b_sale_location2location_group(LOCATION_ID, LOCATION_GROUP_ID) ".
266 "VALUES(".$arFields["LOCATION_ID"][$i].", ".$ID.")";
267 $DB->Query($strSql);
268 }
269 }
270 }
271
272 return $ID;
273 }
274
275 public static function Delete($ID)
276 {
277 global $DB;
278 $ID = intval($ID);
279
280 $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupDelete");
281 while ($arEvent = $db_events->Fetch())
282 if (ExecuteModuleEventEx($arEvent, array($ID))===false)
283 return false;
284
285 $events = GetModuleEvents("sale", "OnLocationGroupDelete");
286 while ($arEvent = $events->Fetch())
287 ExecuteModuleEventEx($arEvent, array($ID));
288
289 $DB->Query("DELETE FROM b_sale_delivery2location WHERE LOCATION_ID = ".$ID." AND LOCATION_TYPE = 'G'", true);
290 // tax rates drop ?
291 $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_GROUP_ID = ".$ID."", true);
292 $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LOCATION_GROUP_ID = ".$ID."", true);
293
294 return $DB->Query("DELETE FROM b_sale_location_group WHERE ID = ".$ID."", true);
295 }
296
297 public static function OnLangDelete($strLang)
298 {
299 global $DB;
300 $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LID = '".$DB->ForSql($strLang)."'", true);
301 return True;
302 }
303}
$db_res
Определения options_user_settings.php:8
const DB_LOCATION_FLAG
Определения connector.php:25
static GetList($by="sort", $order="asc", $arFilter=[])
Определения language.php:12
static GetGroupLangByID($ID, $strLang=LANGUAGE_ID)
Определения location_group.php:155
static Delete($ID)
Определения location_group.php:275
static OnLangDelete($strLang)
Определения location_group.php:297
static GetLocationList($arFilter=Array())
Определения location_group.php:21
const NAME_ENTITY_NAME
Определения location_group.php:19
const LOCATION_ENTITY_NAME
Определения location_group.php:18
const SELF_ENTITY_NAME
Определения location_group.php:16
const CONN_ENTITY_NAME
Определения location_group.php:17
static CheckFields($ACTION, &$arFields)
Определения location_group.php:174
static Update($ID, $arFields)
Определения location_group.php:206
static processFilterForGetList($arFilter, $fieldMap=array(), $fieldProxy=array(), $query=null)
Определения location.php:1795
static isLocationProMigrated()
Определения location.php:58
static processSelectForGetList($arSelectFields, $fieldMap)
Определения location.php:1870
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$bFound
Определения get_search.php:40
$query
Определения get_search.php:11
if($ajaxMode) $ID
Определения get_user.php:27
$filterFields
Определения iblock_catalog_list.php:55
$selectFields
Определения iblock_catalog_list.php:160
global $DB
Определения cron_frame.php:29
$ACTION
Определения csv_new_setup.php:27
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
Определения arrayresult.php:2
Определения ufield.php:9
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$val
Определения options.php:1793
$arFilter
Определения user_search.php:106