Баллы накопительной программы могут ошибочно списываться сразу после написления

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Валерий Годун
  • Группа: Пользователь
  • Сообщений: 7
  • Регистрация: 28.12.2012

09.09.2013 19:01

Похожая проблемма, возможно даже та же самая исходя из "Он почему-то начисляет баллы и тут же их списывает. Вот что он вытворяет, хотя в настройках срок годности баллов не ограничен..."

В методе expirePoints() класса Df_Reward_Model_Resource_Reward_History формируется такой запрос:


SELECT `df_reward_history`.* 
FROM `df_reward_history` 
WHERE (website_id='1') 
AND (`expired_at_static` < '2013-09-09 19:50:04') 
AND (`expired_at_static` IS NOT null) 
AND (is_expired=0) AND (`points_delta`-`points_used`>0) LIMIT 100


Т.к. expired_at_static никогда не НУЛЛ, а наоборот всегда '0000-00-00 00:00:00' (по дефолту), то именно при "срок годности не ограничен" случается автосписывание начисленных баллов ибо данный запрос возвращает ВСЕ еще неистекшие записи таблицы.

Это проявляется не всегда, не на всех серверах, возможно причиной есть настройки крона в этом же модуле (и крона сервера естественно).

Если поля дат установить в дефолт == НУЛЛ, то автосписывание прекращается, но тогда, возможно начнут появляться ошибки описанные автором.

Тестировалось на сборке 2.20.5

Извиняюсь если не в тему.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

10.09.2013 13:27

Исправлено в версии 2.20.6.

Поделиться темой: