%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/admin/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/admin/company_edit.php |
<?
use \Bitrix\Sale\Internals\CompanyTable;
use \Bitrix\Main\Application;
use Bitrix\Sale\Services\Company;
use Bitrix\Main;
use Bitrix\Main\Config;
use Bitrix\Main\Localization\Loc;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
global $USER_FIELD_MANAGER, $USER;
IncludeModuleLangFile(__FILE__);
Main\Loader::includeModule('sale');
$documentRoot = Application::getDocumentRoot();
$lang = Application::getInstance()->getContext()->getLanguage();
$request = Application::getInstance()->getContext()->getRequest();
$id = intval($request->get("ID"));
$company = array();
$errorMessage = '';
if ($request->isPost() && $request->getPost("update") && check_bitrix_sessid() && $saleModulePermissions == 'W')
{
$name = $request->getPost('NAME');
$locationId = $request->getPost('LOCATION_ID');
if (empty($name))
$errorMessage .= GetMessage('ERROR_NO_NAME')."\n";
if (empty($errorMessage))
{
$uFields = array();
$USER_FIELD_MANAGER->EditFormAddFields(CompanyTable::getUfId(), $uFields);
$fields = array(
'NAME' => $name,
'LOCATION_ID' => $locationId,
'ADDRESS' => $request->getPost('ADDRESS'),
'CODE' => $request->getPost('CODE'),
'ACTIVE' => ($request->getPost('ACTIVE') !== null) ? 'Y' : 'N'
);
if ($request->getPost('SORT') > 0)
$fields['SORT'] = $request->getPost('SORT');
$fields = array_merge($fields, $uFields);
if ($id > 0)
{
\Bitrix\Sale\Internals\CompanyGroupTable::deleteByCompanyId($id);
\Bitrix\Sale\Internals\CompanyResponsibleGroupTable::deleteByCompanyId($id);
}
$result = null;
if ($id > 0)
{
$fields['DATE_MODIFY'] = new \Bitrix\Main\Type\DateTime();
$fields['MODIFIED_BY'] = $USER->GetID();
$result = CompanyTable::update($id, $fields);
}
else
{
$fields['XML_ID'] = $request->getPost('XML_ID');
$fields['DATE_CREATE'] = new \Bitrix\Main\Type\DateTime();
$fields['CREATED_BY'] = $USER->GetID();
$result = CompanyTable::add($fields);
}
if ($result && $result->isSuccess())
{
$id = $result->getId();
if ($groups = $request->getPost('GROUPS'))
{
foreach ($groups as $groupId)
{
$r = \Bitrix\Sale\Internals\CompanyGroupTable::add(array(
'COMPANY_ID' => $id,
'GROUP_ID' => $groupId,
));
}
}
if ($responsibleGroups = $request->getPost('RESPONSIBLE_GROUPS'))
{
foreach ($responsibleGroups as $groupId)
{
$r = \Bitrix\Sale\Internals\CompanyResponsibleGroupTable::add(array(
'COMPANY_ID' => $id,
'GROUP_ID' => $groupId,
));
}
}
if (strlen($request->getPost("apply")) == 0)
LocalRedirect("/bitrix/admin/sale_company.php?lang=".$lang."&".GetFilterParams("filter_", false));
else
LocalRedirect("/bitrix/admin/sale_company_edit.php?lang=".$lang."&ID=".$id."&".GetFilterParams("filter_", false));
}
else
{
$errorMessage .= join("\n", $result->getErrorMessages());
}
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
Main\Page\Asset::getInstance()->addJs("/bitrix/js/sale/company.js");
if ($errorMessage !== '')
CAdminMessage::ShowMessage($errorMessage);
if ($id > 0)
{
$select = array('*', 'CREATED', 'MODIFIED');
$fields = $USER_FIELD_MANAGER->GetUserFields(CompanyTable::getUfId());
foreach ($fields as $field)
$select[] = $field['FIELD_NAME'];
$params = array(
'select' => $select,
'filter' => array('ID' => $id)
);
$res = CompanyTable::getList($params);
$company = $res->fetch();
$APPLICATION->SetTitle(str_replace("#NAME#", $company['NAME'], GetMessage("COMPANY_TITLE_UPDATE")));
}
else
{
$APPLICATION->SetTitle(GetMessage("COMPANY_TITLE_ADD"));
}
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("COMPANY_TAB"), "TITLE" => GetMessage("COMPANY_TAB_DESCR")),
array("DIV" => "edit2", "TAB" => GetMessage("COMPANY_USER_FIELD_TAB"), "TITLE" => GetMessage("COMPANY_USER_FIELD_TAB_DESCR")),
array("DIV" => "edit3", "TAB" => GetMessage("COMPANY_RULES_USE_TAB"), "TITLE" => GetMessage("COMPANY_RULES_USE_TAB_DESCR")),
);
$tabControl = new CAdminForm("company_edit", $aTabs);
$tabControl->BeginPrologContent();
echo $USER_FIELD_MANAGER->ShowScript();
$tabControl->EndPrologContent();
$tabControl->BeginEpilogContent();
echo bitrix_sessid_post();
?>
<input type="hidden" name="update" value="Y">
<input type="hidden" name="lang" value="<?=$lang;?>">
<input type="hidden" name="ID" value="<?=$id;?>">
<?
$tabControl->EndEpilogContent();
$tabControl->Begin(array("FORM_ACTION" => $APPLICATION->GetCurPage()."?ID=".$id."&lang=".$lang));
$tabControl->BeginNextFormTab();
$fields = ($request->isPost()) ? $_POST : $company;
$tabControl->AddViewField("ID", "ID:", $company['ID']);
if ($id > 0)
{
$createdBy = htmlspecialcharsbx($company['SALE_INTERNALS_COMPANY_CREATED_LAST_NAME']).' '.htmlspecialcharsbx($company['SALE_INTERNALS_COMPANY_CREATED_NAME']);
$modifiedBy = htmlspecialcharsbx($company['SALE_INTERNALS_COMPANY_CREATED_LAST_NAME']).' '.htmlspecialcharsbx($company['SALE_INTERNALS_COMPANY_CREATED_NAME']);
$tabControl->AddViewField('DATE_CREATE', GetMessage("COMPANY_DATE_CREATE"), $company['DATE_CREATE']);
$tabControl->AddViewField('DATE_MODIFY', GetMessage("COMPANY_DATE_MODIFY"), $company['DATE_MODIFY']);
$tabControl->AddViewField('CREATED_BY', GetMessage("COMPANY_CREATED_BY"), $createdBy);
if ($modifiedBy)
$tabControl->AddViewField('MODIFIED_BY', GetMessage("COMPANY_MODIFIED_BY"), $modifiedBy);
}
$tabControl->AddCheckBoxField("ACTIVE", GetMessage("COMPANY_ACTIVE"), false, 'Y', $fields['ACTIVE'] != 'N');
$tabControl->AddEditField("NAME", GetMessage("COMPANY_NAME"), true, array('size' => 120), htmlspecialcharsbx($fields['NAME']));
$tabControl->BeginCustomField('LOCATIONS', GetMessage("COMPANY_LOCATION_ID"));
if ($saleModulePermissions >= 'W'):?>
<tr>
<td style="vertical-align: top"><?=GetMessage("COMPANY_LOCATION_ID");?></td>
<td>
<?$APPLICATION->IncludeComponent("bitrix:sale.location.selector.".\Bitrix\Sale\Location\Admin\LocationHelper::getWidgetAppearance(), "", array(
"ID" => "",
"CODE" => $fields['LOCATION_ID'],
"INPUT_NAME" => "LOCATION_ID",
"PROVIDE_LINK_BY" => "code",
"SHOW_ADMIN_CONTROLS" => 'Y',
"SELECT_WHEN_SINGLE" => 'N',
"FILTER_BY_SITE" => 'Y',
"FILTER_SITE_ID" => Application::getInstance()->getContext()->getSite(),
"SHOW_DEFAULT_LOCATIONS" => 'N',
"SEARCH_BY_PRIMARY" => 'Y'
),
false
);?>
</td>
</tr>
<?
else:
try
{
$res = \Bitrix\Sale\Location\LocationTable::getPathToNodeByCode(
$fields['LOCATION_ID'],
array(
'select' => array('CHAIN' => 'NAME.NAME'),
'filter' => array('NAME.LANGUAGE_ID' => $lang)
)
);
$chain = array();
while ($item = $res->fetch())
$chain[] = $item['CHAIN'];
$path = implode(', ', array_reverse($chain));
}
catch (Main\SystemException $e)
{
$path = '';
}
?>
<tr>
<td><?=GetMessage("COMPANY_LOCATION");?></td>
<td><?=htmlspecialcharsbx($path);?></td>
</tr>
<?
endif;
$tabControl->EndCustomField('LOCATIONS', '');
$tabControl->AddTextField("ADDRESS", GetMessage("COMPANY_LOCATION"), htmlspecialcharsbx($fields['ADDRESS']), array('cols' => 60, 'rows' => 5));
$tabControl->BeginCustomField('USER_GROUPS', GetMessage("COMPANY_GROUPS"));
$currentGroups = array();
if ($id > 0)
{
$resCompayGroup = \Bitrix\Sale\Internals\CompanyGroupTable::getList(array(
'filter' => array('=COMPANY_ID' => $id),
'select' => array('GROUP_ID')
));
while($companyGroup = $resCompayGroup->fetch())
{
$currentGroups[] = $companyGroup['GROUP_ID'];
}
}
$b = "c_sort";
$o = "asc";
$userGroupList = array();
$resGroups = CGroup::GetList($b, $o, array("ANONYMOUS" => "N"));
while ($groupData = $resGroups->Fetch())
{
$groupData["ID"] = (int)$groupData["ID"];
$userGroupList[] = $groupData;
}
?>
<tr>
<td style="vertical-align: top"><?=GetMessage("COMPANY_GROUPS");?></td>
<td>
<select name="GROUPS[]" multiple size="5">
<?
foreach ($userGroupList as $userGroupData)
{
?><option value="<?= $userGroupData["ID"] ?>"<?if (in_array($userGroupData["ID"], $currentGroups)) echo " selected";?>><?= htmlspecialcharsEx($userGroupData["NAME"]) ?></option><?
}
?>
</select>
</td>
</tr>
<?
$tabControl->EndCustomField('USER_GROUPS', '');
$tabControl->BeginCustomField('RESPONSIBLE_USER_GROUPS', GetMessage("COMPANY_RESPONSIBLE_GROUPS"));
$currentResponsibleGroups = array();
if ($id > 0)
{
$resCompayGroup = \Bitrix\Sale\Internals\CompanyResponsibleGroupTable::getList(array(
'filter' => array('=COMPANY_ID' => $id),
'select' => array('GROUP_ID')
));
while($companyGroup = $resCompayGroup->fetch())
{
$currentResponsibleGroups[] = $companyGroup['GROUP_ID'];
}
}
$b = "c_sort";
$o = "asc";
$userGroupList = array();
$resGroups = CGroup::GetList($b, $o, array("ANONYMOUS" => "N"));
while ($groupData = $resGroups->Fetch())
{
$groupData["ID"] = (int)$groupData["ID"];
$userGroupList[] = $groupData;
}
?>
<tr>
<td style="vertical-align: top"><?=GetMessage("COMPANY_RESPONSIBLE_GROUPS");?></td>
<td>
<select name="RESPONSIBLE_GROUPS[]" multiple size="5">
<?
foreach ($userGroupList as $userGroupData)
{
?><option value="<?= $userGroupData["ID"] ?>"<?if (in_array($userGroupData["ID"], $currentResponsibleGroups)) echo " selected";?>><?= htmlspecialcharsEx($userGroupData["NAME"]) ?></option><?
}
?>
</select>
</td>
</tr>
<?
$tabControl->EndCustomField('RESPONSIBLE_USER_GROUPS', '');
$tabControl->AddEditField("SORT", GetMessage("COMPANY_SORT"), false, array('size' => 30), $fields['SORT']);
$tabControl->AddEditField("CODE", GetMessage("COMPANY_CODE"), false, array('size' => 30), htmlspecialcharsbx($fields['CODE']));
$tabControl->BeginNextFormTab();
$tabControl->ShowUserFieldsWithReadyData(CompanyTable::getUfId(), $fields, false, 'ID');
if ($id > 0):
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField('COMPANY_RULES', GetMessage("COMPANY_RULES"));
ob_start();
require_once($documentRoot."/bitrix/modules/sale/admin/company_rules_list.php");
$companyRules = ob_get_contents();
ob_end_clean();
?>
<tr>
<td id="sale-company-rules-container"><?=$companyRules?></td>
</tr>
<?
$tabControl->EndCustomField('COMPANY_RULES');
endif;
$tabControl->Buttons(array(
"disabled" => ($saleModulePermissions < 'W'),
"back_url" => "sale_company.php?lang=".$lang
));
$tabControl->Show();
?>
<script language="JavaScript">
BX.message({
SALE_COMPANY_RULE_TITLE: '<?=Loc::getMessage("SALE_COMPANY_RULE_TITLE")?>',
SALE_COMPANY_RULE_SAVE: '<?=Loc::getMessage("SALE_COMPANY_RULE_SAVE")?>',
SALE_PS_MODE: '<?=Loc::getMessage("F_PS_MODE")?>',
SALE_BT_DEL: '<?=Loc::getMessage("SPS_LOGOTIP_DEL")?>'
});
var i;
var isFormChange = false;
var companyForm = BX('company_edit_form');
var inputList = BX.findChildren(companyForm, {tag : 'input'}, true);
for (i in inputList)
{
if (inputList.hasOwnProperty(i))
BX.bind(inputList[i], 'change', function () {isFormChange = true});
}
var selectList = BX.findChildren(companyForm, {tag : 'select'}, true);
for (i in selectList)
{
if (selectList.hasOwnProperty(i))
BX.bind(selectList[i], 'change', function () {isFormChange = true});
}
var hrefList = BX.findChildren(companyForm, {tag : 'a'}, true);
for (i in hrefList)
{
if (hrefList.hasOwnProperty(i))
{
if (hrefList[i].getAttribute('target') != '_blank' && hrefList[i].getAttribute('href').indexOf('javascript') < 0)
{
BX.bind(hrefList[i], 'click', function (e)
{
if (isFormChange)
{
if (!confirm(<?=Loc::getMessage('SALE_COMPANY_CHANGE_FORM_VALUE');?>))
{
if (!e) e = window.event;
e.preventDefault();
}
}
});
}
}
}
</script>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>