1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
order_user_props_value.php
См. документацию.
1<?php
2
3require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/general/order_user_props_value.php");
4
6{
7 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
8 {
9 global $DB;
10
11 if (!is_array($arOrder) && !is_array($arFilter))
12 {
13 $arOrder = strval($arOrder);
14 $arFilter = strval($arFilter);
15 if ($arOrder <> '' && $arFilter <> '')
16 $arOrder = array($arOrder => $arFilter);
17 else
18 $arOrder = array();
19 if (is_array($arGroupBy))
20 $arFilter = $arGroupBy;
21 else
22 $arFilter = array();
23 $arGroupBy = false;
24
25 if (count($arSelectFields) <= 0)
26 $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "USER_VALUE_NAME", "VALUE", "TYPE", "SORT", "VARIANT_NAME", "CODE");
27 }
28
29 if (count($arSelectFields) <= 0)
30 $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "NAME", "VALUE", "PROP_ID", "PROP_PERSON_TYPE_ID", "PROP_NAME", "PROP_TYPE", "PROP_REQUIED", "PROP_DEFAULT_VALUE", "PROP_SORT", "PROP_USER_PROPS", "PROP_IS_LOCATION", "PROP_PROPS_GROUP_ID", "PROP_SIZE1", "PROP_SIZE2", "PROP_DESCRIPTION", "PROP_IS_EMAIL", "PROP_IS_PROFILE_NAME", "PROP_IS_PAYER", "PROP_IS_LOCATION4TAX", "PROP_IS_ZIP", "PROP_CODE", "VARIANT_ID", "VARIANT_ORDER_PROPS_ID", "VARIANT_NAME", "VARIANT_VALUE", "VARIANT_SORT", "VARIANT_DESCRIPTION");
31
32 // TODO proper compatibility CAllSaleOrderUserPropsValue::getList15
33 $sale15converted = \Bitrix\Main\Config\Option::get('main', '~sale_converted_15', 'N') == 'Y';
34
35
36 // FIELDS -->
38 "ID" => array("FIELD" => "UP.ID", "TYPE" => "int"),
39 "USER_PROPS_ID" => array("FIELD" => "UP.USER_PROPS_ID", "TYPE" => "int"),
40 "ORDER_PROPS_ID" => array("FIELD" => "UP.ORDER_PROPS_ID", "TYPE" => "int"),
41 "NAME" => array("FIELD" => "UP.NAME", "TYPE" => "string"),
42
43 "PROP_ID" => array("FIELD" => "P.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
44 "PROP_PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
45 "PROP_NAME" => array("FIELD" => "P.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
46 "PROP_TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
47 "PROP_REQUIED" => array("FIELD" => "P.REQUI".($sale15converted ? 'R' : '')."ED", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
48 "PROP_DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
49 "PROP_SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
50 "PROP_USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
51 "PROP_IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
52 "PROP_PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
53 "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
54 "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
55 "PROP_DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
56 "PROP_IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
57 "PROP_IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
58 "PROP_IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
59 "PROP_IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
60 "PROP_IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
61 "PROP_MULTIPLE" => array("FIELD" => "P.MULTIPLE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
62 "PROP_CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
63 "PROP_ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
64 "PROP_UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
65
66 "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
67 "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
68 "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
69 "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
70 "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
71 "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"),
72
73 "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"),
74 "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
75 "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"),
76 "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)")
77 );
78 // <-- FIELDS
79
80
81 if ($sale15converted && is_array($arSelectFields) && $arSelectFields)
82 {
83 if (($i = array_search('PROP_SIZE1', $arSelectFields)) !== false)
84 unset($arSelectFields[$i]);
85 if (($i = array_search('PROP_SIZE2', $arSelectFields)) !== false)
86 unset($arSelectFields[$i]);
87
88 if (($i = array_search('*', $arSelectFields)) !== false)
89 {
90 unset($arFields['PROP_SIZE1'], $arFields['PROP_SIZE2']);
91 }
92 }
93
94 self::addPropertyValueField('UP', $arFields, $arSelectFields);
95
96 $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
97
98 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]);
99
100 if (is_array($arGroupBy) && count($arGroupBy)==0)
101 {
102 $strSql =
103 "SELECT ".$arSqls["SELECT"]." ".
104 "FROM b_sale_user_props_value UP ".
105 " ".$arSqls["FROM"]." ";
106 if ($arSqls["WHERE"] <> '')
107 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
108 if ($arSqls["GROUPBY"] <> '')
109 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
110
111 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
112
113 $dbRes = $DB->Query($strSql);
114 if ($arRes = $dbRes->Fetch())
115 return $arRes["CNT"];
116 else
117 return False;
118 }
119
120 $strSql =
121 "SELECT ".$arSqls["SELECT"]." ".
122 "FROM b_sale_user_props_value UP ".
123 " ".$arSqls["FROM"]." ";
124 if ($arSqls["WHERE"] <> '')
125 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
126 if ($arSqls["GROUPBY"] <> '')
127 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
128 if ($arSqls["ORDERBY"] <> '')
129 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
130
131 if (!empty($arNavStartParams) && is_array($arNavStartParams) && (int)($arNavStartParams["nTopCount"] ?? 0) <= 0)
132 {
133 $strSql_tmp =
134 "SELECT COUNT('x') as CNT ".
135 "FROM b_sale_user_props_value UP ".
136 " ".$arSqls["FROM"]." ";
137 if ($arSqls["WHERE"] <> '')
138 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
139 if ($arSqls["GROUPBY"] <> '')
140 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
141
142 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
143
144 $dbRes = $DB->Query($strSql_tmp);
145 $cnt = 0;
146 if ($arSqls["GROUPBY"] == '')
147 {
148 if ($arRes = $dbRes->Fetch())
149 $cnt = $arRes["CNT"];
150 }
151 else
152 {
153 // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД
154 $cnt = $dbRes->SelectedRowsCount();
155 }
156
157 $dbRes = new CDBResult();
158
159 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
160
161 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
162 }
163 else
164 {
165 if (!empty($arNavStartParams) && is_array($arNavStartParams) && (int)($arNavStartParams["nTopCount"] ?? 0) > 0)
166 {
167 $strSql .= "LIMIT " . (int)($arNavStartParams["nTopCount"] ?? 0);
168 }
169
170 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
171
172 $dbRes = $DB->Query($strSql);
173 }
174
175 return $dbRes;
176 }
177
178 public static function Add($arFields)
179 {
180 global $DB;
181
182 // translate here
183 $arFields['VALUE'] = self::translateLocationIDToCode($arFields['VALUE'], $arFields['ORDER_PROPS_ID']);
184
185 $arInsert = $DB->PrepareInsert("b_sale_user_props_value", $arFields);
186
187 $strSql =
188 "INSERT INTO b_sale_user_props_value(".$arInsert[0].") ".
189 "VALUES(".$arInsert[1].")";
190 $DB->Query($strSql);
191
192 $ID = intval($DB->LastID());
193
194 return $ID;
195 }
196}
static get($moduleId, $name, $default="", $siteId=false)
Определения option.php:30
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
Определения order.php:1070
static addPropertyValueField($tableAlias, &$arFields, &$arSelectFields)
Определения order_user_props_value.php:126
static translateLocationIDToCode($id, $orderPropId)
Определения order_user_props_value.php:109
static Add($arFields)
Определения order_user_props_value.php:178
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения order_user_props_value.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
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$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
$arRes
Определения options.php:104
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168