|
Нажмите на [+], чтобы раскрыть детальное описание массива
|
|---|
[
'ORDER' => {Bitrix\Sale\Order}, // объект заказа, к которому привязан чек
'PAYMENTS' => [ // массив оплат
[
'ENTITY' => {Bitrix\Sale\Payment}, // объект оплаты
'IS_CASH' => "N", // тип документа оплаты: наличные/безналичные (оставлен для совместимости).
// Правильнее опираться на поле с ключом TYPE
'TYPE' => "cashless", // тип документа оплаты: принимает одно из значений: cash (наличные),
//cashless (безналичные), advance (аванс), credit (кредит)
'SUM' => 1400, // сумма документа оплаты
]
],
'PRODUCTS' => [ // список товарных позиций
[
'ENTITY' => {Bitrix\Sale\BasketItem}, // объект элемента корзин
'PRODUCT_ID' => "176", // ID продукта
'NAME' => "Футболка Женский Соблазн", // название
'BASE_PRICE' => 849, // цена без учета скидок и наценок за единицу
'PRICE' => 1099, // цена с учетом скидок и наценок за единицу
'SUM' => 1099, // общая цена с учетом количества
'QUANTITY' => 1, // количество
'VAT' => 0, // ID налоговой ставки
'DISCOUNT' => [ // информация о скидках
'PRICE' => -250, // величина скидки (отрицательное значение – наценка,
// положительная – скидка)
'TYPE' => "C", // тип скидки: С-абсолютная
],
'PAYMENT_OBJECT' => \Bitrix\Sale\Cashbox\Check::PAYMENT_OBJECT_COMMODITY
//тип предмета расчета*
]
],
'DELIVERY' => [ // список отгрузок
[
'ENTITY' => {Bitrix\Sale\Shipment}, // объект отгрузки
'NAME' => "Доставка", // название
'BASE_PRICE' => 301, // цена без учета скидок и наценок за единицу
'PRICE' => 301, // цена с учетом скидок и наценок за единицу
'SUM' => 301, // общая цена с учетом количества
'QUANTITY' => 1, // количество (всегда равняется 1)
'VAT' => 1, // ID налоговой ставки
'PAYMENT_OBJECT' => \Bitrix\Sale\Cashbox\Check::PAYMENT_OBJECT_SERVICE
//тип предмета расчета*
]
],
'BUYER' => [ // информация о покупателе
'EMAIL' => "admin-aladin@aladin.loc", // email
'PHONE' => "90979648725", // телефон
],
'TOTAL_SUM' => 1400 // общая сумма чека
]
* – ключ PAYMENT_OBJECT доступен с версии 18.5.10, его возможные значения:
|
События работы с кассами и чеками
| Метод | Описание | С версии |
|---|---|---|
| OnSaleCheckPrepareData | Событие позволяет поменять какие-либо данные в чеке: поменять название товара, убрать товары с 0 стоимостью и т.д. На вход передается 2 параметра:
// удаление доставки с 0 стоимостью
AddEventHandler("sale", "OnSaleCheckPrepareData", "CheckProductPrint");
function CheckProductPrint($a, $type)
{
if ($a['DELIVERY']['SUM'] == 0)
unset($a['DELIVERY']);
return $a;
}
| |
| OnGetCustomCashboxHandlers | Событие срабатывает на момент формирования списка обработчиков касс. Позволяет добавить свой обработчик кассы.
// добавление своего обработчика кассы
AddEventHandler("sale", "OnGetCustomCashboxHandlers", "GetCustomCashboxHandlers");
function GetCustomCashboxHandlers()
{
$data = array('\Bitrix\Sale\Cashbox\cashboxnew' => '/bitrix/php_interface/include/cashboxnew.php');
$event = new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $data);
return $event;
}
| |
| OnGetCustomCheckList | Событие срабатывает на момент формирования списка поддерживаемых чеков. Позволяет добавить свой тип чека.
// добавление своего типа чека
AddEventHandler("sale", "OnGetCustomCheckList", "GetCustomCheckList");
function GetCustomCheckList()
{
$data = array('\Bitrix\Sale\Cashbox\SellExCheck' => '/bitrix/php_interface/include/sellexcheck.php');
$event = new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $data);
return $event;
}
| |
| OnPrintableCheckSend | Событие позволяет переопределить стандартный механизм отправки уведомления о печати чека. На вход передается 2 параметра: объект оплаты, по которой печатается чек и объект чека, который будет напечатан.
// переопределение стандартного механизма печати чека
AddEventHandler("sale", "OnPrintableCheckSend", "PrintableCheckSend");
function PrintableCheckSend()
{
/*
Отправка чека по СМС
*/
$event = new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS);
return $event;
}
| |
| onSaleCashboxRestrictionsClassNamesBuildList | Событие позволяет добавлять свои ограничения в кассы.
onSaleCashboxRestrictionsClassNamesBuildList
// добавление своего типа чека
AddEventHandler("sale", "onSaleCashboxRestrictionsClassNamesBuildList",
"GetSaleCashboxRestrictionsClassNamesBuildList");
function GetSaleCashboxRestrictionsClassNamesBuildList()
{
$data = array(
'\Bitrix\Sale\Cashbox\Restrictions\Site' => '/bitrix/php_interface/include/site.php'
);
$event = new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $data);
return $event;
}
| |
| OnCheckCollateDocuments | Событие предназначено для реализации собственной логики генерации чеков в автоматическом режиме.
Рассмотрим на примере: при сумме заказа больше 10000 вносится предоплата. Оплата оставшейся суммы происходит после проверки заказа менеджером. У этого заказа будет несколько оплат. Итак, для первой оплаты необходимо печатать чек аванса, а для второй – полная оплата с учетом аванса. В упрощенном виде это будет выглядеть так: AddEventHandler("sale", "OnCheckCollateDocuments", "OnCheckCollateDocuments");
function OnCheckCollateDocuments($entities)
{
foreach ($entities as $entity)
{
if ($entity instanceof \Bitrix\Sale\Payment)
{
$order = $entity->getCollection()->getOrder();
if ($order->isPaid())
{
$related = [];
foreach ($entity->getCollection() as $payment)
{
if ($payment->getId() != $entity->getId())
{
$related[\Bitrix\Sale\Cashbox\Check::PAYMENT_TYPE_ADVANCE][] = $payment;
}
}
foreach ($order->getShipmentCollection() as $shipment)
{
if (!$shipment->isSystem())
{
$related[\Bitrix\Sale\Cashbox\Check::SHIPMENT_TYPE_NONE][] = $shipment;
}
}
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
[
[
'TYPE' => 'sell',
'ENTITIES' => [$entity],
'RELATED_ENTITIES' => $related
]
]
);
}
else
{
if ($entity->isPaid() && !$order->isPaid())
{
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
[
[
'TYPE' => 'advancepayment',
'ENTITIES' => [$entity],
'RELATED_ENTITIES' => []
]
]
);
}
}
}
}
}
|
© «Битрикс», 2001-2025, «1С-Битрикс», 2025