3namespace Bitrix\Catalog\Filter\DataProvider;
6use Bitrix\Catalog\Document\Type\StoreDocumentArrivalTable;
7use Bitrix\Catalog\Document\Type\StoreDocumentDeductTable;
8use Bitrix\Catalog\Document\Type\StoreDocumentMovingTable;
9use Bitrix\Catalog\Document\Type\StoreDocumentStoreAdjustmentTable;
10use Bitrix\Catalog\StoreDocumentTable;
11use Bitrix\Catalog\v2\Contractor\Provider\IProvider;
12use Bitrix\Main\Grid\Column;
13use Bitrix\Main\Loader;
14use Bitrix\Main\Localization\Loc;
15use Bitrix\Catalog\v2\Contractor\Provider\Manager;
16use Bitrix\Main\Filter\EntityDataProvider;
17use Bitrix\Main\Filter\Settings;
19\CBitrixComponent::includeComponentClass(
'bitrix:catalog.store.document.list');
27 private static $fieldsOrder = [
28 \CatalogStoreDocumentListComponent::ARRIVAL_MODE => [
46 \CatalogStoreDocumentListComponent::MOVING_MODE => [
64 \CatalogStoreDocumentListComponent::DEDUCT_MODE => [
81 \CatalogStoreDocumentListComponent::OTHER_MODE => [
95 private static $fields;
102 $this->settings = $settings;
103 $this->contractorsProvider = Manager::getActiveProvider(Manager::PROVIDER_STORE_DOCUMENT);
109 'name' => Loc::getMessage(
'DOCUMENT_ID_NAME'),
115 'name' => Loc::getMessage(
'DOCUMENT_TITLE_NAME'),
121 'id' =>
'DOC_NUMBER',
122 'name' => Loc::getMessage(
'DOCUMENT_DOC_NUMBER_NAME'),
123 'default' => $this->mode === \CatalogStoreDocumentListComponent::ARRIVAL_MODE,
124 'sort' =>
'DOC_NUMBER',
128 'name' => Loc::getMessage(
'DOCUMENT_TYPE_NAME'),
129 'default' => $this->mode === \CatalogStoreDocumentListComponent::ARRIVAL_MODE,
130 'sort' =>
'DOC_TYPE',
134 'id' =>
'DATE_DOCUMENT',
135 'name' => Loc::getMessage(
'DOCUMENT_DATE_DOCUMENT_NAME'),
137 'sort' =>
'DATE_DOCUMENT',
141 'name' => Loc::getMessage(
'DOCUMENT_STATUS_NAME'),
147 'id' =>
'DATE_CREATE',
148 'name' => Loc::getMessage(
'DOCUMENT_DATE_CREATE_NAME'),
150 'sort' =>
'DATE_CREATE',
153 'id' =>
'DATE_MODIFY',
154 'name' => Loc::getMessage(
'DOCUMENT_DATE_MODIFY_NAME'),
156 'sort' =>
'DATE_MODIFY',
159 'id' =>
'DATE_STATUS',
160 'name' => Loc::getMessage(
'DOCUMENT_DATE_STATUS_NAME'),
162 'sort' =>
'DATE_STATUS',
166 'name' => Loc::getMessage(
'DOCUMENT_STATUS_BY_NAME'),
168 'sort' =>
'STATUS_BY',
170 'RESPONSIBLE_ID' => [
171 'id' =>
'RESPONSIBLE_ID',
172 'name' => Loc::getMessage(
'DOCUMENT_RESPONSIBLE_ID_NAME'),
174 'sort' =>
'RESPONSIBLE_ID',
177 'id' =>
'CREATED_BY',
178 'name' => Loc::getMessage(
'DOCUMENT_CREATED_BY_NAME'),
180 'sort' =>
'CREATED_BY',
183 'id' =>
'MODIFIED_BY',
184 'name' => Loc::getMessage(
'DOCUMENT_MODIFIED_BY_NAME'),
186 'sort' =>
'MODIFIED_BY',
189 'id' =>
'CONTRACTOR_ID',
190 'name' => Loc::getMessage(
'DOCUMENT_CONTRACTOR_ID_NAME'),
192 'sort' =>
'CONTRACTOR_ID',
196 'name' => Loc::getMessage(
'DOCUMENT_TOTAL_NAME'),
202 'name' => Loc::getMessage(
'DOCUMENT_STORES_NAME'),
208 'id' =>
'STORES_FROM',
209 'name' => Loc::getMessage(
'DOCUMENT_STORES_FROM_NAME'),
216 'name' => Loc::getMessage(
'DOCUMENT_STORES_TO_NAME'),
243 'DATE_DOCUMENT' => $this->
createField(
'DATE_DOCUMENT', [
247 'DATE_CREATE' => $this->
createField(
'DATE_CREATE', [
250 'DATE_MODIFY' => $this->
createField(
'DATE_MODIFY', [
253 'DATE_STATUS' => $this->
createField(
'DATE_STATUS', [
258 'type' =>
'entity_selector',
260 'RESPONSIBLE_ID' => $this->
createField(
'RESPONSIBLE_ID', [
263 'type' =>
'entity_selector',
267 'type' =>
'entity_selector',
269 'MODIFIED_BY' => $this->
createField(
'MODIFIED_BY', [
271 'type' =>
'entity_selector',
277 $fields[
'PRODUCTS'] = $this->
createField(
'PRODUCTS', [
279 'type' =>
'entity_selector',
283 if ($this->mode !== \CatalogStoreDocumentListComponent::OTHER_MODE)
285 $fields[
'DOC_NUMBER'] = $this->
createField(
'DOC_NUMBER');
287 if ($this->mode === \CatalogStoreDocumentListComponent::MOVING_MODE)
289 $fields[
'STORES_FROM'] = $this->
createField(
'STORES_FROM', [
292 'type' =>
'entity_selector',
294 $fields[
'STORES_TO'] = $this->
createField(
'STORES_TO', [
297 'type' =>
'entity_selector',
304 'type' =>
'entity_selector',
309 if ($this->mode === \CatalogStoreDocumentListComponent::ARRIVAL_MODE)
311 if ($this->contractorsProvider)
313 $contractorsFields = $this->contractorsProvider::getDocumentsGridFilterFields();
314 foreach ($contractorsFields as $contractorsField)
316 $fields[$contractorsField[
'CODE']] = $this->
createField(
317 $contractorsField[
'CODE'],
318 $contractorsField[
'PARAMS']
324 $fields[
'CONTRACTOR_ID'] = $this->
createField(
'CONTRACTOR_ID', [
326 'type' =>
'entity_selector',
331 $fields[
'DOC_TYPE'] = $this->
createField(
'DOC_TYPE', [
343 return Loc::getMessage(
"DOCUMENT_{$fieldID}_NAME");
351 if ($fieldID ===
'STATUS')
361 if ($fieldID ===
'DOC_TYPE')
363 if ($this->mode === \CatalogStoreDocumentListComponent::ARRIVAL_MODE)
377 $userFields = [
'RESPONSIBLE_ID',
'STATUS_BY',
'CREATED_BY',
'MODIFIED_BY'];
378 if (in_array($fieldID, $userFields))
383 if (in_array($fieldID, [
'STORES',
'STORES_FROM',
'STORES_TO'],
true))
390 'context' => $this->mode .
'_store_filter',
394 'dynamicLoad' =>
true,
395 'dynamicSearch' =>
true,
398 'dropdownMode' =>
false,
404 if ($fieldID ===
'CONTRACTOR_ID')
411 'context' => $this->mode .
'_contractor_filter',
414 'id' =>
'contractor',
415 'dynamicLoad' =>
true,
416 'dynamicSearch' =>
true,
419 'dropdownMode' =>
false,
426 $this->contractorsProvider
427 && $this->contractorsProvider::isDocumentsGridFilterFieldSupported($fieldID)
430 return $this->contractorsProvider::getDocumentsGridFilterFieldData($fieldID);
433 if ($fieldID ===
'PRODUCTS')
440 'context' => $this->mode .
'_product_filter',
445 'iblockId' => \Bitrix\Crm\Product\Catalog::getDefaultId(),
450 'dropdownMode' =>
false,
462 $fieldsOrder = self::$fieldsOrder[$this->mode];
463 foreach ($fieldsOrder as $field)
465 $columns[] = self::$fields[$field];
470 case \CatalogStoreDocumentListComponent::ARRIVAL_MODE:
471 $gridUFManager = new \Bitrix\Main\Grid\Uf\Base(StoreDocumentArrivalTable::getUfId());
472 $gridUFManager->addUFHeaders($columns);
473 $gridUFManager = new \Bitrix\Main\Grid\Uf\Base(StoreDocumentStoreAdjustmentTable::getUfId());
474 $gridUFManager->addUFHeaders($columns);
476 case \CatalogStoreDocumentListComponent::MOVING_MODE:
477 $gridUFManager = new \Bitrix\Main\Grid\Uf\Base(StoreDocumentMovingTable::getUfId());
478 $gridUFManager->addUFHeaders($columns);
480 case \CatalogStoreDocumentListComponent::DEDUCT_MODE:
481 $gridUFManager = new \Bitrix\Main\Grid\Uf\Base(StoreDocumentDeductTable::getUfId());
482 $gridUFManager->addUFHeaders($columns);
prepareFieldData($fieldID)
__construct($mode, Settings $settings)
static getBasePriceTypeId()
const TYPE_STORE_ADJUSTMENT
getUserEntitySelectorParams(string $context, array $params)
createField($fieldID, array $params=null)
static includeModule($moduleName)