И все же чек формируется неправильно


#1

Рассмотрим обычную ситуацию: человек заказывает товар с доставкой и оплачивает его онлайн через Сбербанк:

В заказе сумма посчитана верно, скидка на товар тоже верно, потом добавлена стоимость доставки и от общей суммы рассчитан НДС. И всё было бы хорошо, но нет! Потому что после оплаты формируется вот такой чек:

Чек совершенно кривой, при том, что общая сумма верная. Давайте проверим.

Первая строка заказа: 2 600 х 4 = 10 400.
Скидка в 10% от 10400 составляет 1040 рублей, а не 874,91, как в чеке.
Во второй та же беда.
А в третей еще хуже — на доставку скидки нет, но в чеке она есть!

Смотрим запрос, который уходит в Атол и ответ, который приходит оттуда:

Запрос
{"timestamp":"05.07.2019 02:32:02","external_id":"order_16044_1562326322","service": 
{"callback_url":"https:\/\/sww.com.ru\/index.php?dispatch=online_cash_register.callback_atol"},"receipt":{"company":{"email":"lexizli@ya.ru","inn":"4715008848","payment_address":"sww.com.ru","sno":"osn"},"total":19814,"items":[{"name":"\u041a\u043e\u043c\u0431\u0438\u043d\u0435\u0437\u043e\u043d 830-EASN-R-00","price":2600,"quantity":4,"sum":9525.09,"vat":{"type":"vat20","sum":390},"payment_method":"full_payment","payment_object":"payment"},{"name":"\u041a\u043e\u043c\u0431\u0438\u043d\u0435\u0437\u043e\u043d 830-EASN-R-00","price":2600,"quantity":3,"sum":7143.81,"vat":{"type":"vat20","sum":390},"payment_method":"full_payment","payment_object":"payment"},{"name":"\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430","price":3434,"quantity":1,"sum":3145.1,"vat":{"type":"vat20","sum":572.33},"payment_method":"full_payment","payment_object":"payment"}],"payments":[{"type":1,"sum":19814}],"client":{"email":"Mramornaya.e@mail.ru"}}}
Ответ
{"uuid":"866cef33-9dc4-47a8-910d-bf099de06b55","status":"wait","error":null,"timestamp":"05.07.2019 14:32:03"}

и тут мы видим явный косяк:

price":3434,"quantity":1,"sum":3145.1,"vat":{"type":"vat20","sum":572.33},

Если это не баг, я уж тогда и не знаю, как это назвать.


#3

Получается, что скидка раскидывается не только на товары, но и на доставку.

Я считаю это багом:

  • В заказе скидка на доставку не распространяется. В чеке соответственно тоже стоимость доставки должна быть без скидки.
  • Будут проблемы при возврате товара - так как по чеку за товар нужно будет вернуть больше, чем он стоит, а с покупателя мы удержим за доставку меньше, чем реально заплатили транспортной компании.

Может еще какие будут проблемы от такого некорректного распределения скидки.


#4

Что, за 16 дней никто из разработчиков даже не снизошел, чтоб хотя бы прокомментировать этот баг?
Я понимаю, что у вас там запарка, вы такого наворотили с новой версией, что только успевай огребать. Сочувствую.
Но мы пока не собираемся переходить на новую версию, чтоб не сломать к такой-то матери то, что сейчас более-менее работает. Но хочется, чтоб работало верно. Есть перспективы? :rage:


#5

Спасибо за ожидание. Мы воспроизвели проблему и передали ее разработчикам.


#6

Могли бы выпустить решение в виде модуля оплаты отдельно? Нет возможности установить новую версию CS-Cart(отвалится куча доработок, сайт перестанет работать), а данный функционал жизненно необходим.


#7

Поддерживаю!


#8

У нас так же дела обстоят, нужен отдельный фикс, иначе похерится все, что работает и магазин превратится в тыкву :frowning:


#9

К сожалению, мы обычно не предоставляем модули отдельно от дистрибутива, но мы постараемся предоставить патч на форуме, если изменения можно будет накатить без обновления установки.


#10

Есть новости? Проблема из серии критичных.


#11

Как перспективы? В августе ждать, или не стоит? :roll_eyes:


#12

Здраствуйте,
Хотелось бы объяснить, данная проблема не относится к разряду багов, т.к. необходимость распределять скидку по позициям, возникает из-за разницы подсчета скидок в магазине и в системе оплаты, а именно:
В магазине существует такое понятие как Скидка на заказ, (она может быть
процентной, фиксированной, за счет применения бонусных баллов или по подарочному сертификату)
.
При этом мы зачастую сначала суммируем предварительную Cумму заказа, а только потом применяя к этой сумме скидки, налоговые ставки и плюсуя доставку получаем Итого.
Однако он-лайн касса не принимает такую позицию как Скидка на заказ, поэтому мы вынуждены “размазывать” нашу скидку по позициям и отправлять сумму скидки для каждой позиции(в большинстве случаев эта строка вообще отсутствует в заказе на стороне магазина).

Мы изучили проблемные для вас кейсы, и решили внести изменение с версии CS-Cart 4.11.1. Оно будет влиять только на скидку на доставку.
Появятся следующие изменения:

  • Если скидка на заказ будет меньше, чем общая стоимость товаров в заказе, то мы будем распределять ее только по товарным позициям. Сумма доставки, наценки на способ оплаты будут отсылаться без скидки.
  • Если же скидка на заказ превышает стоимость товаров в заказе, то мы будем распределять ее по всем позициям как и раньше.

Вы можете применить данные изменения самостоятельно:

Как применить патч, рассказано в следующей статье:
https://www.cs-cart.ru/docs/4.9.x/upgrade/apply_diff_file.html

Извините за предоставленные неудобства.