PageRenderTime 52ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/catalog/admin/cat_contractor_edit.php

https://gitlab.com/alexprowars/bitrix
PHP | 339 lines | 299 code | 40 blank | 0 comment | 52 complexity | 4ebef91361358d363f7dfc2ac11a7e45 MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/prolog.php");
  4. global $APPLICATION;
  5. global $DB;
  6. global $USER;
  7. use Bitrix\Catalog;
  8. $selfFolderUrl = $adminPage->getSelfFolderUrl();
  9. $listUrl = $selfFolderUrl."cat_contractor_list.php?lang=".LANGUAGE_ID;
  10. $listUrl = $adminSidePanelHelper->editUrlToPublicPage($listUrl);
  11. if (!($USER->CanDoOperation('catalog_read') || $USER->CanDoOperation('catalog_store')))
  12. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  13. CModule::IncludeModule("catalog");
  14. $bReadOnly = !$USER->CanDoOperation('catalog_store');
  15. if ($ex = $APPLICATION->GetException())
  16. {
  17. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  18. $strError = $ex->GetString();
  19. ShowError($strError);
  20. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  21. die();
  22. }
  23. IncludeModuleLangFile(__FILE__);
  24. ClearVars();
  25. $errorMessage = "";
  26. $bVarsFromForm = false;
  27. $ID = (isset($_REQUEST["ID"]) ? (int)$_REQUEST["ID"] : 0);
  28. $typeReadOnly = false;
  29. $userId = (int)$USER->GetID();
  30. $typeList = Catalog\ContractorTable::getTypeList(true);
  31. if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid() && $_REQUEST["Update"] <> '' && !$bReadOnly)
  32. {
  33. $adminSidePanelHelper->decodeUriComponent();
  34. if ($PERSON_TYPE == Catalog\ContractorTable::TYPE_INDIVIDUAL)
  35. $INN = $KPP = $COMPANY = '';
  36. $PERSON_NAME = ($_REQUEST["PERSON_NAME"] == GetMessage("CONTRACTOR_NAME")) ? '' : $_REQUEST["PERSON_NAME"];
  37. $PERSON_LASTNAME = ($_REQUEST["PERSON_LASTNAME"] == GetMessage("CONTRACTOR_LAST_NAME")) ? '' : $_REQUEST["PERSON_LASTNAME"];
  38. $PERSON_MIDDLENAME = ($_REQUEST["PERSON_MIDDLENAME"] == GetMessage("CONTRACTOR_SECOND_NAME")) ? '' : $_REQUEST["PERSON_MIDDLENAME"];
  39. $arFields = Array(
  40. "PERSON_TYPE" => $PERSON_TYPE,
  41. "SITE_ID" => SITE_ID,
  42. "PERSON_NAME" => $PERSON_NAME,
  43. "PERSON_LASTNAME" => $PERSON_LASTNAME,
  44. "PERSON_MIDDLENAME" => $PERSON_MIDDLENAME,
  45. "EMAIL" => $_REQUEST["EMAIL"],
  46. "PHONE" => $_REQUEST["PHONE"],
  47. "POST_INDEX" => $_REQUEST["POST_INDEX"],
  48. "COUNTRY" => $_REQUEST["COUNTRY"],
  49. "CITY" => $XML_ID,
  50. "INN" => $INN,
  51. "KPP" => $KPP,
  52. "COMPANY" => $COMPANY,
  53. "ADDRESS" => $ADDRESS,
  54. "CREATED_BY" => $userId,
  55. "MODIFIED_BY" => $userId,
  56. );
  57. $DB->StartTransaction();
  58. if ($errorMessage == '' && $ID > 0 && $res = CCatalogContractor::update($ID, $arFields))
  59. {
  60. $ID = $res;
  61. $DB->Commit();
  62. $adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $ID));
  63. if ($_REQUEST["apply"] == '')
  64. {
  65. $adminSidePanelHelper->localRedirect($listUrl);
  66. LocalRedirect($listUrl);
  67. }
  68. else
  69. {
  70. $applyUrl = $selfFolderUrl."cat_contractor_edit.php?lang=".LANGUAGE_ID."&ID=".$ID;
  71. $applyUrl = $adminSidePanelHelper->setDefaultQueryParams($applyUrl);
  72. LocalRedirect($applyUrl);
  73. }
  74. }
  75. elseif ($errorMessage == '' && $ID == 0 && $res = CCatalogContractor::Add($arFields))
  76. {
  77. $ID = $res;
  78. $DB->Commit();
  79. $adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $ID));
  80. if ($_REQUEST["apply"] == '')
  81. {
  82. $adminSidePanelHelper->localRedirect($listUrl);
  83. LocalRedirect($listUrl);
  84. }
  85. else
  86. {
  87. $applyUrl = $selfFolderUrl."cat_contractor_edit.php?lang=".LANGUAGE_ID."&ID=".$ID;
  88. $applyUrl = $adminSidePanelHelper->setDefaultQueryParams($applyUrl);
  89. LocalRedirect($applyUrl);
  90. }
  91. }
  92. else
  93. {
  94. $bVarsFromForm = true;
  95. $errorMessage = $APPLICATION->GetException()->GetString();
  96. $DB->Rollback();
  97. $adminSidePanelHelper->sendJsonErrorResponse($errorMessage);
  98. }
  99. }
  100. if ($ID > 0)
  101. $APPLICATION->SetTitle(str_replace("#ID#", $ID, GetMessage("CONTRACTOR_TITLE_UPDATE")));
  102. else
  103. $APPLICATION->SetTitle(GetMessage("CONTRACTOR_TITLE_ADD"));
  104. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  105. $str_ACTIVE = "Y";
  106. if ($ID > 0)
  107. {
  108. $arSelect = array(
  109. "ID",
  110. "PERSON_TYPE",
  111. "SITE_ID",
  112. "PERSON_NAME",
  113. "EMAIL",
  114. "PHONE",
  115. "POST_INDEX",
  116. "COUNTRY",
  117. "CITY",
  118. "COMPANY",
  119. "INN",
  120. "KPP",
  121. "ADDRESS",
  122. );
  123. $dbResult = CCatalogContractor::GetList(array(),array('ID' => $ID),false,false,$arSelect);
  124. if (!$dbResult->ExtractFields("str_"))
  125. $ID = 0;
  126. }
  127. if ($bVarsFromForm)
  128. $DB->InitTableVarsForEdit("b_catalog_contractor", "", "str_");
  129. if(isset($str_ADDRESS))
  130. $str_ADDRESS = (trim($str_ADDRESS) != '') ? $str_ADDRESS : '';
  131. $str_PERSON_TYPE = (isset($str_PERSON_TYPE)) ? $str_PERSON_TYPE : CONTRACTOR_INDIVIDUAL;
  132. $aMenu = array(
  133. array(
  134. "TEXT" => GetMessage("CONTRACTOR_LIST"),
  135. "ICON" => "btn_list",
  136. "LINK" => $listUrl
  137. )
  138. );
  139. if ($ID > 0 && !$bReadOnly)
  140. {
  141. $aMenu[] = array("SEPARATOR" => "Y");
  142. $addUrl = $selfFolderUrl."cat_contractor_edit.php?lang=".LANGUAGE_ID;
  143. $addUrl = $adminSidePanelHelper->editUrlToPublicPage($addUrl);
  144. $aMenu[] = array(
  145. "TEXT" => GetMessage("CONTRACTOR_NEW"),
  146. "ICON" => "btn_new",
  147. "LINK" => $addUrl
  148. );
  149. $deleteUrl = $selfFolderUrl."cat_contractor_list.php?action=delete&ID[]=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."#tb";
  150. if ($adminSidePanelHelper->isPublicFrame())
  151. {
  152. $deleteUrl = $adminSidePanelHelper->editUrlToPublicPage($deleteUrl);
  153. }
  154. $aMenu[] = array(
  155. "TEXT" => GetMessage("CONTRACTOR_DELETE"),
  156. "ICON" => "btn_delete",
  157. "LINK" => "javascript:if(confirm('".GetMessage("CONTRACTOR_DELETE_CONFIRM")."')) top.window.location='".$deleteUrl."';",
  158. "WARNING" => "Y"
  159. );
  160. }
  161. $context = new CAdminContextMenu($aMenu);
  162. $context->Show();
  163. ?>
  164. <?CAdminMessage::ShowMessage($errorMessage);?>
  165. <script>
  166. function fContractorChangeType(el)
  167. {
  168. var type = el.value;
  169. var companyName = document.getElementById('company-name-tr');
  170. var companyInn = document.getElementById('company-inn-tr');
  171. var companyKpp = document.getElementById('company-kpp-tr');
  172. var titleContractor = document.getElementById('title_span');
  173. var addressContractor = document.getElementById('address_span');
  174. if(type == 1)
  175. {
  176. companyName.style.display = 'none';
  177. companyInn.style.display = 'none';
  178. companyKpp.style.display = 'none';
  179. titleContractor.innerHTML = "<?=GetMessage("CONTRACTOR_TITLE");?>:";
  180. addressContractor.innerHTML = "<?= GetMessage("CONTRACTOR_ADDRESS")?>:";
  181. }
  182. else if(type == 2)
  183. {
  184. companyName.style.display = 'table-row';
  185. companyInn.style.display = 'table-row';
  186. companyKpp.style.display = 'table-row';
  187. titleContractor.innerHTML = "<?=GetMessage("CONTRACTOR_TITLE_JURIDICAL");?>:";
  188. addressContractor.innerHTML = "<?= GetMessage("CONTRACTOR_ADDRESS_JURIDICAL") ?>:";
  189. }
  190. }
  191. </script>
  192. <?
  193. $actionUrl = $APPLICATION->GetCurPage();
  194. $actionUrl = $adminSidePanelHelper->setDefaultQueryParams($actionUrl);
  195. ?>
  196. <form enctype="multipart/form-data" method="POST" action="<?=$actionUrl?>" name="contractor_edit">
  197. <?echo GetFilterHiddens("filter_");?>
  198. <input type="hidden" name="Update" value="Y">
  199. <input type="hidden" name="lang" value="<?echo LANG ?>">
  200. <input type="hidden" name="ID" value="<?echo $ID ?>">
  201. <?=bitrix_sessid_post()?>
  202. <?
  203. $aTabs = array(
  204. array("DIV" => "edit1", "TAB" => GetMessage("CONTRACTOR_TAB"), "ICON" => "catalog", "TITLE" => GetMessage("CONTRACTOR_TAB_DESCR")),
  205. );
  206. $tabControl = new CAdminTabControl("tabControl", $aTabs);
  207. $tabControl->Begin();
  208. ?>
  209. <?
  210. $tabControl->BeginNextTab();
  211. ?>
  212. <style>
  213. .fio.newo_break_active input {
  214. color: #CCC;
  215. }
  216. </style>
  217. <?if ($ID > 0):
  218. $typeReadOnly = true;
  219. ?>
  220. <tr>
  221. <td>ID:</td>
  222. <td><?= $ID ?></td>
  223. </tr>
  224. <?endif;?>
  225. <tr class="adm-detail-required-field">
  226. <td width="40%"><?= GetMessage("CONTRACTOR_TYPE") ?>:</td>
  227. <td width="60%">
  228. <input type="hidden" name="PERSON_TYPE" value="<?=$str_PERSON_TYPE?>">
  229. <select <?if($typeReadOnly) echo " disabled";?> name="PERSON_TYPE" onchange="fContractorChangeType(this);"><?
  230. foreach ($typeList as $typeId => $item)
  231. {
  232. ?><option value="<?=(int)$typeId; ?>"<?=($str_PERSON_TYPE == $typeId ? ' selected' : ''); ?>><?=htmlspecialcharsbx($item); ?></option><?
  233. }
  234. ?></select>
  235. </td>
  236. </tr>
  237. <tr class="adm-detail-required-field" id="company-name-tr" <? if($str_PERSON_TYPE == 1) echo "style=\"display: none\"";?>>
  238. <td width="40%"><?= GetMessage("CONTRACTOR_COMPANY") ?>:</td>
  239. <td width="60%">
  240. <input type="text" name="COMPANY" value="<?=$str_COMPANY?>" size="30" />
  241. </td>
  242. </tr>
  243. <tr id="company-inn-tr"<? if($str_PERSON_TYPE == CONTRACTOR_INDIVIDUAL) echo "style=\"display: none\"";?>>
  244. <td><?= GetMessage("CONTRACTOR_INN") ?>:</td>
  245. <td>
  246. <input type="text" name="INN" value="<?=$str_INN?>" size="30" />
  247. </td>
  248. </tr>
  249. <?if(trim(GetMessage("CONTRACTOR_KPP")) != ''):?>
  250. <tr id="company-kpp-tr" <? if($str_PERSON_TYPE == CONTRACTOR_INDIVIDUAL) echo "style=\"display: none\"";?>>
  251. <td><?= GetMessage("CONTRACTOR_KPP") ?>:</td>
  252. <td>
  253. <input type="text" name="KPP" value="<?=$str_KPP?>" size="30" />
  254. </td>
  255. </tr>
  256. <?endif;?>
  257. <tr class="adm-detail-required-field">
  258. <td> <span id="title_span">
  259. <?
  260. if($str_PERSON_TYPE == CONTRACTOR_JURIDICAL)
  261. echo GetMessage("CONTRACTOR_TITLE_JURIDICAL");
  262. else
  263. echo GetMessage("CONTRACTOR_TITLE");
  264. ?>:</span></td>
  265. <td>
  266. <input type="text" name="PERSON_NAME" id="BREAK_LAST_NAME" size="50" value="<?=$str_PERSON_NAME?>" />
  267. </td>
  268. </tr>
  269. <tr>
  270. <td><?= GetMessage("CONTRACTOR_PHONE") ?>:</td>
  271. <td>
  272. <input type="text" name="PHONE" value="<?=$str_PHONE?>" size="30" />
  273. </td>
  274. </tr>
  275. <tr>
  276. <td><?= GetMessage("CONTRACTOR_EMAIL") ?>:</td>
  277. <td>
  278. <input type="text" name="EMAIL" value="<?=$str_EMAIL?>" size="30" />
  279. </td>
  280. </tr>
  281. <tr>
  282. <td><?= GetMessage("CONTRACTOR_POSTINDEX") ?>:</td>
  283. <td><input type="text" name="POST_INDEX" value="<?=$str_POST_INDEX?>" size="30" />
  284. </td>
  285. </tr>
  286. <tr>
  287. <td class="adm-detail-valign-top"><span id="address_span"><? if($str_PERSON_TYPE == CONTRACTOR_JURIDICAL) echo GetMessage("CONTRACTOR_ADDRESS_JURIDICAL"); else echo GetMessage("CONTRACTOR_ADDRESS"); ?>:</span></td>
  288. <td>
  289. <textarea cols="35" rows="3" class="typearea" name="ADDRESS" wrap="virtual"><?= $str_ADDRESS ?></textarea>
  290. </td>
  291. </tr>
  292. </tr>
  293. <?echo
  294. $tabControl->EndTab();
  295. $tabControl->Buttons(array("disabled" => $bReadOnly, "back_url" => $listUrl));
  296. $tabControl->End();
  297. ?>
  298. </form>
  299. <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>