Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/catalog/lib/document/ |
Upload File : |
<?php namespace Bitrix\Catalog\Document; use Bitrix\Catalog\StoreDocumentTable; use Bitrix\Main\Config\Option; use Bitrix\Main\Error; use Bitrix\Main\Result; use Bitrix\Main\Web\Json; class DocumentFieldsManager { public static function getRequiredFields(string $docType): array { try { $requiredFields = Json::decode(Option::get('catalog', 'store_document_required_fields_' . $docType)) ?: []; } catch (\Exception $e) { $requiredFields = []; } return $requiredFields; } public static function addRequiredField(string $docType, string $fieldName): Result { $result = new Result(); $allowedFields = self::getAllowedRequiredSettingFieldsByDocumentId($docType); if (!in_array($fieldName, $allowedFields, true)) { $result->addError(new Error('Field "' . $fieldName . '" is not available')); return $result; } $requiredFields = self::getRequiredFields($docType); if (in_array($fieldName, $requiredFields, true)) { $result->addError(new Error('Field "' . $fieldName . '" already required')); return $result; } $requiredFields[] = $fieldName; self::saveRequiredFields($docType, $requiredFields); return $result; } public static function deleteRequiredField(string $docType, string $fieldName): Result { $result = new Result(); $requiredFields = self::getRequiredFields($docType); $fieldIndex = array_search($fieldName, $requiredFields, true); if ($fieldIndex === false) { $result->addError(new Error('Field "' . $fieldName . '" already not required')); return $result; } unset($requiredFields[$fieldIndex]); $requiredFields = array_values($requiredFields); self::saveRequiredFields($docType, $requiredFields); return $result; } private static function saveRequiredFields(string $docType, array $requiredFields): void { Option::set('catalog', 'store_document_required_fields_' . $docType, Json::encode($requiredFields)); } private static function getAllowedRequiredSettingFieldsByDocumentId(string $documentType): array { return match ($documentType) { StoreDocumentTable::TYPE_ARRIVAL => [ 'TITLE', 'DOC_NUMBER', 'DATE_DOCUMENT', 'ITEMS_ORDER_DATE', 'ITEMS_RECEIVED_DATE', 'DOCUMENT_FILES' ], StoreDocumentTable::TYPE_STORE_ADJUSTMENT => ['TITLE'], StoreDocumentTable::TYPE_DEDUCT, StoreDocumentTable::TYPE_MOVING => [ 'TITLE', 'DOC_NUMBER', 'DATE_DOCUMENT' ], default => [], }; } }