Баланс продавца показывает -1 после проверки лицензии (Multi-Vendor 4.20.1)

Версия CS-Cart: Multi-Vendor 4.20.1
Валюта: Рубли, количество знаков после запятой = 0 (копейки не используем).

Описание проблемы:
У нас есть свой обработчик (хук change_order_status_post ), который при выполнении заказа (статус ‘C’) автоматически создаёт выплату (payout ) продавцу. Всё считает правильно: order_placed + payout = 0. В таблице vendor_payouts суммы сходятся.

Проблема:
Спустя некоторое время (от 1 дня до 2 недель) баланс продавца самопроизвольно показывает -1 рубль .

  • На главной странице продавца (vendor.php ) висит -1
  • На странице “Бухгалтерский учёт” (companies.balance ) тоже висит -1

Хотя в БД и просто если пересчитать этого продавца выходит чётко 0, а не -1.

Продавец видит, что должен нам рубль, приходят уведомления. Это бесит и нас, и продавцов.

Как воспроизвести:

  1. Убедитесь, что у продавца баланс 0 (после всех выплат).
  2. Не создавайте новые заказы и выплаты. Просто ждите.
  3. Через некоторое время (от 1 дня до 2 недель) баланс сам сменится на -1 .

Что мы выяснили в ходе отладки:
Мы отследили момент, когда баланс слетает в -1 . Это происходит одновременно с фоновым запросом CS-Cart к updates.cs-cart.com (проверка лицензии и обновлений). Причём интервал непредсказуемый от дня до двух недель.

Похоже, что при этом запросе система пересчитывает баланс, но делает это с ошибкой округления для валют с decimals = 0 .

Вопросы:

  1. Кто-нибудь сталкивался с таким?
  2. Как отключить пересчёт баланса при проверке лицензии?
  3. Это баг? Есть ли официальный фикс?

Пожалуйста, создайте обращение в Help Desk, чтобы мы смогли изучить проблему в вашей установке CS-Cart.