1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
person_type.php
См. документацию.
1<?php
2
6
7Loc::loadMessages(__FILE__);
8
9$GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"] = Array();
10
12{
13 public static function DoProcessOrder(&$arOrder, $personTypeId, &$arErrors, $arOptions)
14 {
15 $personTypeId = intval($personTypeId);
16
17 if (isset($arOptions['ORDER'])
18 && $arOptions['ORDER'] instanceof \Bitrix\Sale\Order
19 )
20 {
21 $registry = \Bitrix\Sale\Registry::getInstance($arOptions['ORDER']::getRegistryType());
22 $personType = $registry->getPersonTypeClassName();
23 }
24 else
25 {
26 $personType = \Bitrix\Sale\PersonType::class;
27 }
28
29 if ($personTypeId > 0)
30 {
32 $dbPersonType = $personType::getList([
33 'filter' => ['=ID' => $personTypeId]
34 ]);
35 if ($arPersonType = $dbPersonType->fetch())
36 {
37 $arOrder["PERSON_TYPE_ID"] = $arPersonType["ID"];
38 }
39 else
40 {
41 $arErrors[] = array("CODE" => "PERSON_TYPE_ID", "TEXT" => GetMessage('SKGP_PERSON_TYPE_NOT_FOUND'));
42 }
43
44 return;
45 }
46
48 $dbPersonType = $personType::getList([
49 'filter' => [
50 "=PERSON_TYPE_SITE.SITE_ID" => $arOrder["SITE_ID"],
51 "=ACTIVE" => "Y"
52 ],
53 'order' => [
54 'SORT' => 'ASC',
55 'NAME' => 'ASC'
56 ]
57 ]);
58
59 if ($arPersonType = $dbPersonType->Fetch())
60 {
61 $arOrder["PERSON_TYPE_ID"] = $arPersonType["ID"];
62 }
63 else
64 {
65 $arErrors[] = array("CODE" => "PERSON_TYPE_ID", "TEXT" => GetMessage('SKGP_PERSON_TYPE_EMPTY'));
66 }
67 }
68
69 public static function GetByID($ID)
70 {
71 $ID = intval($ID);
72 $dbPerson = CSalePersonType::GetList(Array(), Array("ID" => $ID));
73 if ($res = $dbPerson->Fetch())
74 {
75 return $res;
76 }
77 return False;
78 }
79
80 public static function CheckFields($ACTION, &$arFields, $ID=false)
81 {
82 if ((is_set($arFields, "NAME") || $ACTION=="ADD") && trim($arFields["NAME"]) == '')
83 {
84 $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGP_NO_NAME_TP"), "ERROR_NO_NAME");
85 return false;
86 }
87
88 $arMsg = Array();
89 if(
90 ($ID===false && !is_set($arFields, "LID")) ||
91 (is_set($arFields, "LID")
92 && (
93 (is_array($arFields["LID"]) && count($arFields["LID"])<=0)
94 ||
95 (!is_array($arFields["LID"]) && $arFields["LID"] == '')
96 )
97 )
98 )
99 {
100 $arMsg[] = array("id"=>"LID", "text"=> GetMessage("SKGP_BAD_SITE_NA"));
101 }
102 elseif(is_set($arFields, "LID"))
103 {
104 if(!is_array($arFields["LID"]))
105 $arFields["LID"] = Array($arFields["LID"]);
106
107 foreach($arFields["LID"] as $v)
108 {
109 $r = CSite::GetByID($v);
110 if(!$r->Fetch())
111 {
112 $arMsg[] = array("id"=>"LID", "text"=> GetMessage("MAIN_EVENT_BAD_SITE"));
113 }
114 }
115 }
116
117 if(!empty($arMsg))
118 {
119 $e = new CAdminException($arMsg);
120 $GLOBALS["APPLICATION"]->ThrowException($e);
121 return false;
122 }
123
124 return True;
125 }
126
127 public static function Update($ID, $arFields)
128 {
129 global $DB;
130
131 $ID = intval($ID);
133 return false;
134
135 $db_events = GetModuleEvents("sale", "OnBeforePersonTypeUpdate");
136 while ($arEvent = $db_events->Fetch())
137 if (ExecuteModuleEventEx($arEvent, Array($ID, &$arFields))===false)
138 return false;
139
140 $arLID = Array();
141 if(is_set($arFields, "LID"))
142 {
143 if(is_array($arFields["LID"]))
144 $arLID = $arFields["LID"];
145 else
146 $arLID[] = $arFields["LID"];
147
148 $str_LID = "''";
149 $arFields["LID"] = false;
150 foreach($arLID as $k => $v)
151 {
152 if($v <> '')
153 {
154 $str_LID .= ", '".$DB->ForSql($v)."'";
155 if(empty($arFields["LID"]))
156 $arFields["LID"] = $v;
157 }
158 else
159 unset($arLID[$k]);
160 }
161 }
162
163 $strUpdate = $DB->PrepareUpdate("b_sale_person_type", $arFields);
164 $strSql = "UPDATE b_sale_person_type SET ".$strUpdate." WHERE ID = ".$ID."";
165 $DB->Query($strSql);
166
167 if(count($arLID)>0)
168 {
169 $strSql = "DELETE FROM b_sale_person_type_site WHERE PERSON_TYPE_ID=".$ID;
170 $DB->Query($strSql);
171
172 $strSql =
173 "INSERT INTO b_sale_person_type_site(PERSON_TYPE_ID, SITE_ID) ".
174 "SELECT ".$ID.", LID ".
175 "FROM b_lang ".
176 "WHERE LID IN (".$str_LID.") ";
177
178 $DB->Query($strSql);
179 }
180
181
182 unset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]);
183
184 $events = GetModuleEvents("sale", "OnPersonTypeUpdate");
185 while ($arEvent = $events->Fetch())
186 ExecuteModuleEventEx($arEvent, Array($ID, $arFields));
187
188 return $ID;
189 }
190
191 public static function Delete($ID)
192 {
193 global $DB, $APPLICATION;
194
195 $ID = (int)($ID);
196
197 if (OrderTable::getList(array(
198 'filter' => array('=PERSON_TYPE_ID' => $ID),
199 'limit' => 1
200 ))->fetch())
201 {
202 $APPLICATION->ThrowException(Loc::getMessage("SKGP_ERROR_PERSON_HAS_ORDER").$ID, "ERROR_PERSON_HAS_ORDER");
203 return false;
204 }
205
206 if (OrderArchiveTable::getList(array(
207 'filter' => array('=PERSON_TYPE_ID' => $ID),
208 'limit' => 1
209 ))->fetch())
210 {
211 $APPLICATION->ThrowException(Loc::getMessage("SKGP_ERROR_PERSON_HAS_ARCHIVE", array("#ID#" => $ID)), "ERROR_PERSON_HAS_ARCHIVED_ORDER");
212 return false;
213 }
214
215 $db_events = GetModuleEvents("sale", "OnBeforePersonTypeDelete");
216 while ($arEvent = $db_events->Fetch())
217 if (ExecuteModuleEventEx($arEvent, Array($ID))===false)
218 return false;
219
220 $events = GetModuleEvents("sale", "OnPersonTypeDelete");
221 while ($arEvent = $events->Fetch())
222 ExecuteModuleEventEx($arEvent, Array($ID));
223
224 $DB->Query("DELETE FROM b_sale_pay_system_action WHERE PERSON_TYPE_ID = ".$ID."", true);
225
226 $db_orderProps = CSaleOrderProps::GetList(
227 array("PROPS_GROUP_ID" => "ASC"),
228 array("PERSON_TYPE_ID" => $ID)
229 );
230 while ($arOrderProps = $db_orderProps->Fetch())
231 {
232 $DB->Query("DELETE FROM b_sale_order_props_variant WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
233 $DB->Query("DELETE FROM b_sale_order_props_value WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
234 $DB->Query("DELETE FROM b_sale_order_props_relation WHERE PROPERTY_ID = ".$arOrderProps["ID"]."", true);
235 $DB->Query("DELETE FROM b_sale_user_props_value WHERE ORDER_PROPS_ID = ".$arOrderProps["ID"]."", true);
236 }
237 $DB->Query("DELETE FROM b_sale_order_props WHERE PERSON_TYPE_ID = ".$ID."", true);
238
239 $db_orderUserProps = CSaleOrderUserProps::GetList(
240 array("NAME" => "ASC"),
241 array("PERSON_TYPE_ID" => $ID)
242 );
243 while ($arOrderUserProps = $db_orderUserProps->Fetch())
244 {
245 $DB->Query("DELETE FROM b_sale_user_props_value WHERE USER_PROPS_ID = ".$arOrderUserProps["ID"]."", true);
246 }
247 $DB->Query("DELETE FROM b_sale_user_props WHERE PERSON_TYPE_ID = ".$ID."", true);
248 $DB->Query("DELETE FROM b_sale_order_props_group WHERE PERSON_TYPE_ID = ".$ID."", true);
249 $DB->Query("DELETE FROM b_sale_person_type_site WHERE PERSON_TYPE_ID=".$ID, true);
250
251 unset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]);
252 return $DB->Query("DELETE FROM b_sale_person_type WHERE ID = ".$ID."", true);
253 }
254
255 public static function OnBeforeLangDelete($lang)
256 {
257 global $DB;
258 $r = $DB->Query("SELECT 'x' FROM b_sale_person_type WHERE LID = '".$DB->ForSQL($lang, 2)."' AND ENTITY_REGISTRY_TYPE='".\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER."'");
259 return ($r->Fetch() ? false : true);
260 }
261
262 public static function SelectBox($sFieldName, $sValue, $sDefaultValue = "", $bFullName = True, $JavaFunc = "", $sAddParams = "")
263 {
264 if (!isset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]) || !is_array($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]) || count($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"])<1)
265 {
266 unset($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]);
267 $l = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"));
268 while ($arPersonType = $l->Fetch())
269 {
270 $GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"][$arPersonType["ID"]] = Array("ID" => $arPersonType["ID"], "NAME" => $arPersonType["NAME"], "LID" => implode(", ", $arPersonType["LIDS"]));
271 }
272 }
273 $s1 = '';
274 $s = '<select name="'.$sFieldName.'"';
275 if ($sAddParams <> '') $s .= ' '.$sAddParams.'';
276 if ($JavaFunc <> '') $s .= ' OnChange="'.$JavaFunc.'"';
277 $s .= '>'."\n";
278 $found = false;
279
280 if (is_array($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]))
281 {
282 foreach ($GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"] as $res)
283 {
284 $found = (intval($res["ID"]) == intval($sValue));
285 $s1 .= '<option value="'.$res["ID"].'"'.($found ? ' selected' : '').'>'.(($bFullName) ? ("[".$res["ID"]."] ".htmlspecialcharsbx($res["NAME"])." (".htmlspecialcharsbx($res["LID"]).")") : (htmlspecialcharsbx($res["NAME"]))).'</option>'."\n";
286 }
287 }
288 if ($sDefaultValue <> '')
289 $s .= "<option value='' ".($found ? "" : "selected").">".htmlspecialcharsbx($sDefaultValue)."</option>";
290 return $s.$s1.'</select>';
291 }
292}
global $APPLICATION
Определения include.php:80
static getInstance($type)
Определения registry.php:183
static Delete($ID)
Определения person_type.php:191
static GetByID($ID)
Определения person_type.php:69
static CheckFields($ACTION, &$arFields, $ID=false)
Определения person_type.php:80
static OnBeforeLangDelete($lang)
Определения person_type.php:255
static Update($ID, $arFields)
Определения person_type.php:127
static SelectBox($sFieldName, $sValue, $sDefaultValue="", $bFullName=True, $JavaFunc="", $sAddParams="")
Определения person_type.php:262
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения order_props.php:410
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения order_user_props.php:7
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения person_type.php:7
$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
$GLOBALS["SALE_PERSON_TYPE_LIST_CACHE"]
Определения person_type.php:9
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
$ACTION
Определения csv_new_setup.php:27
if(!defined('SITE_ID')) $lang
Определения include.php:91
$l
Определения options.php:783
$arOptions
Определения structure.php:223
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
</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
$k
Определения template_pdf.php:567
$GLOBALS['_____370096793']
Определения update_client.php:1