Вывести артикул в печатную форму бланка заказа

Просмотров: 3802

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Вообще, про возможность добавления своих полей в печатные формы достаточно много ответов в интернете. Cудя по поисковым запросам часто попадают ко мне на сайт, внесу свою лепту.

Вывести артикул в печатную форму бланка заказа

Расширяем данные в печатной форме

Мне нужно добавить, в печатную форму:

  • Данные о покупателе: адрес доставки
  • Вывести службу доставки с ценой доставки.
  • Артикулы каждого товара

Копируем файл order_form.php, который находится по пути /bitrix/modules/sale/ru/reports/, в папку /bitrix/admin/reports/

Собственно, в этом файле полностью работает API битрикс и с помощью запросов к getList можно получить любые данные. Дальше, просто вверстываем их таблицу, обычную html табилицу - которая размазана по этому файлу

$order = \Bitrix\Sale\Order::load($arOrder['ID']);
$collection = $order->getPropertyCollection();
$dbRes = \Bitrix\Sale\PropertyValueCollection::getList([
    'select' => ['VALUE', 'CODE', 'NAME'],
    'filter' => [
            '=ORDER_ID' => $arOrder['ID']
    ]
]);
while ($item = $dbRes->fetch()){
    if (
        ($item['CODE'] == 'REGION') or
        ($item['CODE'] == 'CITY') or
        ($item['CODE'] == 'STREET') or
        ($item['CODE'] == 'HOME') or
        ($item['CODE'] == 'kvartira_ofis')
    ) {
        $fullAdress += $item['NAME'] . ': '. $item['VALUE'] . '.';
    }
}
$arDeliv = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']);
if ($arDeliv) {
    $deliveryInfo = $arDeliv["NAME"]." - стоит ".CurrencyFormat($arDeliv["PRICE"], $arDeliv["CURRENCY"]);
}

Этот код размещаем, где-нибудь вверху файла. И дальше, в нужным местах таблицы используем переменные:

  • $fullAdress - адрес доставки, собранный из свойств заказа.
  • $deliveryInfo - выбранная доставка и ее цена.

Добавляем артикул в бланк заказа

В том месте, где хотим вывести артикул каждого товара, добавляем новую ячейку таблицы и с помощью CIBlockElement::GetProperty получаем артикул товара. В моем случае, артикул хранится в свойстве CML2_ARTICLE. Девятка- это ID инфоблока каталога.

$db_props = CIBlockElement::GetProperty(
    9,
    $arBasket['PRODUCT_ID'], 
    array(
        "sort" => "asc"
    ), 
    array(
        "CODE"=>"CML2_ARTICLE"
    )
);
if($ar_props = $db_props->Fetch()) {
    echo $ar_props['VALUE'];
}

В общем-то и все. Бланк станет доступен в печати заказа

Михаил Базаров 06.11.2022
Готовый файл order_form.php, для большей наглядности, во вложении
http://bazarow.ru/upload/fo_all/order_form.php.zip

Блог-note: заметки разработчика

Добавить СЕО-метатеги в результаты поиска по каталогу

Задача: на странице с результатами поиска по каталогу нужно установить уникальные метатеги: keywords, description, canon...

Создать pdf файл из элемента инфоблока, дать скачать пользователю, поддерживать в актуальном состоянии или отправить на e-mail.

Задача: при каждом посещении статьи, на сайте, нужно создавать pdf файл с ее содержимым и записывать в свойство инфоблок...

Заполнить инфоблок брендов из свойства инфоблока с товарами

Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производите...

Пункты меню из разделов инфоблока Битрикс

В принципе это стандартная возможность системы управления битрикс, но почему-то часто спрашивают как это сделать. Возмож...

Получение доступа к железу устройства из Битрикс мобильное приложение

Документация к мобильному приложению 1С-Битрикс очень куцая. В основном описывает функционал добавляемый BXMobileApp. ...

Базовая защита "Битрикс виртуальная машина" от DDoS атак.

Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, когда ваш сервер на CentOS под...

Вывод элементов с помощью API битрикс

Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Например, если нужно вывести элем...

Повторить заказ на API 1С-Битрикс наполнив корзину из заказа

Задача: заполнить корзину пользователя теми же товарами и количествами которые были в ранее созданном заказе. При этом н...

Заполнение габаритов товара, после обмена с 1С, из свойств элемента инфоблока.

Если Ваш интернет-магазин интегрирован с 1С, скорее всего столкнулись с такой проблемой: 1С не умеет выгружать параметры...