Нажмите на [+], чтобы раскрыть детальное описание массива
|
---|
[ '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-2024, «1С-Битрикс», 2024