Пишу это здесь, чтобы коллеги не наторговали в минус, т.к. и сам не сразу заметил такую беду.
Поддержка вроде бы баг подтвердила [TID:101644954]
Но он конечно же не критичный… это же мелочи… обещают исправление до 45 дней. Хочу обратиться к команде карта - дайте фикс быстрее, пожалуйста
4.15.1
При редактировании заказа скидка умножается на 2, если стоит галочка.
Неправильно сохраняется информация о заказе. До конца не разобрался в коде как правильно исправить(не понятно что значит stored_price и что должно считываться если оно установлено в Y), но как исправить временно(до фикса от разработчиков) подскажу.
Summary
Открываем app/functions/fn.cart.php, находим функцию fn_create_order_details и в ней
Вот тут от $v[‘price’](уже цена со скидкой) снова отнимается $v[‘discount’] (скидка).
Как исправить много вариантов, пока исправил вот так и все вроде бы работает как надо
Возможно тут должно быть наоборот
‘price’ => (!empty($v[‘stored_price’]) && $v[‘stored_price’] == ‘Y’) ? $v[‘price’] : $v[‘base_price’] - $v[‘discount’],
Я в шоке. Разработчики советую откатить магазин на 4.14.
Великолепная поддержка Карта!!! @ikoshkin, @cs-cart_team приглашаю вас в тему.
Имхо баг критичный!!!
логично, так как stored_price = Y означает, что цена уже была изменена (цена была отредактирована через редактрирование заказа или включает скидку например)
Это уже какой то другой прикол(Хотя ноги возможно растут из одного места), при смене способа доставки в поле цены записывается цена со скидкой и каждый раз при смене от нее отнимается скидка, соответственно получается 9500,9000,8500.
Пока не получается до конца разобраться(в одном месте исправляешь чтобы сумма считалась правильно, в итоге в другом месте получается не та сумма на которую расчитывает код. В некоторых местах приходит оригинальная цена товара и при этом рядом указано что применена скидка). В итоге пока проще закомментировать $cart['products'][$product_code]['price'] = $cart_products[$product_code]['price'];
чтобы все работало пока как в прошлых версиях и ждать фикса от разработчиков, чем разбираться во всей этой каше
В ближайшие дни (на этой неделе или в начале следующей) будет Service Pack, который в том числе исправит эту проблему. Сейчас тестируем исправление. Если это исправление будет готово и проверено намного раньше выхода SP, то не будем ждать и отдадим его сразу в виде diff.
Поддержка так отвечает потому, что ориентируется не только на предметную область, но и на количество обращений (отсюда упоминание о числе пользователей). А когда обращений много, то проблема зачастую уже в работе; и те, кто обратился с проблемой позже, сразу получают решение.
В этот раз ваше обращение было первым (и насколько я знаю, единственным) по этой проблеме, и Юлия в прошлую пятницу подтвердила баг, назвав при этом стандартный срок испрвления. Но она также дополнительно написала об этом баге команде разработки (т.к. с этим багом потенциально могут столкнуться многие) и попросила заняться им побыстрее. Мы и занялись; но перед тем, как отдавать всем пользователям решение, мы ещё должны его протестировать.
Спасибо за развернутый ответ.
По поводу ответов поддержки предлагаю так и указывать в письме, что если баг критический, то будет исправлен в течении 3 дней.
Тем более по ссылке есть четкое описание, что если баг касается оформления заказа, то он критический.
Мне же дважды прислали письмо про 45 дней.
Менеджеры с ума сходят, а тут 45 дней…
Да и честно говоря даже для некритических багов срок 45 дней имхо неадекватный в наше время.
Тем более если это мой косяк, то вы списывание баллы поддержки. А если ваш, то мне приходится бесплатно мучаться до 45 дней.
Как то это несправедливо…
В любом случае спасибо вам за реакцию на форуме. Это важно! Спасибо!