Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Не работает простая автоматизированная доставка из примера документаций

00 голосов
0
Здравствуйте, есть необходимость создать собственную автоматизированную доставку, решил пойти по примеру документации, расположенный по адресу http://dev.1c-bitrix.ru/api_help/sale/delivery.php

Но он не работает, может кто сталкивался с ним, и объяснить почему, или хотя бы даст понять, как это можно отладить =)

Код
<?
// Листинг файла /bitrix/php_interface/include/sale_delivery/delivery_mysimple.php

CModule::IncludeModule("sale");

class CDeliveryMySimple
{
  function Init()
  {
    return array(
      /* Основное описание */
      "SID" => "simple", 
      "NAME" => "Доставка курьером",
      "DESCRIPTION" => "",
      "DESCRIPTION_INNER" => 
"Простой обработчик курьерской доставки. Для функционирования необходимо "
."наличие хотя бы одной группы местоположений. При настройке обработчика указывается "
."фиксированная стоимость доставки для каждой группы местоположений. Для того, чтобы "
."группа не участвовала в обработке, оставьте пустым поле стоимости для этой группы."
."<br />"
."<a href=\"/bitrix/admin/sale_location_group_admin.php?lang=ru\" target=\"_blank\">"
."Редактировать группы местоположений"
."</a>.",
      "BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"),

      "HANDLER" => __FILE__,
      
      /* Методы обработчика */
      "DBGETSETTINGS" => array("CDeliverySimple", "GetSettings"),
      "DBSETSETTINGS" => array("CDeliverySimple", "SetSettings"),
      "GETCONFIG" => array("CDeliverySimple", "GetConfig"),
      
      "COMPABILITY" => array("CDeliverySimple", "Compability"),      
      "CALCULATOR" => array("CDeliverySimple", "Calculate"),      
      
      /* Список профилей доставки */
      "PROFILES" => array(
        "simple" => array(
          "TITLE" => "доставка",
          "DESCRIPTION" => "Срок доставки до 3 дней",
          
          "RESTRICTIONS_WEIGHT" => array(0), // без ограничений
          "RESTRICTIONS_SUM" => array(0), // без ограничений
        ),
      )
    );
  }

  // настройки обработчика
  function GetConfig()
  {
    $arConfig = array(
      "CONFIG_GROUPS" => array(
        "all" => "Стоимость доставки",
      ),
      
      "CONFIG" => array(),
    );

    // настройками обработчика в данном случае являются значения стоимости доставки в различные группы местоположений.
    // для этого сформируем список настроек на основе списка групп

    $dbLocationGroups = CSaleLocationGroup::GetList();
    while ($arLocationGroup = $dbLocationGroups->Fetch())
    {
      $arConfig["CONFIG"]["price_".$arLocationGroup["ID"]] = array(
        "TYPE" => "STRING",
        "DEFAULT" => "",
        "TITLE" => 
          "Стоимость доставки в группу \""
          .$arLocationGroup["NAME"]."\" "
          .(".COption::GetOptionString("sale", "default_currency", "RUB").')',
        "GROUP" => "all",
      );
    }
    
    return $arConfig; 
  }

  // подготовка настроек для занесения в базу данных
  function SetSettings($arSettings)
  {
    // Проверим список значений стоимости. Пустые значения удалим из списка.
    foreach ($arSettings as $key => $value) 
    {
      if (strlen($value) > 0)
        $arSettings[$key] = doubleval($value);
      else
        unset($arSettings[$key]);
    }

    // вернем значения в виде сериализованного массива.
    // в случае более простого списка настроек можно применить более простые методы сериализации.
    return serialize($arSettings);
  }

  // подготовка настроек, полученных из базы данных
  function GetSettings($strSettings)
  {
    // вернем десериализованный массив настроек
    return unserialize($strSettings);
  }
    
  // введем служебный метод, определяющий группу местоположения и возвращающий стоимость для этой группы.
  function __GetLocationPrice($LOCATION_ID, $arConfig)
  {
    // получим список групп для переданного местоположения
    $dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_ID" => $LOCATION_ID));
    
    while ($arLocationGroup = $dbLocationGroups->Fetch())
    {
      if (
        array_key_exists('price_'.$arLocationGroup["LOCATION_GROUP_ID"], $arConfig) 
        && 
        strlen($arConfig['price_'.$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)
  &
спросил 31 Окт, 13 от Noda (140 баллов)

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

Похожие вопросы

0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
1 ответ
спросил 30 Июнь, 16 от аноним
0 голосов
0 ответов