У нас БУС, настроенный на обмен с 1С. При поступлении онлайн-оплаты через модуль Интернет-эквайринг Тинькофф от Павла Шулаева настроена печать чеков через кассу с обработчиком "Касса 1С".
После последнего (примерно полугодового) обновления стала появляться такая ошибка:
"Ошибка при создании чека: пустой список товаров в отгрузке"
"Ошибка при создании чека: сумма по чеку не совпадает с общей суммой товаров"
Таким образом БУС жалуется, что при создании чека, когда поступает онлайн-оплата банковской картой, не указывается отгрузка.
Но на момент оплаты отгрузки для этого заказа может не существовать (так как она импортируется из 1С и обычно создается уже после оплаты).
Приходится создавать чеки по появлению отгрузки.
Поотслеживал событие OnSaleCheckPrepareData. Когда все нормально, передается вот такой массив:
А когда отгрузки нет, то полностью отсутствует подмассив [PRODUCTS], что и соответствует ошибке.
Обратился в ТП, но уже скоро неделю, как не отвечают по этому вопросу. Появились обновления для модуля ИМ, но пока не ставил, ТП даже на их счет не спешит ответить. UPD: Обновление не помогло.
Есть вариант попробовать в обработчике дописывать недостающий PRODUCTS из корзины заказа, но не факт, что заработает. По идее это должно быть в базовом фукнционале - нет реализации, но поступила полная оплата - печатаем чек на весь список товаров.
Еще вариант вероятно более правильный, генерировать чек при появлении отгрузки (видимо по событию OnSaleShipmentReserved), но не понятно как правильно генерировать чек вручную (исходники не читал, а в мануалах этого нет).
В общем, очень не хочется писать костыли для того, что и так должно работать (и работало). Может быть настройка какая есть?
После последнего (примерно полугодового) обновления стала появляться такая ошибка:
"Ошибка при создании чека: пустой список товаров в отгрузке"
"Ошибка при создании чека: сумма по чеку не совпадает с общей суммой товаров"
Таким образом БУС жалуется, что при создании чека, когда поступает онлайн-оплата банковской картой, не указывается отгрузка.
Но на момент оплаты отгрузки для этого заказа может не существовать (так как она импортируется из 1С и обычно создается уже после оплаты).
Приходится создавать чеки по появлению отгрузки.
Поотслеживал событие OnSaleCheckPrepareData. Когда все нормально, передается вот такой массив:
Код |
---|
[ [ORDER] => Bitrix\Sale\Order Object [PAYMENTS] => Array( [0] => Array( [ENTITY] => Bitrix\Sale\Payment Object [IS_CASH] => A [TYPE] => cashless [SUM] => 4270 ) ) [PRODUCTS] => Array( [0] => Array( [ENTITY] => Bitrix\Sale\BasketItem Object [PRODUCT_ID] => 29442 [NAME] => Простой порошок [BASE_PRICE] => 4270 [PRICE] => 4270 [SUM] => 4270 [QUANTITY] => 1 [VAT] => 0 [PAYMENT_OBJECT] => commodity ) ) [BUYER] => Array( [EMAIL] => ne_skazhu@mail.ru [PHONE] => 9555123456 ) [TOTAL_SUM] => 4270 ] |
А когда отгрузки нет, то полностью отсутствует подмассив [PRODUCTS], что и соответствует ошибке.
Обратился в ТП, но уже скоро неделю, как не отвечают по этому вопросу. Появились обновления для модуля ИМ, но пока не ставил, ТП даже на их счет не спешит ответить. UPD: Обновление не помогло.
Есть вариант попробовать в обработчике дописывать недостающий PRODUCTS из корзины заказа, но не факт, что заработает. По идее это должно быть в базовом фукнционале - нет реализации, но поступила полная оплата - печатаем чек на весь список товаров.
Еще вариант вероятно более правильный, генерировать чек при появлении отгрузки (видимо по событию OnSaleShipmentReserved), но не понятно как правильно генерировать чек вручную (исходники не читал, а в мануалах этого нет).
В общем, очень не хочется писать костыли для того, что и так должно работать (и работало). Может быть настройка какая есть?