Новый шаблон sale.order.ajax: кастомизация

Изображение
На реализацию этого функционала ушло порядка 30 часов рабочего времени (плюс время на самообразование). За это время было отправлено 18 коммитов, написано 371 строк кода и осуществлено несколько попыток виртуального суицида :) Основная задача Создать группу свойств "Параметры доставки", которая будет зависеть от выбора типа доставки. Для курьера это "Адрес доставки", для "Транспортной компании" это выбор ТК из выпадающего списка, для доставки "Другая транспортная компания" - тоже текстовое поле (как и адрес доставки). Все эти поля являются обязательными, и отображаться должны не в блоке "Пользователь", а в блоке с доставками. В новом шаблоне sale.order.ajax перенести поля в другой блок не так просто, как кажется на первый взгляд, а информации на эту тему буквально крупицы.

Кастомизация импорта из 1С средствами обработчиков событий Битрикс: часть третья, заключительная. Работа агента

Итак, вот что получилось в итоге:

function NewToOld($ELEMENT_ID) {
    CModule::IncludeModule('iblock');
    //убирать флаг новинки
    $PROPERTY_CODE = "NEWPRODUCT";  // код свойства
    $PROPERTY_VALUE = "";  // значение свойства
    // Сбросим свойство новинка для данного элемента
    $dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
    if ($dbr_arr = $dbr->Fetch()) //устанавливаем свойства так, чтобы остальные не затерлись
    {
      $IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
      CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
    }
}
function CheckNews() {  //в этой функции должна проверяться дата установки флага "Новинка" (107) у товара, и, если она уже старая, то вызываться для этого элемента функция NewToOld(id)
  CModule::IncludeModule('iblock');
  //подключаем модуль с пользовательскими настройками
  require_once($_SERVER["DOCUMENT_ROOT"].'/sandra175/functions.php');    
  $settings=GetSandra175Settings(); 
  
  $today=mktime();
  $deadline = date("Y-m-j G:i:00",$today-3600*24*$settings['UF_DAYS_OF_NEWEST']); //дедлайн - сегодняшняя дата минус параметр "Дни новинки" (последняя цифра)
  
  //Выбираем только те товары, у которых дата новинки меньше, чем дедлайн, и только те, которые являются новинкой
  $arFilter=array (
    "PROPERTY_NEWPRODUCT" => "211",
    " $deadline
    );
  $dbr = CIBlockElement::GetList(array(), $arFilter, false, false, array("ID","NAME","PROPERTY_NEWDATE"));
  while ($dbr_arr = $dbr->Fetch())
  {
    NewToOld($dbr_arr["ID"]);
    /*echo '
';
    print_r($dbr_arr);
    echo '
';*/ } return "CheckNews();"; }

Комментарии

Популярные сообщения из этого блога

Новый шаблон sale.order.ajax: кастомизация

Вывод пользовательского свойства раздела в компонентах catalog.section и news.list

Если при полной выгрузке из 1С в битрикс товары и разделы приходят неактивными