Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.
Вообще, про возможность добавления своих полей в печатные формы достаточно много ответов в интернете. 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'];
}
В общем-то и все. Бланк станет доступен в печати заказа