1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
product.php
См. документацию.
1<?php
11namespace Bitrix\Sale\Internals;
12
13use Bitrix\Main;
14
15if (!Main\Loader::includeModule('iblock'))
16{
17 return;
18}
19
36class ProductTable extends Main\Entity\DataManager
37{
38 public static function getTableName()
39 {
40 return 'b_catalog_product';
41 }
42
43 public static function getMap()
44 {
45 // Get weight factor
46 $weightKoef = 0;
47 $siteCurrency = '';
48 if (class_exists('\CBaseSaleReportHelper'))
49 {
51 {
53 if ($siteId !== null)
54 {
56 }
57
58 // Get site currency
60 }
61 }
62 if ($weightKoef <= 0)
63 {
64 $weightKoef = 1;
65 }
66
67 global $DB;
68
70 $helper = $connection->getSqlHelper();
71 if ($connection instanceof Main\DB\PgsqlConnection)
72 {
73 $productId = 'cast(%s as text)';
74 }
75 else
76 {
77 $productId = '%s';
78 }
79 $productName = $helper->getConcatFunction(
80 '%s',
81 "' ['",
82 $productId,
83 "']'"
84 );
85 unset($helper, $connection);
86
87 $fieldsMap = array(
88 'ID' => array(
89 'data_type' => 'integer',
90 'primary' => true
91 ),
92 /*'IBLOCK_ID' => array(
93 'data_type' => 'integer'
94 ),*/
95 'TIMESTAMP_X' => array(
96 'data_type' => 'integer'
97 ),
98 'DATE_UPDATED' => array(
99 'data_type' => 'datetime',
100 'expression' => array(
101 $DB->datetimeToDateFunction('%s'), 'TIMESTAMP_X',
102 )
103 ),
104 'QUANTITY' => array(
105 'data_type' => 'float'
106 ),
107 'MEASURE' => array(
108 'data_type' => 'integer'
109 ),
110 'PURCHASING_PRICE' => array(
111 'data_type' => 'float'
112 ),
113 'PURCHASING_CURRENCY' => array(
114 'data_type' => 'string'
115 ),
116 'IBLOCK' => array(
117 'data_type' => 'Bitrix\Iblock\Element',
118 'reference' => array('=this.ID' => 'ref.ID')
119 ),
120 'NAME' => array(
121 'data_type' => 'string',
122 'expression' => array(
123 '%s', 'IBLOCK.NAME'
124 )
125 ),
126 'NAME_WITH_IDENT' => array(
127 'data_type' => 'string',
128 'expression' => array(
129 $productName, 'NAME', 'ID'
130 )
131 ),
132 'ACTIVE' => array(
133 'data_type' => 'boolean',
134 'expression' => array(
135 '%s', 'IBLOCK.ACTIVE'
136 ),
137 'values' => array('N','Y')
138 ),
139 'WEIGHT' => array(
140 'data_type' => 'float'
141 ),
142 'WEIGHT_IN_SITE_UNITS' => array(
143 'data_type' => 'float',
144 'expression' => array(
145 '%s / '.$DB->forSql($weightKoef), 'WEIGHT'
146 )
147 ),
148 'PRICE' => array(
149 'data_type' => 'float',
150 'expression' => array(
151 '(SELECT b_catalog_price.PRICE FROM b_catalog_price
152 LEFT JOIN b_catalog_group ON b_catalog_group.ID = b_catalog_price.CATALOG_GROUP_ID
153 WHERE
154 b_catalog_price.PRODUCT_ID = %s
155 AND
156 b_catalog_group.base = \'Y\'
157 AND
158 ( b_catalog_price.quantity_from <= 1 OR b_catalog_price.quantity_from IS NULL )
159 AND
160 ( b_catalog_price.quantity_to >= 1 OR b_catalog_price.quantity_to IS NULL)
161 LIMIT 1)', 'ID'
162 )
163 ),
164 'CURRENCY' => array(
165 'data_type' => 'string',
166 'expression' => array(
167 '(SELECT b_catalog_price.CURRENCY FROM b_catalog_price
168 LEFT JOIN b_catalog_group ON b_catalog_group.ID = b_catalog_price.CATALOG_GROUP_ID
169 WHERE
170 b_catalog_price.PRODUCT_ID = %s
171 AND
172 b_catalog_group.base = \'Y\'
173 AND
174 ( b_catalog_price.quantity_from <= 1 OR b_catalog_price.quantity_from IS NULL )
175 AND
176 ( b_catalog_price.quantity_to >= 1 OR b_catalog_price.quantity_to IS NULL)
177 LIMIT 1)', 'ID'
178 )
179 ),
180 'SUMMARY_PRICE' => array(
181 'data_type' => 'float',
182 'expression' => array(
183 '%s * %s', 'QUANTITY', 'PRICE'
184 ),
185 ),
186
187
188
189 'CURRENT_CURRENCY_RATE' => array(
190 'data_type' => 'float',
191 'expression' => array(
192 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE IS NOT NULL THEN b_catalog_currency_rate.RATE ELSE b_catalog_currency.AMOUNT END)
193 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
194 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
195 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = %s
196 ORDER BY DATE_RATE DESC', 1).')', 'ID', 'CURRENCY'
197 )
198 ),
199 'CURRENT_CURRENCY_RATE_CNT' => array(
200 'data_type' => 'float',
201 'expression' => array(
202 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE_CNT IS NOT NULL THEN b_catalog_currency_rate.RATE_CNT ELSE b_catalog_currency.AMOUNT_CNT END)
203 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
204 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
205 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = %s
206 ORDER BY DATE_RATE DESC', 1).')', 'ID', 'CURRENCY'
207 )
208 ),
209
210 'CURRENT_SITE_CURRENCY_RATE' => array(
211 'data_type' => 'float',
212 'expression' => array(
213 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE IS NOT NULL THEN b_catalog_currency_rate.RATE ELSE b_catalog_currency.AMOUNT END)
214 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
215 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
216 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = \''.$DB->forSql($siteCurrency).'\'
217 ORDER BY DATE_RATE DESC', 1).')', 'ID'
218 )
219 ),
220
221 'CURRENT_SITE_CURRENCY_RATE_CNT' => array(
222 'data_type' => 'float',
223 'expression' => array(
224 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE_CNT IS NOT NULL THEN b_catalog_currency_rate.RATE_CNT ELSE b_catalog_currency.AMOUNT_CNT END)
225 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
226 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
227 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = \''.$DB->forSql($siteCurrency).'\'
228 ORDER BY DATE_RATE DESC', 1).')', 'ID'
229 )
230 ),
231
232
233
234 'PURCHASING_CURRENCY_RATE' => array(
235 'data_type' => 'float',
236 'expression' => array(
237 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE IS NOT NULL THEN b_catalog_currency_rate.RATE ELSE b_catalog_currency.AMOUNT END)
238 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
239 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
240 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = %s
241 ORDER BY DATE_RATE DESC', 1).')', 'ID', 'PURCHASING_CURRENCY'
242 )
243 ),
244 'PURCHASING_CURRENCY_RATE_CNT' => array(
245 'data_type' => 'float',
246 'expression' => array(
247 '('.$DB->topSql('SELECT (CASE WHEN b_catalog_currency_rate.RATE_CNT IS NOT NULL THEN b_catalog_currency_rate.RATE_CNT ELSE b_catalog_currency.AMOUNT_CNT END)
248 FROM b_catalog_product INNER JOIN b_catalog_currency ON 1=1
249 LEFT JOIN b_catalog_currency_rate ON (b_catalog_currency.CURRENCY = b_catalog_currency_rate.CURRENCY AND b_catalog_currency_rate.DATE_RATE <= '.$DB->datetimeToDateFunction('b_catalog_product.TIMESTAMP_X').')
250 WHERE b_catalog_product.ID = %s AND b_catalog_currency.CURRENCY = %s
251 ORDER BY DATE_RATE DESC', 1).')', 'ID', 'PURCHASING_CURRENCY'
252 )
253 ),
254
255
256
257 'PRICE_IN_SITE_CURRENCY' => array(
258 'data_type' => 'float',
259 'expression' => array(
260 '%s * (%s * %s / %s / %s)',
261 'PRICE', 'CURRENT_CURRENCY_RATE', 'CURRENT_SITE_CURRENCY_RATE_CNT', 'CURRENT_SITE_CURRENCY_RATE', 'CURRENT_CURRENCY_RATE_CNT'
262 )
263 ),
264
265 'PURCHASING_PRICE_IN_SITE_CURRENCY' => array(
266 'data_type' => 'float',
267 'expression' => array(
268 '%s * (%s * %s / %s / %s)',
269 'PURCHASING_PRICE', 'PURCHASING_CURRENCY_RATE', 'CURRENT_SITE_CURRENCY_RATE_CNT', 'CURRENT_SITE_CURRENCY_RATE', 'PURCHASING_CURRENCY_RATE_CNT'
270 )
271 ),
272
273 'SUMMARY_PRICE_IN_SITE_CURRENCY' => array(
274 'data_type' => 'float',
275 'expression' => array(
276 '%s * (%s * %s / %s / %s)',
277 'SUMMARY_PRICE', 'CURRENT_CURRENCY_RATE', 'CURRENT_SITE_CURRENCY_RATE_CNT', 'CURRENT_SITE_CURRENCY_RATE', 'CURRENT_CURRENCY_RATE_CNT'
278 )
279 )
280 );
281
282 return $fieldsMap;
283 }
284}
$connection
Определения actionsdefinitions.php:38
static getConnection($name="")
Определения application.php:638
static includeModule($moduleName)
Определения loader.php:67
static getMap()
Определения product.php:43
static getTableName()
Определения product.php:38
static getSiteCurrencyId()
Определения sale_report_helper.php:373
static isInitialized()
Определения sale_report_helper.php:298
static getDefaultSiteId()
Определения sale_report_helper.php:403
static getDefaultSiteWeightDivider()
Определения sale_report_helper.php:421
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
global $DB
Определения cron_frame.php:29
$siteId
Определения ajax.php:8
Определения arrayresult.php:2