Яндекс.Маркет и плагины скидок Принято

3

Наблюдаются проблемы при работе с Яндекс.Маркетом, а именно информация о товарах поступает без скидок при попытке "Актуализировать" информацию.

1) Выгрузка XML корректная, со скидками



2) Помещаем товар в корзину, нажимаем Актуализировать.

3) Видим, что цена изменилась. Скидка не посчиталась.


Разбираемся. Ставим метки, чтобы понять, в какой последовательности происходит вызов функций. Выясняется, что при "Актуализации" сначала опрашивается плагин скидок, а потом идет обращение к плагину Маркета. Проверяем, как работает плагин скидок. Все корректно.

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

Идем дальше, возможно я что-то пропустил.

Второе предположение. Смотрим, почему плагин маркета упорно отдает цену без скидки. Залезаем в код.

Путь wa-apps\shop\plugins\yandexmarket\lib\actions\backend\shopYandexmarketPluginRun.controller.php:


public static function getCartItems($items, $profile_id, $currency, &$profile)
    {
        ...

        $skus_model = new shopProductSkusModel();
        if (!empty($sku_ids)) {
            $skus = $skus_model->select('id,count,price,sku,purchase_price,compare_price,file_name')->where('id IN (i:sku_ids)', compact('sku_ids'))->fetchAll('id');
        } else {
            $skus = array();
        }
        ....
    }

Здесь видно, что цена товара напрямую берется из базы данных. Если я не ошибся, то дальше по коду никаких вызовов хуков "frontend_products" не происходит ни напрямую, ни через функции, которые при своей работе вызывают этот хук.

0 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите