Просмотров: 26005
Дата последнего изменения: 13.11.2023
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
5
Недоступно в лицензиях:
Стандарт, Малый бизнес
Не подходит стандартный обработчик онлайн-кассы? Используйте API продукта и напишите свой обработчик. Для этого вам необходимо:
- Унаследовать класс \Bitrix\Sale\Cashbox\Cashbox и реализовать необходимые методы:
Примечание: дополнительно вы можете использовать следующие интерфейсы:
- \Bitrix\Sale\Cashbox\IPrintImmediately - необходим для отправки чека на печать сразу же после его создания;
- \Bitrix\Sale\Cashbox\ICheckable - необходим, если требуется запрашивать информацию о результатах печати чека.
use \Bitrix\Sale\Cashbox\Cashbox,
\Bitrix\Sale\Cashbox\Check,
\Bitrix\Sale\Cashbox\IPrintImmediately,
\Bitrix\Sale\Cashbox\ICheckable;
class CashboxCustom extends Cashbox implements IPrintImmediately, ICheckable
{
/**
* @param Check $check
* @return array
*/
public function buildCheckQuery(Check $check)
{
// построение запроса с информацией по чеку
}
/**
* @param $id
* @return array
*/
public function buildZReportQuery($id)
{
// построение запроса на печать z-отчета
// если печать z-отчета не требуется, возвращается пустой массив
}
public function printImmediately(Check $check)
{
// алгоритм отправки чека на печать
}
public function check(Check $check)
{
// алгоритм запроса состояния чека
}
/**
* @return string
*/
public static function getName()
{
// название обработчика
return Localization\Loc::getMessage('SALE_CASHBOX_CUSTOM_TITLE');
}
/**
* @param array $data
* @throws Main\NotImplementedException
* @return array
*/
protected static function extractCheckData(array $data)
{
// извлечение данных по чеку дальнейшего сохранения
}
public static function getVersion() ?: float
{
// версия ФФД, с которой работает обработчик
return null;
}
}
- Подключить обработчик кассы к системе с помощью события OnGetCustomCashboxHandlers. Обработчик события должен возвращать массив вида: array(полное_имя_класса => путь_к_файлу):
AddEventHandler("sale", "OnGetCustomCashboxHandlers", 'myCashboxFunction');
function myCashboxFunction()
{
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
array(
'\CashboxCustom' => '/bitrix/php_interface/include/cashboxcustom.php',
)
);
}
В результате в административном разделе сайта в настройках кассы появится ваш обработчик.
Список ссылок по теме: