Bitrix-D7  20.5.0
sale/lib/internals/order.php
См. документацию.
1 <?php
2 /**
3  * Bitrix Framework
4  * @package bitrix
5  * @subpackage sale
6  * @copyright 2001-2012 Bitrix
7  */
8 namespace Bitrix\Sale\Internals;
9 
10 use Bitrix\Main;
12 
13 Loc::loadMessages(__FILE__);
14 
15 class OrderTable extends Main\Entity\DataManager
16 {
17  /**
18  * Returns DB table name for entity.
19  *
20  * @return string
21  */
22  public static function getTableName()
23  {
24  return 'b_sale_order';
25  }
26 
27  /**
28  * Returns entity map definition.
29  *
30  * @return array
31  */
32  public static function getMap()
33  {
34  global $DB, $USER;
35 
36  $maxLock = intval(Main\Config\Option::get('sale','MAX_LOCK_TIME', 60));
37 
38  $userID = (is_object($USER) ? (int)$USER->getID() : 0);
39 
40  $connection = Main\Application::getConnection();
41  $helper = $connection->getSqlHelper();
42 
43  return array(
44  new Main\Entity\IntegerField('ID',
45  array(
46  'autocomplete' => true,
47  'primary' => true,
48  )
49  ),
50 
51  new Main\Entity\StringField('LID'),
52 
53  new Main\Entity\StringField(
54  'ACCOUNT_NUMBER',
55  array(
56  'size' => 100
57  )
58  ),
59 
60  new Main\Entity\StringField('TRACKING_NUMBER'),
61 
62  new Main\Entity\IntegerField('PAY_SYSTEM_ID'),
63  new Main\Entity\IntegerField('DELIVERY_ID'),
64 
65  new Main\Entity\DatetimeField('DATE_INSERT'),
66 
67  new Main\Entity\ExpressionField(
68  'DATE_INSERT_SHORT',
69  $DB->datetimeToDateFunction('%s'),
70  array('DATE_INSERT'),
71  array('data_type' => 'datetime')
72  ),
73 
74  new Main\Entity\ExpressionField(
75  'DATE_INSERT_FORMAT',
76  static::replaceDateTime(),
77  array('DATE_INSERT'),
78  array('data_type' => 'datetime')
79  ),
80 
81  new Main\Entity\DatetimeField('DATE_UPDATE'),
82 
83  new Main\Entity\ExpressionField(
84  'DATE_UPDATE_SHORT',
85  $DB->datetimeToDateFunction('%s'),
86  array('DATE_UPDATE'),
87  array('data_type' => 'datetime')
88  ),
89 
90  new Main\Entity\ExpressionField(
91  'PRODUCTS_QUANT',
92  '(SELECT SUM(b_sale_basket.QUANTITY)
93  FROM b_sale_basket
94  WHERE b_sale_basket.ORDER_ID = %s)',
95  array('ID')
96  ),
97 
98  new Main\Entity\StringField('PERSON_TYPE_ID'),
99 
100  new Main\Entity\IntegerField(
101  'USER_ID',
102  array(
103  'required' => true
104  )
105  ),
106 
107  new Main\Entity\ReferenceField(
108  'USER',
109  '\Bitrix\Main\User',
110  array('=this.USER_ID' => 'ref.ID'),
111  array('join_type' => 'left')
112  ),
113 
114  new Main\Entity\BooleanField(
115  'PAYED',
116  array(
117  'values' => array('N', 'Y'),
118  'default_value' => 'N'
119  )
120  ),
121 
122  new Main\Entity\BooleanField(
123  'IS_SYNC_B24',
124  array(
125  'values' => array('N', 'Y'),
126  'default_value' => 'N'
127  )
128  ),
129 
130  new Main\Entity\DatetimeField('DATE_PAYED'),
131 
132  new Main\Entity\IntegerField('EMP_PAYED_ID'),
133 
134  new Main\Entity\BooleanField(
135  'DEDUCTED',
136  array(
137  'values' => array('N','Y'),
138  'default_value' => 'N'
139  )
140  ),
141  new Main\Entity\DatetimeField('DATE_DEDUCTED'),
142 
143  new Main\Entity\IntegerField('EMP_DEDUCTED_ID'),
144 
145  new Main\Entity\StringField('REASON_UNDO_DEDUCTED'),
146 
147  new Main\Entity\StringField('STATUS_ID'),
148 
149  new Main\Entity\ReferenceField(
150  'STATUS',
151  'Bitrix\Sale\Internals\StatusLang',
152  array(
153  '=this.STATUS_ID' => 'ref.STATUS_ID',
154  '=ref.LID' => array('?', LANGUAGE_ID)
155  )
156  ),
157 
158  new Main\Entity\DatetimeField('DATE_STATUS'),
159 
160  new Main\Entity\ExpressionField(
161  'DATE_STATUS_SHORT',
162  $DB->datetimeToDateFunction('%s'),
163  array('DATE_STATUS'),
164  array('data_type' => 'datetime')
165  ),
166 
167  new Main\Entity\IntegerField('EMP_STATUS_ID'),
168 
169  new Main\Entity\ReferenceField(
170  'EMP_STATUS_BY',
171  'Bitrix\Main\User',
172  array(
173  '=this.EMP_STATUS_ID' => 'ref.ID'
174  )
175  ),
176 
177  new Main\Entity\BooleanField(
178  'MARKED',
179  array(
180  'values' => array('N', 'Y'),
181  'default_value' => 'N'
182  )
183  ),
184 
185  new Main\Entity\DatetimeField('DATE_MARKED'),
186 
187  new Main\Entity\IntegerField('EMP_MARKED_ID'),
188 
189  new Main\Entity\ReferenceField(
190  'EMP_MARKED_BY',
191  'Bitrix\Main\User',
192  array(
193  '=this.EMP_MARKED_ID' => 'ref.ID'
194  )
195  ),
196 
197 
198  new Main\Entity\StringField('REASON_MARKED'),
199 
200  new Main\Entity\FloatField(
201  'PRICE_DELIVERY'
202  ),
203  new Main\Entity\BooleanField(
204  'ALLOW_DELIVERY',
205  array(
206  'values' => array('N', 'Y'),
207  'default_value' => 'N'
208  )
209  ),
210  new Main\Entity\DatetimeField('DATE_ALLOW_DELIVERY'),
211 
212  new Main\Entity\IntegerField('EMP_ALLOW_DELIVERY_ID'),
213 
214  new Main\Entity\BooleanField(
215  'RESERVED',
216  array(
217  'values' => array('N', 'Y'),
218  'default_value' => 'N'
219  )
220  ),
221 
222  new Main\Entity\FloatField(
223  'PRICE',
224  array(
225  'default_value' => '0.0000'
226  )
227  ),
228 
229  new Main\Entity\StringField(
230  'CURRENCY',
231  array(
232  'required' => true,
233  'size' => 3
234  )
235  ),
236 
237  new Main\Entity\FloatField(
238  'DISCOUNT_VALUE',
239  array(
240  'default_value' => '0.0000'
241  )
242  ),
243 
244  new Main\Entity\ExpressionField(
245  'DISCOUNT_ALL',
246  "%s + (SELECT SUM(b_sale_basket.DISCOUNT_PRICE)
247  FROM b_sale_basket
248  WHERE b_sale_basket.ORDER_ID = %s)",
249  array('DISCOUNT_VALUE', 'ID')
250  ),
251 
252  new Main\Entity\FloatField('TAX_VALUE'),
253 
254  new Main\Entity\FloatField('SUM_PAID'),
255 
256  new Main\Entity\ExpressionField(
257  'SUM_PAID_FORREP',
258  'CASE WHEN %s = \'Y\' THEN %s ELSE %s END',
259  array('PAYED', 'PRICE', 'SUM_PAID')
260  ),
261 
262  new Main\Entity\StringField(
263  'USER_DESCRIPTION',
264  array(
265  'size' => 2000
266  )
267  ),
268 
269  new Main\Entity\StringField(
270  'PAY_VOUCHER_NUM',
271  array(
272  'size' => 20,
273  )
274  ),
275 
276  new Main\Entity\DateField('PAY_VOUCHER_DATE'),
277 
278  new Main\Entity\StringField('ADDITIONAL_INFO'),
279 
280  new Main\Entity\StringField('COMMENTS'),
281 
282  new Main\Entity\IntegerField('COMPANY_ID'),
283 
284  new Main\Entity\IntegerField('CREATED_BY'),
285 
286  new Main\Entity\ReferenceField(
287  'CREATED_USER',
288  'Bitrix\Main\User',
289  array(
290  '=this.CREATED_BY' => 'ref.ID'
291  )
292  ),
293 
294  new Main\Entity\IntegerField('RESPONSIBLE_ID'),
295 
296  new Main\Entity\ReferenceField(
297  'RESPONSIBLE_BY',
298  'Bitrix\Main\User',
299  array(
300  '=this.RESPONSIBLE_ID' => 'ref.ID'
301  )
302  ),
303 
304  new Main\Entity\StringField('STAT_GID'),
305 
306  new Main\Entity\DateField('DATE_PAY_BEFORE'),
307 
308  new Main\Entity\DateField('DATE_BILL'),
309 
310  new Main\Entity\BooleanField(
311  'IS_RECURRING',
312  array(
313  'values' => array('N', 'Y'),
314  'default_value' => 'N'
315  )
316  ),
317 
318  new Main\Entity\IntegerField('RECURRING_ID'),
319 
320  new Main\Entity\IntegerField('LOCKED_BY'),
321 
322  new Main\Entity\ReferenceField(
323  'LOCK_USER',
324  'Bitrix\Main\User',
325  array(
326  '=this.LOCKED_BY' => 'ref.ID'
327  )
328  ),
329 
330  new Main\Entity\DatetimeField('DATE_LOCK'),
331 
332 
333 
334  new Main\Entity\ExpressionField(
335  'LOCK_USER_NAME',
336  $helper->getConcatFunction("'('", "%s", "') '", "%s", "' '", "%s"),
337  array('LOCK_USER.LOGIN', 'LOCK_USER.NAME', 'LOCK_USER.LAST_NAME')
338  ),
339 
340  new Main\Entity\ExpressionField(
341  'LOCK_STATUS',
342  "if(DATE_LOCK is null, 'green', if(DATE_ADD(DATE_LOCK, interval ".$maxLock." MINUTE)<now(), 'green', if(LOCKED_BY=".$userID.", 'yellow', 'red')))"
343  ),
344 
345  new Main\Entity\ReferenceField(
346  'USER_GROUP',
347  'Bitrix\Main\UserGroup',
348  array(
349  '=ref.USER_ID' => 'this.USER_ID'
350  )
351  ),
352 
353  new Main\Entity\ReferenceField(
354  'RESPONSIBLE',
355  'Bitrix\Main\User',
356  array(
357  '=this.RESPONSIBLE_ID' => 'ref.ID'
358  )
359  ),
360 
361  new Main\Entity\ReferenceField(
362  'BASKET',
363  'Bitrix\Sale\Internals\Basket',
364  array(
365  '=this.ID' => 'ref.ORDER_ID'
366  ),
367  array('join_type' => 'INNER')
368 
369  ),
370 
371  new Main\Entity\ExpressionField(
372  'BASKET_PRICE_TOTAL',
373  '(%s * %s)',
374  array('BASKET.PRICE', 'BASKET.QUANTITY')
375  ),
376 
377  new Main\Entity\ReferenceField(
378  'PAYMENT',
379  'Bitrix\Sale\Internals\Payment',
380  array(
381  '=ref.ORDER_ID' => 'this.ID',
382  )
383  ),
384 
385  new Main\Entity\ReferenceField(
386  'SHIPMENT',
387  'Bitrix\Sale\Internals\Shipment',
388  array(
389  '=ref.ORDER_ID' => 'this.ID',
390  )
391  ),
392 
393  new Main\Entity\ReferenceField(
394  'PROPERTY',
395  'Bitrix\Sale\Internals\OrderPropsValue',
396  array(
397  '=ref.ORDER_ID' => 'this.ID',
398  ),
399  array('join_type' => 'INNER')
400  ),
401 
402  new Main\Entity\BooleanField(
403  'RECOUNT_FLAG',
404  array(
405  'values' => array('N', 'Y')
406  )
407  ),
408 
409  new Main\Entity\IntegerField('AFFILIATE_ID'),
410 
411  new Main\Entity\StringField(
412  'DELIVERY_DOC_NUM',
413  array(
414  'size' => 20
415  )
416  ),
417 
418  new Main\Entity\DatetimeField('DELIVERY_DOC_DATE'),
419 
420  new Main\Entity\BooleanField(
421  'UPDATED_1C',
422  array(
423  'values' => array('N', 'Y'),
424  'default' => 'N'
425  )
426  ),
427 
428  new Main\Entity\StringField('ORDER_TOPIC'),
429 
430  new Main\Entity\StringField('XML_ID'),
431 
432  new Main\Entity\StringField('ID_1C'),
433 
434  new Main\Entity\StringField('VERSION_1C'),
435 
436  new Main\Entity\IntegerField('VERSION'),
437 
438  new Main\Entity\BooleanField(
439  'EXTERNAL_ORDER',
440  array(
441  'values' => array('N', 'Y')
442  )
443  ),
444 
445  new Main\Entity\IntegerField('STORE_ID'),
446 
447  new Main\Entity\BooleanField(
448  'CANCELED',
449  array(
450  'values' => array('N', 'Y'),
451  'default_value' => 'N'
452  )
453  ),
454  new Main\Entity\IntegerField('EMP_CANCELED_ID'),
455 
456  new Main\Entity\ReferenceField(
457  'EMP_CANCELED_BY',
458  'Bitrix\Main\User',
459  array(
460  '=this.EMP_CANCELED_ID' => 'ref.ID'
461  )
462  ),
463 
464  new Main\Entity\DatetimeField('DATE_CANCELED'),
465 
466  new Main\Entity\ExpressionField(
467  'DATE_CANCELED_SHORT',
468  $DB->datetimeToDateFunction('%s'),
469  array('DATE_CANCELED'),
470  array('DATA_TYPE' => 'datetime')
471  ),
472 
473  new Main\Entity\StringField('REASON_CANCELED'),
474 
475 
476  new Main\Entity\StringField('BX_USER_ID'),
477 
478  new Main\Entity\TextField('SEARCH_CONTENT'),
479 
480  new Main\Entity\BooleanField(
481  'RUNNING',
482  array(
483  'values' => array('N', 'Y'),
484  'default_value' => 'N'
485  )
486  ),
487 
488  new Main\Entity\ReferenceField(
489  'ORDER_COUPONS',
490  'Bitrix\Sale\Internals\OrderCoupons',
491  array(
492  '=ref.ORDER_ID' => 'this.ID',
493  ),
494  array('join_type' => 'LEFT')
495  ),
496 
497  new Main\Entity\ReferenceField(
498  'ORDER_DISCOUNT_DATA',
499  'Bitrix\Sale\Internals\OrderDiscountData',
500  array(
501  '=ref.ORDER_ID' => 'this.ID',
502  '=ref.ENTITY_TYPE' => new Main\DB\SqlExpression('?', OrderDiscountDataTable::ENTITY_TYPE_ORDER)
503  ),
504  array('join_type' => 'LEFT')
505  ),
506 
507  new Main\Entity\ExpressionField(
508  'BY_RECOMMENDATION',
509  "(SELECT (CASE WHEN MAX(BR.RECOMMENDATION) IS NULL OR MAX(BR.RECOMMENDATION) = '' THEN 'N' ELSE 'Y' END) FROM b_sale_basket BR WHERE BR.ORDER_ID=%s GROUP BY BR.ORDER_ID)",
510  array('ID')
511  ),
512 
513  new Main\Entity\ReferenceField(
514  'TRADING_PLATFORM',
515  \Bitrix\Sale\TradingPlatform\OrderTable::getEntity(),
516  array(
517  '=ref.ORDER_ID' => 'this.ID',
518  ),
519  array('join_type' => 'LEFT')
520  ),
521  );
522  }
523 
524  public static function getUfId()
525  {
526  return 'ORDER';
527  }
528 
529  protected static function replaceDateTime()
530  {
531  global $DB;
532  $datetime = $DB->DateToCharFunction('___DATETIME___');
533  $datetime = str_replace('%', '%%', $datetime);
534  $datetime = str_replace('___DATETIME___', '%1$s', $datetime);
535  return $datetime;
536  }
537 }
static getConnection($name="")
Static method returns database connection for the specified name.
static get($moduleId, $name, $default="", $siteId=false)
Returns a value of an option.
static loadMessages($file)
Loads language messages for specified file in a lazy way.
Definition: loc.php:67
static getMap()
Returns entity map definition.
static getTableName()
Returns DB table name for entity.
Class RestHandler \Handlers\PaySystem.