2namespace Bitrix\Catalog;
4use Bitrix\Main\Entity\ReferenceField;
5use Bitrix\Main\Localization\Loc;
7use Bitrix\Main\ORM\Data\DataManager;
8use Bitrix\Main\ORM\Fields\BooleanField;
9use Bitrix\Main\ORM\Fields\DatetimeField;
10use Bitrix\Main\ORM\Fields\EnumField;
11use Bitrix\Main\ORM\Fields\FloatField;
12use Bitrix\Main\ORM\Fields\IntegerField;
13use Bitrix\Main\ORM\Fields\StringField;
14use Bitrix\Main\ORM\Fields\Validators\LengthValidator;
15use Bitrix\Main\ORM\Query\Join;
16use Bitrix\Main\UserTable;
85 return 'b_catalog_store_docs';
100 'autocomplete' =>
true,
101 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_ID_FIELD'),
107 'validation' => [__CLASS__,
'validateTitle'],
108 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_TITLE_FIELD')
115 'values' => static::getTypeList(),
116 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DOC_TYPE_FIELD'),
122 'validation' => [__CLASS__,
'validateDocNumber'],
123 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DOC_NUMBER_FIELD'),
129 'validation' => [__CLASS__,
'validateSiteId'],
130 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_SITE_ID_FIELD'),
135 ContractorTable::class,
141 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_CONTRACTOR_ID_FIELD'),
147 'default_value' =>
function()
151 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DATE_MODIFY_FIELD'),
157 'default_value' =>
function()
161 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DATE_CREATE_FIELD'),
167 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_CREATED_BY_FIELD'),
178 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_MODIFIED_BY_FIELD'),
189 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_RESPONSIBLE_ID_FIELD')
195 Main\
ORM\
Query\Join::on(
'this.RESPONSIBLE_ID',
'ref.ID')
200 'validation' => [__CLASS__,
'validateCurrency'],
201 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_CURRENCY_FIELD'),
207 'values' => [
'N',
'Y'],
209 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_STATUS_FIELD'),
215 'values' =>
array(
'N',
'Y'),
217 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_WAS_CANCELLED_FIELD'),
223 'default_value' =>
null,
224 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DATE_STATUS_FIELD'),
230 'default_value' =>
function()
234 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_DATE_DOCUMENT_FIELD'),
240 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_STATUS_BY_FIELD'),
251 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_TOTAL_FIELD'),
257 'validation' => [__CLASS__,
'validateCommentary'],
258 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_COMMENTARY_FIELD'),
264 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_ITEMS_ORDER_DATE_FIELD')
268 'ITEMS_RECEIVED_DATE',
270 'title' => Loc::getMessage(
'INVENTORY_DOCUMENT_ENTITY_ITEMS_RECEIVED_DATE_FIELD')
275 StoreDocumentElementTable::class,
277 ))->configureJoinType(
'left'),
346 self::TYPE_ARRIVAL => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_ARRIVAL'),
347 self::TYPE_STORE_ADJUSTMENT => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_STORE_ADJUSTMENT'),
348 self::TYPE_MOVING => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_MOVING'),
349 self::TYPE_RETURN => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_RETURN'),
350 self::TYPE_DEDUCT => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_DEDUCT'),
351 self::TYPE_UNDO_RESERVE => Loc::getMessage(
'INVENTORY_DOCUMENT_TYPE_UNDO_RESERVE'),
358 self::TYPE_STORE_ADJUSTMENT,
362 self::TYPE_UNDO_RESERVE,
370 self::STATUS_CONDUCTED => Loc::getMessage(
'INVENTORY_DOCUMENT_STATUS_CONDUCTED'),
371 self::STATUS_DRAFT => Loc::getMessage(
'INVENTORY_DOCUMENT_STATUS_DRAFT'),
372 self::STATUS_CANCELLED => Loc::getMessage(
'INVENTORY_DOCUMENT_STATUS_CANCELLED'),
387 case self::STATUS_CONDUCTED:
392 case self::STATUS_DRAFT:
395 '=WAS_CANCELLED' =>
'N',
398 case self::STATUS_CANCELLED:
401 '=WAS_CANCELLED' =>
'Y',
422 $productId = (int)$productId;
428 $query->registerRuntimeField(
430 'FILTER_ELEMENT_DOC_ID',
432 Join::on(
'ref.DOC_ID',
'this.ID')->where(
'ref.ELEMENT_ID', $productId),
433 [
'join_type' =>
'INNER']
443 if (empty($productIds))
448 $query->registerRuntimeField(
450 'FILTER_ELEMENT_DOC_ID',
452 Join::on(
'ref.DOC_ID',
'this.ID')->whereIn(
'ref.ELEMENT_ID', $productIds),
453 [
'join_type' =>
'INNER']
462 $storeId = (int)$storeId;
471 ->where(
'ref.STORE_FROM', $storeId)
472 ->where(
'ref.STORE_TO', $storeId)
474 $query->registerRuntimeField(
476 'FILTER_STORE_DOC_ID',
478 Join::on(
'ref.DOC_ID',
'this.ID')->where(
$filter),
479 [
'join_type' =>
'INNER']
489 if (empty($storeIds))
497 ->whereIn(
'ref.STORE_FROM', $storeIds)
498 ->whereIn(
'ref.STORE_TO', $storeIds)
500 $query->registerRuntimeField(
502 'FILTER_STORE_DOC_ID',
504 Join::on(
'ref.DOC_ID',
'this.ID')->where(
$filter),
505 [
'join_type' =>
'INNER']
514 static::addSingleStoreFilterToQuery(
$query,
'STORE_FROM', $storeIds);
519 static::addSingleStoreFilterToQuery(
$query,
'STORE_TO', $storeIds);
525 if (empty($storeIds))
532 ->whereIn(
'ref.' . $fieldName, $storeIds)
534 $query->registerRuntimeField(
536 'FILTER_' . $fieldName .
'_DOC_ID',
538 Join::on(
'ref.DOC_ID',
'this.ID')->where(
$filter),
539 [
'join_type' =>
'INNER']
static addSingleStoreFilterToQuery(Main\ORM\Query\Query $query, string $fieldName, array $storeIds)
static getOrmFilterByStatus(string $status)
static withStoreToList(Main\ORM\Query\Query $query, array $storeIds)
const TYPE_STORE_ADJUSTMENT
static withStoreList(Main\ORM\Query\Query $query, array $storeIds)
static withStoreFromList(Main\ORM\Query\Query $query, array $storeIds)
static validateDocNumber()
static withProductList(Main\ORM\Query\Query $query, array $productIds)
static validateCurrency()
static withStore(Main\ORM\Query\Query $query, $storeId)
static withProduct(Main\ORM\Query\Query $query, $productId)
static getStatusName(string $status)
static validateCommentary()
static getTypeList(bool $description=false)
static normalizeArrayValuesByInt(&$map, $sorted=true)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(Loader::includeModule( 'bitrix24')) elseif(Loader::includeModule('intranet') &&CIntranetUtils::getPortalZone() !=='ru') $description
if( $guestStatuses !=='') if(!is_array($guestStatuses)) $statusList