Перейти к содержанию

проверить формулу для


Рекомендуемые сообщения

Добрый день.

 

Обнаружил проблему, что шаблон для Яндекс.Маркет некорректно прописывает доступность товара, а именно она всегда true даже для случаев, когда товара нет в наличии или его меньше, чем min quantity, например.

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

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

 

В общем, заменил в паре место "и" на "или", где-то убрал или наоборот добавил "не". В общем, можете сравнить мой код и оригинальный.

 

Т.к. нет описания, что скрывается под некоторыми переменными, то может я что-то не совсем корректно исправил и правильнее как-то по-другому её переписать, но по крайней мере у меня с таким кодом сейчас корректно определяется доступность товара. Проверьте, пожалуйста.

 

Мой код:

{foreach $products as $product}

{* DELETE after checking *}
{if !($product.zero_price_action === "R" && $product.price == 0)}true1 {else}false1 {/if}
{if !($settings.General.inventory_tracking !== "Y")}true2 {else}false2 {/if}
{if !($settings.General.allow_negative_amount !== "Y")}true3 {else}false3 {/if}
{if !(($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum)}true4 {else}false4 {/if}
{if !($product.is_edp == "Y")}true5 {else}false5 {/if}
{* DELETE after checking *}

{$available = !($product.zero_price_action === "R" && $product.price == 0) && !($settings.General.inventory_tracking !== "Y" || $settings.General.allow_negative_amount !== "Y" || (($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum) || $product.is_edp == "Y")}
            {strip}<offer id="{$product.product_id}" available="{if $available}true{else}false{/if}"
                 ...

 

 

Оригинальный код:

{foreach $products as $product}
{$available = !($product.zero_price_action === "R" && $product.price == 0) && !($settings.General.inventory_tracking === "Y" && $settings.General.allow_negative_amount !== "Y" && (($product.amount <= 0 || $product.amount < $product.min_qty) && $product.tracking != "ProductTracking::DO_NOT_TRACK"|enum) && $product.is_edp !== "Y")}
            {strip}<offer id="{$product.product_id}" available="{if $available}true{else}false{/if}"
                 ...

 

Изменено пользователем bobrovantig
Ссылка на комментарий
  • Администраторы
1 минуту назад, bobrovantig сказал:

у меня с таким кодом сейчас корректно определяется доступность товара

Работает - хорошо 👍

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Предложения (1)

    • Ожидает проверки (1)
×
×
  • Создать...