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/admin/ |
Upload File : |
<?php /** @global CMain $APPLICATION */ use Bitrix\Main\Application; use Bitrix\Main\Context; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; use Bitrix\Main\SiteTable; use Bitrix\Main\UserTable; use Bitrix\Main\Config\Option; use Bitrix\Main\Type; use Bitrix\Main\Engine\CurrentUser; use Bitrix\Main\UI\FileInput; use Bitrix\Main\Web\Json; use Bitrix\Catalog; use Bitrix\Catalog\Access\AccessController; use Bitrix\Catalog\Access\ActionDictionary; use Bitrix\Currency; use Bitrix\Catalog\v2\Contractor\Provider\Manager; require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/catalog/prolog.php'); Loc::loadMessages(__FILE__); /** @global CAdminPage $adminPage */ global $adminPage; /** @global CAdminSidePanelHelper $adminSidePanelHelper */ global $adminSidePanelHelper; /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $USER_FIELD_MANAGER; function showStoreDocumentDate($field, string $name, bool $isNew, bool $readOnly): string { $showDate = null; if ($field instanceof Type\DateTime) { $showDate = $field->toString(); } if ($readOnly) { $showDate = (string)$showDate; return $showDate === '' ? Loc::getMessage('CAT_DOC_MESS_EMPTY_DATE') : $showDate ; } if (isset($_POST[$name]) && is_string($_POST[$name])) { $sourceDate = $_POST[$name]; } else { $sourceDate = $showDate; if ($sourceDate === null) { $sourceDate = ''; if ($isNew) { $sourceDate = date(Type\Date::convertFormatToPhp(CSite::GetDateFormat('FULL'))); } } } return CalendarDate( $name, $sourceDate, 'form_catalog_document_form', '15', 'class="typeinput"' ); } function getStoreListForControl(?int $value, array $activeStores, array $allStores, int $defaultStoreId): string { $result = ''; $nonSelect = false; $list = []; if ($value !== null && !isset($allStores[$value])) { $value = null; $nonSelect = true; $list['-'] = [ 'ID' => '-', 'TITLE' => GetMessage('CAT_DOC_MESS_STORE_IS_NOT_SELECT'), ]; } foreach (array_keys($activeStores) as $storeId) { $list[$storeId] = $activeStores[$storeId]; } if ($value !== null && !isset($activeStores[$value])) { $list[$value] = $allStores[$value]; } if ($value !== null) { $selectedId = $value; } else { $selectedId = $nonSelect ? '-' : $defaultStoreId ; } foreach ($list as $storeId => $row) { $result .= '<option value="' . $storeId . '"' . ($storeId === $selectedId ? ' selected' : '') . '>' . $row['TITLE'] . '</option>' ; } return $result; } function getRequiredFieldCssClass(array $fields, string $fieldName): string { return isset($fields[$fieldName]['required']) && $fields[$fieldName]['required'] === 'Y' ? ' class="adm-detail-required-field"' : '' ; } $selfFolderUrl = $adminPage->getSelfFolderUrl(); $listUrl = $selfFolderUrl."cat_store_document_list.php?lang=".LANGUAGE_ID; $listUrl = $adminSidePanelHelper->editUrlToPublicPage($listUrl); $userSearchUrl = $selfFolderUrl . 'user_search.php?lang=' . LANGUAGE_ID . '&JSFUNC=setResponsible'; $currentUser = CurrentUser::get(); Loader::includeModule('catalog'); $accessController = AccessController::getCurrent(); if (!$accessController->check(ActionDictionary::ACTION_STORE_VIEW)) { $APPLICATION->AuthForm(Loc::getMessage('ACCESS_DENIED')); } if (Manager::isActiveProviderExists()) { LocalRedirect($listUrl); } $canModify = $accessController->check(ActionDictionary::ACTION_STORE_VIEW); $bReadOnly = !$canModify; $publicMode = $adminPage->publicMode; $canViewUserList = ( $currentUser->canDoOperation('view_subordinate_users') || $currentUser->canDoOperation('view_all_users') || $currentUser->canDoOperation('edit_all_users') || $currentUser->canDoOperation('edit_subordinate_users') ); if ($publicMode) { $canViewUserList = false; } $request = Context::getCurrent()->getRequest(); $isAjaxDocumentRequest = $request->get('AJAX_MODE') === 'Y'; if ( $request->isPost() && $request->getPost('BARCODE_AJAX') === 'Y' && check_bitrix_sessid() ) { $result = []; $barcode = $request->getPost('BARCODE'); $barcode = trim(is_string($barcode) ? $barcode : ''); if ($barcode !== '') { $iterator = Catalog\StoreBarcodeTable::getList([ 'select' => [ 'ID', 'PRODUCT_ID', 'BARCODE', ], 'filter' => [ '=BARCODE' => $barcode, '@PRODUCT.TYPE' => [ Catalog\ProductTable::TYPE_PRODUCT, Catalog\ProductTable::TYPE_OFFER, ] ], 'limit' => 1, ]); $row = $iterator->fetch(); if (!empty($row)) { $result = [ 'id' => (int)$row['PRODUCT_ID'], 'barcode' => $row['BARCODE'], ]; } unset($row, $iterator); } header('Content-Type: application/json'); CMain::FinalActions(Json::encode($result)); } $ID = (int)($request->get('ID') ?? 0); if ($ID < 0) { $ID = 0; } $userId = (int)$currentUser->getId(); $docType = (string)($request->get('DOCUMENT_TYPE') ?? ''); $defaultValues = [ 'ID' => 0, 'TITLE' => '', 'SITE_ID' => '', 'DOC_TYPE' => $docType, 'DOC_NUMBER' => '', 'CONTRACTOR_ID' => '', 'DATE_MODIFY' => '', 'DATE_CREATE' => '', 'CREATED_BY' => '', 'MODIFIED_BY' => '', 'RESPONSIBLE_ID' => $userId, 'CURRENCY' => Currency\CurrencyManager::getBaseCurrency(), 'STATUS' => 'N', 'WAS_CANCELLED' => 'N', 'DATE_STATUS' => '', 'DATE_DOCUMENT' => '', 'STATUS_BY' => '', 'TOTAL' => '', 'COMMENTARY' => '', 'ITEMS_ORDER_DATE' => '', 'ITEMS_RECEIVED_DATE' => '', 'DOCUMENT_FILES' => [], ]; $fields = $defaultValues; if ($ID > 0) { $fields = Catalog\StoreDocumentTable::getRowById($ID); if ($fields === null) { $ID = 0; $fields = $defaultValues; } else { $docType = $fields['DOC_TYPE']; $fields['DOCUMENT_FILES'] = []; $iterator = Catalog\StoreDocumentFileTable::getList([ 'select' => [ 'ID', 'FILE_ID', ], 'filter' => [ '=DOCUMENT_ID' => $ID, ], ]); while ($row = $iterator->fetch()) { $fields['DOCUMENT_FILES'][$row['ID']] = $row['FILE_ID']; } unset($row, $iterator); } } $isDocumentConduct = $fields['STATUS'] === 'Y'; if ($isDocumentConduct) { $bReadOnly = true; } $listDocType = Catalog\StoreDocumentTable::getTypeList(true); if (!isset($listDocType[$docType])) { $adminSidePanelHelper->localRedirect($listUrl); LocalRedirect($listUrl); } /** @var array $typeFieldList */ $typeFieldList = CCatalogStoreControlUtil::getTypeFields($docType); if (empty($typeFieldList)) { $adminSidePanelHelper->sendSuccessResponse("close"); $adminSidePanelHelper->localRedirect($listUrl); LocalRedirect($listUrl); } $documentFields = $typeFieldList['DOCUMENT']; $elementFields = $typeFieldList['ELEMENT']; unset($typeFieldList); $shopSites = []; $allSites = []; $siteIterator = SiteTable::getList([ 'select' => [ 'LID', 'NAME', 'SORT', ], 'filter' => [ '=ACTIVE' => 'Y', ], 'order' => [ 'SORT' => 'ASC', 'LID' => 'ASC', ], ]); while ($site = $siteIterator->fetch()) { $saleSite = Option::get('sale', 'SHOP_SITE_'.$site['LID']); if ($site['LID'] == $saleSite) { $shopSites[] = [ 'ID' => $site['LID'], 'NAME' => $site['NAME'], ]; } $allSites[] = [ 'ID' => $site['LID'], 'NAME' => $site['NAME'], ]; } unset($saleSite, $site, $siteIterator); if (empty($shopSites)) { $shopSites = $allSites; } unset($allSites); $rsContractors = CCatalogContractor::GetList(); $arContractors = []; while($arContractor = $rsContractors->Fetch()) { $arContractors[] = $arContractor; } unset($arContractor, $rsContractors); $arResult = []; $allStores = []; $activeStores = []; $defaultStoreId = 0; $iterator = Catalog\StoreTable::getList([ 'select' => [ 'ID', 'IS_DEFAULT', 'TITLE', 'ADDRESS', 'SORT', 'ACTIVE', ], 'order' => [ 'IS_DEFAULT' => 'DESC', 'SORT' => 'ASC', ], ]); while ($row = $iterator->fetch()) { $row['ID'] = (int)$row['ID']; $row['TITLE'] = (string)$row['TITLE']; $row['TITLE'] .= ($row['TITLE'] !== '' ? ' (' .$row['ADDRESS'] . ')' : $row['ADDRESS']); $row['TITLE'] = htmlspecialcharsbx($row['TITLE']); $allStores[$row['ID']] = $row; if ($row['ACTIVE'] === 'Y') { $activeStores[$row['ID']] = $row; } if ($row['IS_DEFAULT'] === 'Y') { $defaultStoreId = $row['ID']; } } unset($row, $iterator); $entityId = ''; $tableClass = Catalog\Document\StoreDocumentTableManager::getTableClassByType($docType); if ($tableClass) { $entityId = $tableClass::getUfId(); } $errorList = ''; $error = false; $refillForm = false; $arGeneral = []; if ( $request->isPost() && $request->getPost('Update') === 'Y' && $canModify && check_bitrix_sessid() ) { $currentAction = ''; if ($isDocumentConduct) { if ($request->getPost('cancellation') !== null) { $currentAction = 'cancellation'; } } else { if ($request->getPost('save_document') !== null) { $currentAction = 'save'; } elseif ($request->getPost('save_and_conduct') !== null) { $currentAction = 'conduct'; } } $saveAction = $currentAction === 'save'; $conductAction = $currentAction === 'conduct'; $cancelAction = $currentAction === 'cancellation'; if ($saveAction || $conductAction) { $arGeneral = [ 'DOC_TYPE' => $docType, 'MODIFIED_BY' => $userId, ]; $stringList = [ 'SITE_ID', 'TITLE', 'DOC_NUMBER', 'COMMENTARY', 'CURRENCY', ]; foreach ($stringList as $fieldId) { $value = $request->getPost($fieldId); if (is_string($value)) { $arGeneral[$fieldId] = $value; } } $dateList = [ 'DATE_DOCUMENT', 'ITEMS_ORDER_DATE DATETIME NULL', 'ITEMS_RECEIVED_DATE', ]; foreach ($dateList as $fieldId) { $value = $request->getPost($fieldId); if (is_string($value) && Type\DateTime::tryParse($value) !== null) { $arGeneral[$fieldId] = $value; } } $userList = [ 'RESPONSIBLE_ID', 'CONTRACTOR_ID', ]; foreach ($userList as $fieldId) { $value = $request->getPost($fieldId); if (is_string($value)) { $value = (int)$value; if ($value > 0) { $arGeneral[$fieldId] = $value; } } } $floatList = [ 'TOTAL', ]; foreach ($floatList as $fieldId) { $value = $request->getPost($fieldId); if (is_string($value)) { $arGeneral[$fieldId] = (float)$value; } } $fileList = [ 'DOCUMENT_FILES', ]; $fileValues = \CCatalogStoreControlUtil::getMultipleFilesFromPost($request, $fileList); if (!empty($fileValues) && is_array($fileValues)) { foreach ($fileList as $fieldId) { if (isset($fileValues[$fieldId])) { $arGeneral[$fieldId] = $fileValues[$fieldId]; } } } $arGeneral = array_intersect_key($arGeneral, $documentFields); if ($entityId) { $USER_FIELD_MANAGER->EditFormAddFields($entityId, $arGeneral); } if ($ID > 0) { $result = CCatalogDocs::update($ID, $arGeneral); } else { $arGeneral['CREATED_BY'] = $userId; $ID = CCatalogDocs::add($arGeneral); $result = $ID !== false; if (!$result) { $ID = 0; } } if (!$result) { $error = true; $ex = $APPLICATION->GetException(); if ($ex) { $errorList = $ex->GetString(); } else { $errorList = Loc::getMessage('CAT_DOC_ERR_SAVE_COMMON_UNKNOWN'); } } if (!$error) { $dbElement = CCatalogStoreDocsElement::getList( [], [ '=DOC_ID' => $ID, ], false, false, [ 'ID', ] ); while ($arElement = $dbElement->Fetch()) { CCatalogStoreDocsElement::delete($arElement['ID']); } unset($arElement, $dbElement); $dbDocsBarcode = CCatalogStoreDocsBarcode::getList( [], [ '=DOC_ID' => $ID, ], false, false, ['ID'] ); while ($arDocsBarcode = $dbDocsBarcode->Fetch()) { CCatalogStoreDocsBarcode::delete($arDocsBarcode['ID']); } unset($arDocsBarcode, $dbDocsBarcode); $arProducts = $request->getPost('PRODUCT'); if (!empty($arProducts) && is_array($arProducts)) { foreach ($arProducts as $key => $val) { $arAdditional = [ "AMOUNT" => $val["AMOUNT"], "ELEMENT_ID" => $val["PRODUCT_ID"], "PURCHASING_PRICE" => $val["PURCHASING_PRICE"], "STORE_TO" => $val["STORE_TO"] ?? null, "STORE_FROM" => $val["STORE_FROM"] ?? null, "ENTRY_ID" => $key, "DOC_ID" => $ID, ]; if (!empty($val['BASE_PRICE'])) { $arAdditional['BASE_PRICE'] = $val['BASE_PRICE']; } $docElementId = CCatalogStoreDocsElement::add($arAdditional); if ($docElementId && isset($val["BARCODE"])) { $arBarcode = []; if (!empty($val["BARCODE"])) { $arBarcode = explode(', ', $val["BARCODE"]); } if (!empty($arBarcode)) { foreach ($arBarcode as $barCode) { CCatalogStoreDocsBarcode::add([ "BARCODE" => $barCode, "DOC_ELEMENT_ID" => $docElementId, "DOC_ID" => $ID, ]); } } } } } unset($arProducts); if ($saveAction) { $saveDocumentUrl = $selfFolderUrl . "cat_store_document_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $ID; if ($adminSidePanelHelper->isPublicSidePanel()) { $saveDocumentUrl = CHTTP::urlAddParams($saveDocumentUrl, ["IFRAME" => "Y", "IFRAME_TYPE" => "SIDE_SLIDER"]); } $adminSidePanelHelper->sendSuccessResponse("apply", ["ID" => $ID, 'reloadUrl' => $saveDocumentUrl]); $saveDocumentUrl = $adminSidePanelHelper->editUrlToPublicPage($saveDocumentUrl); $adminSidePanelHelper->localRedirect($listUrl); LocalRedirect($saveDocumentUrl); } } } if (!$error) { if ($conductAction || $cancelAction) { $conn = Application::getConnection(); $conn->startTransaction(); $result = false; if ($conductAction) { $result = CCatalogDocs::conductDocument($ID, $userId); } elseif ($cancelAction) { $result = CCatalogDocs::cancellationDocument($ID, $userId); } if ($result === true) { $conn->commitTransaction(); } else { $conn->rollbackTransaction(); } if ($result !== true) { $TAB_TITLE = $listDocType[$docType]; $APPLICATION->SetTitle(str_replace("#ID#", $ID, Loc::getMessage("CAT_DOC_TITLE_EDIT_EXT")) . ". " . $TAB_TITLE . "."); $ex = $APPLICATION->GetException(); if (is_object($ex)) { $strError = $ex->GetString(); } else { $strError = Loc::getMessage('CAT_DOC_ERR_CHANGE_STATUS_UNKNOWN'); } if (!empty($result) && is_array($result)) { $strError .= CCatalogStoreControlUtil::showErrorProduct($result); } $adminSidePanelHelper->sendJsonErrorResponse($strError); require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"); CAdminMessage::ShowMessage($strError); $error = true; $refillForm = true; } else { $documentUrl = $selfFolderUrl . "cat_store_document_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $ID . "&IFRAME=Y&IFRAME_TYPE=SIDE_SLIDER&publicSidePanel=Y"; $adminSidePanelHelper->sendSuccessResponse("base", ['documentUrl' => $documentUrl]); $adminSidePanelHelper->localRedirect($listUrl); LocalRedirect($listUrl); } } } } if ($request->getPost('dontsave') !== null) { $adminSidePanelHelper->sendSuccessResponse("close"); $adminSidePanelHelper->localRedirect($listUrl); LocalRedirect($listUrl); } $sTableID = "b_catalog_store_docs_".$docType; $oSort = new CAdminSorting($sTableID, "ID", "ASC"); $lAdmin = new CAdminList($sTableID, $oSort); if ($ID > 0 || $isAjaxDocumentRequest) { $arAllDocumentElement = []; $arResult = $fields; if (!$isAjaxDocumentRequest) { $dbDocumentElement = CCatalogStoreDocsElement::getList( [ 'ID' => 'ASC', ], [ 'DOC_ID' => $ID, ], false, false, [ 'ID', 'STORE_FROM', 'STORE_TO', 'ELEMENT_ID', 'AMOUNT', 'BASE_PRICE', 'PURCHASING_PRICE', 'IS_MULTIPLY_BARCODE', 'RESERVED', ] ); while($arDocumentElements = $dbDocumentElement->Fetch()) { $arDocumentElements['ID'] = (int)$arDocumentElements['ID']; $arDocumentElements['ELEMENT_ID'] = (int)$arDocumentElements['ELEMENT_ID']; if ($arDocumentElements['STORE_FROM'] !== null) { $arDocumentElements['STORE_FROM'] = (int)$arDocumentElements['STORE_FROM']; if ($arDocumentElements['STORE_FROM'] <= 0) { $arDocumentElements['STORE_FROM'] = null; } } if ($arDocumentElements['STORE_TO'] !== null) { $arDocumentElements['STORE_TO'] = (int)$arDocumentElements['STORE_TO']; if ($arDocumentElements['STORE_TO'] <= 0) { $arDocumentElements['STORE_TO'] = null; } } $arAllDocumentElement[] = $arDocumentElements; } unset($arDocumentElements, $dbDocumentElement); } else { $requestProducts = $request->getPost('PRODUCT'); $newElements = $request->getPost('ELEMENT_ID'); $existsProducts = is_array($requestProducts); $existsNewElements = is_array($newElements); if ($existsProducts || $existsNewElements) { $arElements = []; if ($existsProducts) { $arElements = $requestProducts; } if ($existsNewElements) { foreach ($newElements as $row) { if (empty($row) || !is_array($row)) { continue; } if (!isset($row['id'])) { continue; } $arElements[] = [ 'PRODUCT_ID' => $row['id'], 'SELECTED_BARCODE' => $row['barcode'] ?? '', 'BARCODE' => $row['barcode'] ?? '', 'AMOUNT' => $row['quantity'] ?? 1, ]; } } $arAllAddedProductsId = []; $arAjaxElementInfo = []; foreach ($arElements as $eachAddElement) { if (isset($eachAddElement['PRODUCT_ID'])) { $arAllAddedProductsId[] = (int)$eachAddElement['PRODUCT_ID']; } } $iterator = Catalog\ProductTable::getList([ 'select' => [ 'ID', 'BARCODE_MULTI', 'QUANTITY_RESERVED', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', ], 'filter' => [ '@ID' => $arAllAddedProductsId, ], ]); while ($arElement = $iterator->fetch()) { $arAjaxElementInfo[$arElement['ID']] = [ 'IS_MULTIPLY_BARCODE' => $arElement['BARCODE_MULTI'], 'RESERVED' => $arElement['QUANTITY_RESERVED'], 'PURCHASING_PRICE' => $arElement['PURCHASING_PRICE'], 'PURCHASING_CURRENCY' => $arElement['PURCHASING_CURRENCY'], ]; } unset($arElement, $iterator); if (!empty($arElements)) { foreach ($arElements as &$arAjaxElement) { $elementId = (int)$arAjaxElement['PRODUCT_ID']; $arAjaxElement['ELEMENT_ID'] = $elementId; $arAjaxElement['SELECTED_BARCODE'] ??= ''; $arAjaxElement['BARCODE'] ??= ''; if ($arAjaxElement['SELECTED_BARCODE'] == '') { $arAjaxElement['SELECTED_BARCODE'] = $arAjaxElement['BARCODE']; } $arAjaxElement['BARCODE'] = [$arAjaxElement['BARCODE']]; if (!empty($arAjaxElementInfo[$elementId])) { $arAjaxElement['IS_MULTIPLY_BARCODE'] = $arAjaxElementInfo[$elementId]['IS_MULTIPLY_BARCODE']; $arAjaxElement['RESERVED'] = $arAjaxElementInfo[$elementId]['RESERVED']; if ( (float)($arAjaxElement['PURCHASING_PRICE'] ?? 0) <= 0 && (float)$arAjaxElementInfo[$elementId]['PURCHASING_PRICE'] > 0 ) { $arAjaxElement['PURCHASING_PRICE'] = $arAjaxElementInfo[$elementId]['PURCHASING_PRICE']; $arAjaxElement['PURCHASING_CURRENCY'] = $arAjaxElementInfo[$elementId]['PURCHASING_CURRENCY']; } } if (isset($arAjaxElement['STORE_FROM'])) { $arAjaxElement['STORE_FROM'] = (int)$arAjaxElement['STORE_FROM']; if ($arAjaxElement['STORE_FROM'] <= 0) { $arAjaxElement['STORE_FROM'] = null; } } if (isset($arAjaxElement['STORE_TO'])) { $arAjaxElement['STORE_TO'] = (int)$arAjaxElement['STORE_TO']; if ($arAjaxElement['STORE_TO'] <= 0) { $arAjaxElement['STORE_TO'] = null; } } unset($elementId); } unset($arAjaxElement); } $arAllDocumentElement = $arElements; } } foreach($arAllDocumentElement as $arDocumentElement) { $arElement = []; $arElementBarcode = []; $isMultiSingleBarcode = $selectedBarcode = false; foreach($arDocumentElement as $key => $value) { $arElement[$key] = $value; } if($arDocumentElement["IS_MULTIPLY_BARCODE"] == 'N') { if(isset($arElement["BARCODE"])) unset($arElement["BARCODE"]); $dbDocumentStoreBarcode = CCatalogStoreBarCode::getList( [], [ 'PRODUCT_ID' => $arDocumentElement['ELEMENT_ID'], ] ); while($arDocumentStoreBarcode = $dbDocumentStoreBarcode->Fetch()) { $arElementBarcode[] = $arDocumentStoreBarcode["BARCODE"]; } if(count($arElementBarcode) > 1) { $isMultiSingleBarcode = true; if($bReadOnly) { $arElementBarcode = []; } } } if($arDocumentElement["IS_MULTIPLY_BARCODE"] == 'Y' || $isMultiSingleBarcode) { $dbDocumentElementBarcode = CCatalogStoreDocsBarcode::getList( [], [ 'DOC_ELEMENT_ID' => $arDocumentElement["ID"], ], false, false, [ 'BARCODE', ] ); while($arDocumentElementBarcode = $dbDocumentElementBarcode->Fetch()) { if($isMultiSingleBarcode) { $selectedBarcode = $arDocumentElementBarcode["BARCODE"]; if(empty($arElementBarcode)) $arElementBarcode[] = $arDocumentElementBarcode["BARCODE"]; } else { $arElementBarcode[] = $arDocumentElementBarcode["BARCODE"]; } } } if(!isset($arElement["BARCODE"])) $arElement["BARCODE"] = $arElementBarcode; if(!isset($arElement["SELECTED_BARCODE"])) $arElement["SELECTED_BARCODE"] = $selectedBarcode; if (!isset($arElement['BASE_PRICE'])) { $priceResult = Catalog\Model\Price::getList([ 'select' => [ 'ID', 'PRICE', ], 'filter' => [ '=PRODUCT_ID' => $arElement['PRODUCT_ID'], '=CATALOG_GROUP_ID' => Catalog\GroupTable::getBasePriceTypeId(), '=CURRENCY' => $arResult['CURRENCY'], ], 'order' => [ 'ID' => 'ASC', ], 'limit' => 1, ]); $priceData = $priceResult->fetch(); if ($priceData) { $arElement['BASE_PRICE'] = $priceData['PRICE']; } } $arResult["ELEMENT"][] = $arElement; } } if (!$accessController->check(ActionDictionary::ACTION_STORE_VIEW)) { $isDocumentConduct = false; } $aContext = array(); if(!$bReadOnly) { $aContext = array( array( "TEXT" => Loc::getMessage("CAT_DOC_FIND_ITEMS"), "ICON" => "btn_new", "TITLE" => Loc::getMessage("CAT_DOC_FIND_ITEMS"), "ONCLICK" => "addProductSearch(1);", ), array( "HTML" => Loc::getMessage( "CAT_DOC_LINK_FIND", array("#LINK#" => '<a href="javascript:void(0);" onClick="findBarcodeDivHider()">'.Loc::getMessage('CAT_DOC_BARCODE_FIND_LINK').'</a>') ), ), array( "HTML" => '<div id="cat_barcode_find_div" style="display: none;">'. '<input type="text" id="CAT_DOC_BARCODE_FIND" style="margin: 0 10px;">'. '<a href="javascript:void(0);" class="adm-btn" onclick="productSearch(BX(\'CAT_DOC_BARCODE_FIND\').value);">'.Loc::getMessage('CAT_DOC_BARCODE_FIND').'</a>'. '</div>', ), ); } $useXmlId = Option::get('iblock', 'show_xml_id') === 'Y'; $visibleHeaderIds = []; $arHeaders = array( array( "id" => "IMAGE", "content" => Loc::getMessage("CAT_DOC_PRODUCT_PICTURE"), "default" => true ), array( "id" => "TITLE", "content" => Loc::getMessage("CAT_DOC_PRODUCT_NAME"), "default" => true ), ); if ($useXmlId) { $arHeaders[] = array( "id" => "XML_ID", "content" => Loc::getMessage("CAT_DOC_PRODUCT_XML_ID"), "default" => true ); } if (isset($elementFields["RESERVED"])) { $arHeaders[] = array( "id" => "RESERVED", "content" => $elementFields["RESERVED"]["name"], "title" => $elementFields["RESERVED"]["title"], "default" => $elementFields["RESERVED"]["required"] === 'Y', ); $visibleHeaderIds[] = "RESERVED"; } if (isset($elementFields["BASE_PRICE"])) { $arHeaders[] = array( "id" => "BASE_PRICE", "content" => $elementFields["BASE_PRICE"]["name"], "title" => $elementFields["BASE_PRICE"]["title"], "default" => $elementFields["BASE_PRICE"]["required"] === 'Y', ); $visibleHeaderIds[] = "BASE_PRICE"; } if (isset($elementFields["AMOUNT"])) { $arHeaders[] = array( "id" => "AMOUNT", "content" => $elementFields["AMOUNT"]["name"], "title" => $elementFields["AMOUNT"]["title"], "default" => $elementFields["AMOUNT"]["required"] === 'Y', ); $visibleHeaderIds[] = "AMOUNT"; } if (isset($elementFields["NET_PRICE"])) { $arHeaders[] = array( "id" => "PURCHASING_PRICE", "content" => $elementFields["NET_PRICE"]["name"], "title" => $elementFields["NET_PRICE"]["title"], "default" => $elementFields["NET_PRICE"]["required"] === 'Y', ); $visibleHeaderIds[] = "PURCHASING_PRICE"; } if (isset($elementFields["TOTAL"])) { $arHeaders[] = array( "id" => "SUMM", "content" => Loc::getMessage("CAT_DOC_PRODUCT_SUMM"), "default" => $elementFields["TOTAL"]["required"] === 'Y', ); $visibleHeaderIds[] = "SUMM"; } if (isset($elementFields["STORE_FROM"])) { $arHeaders[] = array( "id" => "STORE_FROM", "content" => $elementFields["STORE_FROM"]["name"], "title" => $elementFields["STORE_FROM"]["title"], "default" => $elementFields["STORE_FROM"]["required"] === 'Y', ); $visibleHeaderIds[] = "STORE_FROM"; } if (isset($elementFields["STORE_TO"])) { $arHeaders[] = array( "id" => "STORE_TO", "content" => $elementFields["STORE_TO"]["name"], "title" => $elementFields["STORE_TO"]["title"], "default" => $elementFields["STORE_TO"]["required"] === 'Y', ); $visibleHeaderIds[] = "STORE_TO"; } if (isset($elementFields["BAR_CODE"])) { $arHeaders[] = array( "id" => "BARCODE", "content" => $elementFields["BAR_CODE"]["name"], "title" => $elementFields["BAR_CODE"]["title"], "default" => $elementFields["BAR_CODE"]["required"] === 'Y', ); $visibleHeaderIds[] = "BARCODE"; } $lAdmin->AddHeaders($arHeaders); if (!empty($visibleHeaderIds)) { foreach ($visibleHeaderIds as $headerId) $lAdmin->AddVisibleHeaderColumn($headerId); unset($headerId); } $isDisable = $bReadOnly ? " disabled" : ""; $maxId = 0; if (!empty($arResult['ELEMENT']) && is_array($arResult['ELEMENT'])) { foreach($arResult["ELEMENT"] as $code => $value) { $isMultiply = ('Y' == $value["IS_MULTIPLY_BARCODE"]); $arProductInfo = CCatalogStoreControlUtil::getProductInfo($value["ELEMENT_ID"]); if(is_array($arProductInfo)) $value = array_merge($value, $arProductInfo); $value['BASE_PRICE'] ??= 0; $value['PURCHASING_PRICE'] ??= 0; $arRes['ID'] = (int)$code; $maxId = ($arRes['ID'] > $maxId) ? $arRes['ID'] : $maxId; $arRows[$arRes['ID']] = $row =& $lAdmin->AddRow($arRes['ID']); $row->AddViewField("IMAGE", CFile::ShowImage($value['DETAIL_PICTURE'], 80, 80, "border=0", "", true)); if ($value['EDIT_PAGE_URL']) { $editPageUrl = $value['EDIT_PAGE_URL']; $editPageUrl = $adminSidePanelHelper->editUrlToPublicPage($editPageUrl); $value['EDIT_PAGE_URL'] = $editPageUrl; } $row->AddViewField("TITLE", '<a target="_top" href ="'.$value['EDIT_PAGE_URL'].'"> '.$value['NAME'].'</a><input value="'.$value['ELEMENT_ID'].'" type="hidden" name="PRODUCT['.$arRes['ID'].'][PRODUCT_ID]" id="PRODUCT_ID_'.$arRes['ID'].'">'); if ($useXmlId) { $row->AddViewField('XML_ID', $value['XML_ID']); } $readOnly = ($isMultiply && !$bReadOnly) ? ' readonly' : ''; if(isset($value['BARCODE']) && $isMultiply) { $barcodeCount = 0; $tmpBarcodeCount = count($value['BARCODE']); if (1 < $tmpBarcodeCount) { $barcodeCount = $tmpBarcodeCount; } elseif (1 == $tmpBarcodeCount) { if (isset($value['BARCODE'][0]) && $value['BARCODE'][0] != '') $barcodeCount = count(explode(', ', $value['BARCODE'][0])); } unset($tmpBarcodeCount); } elseif(!$isMultiply) { $barcodeCount = count($value['BARCODE']); } else { $barcodeCount = $value['AMOUNT']; } if (isset($elementFields["BASE_PRICE"])) { $row->AddViewField("BASE_PRICE", '<div> <input name="PRODUCT['.$arRes['ID'].'][BASE_PRICE]" onchange="recalculateRow('.$arRes['ID'].');" id="CAT_DOC_BASE_PRICE_'.$arRes['ID'].'" value="'.$value['BASE_PRICE'].'" type="text" size="10"'.$isDisable.'></div>'); } if (isset($elementFields["AMOUNT"])) { $row->AddViewField("AMOUNT", '<div><input type="hidden" id="CAT_DOC_AMOUNT_HIDDEN_'.$arRes['ID'].'" value="'.$barcodeCount.'" onchange="recalculateRow('.$arRes['ID'].');"> <input name="PRODUCT['.$arRes['ID'].'][AMOUNT]" onchange="recalculateRow('.$arRes['ID'].');" id="CAT_DOC_AMOUNT_'.$arRes['ID'].'" value="'.$value['AMOUNT'].'" type="text" size="10"'.$isDisable.'></div>'); } if (isset($elementFields["NET_PRICE"])) { $row->AddViewField("PURCHASING_PRICE", '<div> <input name="PRODUCT['.$arRes['ID'].'][PURCHASING_PRICE]" onchange="recalculateRow('.$arRes['ID'].');" id="CAT_DOC_PURCHASING_PRICE_'.$arRes['ID'].'" value="'.$value['PURCHASING_PRICE'].'" type="text" size="10"'.$isDisable.'></div>'); } if (isset($elementFields["TOTAL"])) { $row->AddViewField("SUMM", '<div id="CAT_DOC_SUMM_'.$arRes['ID'].'">'.CCurrencyLang::CurrencyFormat((float)$value['AMOUNT'] * (float)$value['PURCHASING_PRICE'], $fields['CURRENCY']).'</div><input value="'.doubleval($value['AMOUNT']) * doubleval($value['PURCHASING_PRICE']).'" type="hidden" name="PRODUCT['.$arRes['ID'].'][SUMM]" id="PRODUCT_'.$arRes['ID'].'_SUMM">'); } if (isset($elementFields["STORE_FROM"])) { $storeHtml = '<select style="max-width:300px; width:300px;"' . ' name="PRODUCT['.$arRes['ID'].'][STORE_FROM]"' . ' id="CAT_DOC_STORE_FROM_' . $arRes['ID'] . '"' . $isDisable . '>' . getStoreListForControl( $value['STORE_FROM'] ?? 0, $activeStores, $allStores, $defaultStoreId ) . '</select>' ; $row->AddViewField('STORE_FROM', $storeHtml); unset($storeHtml); } if (isset($elementFields["STORE_TO"])) { $storeHtml = '<select style="max-width:300px; width:300px;"' . ' name="PRODUCT[' . $arRes['ID'] . '][STORE_TO]"' . ' id="CAT_DOC_STORE_TO_' . $arRes['ID'] . '"' . $isDisable . '>' . getStoreListForControl( $value['STORE_TO'] ?? 0, $activeStores, $allStores, $defaultStoreId ) . '</select>' ; $row->AddViewField('STORE_TO', $storeHtml); unset($storeHtml); } if (isset($elementFields["RESERVED"])) { $row->AddViewField("RESERVED", '<div > <input readonly name="PRODUCT['.$arRes['ID'].'][RESERVED]" id="CAT_DOC_RESERVED_'.$arRes['ID'].'" value="'.$value['RESERVED'].'" type="text" size="10"'.$isDisable.'></div>'); } if (isset($elementFields["BAR_CODE"]) && isset($value['BARCODE']) && is_array($value['BARCODE'])) { $barcode = implode(", ", $value['BARCODE']); if($isMultiply) { $readOnly = ($bReadOnly) ? ' readonly' : ''; $buttonValue = ($bReadOnly) ? Loc::getMessage('CAT_DOC_BARCODES_VIEW') : Loc::getMessage('CAT_DOC_BARCODES_ENTER'); if(empty($barcode)) $barcode = ''; $inputBarcode = '<input type="button" value="'.$buttonValue.'" onclick="enterBarcodes('.$arRes['ID'].');"><input '.$readOnly.' type="hidden" value="'.htmlspecialcharsbx($barcode).'" type="text" name="PRODUCT['.$arRes['ID'].'][BARCODE]" id="PRODUCT['.$arRes['ID'].'][BARCODE]" onchange="recalculateRow('.$arRes['ID'].');" size="20">'; } elseif(count($value['BARCODE']) < 2) $inputBarcode = htmlspecialcharsbx($barcode); else { $inputBarcode = '<select style="max-width:150px; width:150px;" id="PRODUCT['.$arRes['ID'].'][BARCODE]" name="PRODUCT['.$arRes['ID'].'][BARCODE]"> '; foreach($value['BARCODE'] as $singleCode) { $selected = ($value["SELECTED_BARCODE"] == $singleCode) ? ' selected' : ''; $inputBarcode .= '<option value="'.htmlspecialcharsbx($singleCode).'"'.$selected.'>'.htmlspecialcharsbx($singleCode).'</option>'; } $inputBarcode .= '</select>'; } $row->AddViewField("BARCODE", '<div id="CAT_BARCODE_DIV_BIND_'.$arRes['ID'].'" align="center">'.$inputBarcode.'</div>'); } $arActions = array(); if (!$bReadOnly) { $arActions[] = array( "ICON" => "delete", "TEXT" => Loc::getMessage("CAT_DOC_DEL"), "ACTION" => "if(confirm('".CUtil::JSEscape(Loc::getMessage('CAT_DOC_CONFIRM_DELETE'))."')) deleteRow(".$arRes['ID'].")" ); $arActions[] = [ "ICON" => "copy", "TEXT" => Loc::getMessage("CAT_DOC_COPY"), "ACTION" => "copyRow(".CUtil::PhpToJSObject(['id' => $value['ELEMENT_ID'], 'parent' => $arRes['ID']]).")", ]; } $row->AddActions($arActions); $row->bReadOnly = true; } unset($row); } $lAdmin->AddGroupActionTable( array( 'summ' => array( 'type' => 'html', 'value' => '' ) ), array("disable_action_target" => true) ); $lAdmin->AddAdminContextMenu($aContext, false, true); $lAdmin->CheckListMode(); if ($ID > 0) { $pageTitleParams = [ '#ID#' => $ID, '#TYPE#' => $listDocType[$docType], ]; if ($bReadOnly) { $pageTitle = Loc::getMessage( 'CAT_DOC_TITLE_VIEW', $pageTitleParams ); } else { $pageTitle = Loc::getMessage( 'CAT_DOC_TITLE_EDIT', $pageTitleParams ); } $APPLICATION->SetTitle($pageTitle); unset($pageTitle, $pageTitleParams); } else { $APPLICATION->SetTitle(Loc::getMessage( 'CAT_DOC_TITLE_NEW', ['#TYPE#' => $listDocType[$docType]] )); } if ($isAjaxDocumentRequest) { require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_js.php'); } else { require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'); } CJSCore::Init(array('file_input', 'currency')); $APPLICATION->SetAdditionalCSS('/bitrix/panel/catalog/catalog_store_docs.css'); $aMenu = array( array( "TEXT" => Loc::getMessage("CAT_DOC_LIST_EXT"), "ICON" => "btn_list", "LINK" => $listUrl ) ); $context = new CAdminContextMenu($aMenu); $context->Show(); if (!empty($errorList)) { CAdminMessage::ShowMessage([ 'DETAILS' => $errorList, 'TYPE' => 'ERROR', 'MESSAGE' => Loc::getMessage('CAT_DOC_ERR_SAVE'), 'HTML' => true, ]); } $currencyList = []; $currencyIterator = Currency\CurrencyTable::getList([ 'select' => [ 'CURRENCY', ], ]); while ($currency = $currencyIterator->fetch()) { $currencyFormat = CCurrencyLang::GetFormatDescription($currency['CURRENCY']); $currencyList[] = [ 'CURRENCY' => $currency['CURRENCY'], 'FORMAT' => [ 'FORMAT_STRING' => $currencyFormat['FORMAT_STRING'], 'DEC_POINT' => $currencyFormat['DEC_POINT'], 'THOUSANDS_SEP' => $currencyFormat['THOUSANDS_SEP'], 'DECIMALS' => $currencyFormat['DECIMALS'], 'THOUSANDS_VARIANT' => $currencyFormat['THOUSANDS_VARIANT'], 'HIDE_ZERO' => $currencyFormat['HIDE_ZERO'], ], ]; } unset($currencyFormat, $currency, $currencyIterator); $actionUrl = $APPLICATION->GetCurPage()."?lang=".LANGUAGE_ID."&DOCUMENT_TYPE=".htmlspecialcharsbx($docType); $actionUrl = $adminSidePanelHelper->setDefaultQueryParams($actionUrl); $fieldsTabs = [ [ 'DIV' => 'main_tab', 'TAB' => Loc::getMessage('CAT_DOC_MAIN_TAB'), 'ICON' => 'catalog', 'TITLE' => Loc::getMessage('CAT_DOC_MAIN_TAB_DESC'), ], [ 'DIV' => 'user_fields_tab', 'TAB' => Loc::getMessage('CAT_DOC_UF_TAB'), 'ICON' => 'catalog', 'TITLE' => Loc::getMessage('CAT_DOC_UF_TAB_DESC'), ], ]; $fieldsTabControl = new CAdminTabControl("fieldsTabControl", $fieldsTabs); if (!$isAjaxDocumentRequest): ?> <form enctype="multipart/form-data" method="POST" action="<?=$actionUrl?>" id="form_b_catalog_store_docs" name="form_b_catalog_store_docs" onsubmit="return checkBarcodeSearch();"> <?php echo GetFilterHiddens("filter_");?> <input type="hidden" name="Update" value="Y"> <input type="hidden" name="apply" value="Y"> <input type="hidden" name="lang" value="<?= LANGUAGE_ID; ?>"> <input type="hidden" name="ID" value="<?= $ID ?>"> <input type="hidden" name="DOCUMENT_TYPE" id="DOCUMENT_TYPE" value="<?= htmlspecialcharsbx($docType);?>"> <input type="hidden" name="productAdd" id="productAdd" value="N"> <input value="<?=$maxId?>" type="hidden" id="ROW_MAX_ID"> <?=bitrix_sessid_post()?> <?php $fieldsTabControl->Begin(); $fieldsTabControl->BeginNextTab(); ?> <?php if (isset($documentFields['STATUS'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'STATUS'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><span class="cat-doc-status-left-<?=$fields['STATUS'];?>"><?=Loc::getMessage('CAT_DOC_STATUS')?>:</span></td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <span class="cat-doc-status-right-<?=$fields['STATUS']?>"> <?php if ($fields['STATUS'] === 'Y') { $status = Catalog\StoreDocumentTable::STATUS_CONDUCTED; } else { $status = $fields['WAS_CANCELLED'] === 'Y' ? Catalog\StoreDocumentTable::STATUS_CANCELLED : Catalog\StoreDocumentTable::STATUS_DRAFT ; } echo Catalog\StoreDocumentTable::getStatusName($status); ?> </span> </td> </tr> <?php endif; if (isset($documentFields['TITLE'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'TITLE'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?=Loc::getMessage('CAT_DOC_TITLE')?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <input type="text" name="TITLE" value="<?=htmlspecialcharsbx($fields['TITLE']); ?>" <?=$isDisable?> maxlenght="255" size="50"> </td> </tr> <?php endif; if (isset($documentFields['DOC_NUMBER'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'DOC_NUMBER'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?=Loc::getMessage('CAT_DOC_DOC_NUMBER')?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <input type="text" name="DOC_NUMBER" value="<?=htmlspecialcharsbx($fields['DOC_NUMBER']); ?>" <?=$isDisable?> maxlenght="64" size="50"> </td> </tr> <?php endif; if (isset($documentFields['DATE_DOCUMENT'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'DATE_DOCUMENT'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?=Loc::getMessage('CAT_DOC_DATE_DOCUMENT')?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <?php echo showStoreDocumentDate( $fields['DATE_DOCUMENT'], 'DATE_DOCUMENT', $ID === 0, $bReadOnly ); ?> </td> </tr> <?php endif; if (isset($documentFields['DOCUMENT_FILES'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'DOCUMENT_FILES'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage('CAT_DOC_DOCUMENT_FILES') ?></td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <?php $baseConfig = [ 'name' => 'DOCUMENT_FILES[n#IND#]', 'description' => false, 'allowUpload' => FileInput::UPLOAD_ANY_FILES, 'allowUploadExt' => '', ]; if ($bReadOnly) { $uploadConfig = [ 'upload' => false, 'medialib' => false, 'fileDialog' => false, 'cloud' => false, 'delete' => false, ]; } else { $uploadConfig = [ 'upload' => true, 'medialib' => false, 'fileDialog' => true, 'cloud' => false, 'delete' => true, ]; } $fileInput = FileInput::createInstance( $baseConfig + $uploadConfig ); $showFiles = []; foreach ($fields['DOCUMENT_FILES'] as $fileRowId => $fileId) { $showFiles['DOCUMENT_FILES[' . $fileRowId . ']'] = $fileId; } echo $fileInput->show($showFiles, $error); ?> </td> </tr> <?php endif; if (isset($documentFields['SITE_ID'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'SITE_ID'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage("CAT_DOC_SITE_ID") ?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <select id="SITE_ID" name="SITE_ID" <?=$isDisable?>> <?php foreach($shopSites as $key => $val) { $selected = ($val['ID'] == $fields['SITE_ID']) ? 'selected' : ''; echo '<option ' . $selected . ' value="' . htmlspecialcharsbx($val['ID']) . '">' . htmlspecialcharsbx($val['NAME'] . ' (' . $val['ID'] . ')') . '</option>' ; } ?> </select> </td> </tr> <?php endif; if (isset($documentFields["CONTRACTOR_ID"])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'CONTRACTOR_ID'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage("CAT_DOC_CONTRACTOR") ?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <?php if (!empty($arContractors) && is_array($arContractors)):?> <select style="max-width:300px" name="CONTRACTOR_ID" <?=$isDisable?>> <?php foreach($arContractors as $key => $val) { $selected = ($val['ID'] == $fields['CONTRACTOR_ID']) ? 'selected' : ''; $companyName = ($val["PERSON_TYPE"] == CONTRACTOR_INDIVIDUAL) ? htmlspecialcharsbx($val["PERSON_NAME"]) : htmlspecialcharsbx($val["COMPANY"]." (".$val["PERSON_NAME"].")"); echo '<option ' . $selected . ' value="' . $val['ID'] . '">' . $companyName . '</option>' ; } ?> </select> <?php else:?> <?php $contractorEditUrl = $selfFolderUrl."cat_contractor_edit.php?lang=".LANGUAGE_ID; $contractorEditUrl = $adminSidePanelHelper->editUrlToPublicPage($contractorEditUrl); ?> <a target="_top" href="<?=$contractorEditUrl?>"><?=Loc::getMessage("CAT_DOC_CONTRACTOR_ADD")?></a> <?php endif;?> </td> </tr> <?php endif; if (isset($documentFields["CURRENCY"])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'CURRENCY'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage("CAT_DOC_CURRENCY") ?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"><?php echo CCurrency::SelectBox("CURRENCY", $fields['CURRENCY'], "", true, "", 'onChange="recalculateAllRows();" id="CAT_CURRENCY_STORE"'.$isDisable);?> </td> </tr> <?php endif; if (isset($documentFields['ITEMS_ORDER_DATE'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'ITEMS_ORDER_DATE'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?=Loc::getMessage('CAT_DOC_ITEMS_ORDER_DATE')?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <?php echo showStoreDocumentDate( $fields['ITEMS_ORDER_DATE'], 'ITEMS_ORDER_DATE', $ID === 0, $bReadOnly ); ?> </td> </tr> <?php endif; if (isset($documentFields['ITEMS_RECEIVED_DATE'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'ITEMS_RECEIVED_DATE'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?=Loc::getMessage('CAT_DOC_ITEMS_RECEIVED_DATE')?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <?php echo showStoreDocumentDate( $fields['ITEMS_RECEIVED_DATE'], 'ITEMS_RECEIVED_DATE', $ID === 0, $bReadOnly ) ?> </td> </tr> <?php endif; if (isset($documentFields['RESPONSIBLE_ID'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'RESPONSIBLE_ID'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage('CAT_DOC_RESPONSIBLE_ID'); ?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"><?php ?><input type="text" size="7" id="RESPONSIBLE_ID" name="RESPONSIBLE_ID" value="<?= htmlspecialcharsbx($fields['RESPONSIBLE_ID']); ?>"><?php if ($canViewUserList) { ?> <input type="button" id="RESPONSIBLE_ID_BTN" value="<?php echo htmlspecialcharsbx(Loc::getMessage('CAT_DOC_RESPONSIBLE_ID_BTN_VALUE')); ?>" title="<?php echo htmlspecialcharsbx(Loc::getMessage('CAT_DOC_RESPONSIBLE_ID_BTN_TITLE')); ?>"><?php } ?> <span id="RESPONSIBLE_NAME"><?php if ($fields['RESPONSIBLE_ID'] > 0) { $userIterator = UserTable::getList([ 'select' => [ 'ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL', 'TITLE', ], 'filter' => [ '=ID' => $fields['RESPONSIBLE_ID'], ], ]); $userData = $userIterator->fetch(); unset($userIterator); if (!empty($userData)) { echo CUser::FormatName( CSite::GetNameFormat(true), $userData, true, true ); } } ?></span><?php ?></td> </tr> <?php endif; if (isset($documentFields['COMMENTARY'])): ?> <tr<?= getRequiredFieldCssClass($documentFields, 'COMMENTARY'); ?>> <td style="width: 40%;" class="adm-detail-content-cell-l"><?= Loc::getMessage('CAT_DOC_COMMENT'); ?>:</td> <td style="width: 60%;" class="adm-detail-content-cell-r"> <textarea cols="80" rows="4" class="typearea" name="COMMENTARY" <?=$isDisable?>><?php echo htmlspecialcharsbx($fields['COMMENTARY']); ?></textarea> </td> </tr> <?php endif; $fieldsTabControl->BeginNextTab(); $userFieldUrl = $selfFolderUrl."userfield_edit.php?lang=".LANGUAGE_ID."&ENTITY_ID=".$entityId; $userFieldUrl = $adminSidePanelHelper->editUrlToPublicPage($userFieldUrl); $userFieldUrl .= "&back_url=".urlencode($APPLICATION->GetCurPageParam('', ['bxpublic'])."&tabControl_active_tab=user_fields_tab"); ?> <tr> <td align="left" colspan="2"> <a href="<?= $userFieldUrl ?>"><?= Loc::getMessage('CAT_DOC_UF_ADD') ?></a> </td> </tr> <?php if ($entityId) { $arUserFields = $USER_FIELD_MANAGER->GetUserFields($entityId, $ID, LANGUAGE_ID); foreach ($arUserFields as $FIELD_NAME => $arUserField) { $arUserField["VALUE_ID"] = $ID; $strLabel = $arUserField["EDIT_FORM_LABEL"]?: $arUserField["FIELD_NAME"]; $arUserField["EDIT_FORM_LABEL"] = $strLabel; echo $USER_FIELD_MANAGER->GetEditFormHTML($refillForm, $GLOBALS[$FIELD_NAME], $arUserField); $form_value = $GLOBALS[$FIELD_NAME]; if (!$refillForm) { $form_value = $arUserField["VALUE"]; } elseif ($arUserField["USER_TYPE"]["BASE_TYPE"] === "file") { $form_value = $GLOBALS[$arUserField["FIELD_NAME"]."_old_id"]; } } } ?> <?php $fieldsTabControl->End(); ?> <?php $aTabs = array(); $tabControl = new CAdminTabControl("storeDocument_".$docType, $aTabs); $tabControl->Begin(); ?><div id="productgrid"><?php endif; $lAdmin->DisplayList(); if (!$isAjaxDocumentRequest): ?></div><?php $tabControl->Buttons( array( "disabled" => $bReadOnly, "btnSave" => false, "btnApply" => false, "btnCancel" => false, "back_url" => $listUrl, ) ); if ($adminSidePanelHelper->isSidePanelFrame()) { if(!$bReadOnly && !$isDocumentConduct) { ?> <span style="display:inline-block; width:20px; height: 22px;"></span> <input type="button" class="adm-btn-save" name="save_and_conduct" value="<?= Loc::getMessage("CAT_DOC_ADD_CONDUCT_EXT") ?>"> <input type="button" class="adm-btn" name="save_document" value="<?= Loc::getMessage("CAT_DOC_SAVE") ?>"> <?php } elseif($isDocumentConduct) { ?> <span class="hor-spacer"></span> <input type="button" class="adm-btn" name="cancellation" value="<?= Loc::getMessage("CAT_DOC_CANCELLATION_EXT") ?>"> <?php } ?> <input type="button" class="adm-btn" name="dontsave" value="<?= Loc::getMessage("CAT_DOC_CANCEL") ?>"> <?php } else { if(!$bReadOnly && !$isDocumentConduct) { ?> <span style="display:inline-block; width:20px; height: 22px;"></span> <input type="submit" class="adm-btn-save" name="save_and_conduct" value="<?= Loc::getMessage("CAT_DOC_ADD_CONDUCT_EXT") ?>"> <input type="submit" class="adm-btn" name="save_document" value="<?= Loc::getMessage("CAT_DOC_SAVE") ?>"> <?php } elseif($isDocumentConduct) { ?> <span class="hor-spacer"></span> <input type="hidden" name="cancellation" id="cancellation" value = "0"> <input type="button" class="adm-btn" onclick="if(confirm('<?=Loc::getMessage("CAT_DOC_CANCELLATION_CONFIRM_EXT")?>')) {BX('cancellation').value = 1; BX('form_b_catalog_store_docs').submit();}" value="<?= Loc::getMessage("CAT_DOC_CANCELLATION_EXT") ?>"> <?php } ?> <input type="submit" class="adm-btn" name="dontsave" id="dontsave" value="<?= Loc::getMessage("CAT_DOC_CANCEL") ?>"> <?php } $tabControl->End(); ?></form> <script> BX.Currency.setCurrencies(<?= CUtil::PhpToJSObject($currencyList, false, true, true); ?>); if (typeof showTotalSum === 'undefined') { function showTotalSum() { <?php if(isset($documentFields["TOTAL"])):?> if(BX('<?=$sTableID?>')) { if(BX('<?=$sTableID?>'+'_footer')) { BX('<?=$sTableID?>'+'_footer').appendChild((BX.create('DIV', { props : { id : "CAT_DOCUMENT_SUMM" }, style : { paddingLeft: '30%', marginTop: '5px', verticalAlign: 'middle', display: 'inline-block' }, children : [ BX.create('span', { props : { id : "CAT_DOCUMENT_SUMM_SPAN" }, text : '<?=CUtil::JSEscape(Loc::getMessage('CAT_DOC_TOTAL'))?>', style : { fontSize: '14px', fontWeight: 'bold' } }), BX.create('input', { props : { type : "hidden", name : "TOTAL", id : "CAT_DOCUMENT_SUM", value : 0 } }) ] }))); recalculateAllRows(); } } <?php endif;?> } function recalculateAllRows() { var rowCount = BX('ROW_MAX_ID'); if (BX.type.isElementNode(rowCount)) { var maxId = parseInt(rowCount.value); for (var i = 0; i <= maxId; i++) { recalculateRow(i); } } } function deleteRow(id) { if(BX('PRODUCT_ID_'+id)) { var trDelete = (BX('PRODUCT_ID_'+id).parentNode.parentNode); if(trDelete) { trDelete.parentNode.removeChild(trDelete); recalculateRow(0); } } } function findBarcodeDivHider() { var findBarcodeDiv = BX('cat_barcode_find_div'); if(findBarcodeDiv) { if(findBarcodeDiv.style.display == 'none') { findBarcodeDiv.style.display = 'block'; BX('CAT_DOC_BARCODE_FIND').focus(); } else findBarcodeDiv.style.display = 'none' } } function addProductSearch() { var store = 0, lid = '', popup; if(BX("CAT_DOC_STORE_FROM")) store = BX("CAT_DOC_STORE_FROM").value; if(BX("SITE_ID")) lid = BX("SITE_ID").value; popup = makeProductSearchDialog({ caller: 'storeDocs', lang: '<?=LANGUAGE_ID?>', site_id: lid, callback: 'addRow', store_id: store }); popup.Show(); } function makeProductSearchDialog(params) { var caller = params.caller || '', lang = params.lang || 'ru', site_id = params.site_id || '', callback = params.callback || '', store_id = params.store_id || '0'; var popup = new BX.CDialog({ content_url: '<?=$selfFolderUrl?>cat_product_search_dialog.php?lang=' + lang + '&LID=' + site_id + '&caller=' + caller + '&func_name=' + callback + '&STORE_FROM_ID=' + store_id + '&multiple_select=Y', height: Math.max(500, window.innerHeight-400), width: Math.max(800, window.innerWidth-400), draggable: true, resizable: true, min_height: 500, min_width: 800 }); BX.addCustomEvent(popup, 'onWindowRegister', BX.defer(function(){ popup.Get().style.position = 'fixed'; popup.Get().style.top = (parseInt(popup.Get().style.top) - BX.GetWindowScrollPos().scrollTop) + 'px'; })); return popup; } function addRow(elements) { if (!BX.type.isArrayFilled(elements)) { return; } var data = { lang: BX.message('LANGUAGE_ID'), sessid: BX.bitrix_sessid(), ID: <?= $ID; ?>, DOCUMENT_TYPE: '<?= CUtil::JSEscape($docType); ?>', AJAX_MODE: 'Y' }; var obProductAdd = BX('productAdd'); if (BX.type.isElementNode(obProductAdd) && !obProductAdd.disabled) { data.addProduct = 'Y'; } data.ELEMENT_ID = elements; var rowCount = BX('ROW_MAX_ID'); if (BX.type.isElementNode(rowCount)) { rowCount.value = (parseInt(rowCount.value) + elements.length).toString(); } var form = BX('form_b_catalog_store_docs'); if (!BX.type.isElementNode(form)) { return; } var products = document.getElementById('productgrid'); if (!BX.type.isElementNode(products)) { return; } var elements = products.querySelectorAll('table input,table select'); var nameTemplate = /^PRODUCT\[(\d+)\]\[(\w+)\]/; elements.forEach(function(item){ if (BX.Type.isStringFilled(item.name)) { var name = item.name; if (name === 'ID[]') { return; } var parsed = name.match(nameTemplate); if (parsed === null) { return; } var usedItem = true; if (item.type === 'radio' || item.type === 'checkbox') { if (!item.checked) { usedItem = false; } } if (!usedItem) { return; } var productIndex = parsed[1]; var fieldName = parsed[2]; if (!('PRODUCT' in data)) { data.PRODUCT = {}; } if (!(productIndex in data.PRODUCT)) { data.PRODUCT[productIndex] = {}; } data.PRODUCT[productIndex][fieldName] = item.value; } }); BX.showWait(); BX.ajax.post('<?=$actionUrl?>' + '&mode=frame', data, addRowResult); } function addRowResult(result) { BX.closeWait(); var products = document.getElementById('productgrid'); if (!BX.type.isElementNode(products)) { return; } products.innerHTML = result; recalculateAllRows(); } function copyRow(element) { let obProductAdd = BX('productAdd'); if (BX.type.isElementNode(obProductAdd)) { obProductAdd.disabled = true; } let item = { id: element.id }; let sourceQuantity = BX('CAT_DOC_AMOUNT_' + element.parent); if (BX.type.isElementNode(sourceQuantity)) { item.quantity = sourceQuantity.value; } addRow([item]); } function productSearch(barcode) { var dateURL = '<?=bitrix_sessid_get()?>&BARCODE_AJAX=Y&BARCODE='+barcode+'&lang=<?= LANGUAGE_ID; ?>'; BX.showWait(); BX.ajax.post('<?=$actionUrl?>', dateURL, fSearchProductResult); } function fSearchProductResult(result) { BX.closeWait(); BX("CAT_DOC_BARCODE_FIND").value = ''; BX("CAT_DOC_BARCODE_FIND").focus(); if (result.length > 0) { let res = eval( '('+result+')' ); if (res['id'] > 0) { res['quantity'] = 1; let obProductAdd = BX('productAdd'); if (BX.type.isElementNode(obProductAdd)) { obProductAdd.disabled = true; } addRow([res]); } } } function enterBarcodes(id) { var amount; if(BX('CAT_DOC_AMOUNT_HIDDEN_'+id)) amount = parseInt(BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value, 10); else amount = 0; if(isNaN(amount)) amount = 0; maxId = amount; var content = BX.create('DIV', { props: {id : 'BARCODE_DIV_'+id }, children: [ BX.create('input', { props : { className: "BARCODE_INPUT_GREY", id : "BARCODE_INPUT_" + id, value : "" } }), BX.create('input', { props : { type : 'button', className: "BARCODE_INPUT_button", id : "BARCODE_INPUT_BUTTON_" + id, value : '<?=CUtil::JSEscape(Loc::getMessage('CAT_DOC_ADD'))?>' /*disabled: (maxId >= BX('CAT_DOC_AMOUNT_'+id).value)*/ }, style : { marginLeft: '5px' }, events : { click : function() { if(BX("BARCODE_INPUT_" + id).value.replace(/^\s+|\s+$/g, '') !== '' && !<?=intval($bReadOnly)?>) { amount = parseInt(BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value, 10); if(isNaN(amount)) amount = 0; for(var j = 0; j <= 100500; j++) { if(!BX("BARCODE["+id+"]["+j+"]")) { counter = j; break; } } BX('BARCODE_DIV_'+id).appendChild(BX.create('DIV', { props : { id : "BARCODE_DIV_INPUT_" + id }, style : { padding: '6px' }, children : [ BX.create('span', { props : { id : "BARCODE_SPAN_INPUT_" + id }, text : BX('BARCODE_INPUT_'+id).value.replace(/^\s+|\s+$/g, ''), style : { fontSize: '12' } }), BX.create('input', { props : { type : 'hidden', id : "BARCODE["+id+"]["+counter+"]", name : "BARCODE["+id+"]["+counter+"]", value : BX('BARCODE_INPUT_'+id).value } }), BX.create('a', { props : { className : 'split-delete-item', tabIndex : '-1', href : 'javascript:void(0);', id : "BARCODE_DELETE["+id+"]["+counter+"]" }, events : { click : function() { if(!<?=intval($bReadOnly)?>) { var deleteNode = this.parentNode; if(deleteNode) deleteNode.parentNode.removeChild(deleteNode); amount = parseInt(BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value, 10); if(isNaN(amount)) amount = 0; BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value = amount - 1; if(BX("BARCODE_INPUT_BUTTON_" + id) && BX("CAT_DOC_AMOUNT_HIDDEN_" + id) && BX('CAT_DOC_AMOUNT_'+id).value > BX("CAT_DOC_AMOUNT_HIDDEN_" + id).value) BX("BARCODE_INPUT_BUTTON_" + id).disabled = false; } } }, style : { marginLeft: '8px', verticalAlign: '-3' } }) ] })); BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value = amount + 1; maxId = amount + 1; if(maxId >= BX('CAT_DOC_AMOUNT_'+id).value) BX("BARCODE_INPUT_BUTTON_" + id).disabled = true; } BX('BARCODE_INPUT_'+id).value = ''; BX('BARCODE_INPUT_'+id).focus(); } } }) ] }), formBarcodes = BX.PopupWindowManager.create("catalog-popup-barcodes-"+id, BX("CAT_BARCODE_DIV_BIND_"+id), { offsetTop : -50, offsetLeft : -50, autoHide : false, closeByEsc : true, closeIcon : false, draggable: { restrict: true }, content : content }); if(!BX("BARCODE_DIV_INPUT_"+id)) { var savedBarcodes = ''; if(BX("PRODUCT["+id+"][BARCODE]").value !== '') savedBarcodes = BX("PRODUCT["+id+"][BARCODE]").value.split(', '); if(savedBarcodes !== '') { var barCodeAmount = parseInt(BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value); BX("BARCODE_INPUT_BUTTON_" + id).disabled = (savedBarcodes.length >= BX('CAT_DOC_AMOUNT_'+id).value); for(i in savedBarcodes) { if(savedBarcodes.hasOwnProperty(i) && savedBarcodes[i] != undefined && savedBarcodes[i] != '<?=Loc::getMessage('CAT_DOC_POPUP_TITLE')?>') { BX('BARCODE_DIV_'+id).appendChild(BX.create('DIV', { props : { id : "BARCODE_DIV_INPUT_" + id }, style : { padding: '6px' }, children : [ BX.create('span', { props : { id : "BARCODE_SPAN_INPUT_" + id }, text : savedBarcodes[i], style : { fontSize: '12' } }), BX.create('input', { props : { type : 'hidden', id : "BARCODE["+id+"]["+i+"]", name : "BARCODE["+id+"]["+i+"]", value : savedBarcodes[i] } }), BX.create('a', { props : { className : 'split-delete-item', tabIndex : '-1', href : 'javascript:void(0);' }, events : { click : function() { if(!<?=intval($bReadOnly)?>) { var deleteNode = this.parentNode; if(deleteNode) deleteNode.parentNode.removeChild(deleteNode); amount = parseFloat(BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value); if(isNaN(amount)) amount = 0; BX('CAT_DOC_AMOUNT_HIDDEN_'+id).value = amount - 1; if(BX("BARCODE_INPUT_BUTTON_" + id) && BX("CAT_DOC_AMOUNT_HIDDEN_" + id) && BX('CAT_DOC_AMOUNT_'+id).value > BX("CAT_DOC_AMOUNT_HIDDEN_" + id).value) BX("BARCODE_INPUT_BUTTON_" + id).disabled = false; } } }, style : { marginLeft: '8px', verticalAlign: '-3' } }) ] })); } } } } formBarcodes.setButtons([ <?php if(!$bReadOnly):?> new BX.PopupWindowButton({ text : "<?=Loc::getMessage('CAT_DOC_SAVE')?>", className : "", events : { click : function() { var barcodes = ''; if(maxId > 0) { for(var i = 0; i <= maxId; i++) { if(BX("BARCODE["+id+"]["+i+"]")) { if(barcodes !== '') barcodes = barcodes + ', '; if(BX("BARCODE["+id+"]["+i+"]").value !== '') barcodes = barcodes + BX("BARCODE["+id+"]["+i+"]").value; } } } BX("PRODUCT["+id+"][BARCODE]").value = barcodes; recalculateRow(id); formBarcodes.close(); } } }), <?php else:?> new BX.PopupWindowButton({ text : "<?=Loc::getMessage('CAT_DOC_CANCEL')?>", className : "", events : { click : function() { formBarcodes.close(); } } }) <?php endif;?> ]); formBarcodes.show(); if(BX('BARCODE_INPUT_'+id)) BX('BARCODE_INPUT_'+id).focus(); <?php if($bReadOnly):?> var addBarcodeButtons = document.querySelectorAll('.BARCODE_INPUT_button, .BARCODE_INPUT_GREY'); [].forEach.call(addBarcodeButtons, function disableButtons(item) { item.disabled = true; }); var addBarcodeDelBut = document.querySelectorAll('a.split-delete-item'); [].forEach.call(addBarcodeDelBut, function hideElements(item) { item.style.display = 'none'; }); <?php endif;?> } function recalculateRow(id) { <?php if(isset($documentFields["TOTAL"])):?> var docType = '<?=$docType?>'; var sumFieldName = 'CAT_DOC_PURCHASING_PRICE_' + id; if (docType === 'W') { sumFieldName = 'CAT_DOC_BASE_PRICE_' + id; } var amount = 0; var price = 0; if (BX('CAT_DOC_AMOUNT_'+id) && !isNaN(parseFloat(BX('CAT_DOC_AMOUNT_'+id).value))) { amount = parseFloat(BX('CAT_DOC_AMOUNT_'+id).value); } if (BX(sumFieldName) && !isNaN(parseFloat(BX(sumFieldName).value))) { price = parseFloat(BX(sumFieldName).value); } if (BX('CAT_DOC_SUMM_'+id)) { BX('CAT_DOC_SUMM_'+id).innerHTML = BX.Currency.currencyFormat(amount * price, BX('CAT_CURRENCY_STORE').value, true); } if (BX('PRODUCT_'+id+'_SUMM')) { BX('PRODUCT_'+id+'_SUMM').value = (amount * price); } var maxId = BX('ROW_MAX_ID').value; var totalSum = 0; for (var i = 0; i <= maxId; i++) { if (BX('PRODUCT_'+i+'_SUMM')) { totalSum = totalSum + Number(BX('PRODUCT_'+i+'_SUMM').value); } } if (isNaN(totalSum)) { totalSum = 0; } if (BX("CAT_DOCUMENT_SUMM_SPAN")) { BX("CAT_DOCUMENT_SUMM_SPAN").innerHTML = '<?=Loc::getMessage('CAT_DOC_TOTAL')?>' + ': ' + BX.Currency.currencyFormat(totalSum, BX('CAT_CURRENCY_STORE').value, true); } else { showTotalSum(); } if (BX("CAT_DOCUMENT_SUM")) { BX("CAT_DOCUMENT_SUM").value = totalSum; } <?php endif;?> if (BX("BARCODE_INPUT_BUTTON_" + id) && BX("CAT_DOC_AMOUNT_HIDDEN_" + id) && BX('CAT_DOC_AMOUNT_'+id).value > BX("CAT_DOC_AMOUNT_HIDDEN_" + id).value) { BX("BARCODE_INPUT_BUTTON_" + id).disabled = false; } else if (BX("BARCODE_INPUT_BUTTON_" + id)) { BX("BARCODE_INPUT_BUTTON_" + id).disabled = true; } } function checkBarcodeSearch() { if (BX("CAT_DOC_BARCODE_FIND").value !== '') { productSearch(BX('CAT_DOC_BARCODE_FIND').value); return false; } return true; } function selectResposible() { window.open('<?= CUtil::JSEscape($userSearchUrl); ?>', '', 'scrollbars=yes,resizable=yes,width=900,height=600'); } function responsibleRequest() { var responsible = BX('RESPONSIBLE_ID'); if (BX.type.isElementNode(responsible)) { if (responsible.value !== '') { BX.showWait(); BX.ajax.loadJSON( '<?= $selfFolderUrl; ?>get_user.php', { lang: BX.message('LANGUAGE_ID'), sessid: BX.bitrix_sessid(), ajax: 'Y', format: 'Y', raw: 'Y', ID: responsible.value }, responsibleRequestResult, responsibleRequestFailure ); } } } function responsibleRequestResult(result) { if (!BX.type.isPlainObject(result)) { responsibleRequestFailure(); return; } BX.closeWait(); var responsible = BX('RESPONSIBLE_ID'), responsibleName = BX('RESPONSIBLE_NAME'); if ( BX.type.isElementNode(responsible) && BX.type.isElementNode(responsibleName) ) { responsibleName.innerHTML = (responsible.value === result.ID.toString() ? BX.Text.encode(result.NAME) : '' ); } } function responsibleRequestFailure() { BX.closeWait(); var responsibleName = BX('RESPONSIBLE_NAME'); if (BX.type.isElementNode(responsibleName)) { responsibleName.innerHTML = ''; } } function initSelectResponce() { var btn = BX('RESPONSIBLE_ID_BTN'), input = BX('RESPONSIBLE_ID'); if (BX.type.isElementNode(btn)) { BX.Event.bind(btn, 'click', selectResposible); } if (BX.type.isElementNode(input)) { BX.Event.bind(input, 'change', responsibleRequest); } } function SUVsetResponsible(id) { var responsible = BX('RESPONSIBLE_ID'); if (BX.type.isElementNode(responsible)) { responsible.value = BX.Text.encode(id); } responsibleRequest(); } } <?php $readyFunc = array(); $readyFunc[] = 'initSelectResponce();'; if (isset($documentFields["TOTAL"])) { $readyFunc[] = 'showTotalSum();'; } if (!empty($readyFunc)) { ?> BX.ready(BX.defer(function(){ <?= implode("\n", $readyFunc); ?> })); <?php } unset($readyFunc); ?> </script> <?php endif; if ($isAjaxDocumentRequest) { require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin_js.php'); } else { require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php'); }