Самостоятельное присвоение аффилиатов к заказам (Битрикс)

Кнопка

Эта небольшая статья будет о том, как сделать так, чтобы определенная группа пользователей могла из административного раздела сайта на Битриксе привязывать аффилиатов к заказам. По умолчанию в битриксе аффилиатом заказа является тот, по чьей ссылке (ссылка вида site.ru/?partner=1) зашел на сайт пользователь, который сделал заказ.
Это может быть полезно, скажем если менеджерам начисляется премия в зависимости от того сколько они продали. Реализовать это можно на основе существующей системы аффилиатов в Битриксе. В итоге присвоить аффилиата к заказу можно будет при изменении свойств заказа в административном разделе:

Аффилиаты битрикс

Чтобы появилась такая возможность вам нужно в файл /bitrix/modules/sale/admin/order_edit.php сразу после кода:

			<tr>
				<td width="40%">
					<span class="required">*</span><?= GetMessage("SOE_USER") ?>:
				</td>
				<td width="60%"><?
					if ($ID > 0)
						$user_name = "[<a class=\"tablebodylink\" title=\"".GetMessage("SOE_PROFILE_ALT")."\" href=\"/bitrix/admin/user_edit.php?lang=".LANGUAGE_ID."&ID=".$str_USER_ID."\">".$str_USER_ID."</a>] (".$str_USER_LOGIN.") ".$str_USER_NAME." ".$str_USER_LAST_NAME;

					echo FindUserID("USER_ID", $str_USER_ID, $user_name, "forder_edit");
					?></td>
			</tr>

добавить следующий код:

<?
$b = 1; // Ай ди группы пользователей, которым будет доступна данная функция
global $USER;
$log= 0;

 foreach($USER->GetParam("GROUPS") as $group)
   {
      if ($group == $b) $log = 1;
   }

if ($log == 1):?>

<?
    // Обновляем аффилиата у заказа
    if ($_POST["select_af"] != "")
      {
         $arOrder = CSaleOrder::GetByID($ID);
         if ($arOrder)
           {
             $arFields = array(
             "AFFILIATE_ID" => $_POST["select_af"]
              );
             CSaleOrder::Update($ID, $arFields);
           }
      }
?>

			<tr>
				<td colspan="2">
					<img src="/bitrix/images/1.gif" width="1" height="8">
				</td>
			</tr>
			<tr class="heading">
				<td colspan="2">Аффилиат</td>
			</tr>
			<tr>
				<td width="40%">
					Выберите аффилиата:
				</td>
				<td width="60%">
                                      <?
                                       // Узнаем какой аффилиат уже присвоен к заказу
                                       $arOrder = CSaleOrder::GetByID($ID);

                                       $dbAffiliate = CSaleAffiliate::GetList(
			                     array("NAME" => "ASC"),
			                     array(
				                    "ACTIVE" => "Y",
			                           ),
			                     false,
			                     false
		                       );

                                       if ($dbAffiliate)
                                        {
                                           echo "<select size='1' name='select_af'>";
                                           echo "<option disabled>Выберите аффилиата</option>";
                                        }

		                       while ($arAffiliate = $dbAffiliate->Fetch())
		                        {
                                          $sel = "";
                                          if ($arOrder["AFFILIATE_ID"] == $arAffiliate['ID']) $sel = ' selected ';
                                          echo "<option ".$sel." value='".$arAffiliate['ID']."'>".$arAffiliate['AFF_DESCRIPTION']."</option>";
                                        }

                                       if ($dbAffiliate)
                                        {
                                          echo "</select>";
                                        }

                                      ?>
                                </td>
			</tr>
<?endif;?>

Соответственно, как и раньше, чтобы данная функция не исчезла с обновлением Битрикса, лучше создать свой файл order_edit_custom.php изменения проводить в нем, и в файле /bitrix/admin/sale_order_edit.php прописать путь до вашей копии файла order_edit.php.

Похожие посты:
  • Сравнение редакций Битрикс
  • Про $arResult и $arParams (Битрикс)
  • События в 1С Битрикс
  • Сертификаты Битрикс
  • Многосайтовость Битрикс
  • Один комментарий: Самостоятельное присвоение аффилиатов к заказам (Битрикс)

    1. Александр

      прикрутил сие творение к своему битриксу. но оно почему-то не видит аффилиатов.
      может быть это проблема из-за разных версий? на текущий момент стоит у меня версия 11.0.11

    Добавить комментарий:

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: