fix(recommerce): сброс зачеркнутой цены через price_old=0

- Передаем price_old[amount]="0" для сброса старой цены
- Добавлены флаги is_new и is_popular в маппер
- Добавлен debug логгер для отладки типов данных

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-12 23:26:29 +03:00
parent 707b45b16d
commit 74d7d1186a
2 changed files with 10 additions and 2 deletions

View File

@@ -62,12 +62,13 @@ def to_api_product(
# price_old - как в рабочем скрипте (не old_price из документации)
data['price_old[amount]'] = str(float(product.price))
data['price_old[currency]'] = 'BYN'
# TODO: is_special='true' принимается API но игнорируется при обновлении.
# Возможно работает только при создании товара.
else:
# Нет скидки: только основная цена
data['price[amount]'] = str(float(product.price or 0))
data['price[currency]'] = 'BYN'
# Важно: передаем "0" для price_old, чтобы сбросить зачеркнутую цену (как в рабочем скрипте)
data['price_old[amount]'] = "0"
data['price_old[currency]'] = 'BYN'
if 'content' in fields:
# content включает название и описание
@@ -87,6 +88,12 @@ def to_api_product(
if photo.image:
data[f'images[{idx}]'] = photo.image.url
# Обработка флагов товара (как строки "true"/"false" согласно документации API)
if hasattr(product, 'is_new'):
data['is_new'] = "true" if product.is_new else "false"
if hasattr(product, 'is_popular'):
data['is_popular'] = "true" if product.is_popular else "false"
return data