1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
BarcodeProvider.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Catalog\v2\Integration\UI\EntitySelector;
4
5
use Bitrix\UI\EntitySelector\Dialog;
6
use Bitrix\Catalog\StoreBarcodeTable;
7
use Bitrix\UI\EntitySelector\Item;
8
use Bitrix\UI\EntitySelector\SearchQuery;
9
10
class
BarcodeProvider
extends
ProductProvider
11
{
12
protected
const
ENTITY_ID
=
'barcode'
;
13
14
public
function
fillDialog
(
Dialog
$dialog): void
15
{
16
$dialog->
loadPreselectedItems
();
17
18
if
($dialog->
getItemCollection
()->count() > 0)
19
{
20
foreach
($dialog->
getItemCollection
() as $item)
21
{
22
$dialog->
addRecentItem
($item);
23
}
24
}
25
}
26
27
public
function
doSearch
(
SearchQuery
$searchQuery,
Dialog
$dialog): void
28
{
29
$searchQuery->
setCacheable
(
false
);
30
$productIds = $this->getProductIdsByBarcode($searchQuery->
getQuery
());
31
if
(!$productIds)
32
{
33
return
;
34
}
35
36
$productIds = array_unique($productIds);
37
$products = $this->
getProductsByIds
($productIds);
38
$elementMap = [];
39
foreach
($products as
$key
=> $product)
40
{
41
$elementMap[$product[
'ID'
]][] =
$key
;
42
}
43
44
if
(!empty($products))
45
{
46
$barcodeRaw =
\Bitrix\Catalog\StoreBarcodeTable::getList
([
47
'filter'
=> [
48
'=PRODUCT_ID'
=> $productIds,
49
'BARCODE'
=> $searchQuery->
getQuery
() .
'%'
50
],
51
'select'
=> [
'BARCODE'
,
'PRODUCT_ID'
]
52
]);
53
54
while
($barcode = $barcodeRaw->fetch())
55
{
56
$productId = $barcode[
'PRODUCT_ID'
];
57
if
(!isset($elementMap[$productId]))
58
{
59
continue
;
60
}
61
62
foreach
($elementMap[$productId] as
$key
)
63
{
64
$products[
$key
][
'BARCODE'
] = $barcode[
'BARCODE'
];
65
}
66
}
67
68
foreach
($products as $product)
69
{
70
$dialog->
addItem
(
71
$this->
makeItem
($product)
72
);
73
}
74
}
75
}
76
77
public
function
handleBeforeItemSave
(
Item
$item): void
78
{
79
$item->
setSaveable
(
false
);
80
}
81
82
private
function
getProductIdsByBarcode(
string
$barcodeString =
''
):
array
83
{
84
$barcodes = [];
85
$elementRaw = \CIBlockElement::GetList(
86
[],
87
[
88
'ACTIVE'
=>
'Y'
,
89
'CHECK_PERMISSIONS'
=>
'Y'
,
90
'PRODUCT_BARCODE'
=> $barcodeString .
'%'
,
91
],
92
false
,
93
false
,
94
[
'ID'
]
95
);
96
97
while
($element = $elementRaw->Fetch())
98
{
99
$barcodes[] = $element[
'ID'
];
100
}
101
102
return
$barcodes;
103
}
104
}
Bitrix\Catalog\v2\Integration\UI\EntitySelector\BarcodeProvider
Определения
BarcodeProvider.php:11
Bitrix\Catalog\v2\Integration\UI\EntitySelector\BarcodeProvider\handleBeforeItemSave
handleBeforeItemSave(Item $item)
Определения
BarcodeProvider.php:77
Bitrix\Catalog\v2\Integration\UI\EntitySelector\BarcodeProvider\ENTITY_ID
const ENTITY_ID
Определения
BarcodeProvider.php:12
Bitrix\Catalog\v2\Integration\UI\EntitySelector\BarcodeProvider\fillDialog
fillDialog(Dialog $dialog)
Определения
BarcodeProvider.php:14
Bitrix\Catalog\v2\Integration\UI\EntitySelector\BarcodeProvider\doSearch
doSearch(SearchQuery $searchQuery, Dialog $dialog)
Определения
BarcodeProvider.php:27
Bitrix\Catalog\v2\Integration\UI\EntitySelector\ProductProvider
Определения
ProductProvider.php:21
Bitrix\Catalog\v2\Integration\UI\EntitySelector\ProductProvider\makeItem
makeItem(array $product)
Определения
ProductProvider.php:165
Bitrix\Catalog\v2\Integration\UI\EntitySelector\ProductProvider\getProductsByIds
getProductsByIds(array $ids)
Определения
ProductProvider.php:257
Bitrix\Main\ORM\Data\DataManager\getList
static getList(array $parameters=array())
Определения
datamanager.php:431
Bitrix\UI\EntitySelector\Dialog
Определения
dialog.php:10
Bitrix\UI\EntitySelector\Dialog\loadPreselectedItems
loadPreselectedItems($preselectedMode=true)
Определения
dialog.php:410
Bitrix\UI\EntitySelector\Dialog\addItem
addItem(Item $item)
Определения
dialog.php:126
Bitrix\UI\EntitySelector\Dialog\addRecentItem
addRecentItem(Item $item)
Определения
dialog.php:143
Bitrix\UI\EntitySelector\Dialog\getItemCollection
getItemCollection()
Определения
dialog.php:116
Bitrix\UI\EntitySelector\Item
Определения
item.php:8
Bitrix\UI\EntitySelector\Item\setSaveable
setSaveable(bool $flag=true)
Определения
item.php:552
Bitrix\UI\EntitySelector\SearchQuery
Определения
searchquery.php:5
Bitrix\UI\EntitySelector\SearchQuery\getQuery
getQuery()
Определения
searchquery.php:40
Bitrix\UI\EntitySelector\SearchQuery\setCacheable
setCacheable(bool $flag=true)
Определения
searchquery.php:72
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
bitrix
modules
catalog
lib
v2
Integration
UI
EntitySelector
BarcodeProvider.php
Создано системой
1.14.0