1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
discount.php
См. документацию.
1
<?
2
3
require_once(
$_SERVER
[
'DOCUMENT_ROOT'
].
'/bitrix/modules/sale/general/discount.php'
);
4
5
class
CSaleDiscount
extends
CAllSaleDiscount
6
{
15
public
static
function
GetList
($arOrder =
array
(),
$arFilter
=
array
(), $arGroupBy =
false
, $arNavStartParams =
false
, $arSelectFields =
array
())
16
{
17
global
$DB
;
18
19
if
(!is_array($arOrder) && !is_array(
$arFilter
))
20
{
21
$arOrder = (string)($arOrder);
22
$arFilter
= (string)(
$arFilter
);
23
if
($arOrder !==
''
&&
$arFilter
!==
''
)
24
$arOrder =
array
($arOrder =>
$arFilter
);
25
else
26
$arOrder =
array
();
27
if
(is_array($arGroupBy))
28
$arFilter
= $arGroupBy;
29
else
30
$arFilter
=
array
();
31
if
(isset(
$arFilter
[
"PRICE"
]))
32
{
33
$valTmp =
$arFilter
[
"PRICE"
];
34
unset(
$arFilter
[
"PRICE"
]);
35
$arFilter
[
"<=PRICE_FROM"
] = $valTmp;
36
$arFilter
[
">=PRICE_TO"
] = $valTmp;
37
}
38
$arGroupBy =
false
;
39
}
40
41
$arFields
=
array
(
42
"ID"
=>
array
(
"FIELD"
=>
"D.ID"
,
"TYPE"
=>
"int"
),
43
"XML_ID"
=>
array
(
"FIELD"
=>
"D.XML_ID"
,
"TYPE"
=>
"string"
),
44
"LID"
=>
array
(
"FIELD"
=>
"D.LID"
,
"TYPE"
=>
"string"
),
45
"SITE_ID"
=>
array
(
"FIELD"
=>
"D.LID"
,
"TYPE"
=>
"string"
),
46
"NAME"
=>
array
(
"FIELD"
=>
"D.NAME"
,
"TYPE"
=>
"string"
),
47
"PRICE_FROM"
=>
array
(
"FIELD"
=>
"D.PRICE_FROM"
,
"TYPE"
=>
"double"
,
"WHERE"
=>
array
(
"CSaleDiscount"
,
"PrepareCurrency4Where"
)),
48
"PRICE_TO"
=>
array
(
"FIELD"
=>
"D.PRICE_TO"
,
"TYPE"
=>
"double"
,
"WHERE"
=>
array
(
"CSaleDiscount"
,
"PrepareCurrency4Where"
)),
49
"CURRENCY"
=>
array
(
"FIELD"
=>
"D.CURRENCY"
,
"TYPE"
=>
"string"
),
50
"DISCOUNT_VALUE"
=>
array
(
"FIELD"
=>
"D.DISCOUNT_VALUE"
,
"TYPE"
=>
"double"
),
51
"DISCOUNT_TYPE"
=>
array
(
"FIELD"
=>
"D.DISCOUNT_TYPE"
,
"TYPE"
=>
"char"
),
52
"ACTIVE"
=>
array
(
"FIELD"
=>
"D.ACTIVE"
,
"TYPE"
=>
"char"
),
53
"SORT"
=>
array
(
"FIELD"
=>
"D.SORT"
,
"TYPE"
=>
"int"
),
54
"ACTIVE_FROM"
=>
array
(
"FIELD"
=>
"D.ACTIVE_FROM"
,
"TYPE"
=>
"datetime"
),
55
"ACTIVE_TO"
=>
array
(
"FIELD"
=>
"D.ACTIVE_TO"
,
"TYPE"
=>
"datetime"
),
56
"TIMESTAMP_X"
=>
array
(
"FIELD"
=>
"D.TIMESTAMP_X"
,
"TYPE"
=>
"datetime"
),
57
"MODIFIED_BY"
=>
array
(
"FIELD"
=>
"D.MODIFIED_BY"
,
"TYPE"
=>
"int"
),
58
"DATE_CREATE"
=>
array
(
"FIELD"
=>
"D.DATE_CREATE"
,
"TYPE"
=>
"datetime"
),
59
"CREATED_BY"
=>
array
(
"FIELD"
=>
"D.CREATED_BY"
,
"TYPE"
=>
"int"
),
60
"PRIORITY"
=>
array
(
"FIELD"
=>
"D.PRIORITY"
,
"TYPE"
=>
"int"
),
61
"LAST_DISCOUNT"
=>
array
(
"FIELD"
=>
"D.LAST_DISCOUNT"
,
"TYPE"
=>
"char"
),
62
"LAST_LEVEL_DISCOUNT"
=>
array
(
"FIELD"
=>
"D.LAST_LEVEL_DISCOUNT"
,
"TYPE"
=>
"char"
),
63
"VERSION"
=>
array
(
"FIELD"
=>
"D.VERSION"
,
"TYPE"
=>
"int"
),
64
"CONDITIONS"
=>
array
(
"FIELD"
=>
"D.CONDITIONS"
,
"TYPE"
=>
"string"
),
65
"UNPACK"
=>
array
(
"FIELD"
=>
"D.UNPACK"
,
"TYPE"
=>
"string"
),
66
"APPLICATION"
=>
array
(
"FIELD"
=>
"D.APPLICATION"
,
"TYPE"
=>
"string"
),
67
"ACTIONS"
=>
array
(
"FIELD"
=>
"D.ACTIONS"
,
"TYPE"
=>
"string"
),
68
"PRESET_ID"
=>
array
(
"FIELD"
=>
"D.PRESET_ID"
,
"TYPE"
=>
"string"
),
69
"USE_COUPONS"
=>
array
(
"FIELD"
=>
"D.USE_COUPONS"
,
"TYPE"
=>
"char"
),
70
"USER_GROUPS"
=>
array
(
"FIELD"
=>
"DG.GROUP_ID"
,
"TYPE"
=>
"int"
,
"FROM"
=>
"LEFT JOIN b_sale_discount_group DG ON (D.ID = DG.DISCOUNT_ID)"
)
71
);
72
73
if
(empty($arSelectFields))
74
$arSelectFields =
array
(
'ID'
,
'LID'
,
'SITE_ID'
,
'PRICE_FROM'
,
'PRICE_TO'
,
'CURRENCY'
,
'DISCOUNT_VALUE'
,
'DISCOUNT_TYPE'
,
'ACTIVE'
,
'SORT'
,
'ACTIVE_FROM'
,
'ACTIVE_TO'
,
'PRIORITY'
,
'LAST_DISCOUNT'
,
'LAST_LEVEL_DISCOUNT'
,
'VERSION'
,
'NAME'
);
75
elseif
(is_array($arSelectFields) && in_array(
'*'
,$arSelectFields))
76
$arSelectFields =
array
(
'ID'
,
'LID'
,
'SITE_ID'
,
'PRICE_FROM'
,
'PRICE_TO'
,
'CURRENCY'
,
'DISCOUNT_VALUE'
,
'DISCOUNT_TYPE'
,
'ACTIVE'
,
'SORT'
,
'ACTIVE_FROM'
,
'ACTIVE_TO'
,
'PRIORITY'
,
'LAST_DISCOUNT'
,
'LAST_LEVEL_DISCOUNT'
,
'VERSION'
,
'NAME'
);
77
78
$arSqls =
CSaleOrder::PrepareSql
(
$arFields
, $arOrder,
$arFilter
, $arGroupBy, $arSelectFields);
79
80
$arSqls[
"SELECT"
] = str_replace(
"%%_DISTINCT_%%"
,
''
, $arSqls[
"SELECT"
]);
81
82
if
(empty($arGroupBy) && is_array($arGroupBy))
83
{
84
$strSql =
"select "
.$arSqls[
"SELECT"
].
" from b_sale_discount D "
.$arSqls[
"FROM"
];
85
if
(!empty($arSqls[
"WHERE"
]))
86
$strSql .=
" where "
.$arSqls[
"WHERE"
];
87
if
(!empty($arSqls[
"GROUPBY"
]))
88
$strSql .=
" group by "
.$arSqls[
"GROUPBY"
];
89
90
$dbRes
=
$DB
->Query($strSql);
91
if
(
$arRes
=
$dbRes
->Fetch())
92
return
$arRes
[
"CNT"
];
93
else
94
return
false
;
95
}
96
97
$strSql =
"select "
.$arSqls[
"SELECT"
].
" from b_sale_discount D "
.$arSqls[
"FROM"
];
98
if
(!empty($arSqls[
"WHERE"
]))
99
$strSql .=
" where "
.$arSqls[
"WHERE"
];
100
if
(!empty($arSqls[
"GROUPBY"
]))
101
$strSql .=
" group by "
.$arSqls[
"GROUPBY"
];
102
if
(!empty($arSqls[
"ORDERBY"
]))
103
$strSql .=
" order by "
.$arSqls[
"ORDERBY"
];
104
105
$intTopCount = 0;
106
$boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
107
if
($boolNavStartParams && isset($arNavStartParams[
'nTopCount'
]))
108
{
109
$intTopCount = (int)$arNavStartParams[
"nTopCount"
];
110
}
111
if
($boolNavStartParams && $intTopCount <= 0)
112
{
113
$strSql_tmp =
"select COUNT('x') as CNT from b_sale_discount D "
.$arSqls[
"FROM"
];
114
if
(!empty($arSqls[
"WHERE"
]))
115
$strSql_tmp .=
" where "
.$arSqls[
"WHERE"
];
116
if
(!empty($arSqls[
"GROUPBY"
]))
117
$strSql_tmp .=
" group by "
.$arSqls[
"GROUPBY"
];
118
119
$dbRes
=
$DB
->Query($strSql_tmp);
120
$cnt = 0;
121
if
(empty($arSqls[
"GROUPBY"
]))
122
{
123
if
(
$arRes
=
$dbRes
->Fetch())
124
$cnt =
$arRes
[
"CNT"
];
125
}
126
else
127
{
128
$cnt =
$dbRes
->SelectedRowsCount();
129
}
130
131
$dbRes
=
new
CDBResult();
132
133
$dbRes
->NavQuery($strSql, $cnt, $arNavStartParams);
134
}
135
else
136
{
137
if
($boolNavStartParams && $intTopCount > 0)
138
{
139
$strSql .=
" limit "
.$intTopCount;
140
}
141
$dbRes
=
$DB
->Query($strSql);
142
}
143
144
return
$dbRes
;
145
}
146
155
public
static
function
GetDiscountGroupList
($arOrder =
array
(),
$arFilter
=
array
(), $arGroupBy =
false
, $arNavStartParams =
false
, $arSelectFields =
array
())
156
{
157
global
$DB
;
158
159
$arFields
=
array
(
160
"ID"
=>
array
(
"FIELD"
=>
"DG.ID"
,
"TYPE"
=>
"int"
),
161
"DISCOUNT_ID"
=>
array
(
"FIELD"
=>
"DG.DISCOUNT_ID"
,
"TYPE"
=>
"int"
),
162
"GROUP_ID"
=>
array
(
"FIELD"
=>
"DG.GROUP_ID"
,
"TYPE"
=>
"int"
),
163
);
164
165
$arSqls =
CSaleOrder::PrepareSql
(
$arFields
, $arOrder,
$arFilter
, $arGroupBy, $arSelectFields);
166
167
$arSqls[
"SELECT"
] = str_replace(
"%%_DISTINCT_%%"
,
""
, $arSqls[
"SELECT"
]);
168
169
if
(empty($arGroupBy) && is_array($arGroupBy))
170
{
171
$strSql =
"select "
.$arSqls[
"SELECT"
].
" from b_sale_discount_group DG "
.$arSqls[
"FROM"
];
172
if
(!empty($arSqls[
"WHERE"
]))
173
$strSql .=
" where "
.$arSqls[
"WHERE"
];
174
if
(!empty($arSqls[
"GROUPBY"
]))
175
$strSql .=
" group by "
.$arSqls[
"GROUPBY"
];
176
177
$dbRes
=
$DB
->Query($strSql);
178
if
(
$arRes
=
$dbRes
->Fetch())
179
return
$arRes
[
"CNT"
];
180
else
181
return
false
;
182
}
183
184
$strSql =
"select "
.$arSqls[
"SELECT"
].
" from b_sale_discount_group DG "
.$arSqls[
"FROM"
];
185
if
(!empty($arSqls[
"WHERE"
]))
186
$strSql .=
" where "
.$arSqls[
"WHERE"
];
187
if
(!empty($arSqls[
"GROUPBY"
]))
188
$strSql .=
" group by "
.$arSqls[
"GROUPBY"
];
189
if
(!empty($arSqls[
"ORDERBY"
]))
190
$strSql .=
" order by "
.$arSqls[
"ORDERBY"
];
191
192
$intTopCount = 0;
193
$boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
194
if
($boolNavStartParams && array_key_exists(
'nTopCount'
, $arNavStartParams))
195
{
196
$intTopCount = intval($arNavStartParams[
"nTopCount"
]);
197
}
198
if
($boolNavStartParams && 0 >= $intTopCount)
199
{
200
$strSql_tmp =
"select COUNT('x') as CNT from b_sale_discount_group DG "
.$arSqls[
"FROM"
];
201
if
(!empty($arSqls[
"WHERE"
]))
202
$strSql_tmp .=
" where "
.$arSqls[
"WHERE"
];
203
if
(!empty($arSqls[
"GROUPBY"
]))
204
$strSql_tmp .=
" group by "
.$arSqls[
"GROUPBY"
];
205
206
$dbRes
=
$DB
->Query($strSql_tmp);
207
$cnt = 0;
208
if
(empty($arSqls[
"GROUPBY"
]))
209
{
210
if
(
$arRes
=
$dbRes
->Fetch())
211
$cnt =
$arRes
[
"CNT"
];
212
}
213
else
214
{
215
$cnt =
$dbRes
->SelectedRowsCount();
216
}
217
218
$dbRes
=
new
CDBResult();
219
220
$dbRes
->NavQuery($strSql, $cnt, $arNavStartParams);
221
}
222
else
223
{
224
if
($boolNavStartParams && 0 < $intTopCount)
225
{
226
$strSql .=
" limit "
.$intTopCount;
227
}
228
$dbRes
=
$DB
->Query($strSql);
229
}
230
231
return
$dbRes
;
232
}
233
}
CAllSaleDiscount
Определения
discount.php:11
CAllSaleOrder\PrepareSql
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
Определения
order.php:1070
CSaleDiscount
Определения
discount.php:6
CSaleDiscount\GetDiscountGroupList
static GetDiscountGroupList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения
discount.php:155
CSaleDiscount\GetList
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения
discount.php:15
$arFields
$arFields
Определения
dblapprove.php:5
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$_SERVER
$_SERVER["DOCUMENT_ROOT"]
Определения
cron_frame.php:9
$DB
global $DB
Определения
cron_frame.php:29
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$arRes
$arRes
Определения
options.php:104
$arFilter
$arFilter
Определения
user_search.php:106
$dbRes
$dbRes
Определения
yandex_detail.php:168
bitrix
modules
sale
mysql
discount.php
Создано системой
1.14.0