- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/controller/documentcontractor.php
- Класс: BitrixCatalogControllerDocumentContractor
- Вызов: DocumentContractor::checkFields
private function checkFields(array $fields): Result
{
$result = new Result();
$documentId = (int)$fields['DOCUMENT_ID'];
$entityTypeId = (int)$fields['ENTITY_TYPE_ID'];
$entityId = (int)$fields['ENTITY_ID'];
if (!$documentId)
{
$result->addError(new Error('Store document was not found'));
return $result;
}
$document = StoreDocumentTable::getRow([
'select' => [
'ID',
'DOC_TYPE',
'STATUS',
],
'filter' => [
'ID' => $documentId,
],
]);
if (!$document)
{
$result->addError(new Error('Store document was not found'));
return $result;
}
if ($document['DOC_TYPE'] !== StoreDocumentTable::TYPE_ARRIVAL)
{
$result->addError(new Error('Type of store document is wrong'));
}
if ($document['STATUS'] === 'Y')
{
$result->addError(new Error('Unable to edit conducted document'));
}
if (
$entityTypeId !== CCrmOwnerType::Contact
&& $entityTypeId !== CCrmOwnerType::Company
)
{
$result->addError(new Error('Wrong entity type id'));
}
if (!$entityId)
{
$result->addError(new Error('Wrong entity id'));
}
$bindingExists = $this->existsByFilter([
'DOCUMENT_ID' => $documentId,
'ENTITY_TYPE_ID' => $entityTypeId,
'ENTITY_ID' => $entityId,
]);
if ($bindingExists->isSuccess())
{
$result->addError(new Error('This contractor has been already bound to this document'));
}
if ($entityTypeId === CCrmOwnerType::Company)
{
$documentCompanyBinding = StoreDocumentContractorTable::getRow([
'select' => ['ID'],
'filter' => [
'DOCUMENT_ID' => $documentId,
'ENTITY_TYPE_ID' => CCrmOwnerType::Company,
],
]);
if (!empty($documentCompanyBinding))
{
$result->addError(new Error('This document already has a Company contractor'));
}
}
return $result;
}