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

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


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

Добрый день.

 

Обнаружил проблему, что шаблон для Яндекс.Маркет некорректно прописывает доступность товара, а именно она всегда 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 сказал:

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

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

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

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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

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